RadioRadar - Радиоэлектроника, даташиты, схемы

https://www.radioradar.net/hand_book/documentation/sg90_servo_drive_using_feedback.html

Использование обратной связи в сервоприводе SG90

Сервопривод SG90 является одним из самых доступных и часто используемых при конструировании различных программируемых игрушек. Однако он имеет один аппаратный недостаток - в нём нет возможности программно отслеживать положение качалки привода, хотя конструктивно он содержит переменный резистор, вал которого механически связан с ней. О доработке привода и её практическом использовании пойдёт речь в статье.

На рис. 1 показан вид на монтаж элементов сервопривода со снятой задней крышкой.

Монтаж элементов сервопривода

Рис. 1. Монтаж элементов сервопривода

 

Выводы переменного резистора 1 имеют характерное расположение (подряд три вывода с увеличенными по размеру металлизированными площадками), и их нетрудно определить на плате. Аккуратно подпаивают гибкий провод 2 к центральному выводу и выводят его вдоль общего шлейфа проводов. Прорезь в задней крышке, предназначенную для вывода шлейфа, желательно немного расточить надфилем для свободного пропуска наружу четвёртого провода. Затем крышку нужно установить обратно. На этом доработку привода можно считать выполненной.

Схема подключения сервопривода

Рис. 2. Схема подключения сервопривода

 

Для тестирования обратной связи подключают сервопривод в соответствии с рис. 2. В плату Arduino загружают скетч servo_obratka. Он последовательно с шагом в пять градусов от 0 до 180 выставляет качалку в различные положения и, считывая значение напряжения с переменного резистора, по нему вычисляет угол её поворота. Подключают монитор порта и анализируют полученные результаты (рис. 3). Слева - углы поворота, в градусах, справа - вычисленные углы. Если расхождения составляют более трёх градусов, нужно скорректировать приближённую формулу (строка posR=(analogRead(A0)-75)/3), при этом изменяют число 75). Для повторного запуска программы перезагружают плату.

Анализ полученных результатов

Рис. 3. Анализ полученных результатов

 

Модернизированный сервопривод превращается из исполнительного механизма в устройство ввода-вывода информации. Рассмотрим несколько примеров его практического использования.

Шкала имитатора минутного таймера

Рис. 4. Шкала имитатора минутного таймера

 

Имитатор механического таймера. Таким "тикающим прибором" раньше были часто оснащены стиральные машины и газовые плиты, а сейчас - пароварки и СВЧ-печи. При выставлении выдержки на включение происходило взведение пружины, которая обеспечивала отсчёт интервала времени. На рис. 4 изображена шкала имитатора минутного таймера. На картонную подкладку 1 наклеивают шкалу 2, распечатанную на бумаге. На обороте, в точке 3, с помощью полоски двухстороннего скотча подкладку приклеивают к верхней крышке сервопривода. В её центральной части ножом прорезают окно 4 под вывод вала привода. На качалку с одной стороны наклеивают полоску 5 липкой цветной плёнки. Для экспериментов использован скетч servo_timer. В качестве имитации нагрузки использован светодиод L платы Arduino (управляющий вывод 13). Схема имитатора совпадает с рис. 2. При выставлении рукой качалки, например, на отметку 30, через несколько секунд после этого включится нагрузка, качалка, "тикая", начнёт движение к 0. Через 30 с светодиод погаснет, качалка замрёт на отметке 0. Для повторного запуска достаточно вновь взвести её на нужную отметку. Меняя значения аргумента в команде delay();, можно, по желанию, менять максимальный предел отсчёта времени.

Шкала имитатора минутного таймера

Рис. 5. Шкала имитатора минутного таймера

 

"Умный" переключатель. Этот механизм позволяет вручную выставлять требующуюся последовательность переключений различных исполняемых программ (рис. 5). Далее он сам производит переключения, указывая стрелкой номера исполняемой программы. Как и в предыдущей конструкции, схема неизменна, а в качестве индикатора использован светодиод L на плате Arduino. Для наглядности программы отличаются частотой миганий светодиода. Скетч, поясняющий принцип работы переключателя, - servo_perekl. После подачи питания в течение 7 с нужно начать выставление качалки по номерам программ. После завершения программа ждёт ещё 7 с и начинает исполнять переключения по записанным в массив данным. Время исполнения программы - фиксированное и составляет 5 с (функция delay_(5000);).

Такты движения

Рис. 6. Такты движения

 

Схема для проведения эксперимента

Рис. 7. Схема для проведения эксперимента

 

Механическое программирование движений. Мобильные шагающие роботы не мыслимы без сервоприводов. Теперь задать движения или вариант походки можно вручную, последовательно выставляя положения качалок приводов конечностей и записывая их в память микроконтроллера, а далее циклично заставлять робота их повторять. В моей статье "Робозавр на Arduino Uno" ("Радио", 2018, № 4, с. 57, 58) дано описание ходовой части робота на двух сервоприводах. Такты движения, а их четыре, поясняет рис. 6. Перемещение вперёд - верхняя часть рисунка и назад - нижняя часть. Для описания ходьбы вперёд достаточно занести в память платы восемь значений углов поворота качалки. А далее, плавно перемещая их к этим значениям в цикле 1-2-3-4-1, создать движение. Схема для проведения эксперимента показана на рис. 7. Кнопка SB1 служит для записи выставленных значений углов и для запуска на исполнение. При кратковременном нажатии на неё происходит запоминание положения качалок, при продолжительном - цикличное движение от одних значений углов поворота к другим. Скетч, управляющий работой сервоприводов, - servo_ab. Приведённый вариант позволяет запомнить до 20 позиций каждого привода. Длительность шага или скорость движения задаются в скетче значением переменной n. С её уменьшением скорость возрастает.

Автор: Д. Мамичев, п. Шаталово Смоленской обл.