Что такое контроллер сервомотора?
Определение контроллера сервомотора
Контроллер сервомотора (или драйвер сервомотора) определяется как схема, используемая для управления положением сервомотора.
Схема драйвера сервомотора
Схема драйвера сервомотора включает микроконтроллер, источник питания, потенциометр и разъемы, обеспечивая точное управление двигателем.
Роль микроконтроллера
Микроконтроллер генерирует ШИМ-импульсы через определенные интервалы для точного управления положением сервомотора.
Источник питания
Проектирование источника питания для контроллера сервомотора зависит от количества подключенных двигателей. Сервомоторы обычно используют питание от 4,8 В до 6 В, при этом стандартным является 5 В. Превышение напряжения питания может повредить двигатель. Ток потребления меняется в зависимости от момента и ниже в режиме ожидания, а выше при работе. Максимальный ток потребления, известный как ток блокировки, может достигать до 1 А для некоторых двигателей.
Для управления одним двигателем можно использовать регулятор напряжения, такой как LM317, с радиатором. Для нескольких двигателей необходим высококачественный источник питания с большим током. Хорошим выбором будет ИБП (импульсный источник питания).
Функциональная схема, показывающая соединения в драйвере сервомотора

Управление сервомотором
Сервомотор имеет три вывода.
Сигнал положения (ШИМ-импульсы)
Vcc (от источника питания)
Общий провод

Угловое положение сервомотора управляется путем применения ШИМ-импульсов определенной ширины. Длительность импульса варьируется от примерно 0,5 мс для поворота на 0 градусов до 2,2 мс для поворота на 180 градусов. Импульсы должны подаваться с частотой около 50-60 Гц.
Для генерации сигнала ШИМ, как показано на рисунке ниже, можно использовать либо внутренний модуль ШИМ микроконтроллера, либо таймеры. Использование модуля ШИМ более гибко, так как большинство семейств микроконтроллеров проектируют этот модуль, чтобы он лучше подходил для таких приложений, как сервомотор. Для различных ширин ШИМ-импульсов необходимо программировать внутренние регистры соответствующим образом.
Теперь нам также нужно сообщить микроконтроллеру, на сколько он должен повернуться. Для этой цели можно использовать простой потенциометр и АЦП для получения угла поворота, или для более сложных приложений можно использовать акселерометр.

Алгоритм программы
Давайте спроектируем программу для управления одним сервомотором, а входное положение будет задаваться через потенциометр, подключенный к пину контроллера.
Инициализация портовых выводов для ввода/вывода.
Считывание АЦП для желаемого положения сервомотора.
Программирование регистров ШИМ для желаемого значения.
Как только вы активируете модуль ШИМ, выбранный вывод канала ШИМ становится высоким (логическая 1), и после достижения требуемой ширины снова становится низким (логическая 0). После активации ШИМ необходимо запустить таймер с задержкой около 19 мс и ждать, пока таймер не переполнится. Перейти к шагу 2.
Существуют различные режимы ШИМ, которые можно использовать в зависимости от выбранного микроконтроллера. В коде должно быть выполнено некоторое оптимизирование для управления сервомотором.
Если вы планируете использовать более одного сервомотора, вам потребуется столько же каналов ШИМ. Каждому сервомотору можно последовательно подавать сигнал ШИМ. Однако следует убедиться, что частота повторения импульсов для каждого сервомотора поддерживается. В противном случае сервомоторы могут выйти из синхронизации.