Мастер - класс по робототехнике «Управление сервоприводом через потенциометр»

Всем привет! В этой статье мы научим вас управлять сервоприводом SG90 через Потенциометр!

Краткая справка:
Сервопривод - электромеханический мотор, который имеет выходной вал, способный вращаться вокруг своей оси. Мы в своих проектах используем сервоприводы SG90, в роборуке, например, таких аж 4 штуки! Такое сервопривод имеет пластиковый редуктор, из-за чего при большом усилии шестеренки могут сломаться, поэтому лучше не проворачивайте выходной вал мотора вручную, а используйте для этого команды с микроконтроллера:)

Потенциометр - (он же реостат) - резистор с переменным сопротивлением. Вращая ручку потенциометра, можно менять размер проводящего участка, таким образом меняя сопротивление элемента. Собственно, принцип сегодняшнего мастер-класса будет основан на считывании положения ручки потенциометра и в перевод полученного значения в угол Сервомотора.

Для работы нам понадобятся:
 - макетная плата
 - плата Arduino Nano
 - 6 проводов «Папа-Папа»
 - Потенциометр на 100 кОм
 - Сервопривод SG90

Для начала, соберем схему подключения Сервопривода к плате Arduino Nano. Крайние контакты потенциометра необходимо подключить на контакты 5V и GND на плате (какой из крайних куда не принципиально). Центральный контакт, который как раз подключен к вращающейся ручке потенциометра, подключаем на любой из аналоговых пинов Arduino, мы подключили на пин A0. Схема подключения выглядит так:

Подключение сервомотора к плате Arduino

В реальной жизни, выглядит так:

Отлично! Теперь нам необходимо написать программу для считывания показаний потенциометра через аналоговый пин A0. Для этого делаем бесконечный цикл считывания показаний с A0 с задержкой 0,1с (задержку можно менять, для более плавного управления), готовый скетч можно скачать по ссылке.

Теперь в мониторе порта (фиолетовая кнопка в правом верхнем углу) мы можем наблюдать считываемые значения. Так как плата Arduino Nano имеет 10-битный АЦП, плата может выдать всего (2^10) = 1024 значения, соответственно, при вращениии ручки потенциометра от одного крайнего положения к другому мы будем видеть значения от 0 до 1023.

Теперь, когда мы умеем извлекать данные с потенциометра, давайте научимся переводить их в углы для сервомотора. Для этого подключим к нашей схеме Сервомотор.

Фото схемы:

Для управление сервой, необходимо написать код, который будет переводить показания от потенциометра (0 - 1023) в углы Сервомотора (0 - 90 градусов). 
Для этого вводим переменную «Коэффициент», равную отношению «Максимального значения потенциометра» к «Максимальному углу сервомотора». В цикл добавляем команду управление сервомотором, угол определяем как считанное значение потенциометра скорректированное (поделенное) на «Коэффициент». Готовый скетч можно скачать по ссылке.

Готово! Теперь при вращении ручки потенциометра, мы вращаем выходной вал Сервомотора! Для того, чтобы наглядно показать практическую пользу от мастер-класса, мы решили подключить к схеме сервопривод, отвечающий за клешню нашей Роборуки. Вот как это выглядит:

Если вы хотите повторить всё проделанное самостоятельно - все необходимые компоненты есть в нашем курсе «Легкий Старт»

Если хотите попробовать немного попрограммировать RobotON Studio - регистрируйтесь на бесплатное занятие:)

Комментарии:

Похожие статьи: