Що таке контролер сервомотора?
Визначення контролера сервомотора
Контролер сервомотора (або драйвер сервомотора) визначається як схема, яка використовується для керування положенням сервомотора.
Схема драйвера сервомотора
Схема драйвера сервомотора включає мікроконтролер, живлення, потенціометр та з'єднання, забезпечуючи точне керування мотором.
Роль мікроконтролера
Мікроконтролер генерує імпульси PWM за певними інтервалами для точного керування положенням сервомотора.
Живлення
Проект живлення для контролера сервомотора залежить від кількості підключених моторів. Сервомотори типово використовують живлення від 4,8 В до 6 В, при цьому стандартною є напруга 5 В. Перевищення напруги живлення може пошкодити мотор. Споживання струму змінюється залежно від моменту, менше у режимі бездіяльності і більше при роботі. Максимальне споживання струму, відоме як струм ступора, може досягати до 1 А для деяких моторів.
Для керування одним мотором використовуйте регулятор напруги, наприклад, LM317 з теплообмінником. Для кількох моторів необхідне якісне живлення з більшим рейтингом струму. Хорошим вибором є SMPS (Switched Mode Power Supply).
Блок-схема нижче показує з'єднання в драйвері сервомотора

Керування сервомотором
Сервомотор має три клеми.
Сигнал положення (імпульси PWM)
Vcc (від живлення)
Земля

Кутове положення сервомотора керується за допомогою застосування імпульсів PWM певної ширини. Тривалість імпульсу відбивається від близько 0,5 мс для повороту на 0 градусів до 2,2 мс для повороту на 180 градусів. Імпульси повинні подаватися з частотою близько 50-60 Гц.
Для генерації волни PWM, як показано на рисунку нижче, можна використовувати внутрішній модуль PWM мікроконтролера або таймери. Використання блоку PWM є більш гнучким, оскільки більшість сімейств мікроконтролерів проектується з таким блоком, який краще підходить для потреб таких застосувань, як сервомотор. Для різних ширин імпульсів PWM необхідно програмувати внутрішні реєстри відповідно.
Також нам потрібно сказати мікроконтролеру, на скільки він повинен обернутися. Для цього можна використовувати простий потенціометр і використовувати ADC для отримання кута обертання, або для більш складних застосувань — акселерометр.

Алгоритм програми
Давайте спроектуємо програму для керування одним сервомотором, де вхідне положення задається через потенціометр, підключений до пін контролера.
Ініціалізуйте порти для вводу/виводу.
Прочитайте ADC для бажаного положення сервомотора.
Програмуйте реєстри PWM для бажаного значення.
Як тільки ви запустите модуль PWM, вибраний канал PWM перейде в стан "високий" (логічна 1), і після досягнення необхідної ширини, знову перейде в стан "низький" (логічна 0). Після запуску PWM вам слід запустити таймер з затримкою близько 19 мс і чекати, поки таймер не переповниться. Перейдіть до кроку 2.
Існує кілька режимів PWM, які ви можете використовувати в залежності від вибраного мікроконтролера. У коді слід провести певну оптимізацію для керування сервомотором.
Якщо ви плануєте використовувати більше одного сервомотора, вам знадобиться стільки ж каналів PWM. Кожному сервомотору можна послідовно подавати сигнал PWM. Проте ви повинні піклуватися про те, щоб частота повторення імпульсів для кожного сервомотора була підтримана. В іншому випадку сервомотори вийдуть з синхронізації.