Управление сервоприводом

В предыдущей статье было рассмотрено устройство «рулевой машинки». Здесь посмотрим как же ей надо управлять.

Для подключения к контроллеру от сервопривода тянется 3 провода. Цвета проводов могут варьироваться. Коричневый или черный — земля (минус), красный — плюс источника питания, оранжевый или белый — управляющий сигнал.

Управляющий сигнал представляет из себя импульсы с нужной нам шириной, которые посылаются с определенной частотой. Для рассматриваемых нами сервоприводов частота посылки импульсов почти всегда будет около 50 Гц (это примерно 1 раз в 20 мс), а ширина импульса будет лежать в пределе от 544 мкс до 2400 мкс. Например, импульс шириной в 544 мкс выставит выводной вал в положение 0°, 1520 мск соответствует углу в 90°, а 2400 мкс соответствуют 180°.

Изменяя ширину импульсов в данных пределах мы сможем точно задавать угол поворота выводного вала.

Итак, подключаем привод к Arduino. Пусть у нашего сервопривода такая расцветка проводов: коричневый или черный — земля (GND), красный — плюс источника питания (VTG), оранжевый или белый — управляющий сигнал (SIG).
Подключение привода в таком случае будет таким :
GND на любой из GND пинов­­­ ардуино
VTG на + 5 вольт на ардуино
SIG на PWM(ШИМ) вывод ардуиноВ нашем случае сервопривод подключается тремя проводами.
Желтый — к PWM цифровому выводу Arduino (10), красный — питание +5В, черный — земля.

#include <Servo.h> //используем библиотеку для работы с 
                   //сервоприводом
Servo servo;       //объявляем переменную servo типа Servo

void setup() {
  servo.attach(10);  //привязываем привод к порту 10 с ТИЛЬДОЙ
}

void loop() {
  servo.write(10);   //ставим вал под 10
  delay(1000);       //ждем 1 секунду
  servo.write(100);  //ставим вал под 100
  delay(1000);       //снова ждем 1 секунду
  servo.write(170);  //ставим вал под 170
  delay(1000);       //и еще ждем 1 секунду
}

Нетрудно догадаться — что делает приводимый скетч: с интервалом в секунду меняется положение вала сервопривода от одного крайнего положения до другого.

Особенно интересно, что мы нигде не включали ШИМ явно — все за нас уже придумано и мы лишь воспользовались стандартной библиотекой Servo (см строки подключения библиотеки и объявления переменной servo в начале скетча).


Для сервопривода, потребляющего большой ток, необходим свой источник питания. Подключение мощных сервоприводов может вызвать большую просадку напряжения, контроллеру может не хватить питания. На плате Arduino установлен маломощный стабилизатор не рассчитанный на потребление большого тока и чрезмерное потребление может перегреть его и повредить плату.
Во избежание этого, при использовании мощных приводов, либо больше одного слабого, необходимо подавать питание на сервопривод отдельно. Можно приобрести блок питания на 5 или 6 вольт, в зависимости от напряжения питания вашего сервопривода, либо поставить стабилизатор.

Микросхема стабилизатора напряжения обычно имеет 3 ноги: первая- вход (подаем напряжение от 7 до 12 вольт — напряжение на входе должно быть хотя бы на пару вольт больше выходного); вторая- общий минус; третья выход 5 или 6 вольт в зависимости от выбранной модели.
7805 (отечественный аналог КР142ЕН5А) — выходное напряжение 5 вольт.
7806 (отечественный аналог КР142ЕН5Б) — выходное напряжение 6 вольт.
Как видно из рисунка необходима установка конденсаторов на входе и выходе стабилизатора, можно и без них, но выходное напряжение будет не стабильным. Например, можно поставить оба по 100мкФ.

И последнее и очень важное о чем стоит упомянуть так это то, что необходимо соединить земли источников питания.

По материалам курса робототехники

PS. Про управление сервоприводом можно подробнее почитать здесь

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".