Intro
Сервоприводы — незаменимые актуаторы, которые приводят в движение узлы большинства промышленных роботов, узлы автомобилей, самолётов и даже подводных лодок. Самые распространённые DIY-сервомоторы пришли к нам из авиамодельного хобби, это всем известные: sg90, mg995, futaba3003. Также есть и специализированные для любительской робототехники приводы: HiWonder LX-16A, Dynamixel ax-12a, и подобные им.
Большинство сервоприводов, используемых в любительской среде, умеют контролировать только положение вала. То есть, они могут отклонять вал на заданный угол и удерживать его. Хотя в общем случае, сервомоторы могут контролировать также скорость и крутящий момент.
Как правило, хоббийные сервомоторы состоят из обычного коллекторного двигателя с редуктором, потенциометра для определения угла поворота и небольшой управляющей платы. На этой плате имеется H-мост и микросхема управления.
Работает это устройство по принципу системы с отрицательной обратной связью. В каждый момент времени, система сравнивает целевое значение параметра с текущим и вырабатывает управляющее воздействие, чтобы сравнять их.
В случае сервомотора таким параметром является угол поворота. Целевое значение угла поворота задаёт пользователь с помощью сигнала, передаваемого от микроконтроллера. А текущий угол поворота сервомотор вычисляет при помощи потенциометра, прикрепленного к выходному валу.
В этой статье мы повторим этот принцип и сделаем свой сервомотор, который по точности и надежности будет лучше тех же sg90 и mg995. Кроме того, мы сможем управлять им при помощи любого интерфейса: I2C, UART, RS485, а не только стандартным ШИМ сигналом.
Список необходимых компонентов
Для реализации задуманного нам понадобится двигатель с оптическим или магнитным энкодером, драйвер двигателя, а также микроконтроллер с тактовой частотой, достаточной для обработки показаний энкодера.
Если для этого эксперимента вам не хватает каких-то компонентов, можно добавить их в корзину прямо здесь и затем оформить заказ в нашем интернет-магазине.
Начнём со сборки испытательного макета, затем настроим в конфигураторе среды CubeIDE всю необходимую периферию и в конце напишем программу с ПИД-регулятором.