ѕодключение сервоприводов к Arduino

19.10.2017, 13:01


 ак уже говорилось, сервопривод это точный исполнитель который получа€ на вход значение управл€ющего параметра стремитс€ создать и поддерживать значение на выходе исполнительного элемента.

¬ данной статье рассмотрим что же из себ€ представл€ют управл€ющие импульсы, а также то, как лучше подключать сервоприводы к Arduino.


ѕодключаем сервопривод к плате јрдуино ”но
ѕравильное подключение сервопривода к плате Arduino

ќ том как входные импульсы преобразуютс€ в сигналы управлени€ мотором мы рассказали в другой статье. ¬ данной же статье речь пойдет непосредственно о управл€ющих импульсах, будут даны примеры как их сгенерировать на Arduino.

”правл€ющий сигнал представл€ет из себ€ импульсы с нужной нам шириной, который посылаетс€ с определенной частотой.

ƒл€ рассматриваемых нами сервоприводов частота посылани€ импульса почти всегда будет около 50 √ц (это примерно 1 раз в 20 мс), а ширина импульса будет лежать в пределе от 544 мкс до 2400 мкс.

 ак видно из картинке, импульс шириной в 544 мкс выставит выводной вал в положение 0∞, 1520 мск соответствует углу в 90, а 2400 мкс соответствуют 180∞.

импульсы приЄм

»змен€€ ширину импульсов в данных приделах мы сможем точно задавать угол поворота выводного вала, но об этом чуть позже. Ќа данном этапе статьи хочетс€ рассказать о том как подключить сервопривод к Arduino.


ƒл€ подключени€ к контроллеру от сервопривода т€нетс€ 3 провода обжатых стандартным 3 пиновым разъемом с шагом 2.54мм . ÷вета проводов могут варьироватьс€.  оричневый или черный - земл€ (GND), красный - плюс источника питани€ (VTG), оранжевый или белый - управл€ющий сигнал (SIG).

ѕодключение —ерво:

GND на любой из GND пинов ≠≠≠ ардуино.

VTG на + 5 вольт на ардуино.

SIG на PWM(Ў»ћ) вывод ардуино.

” старых јрдуин, укомплектованных мегой 8, имеетс€ всего три Ў»ћ вывода (digital 9,10,11), у јрдуин укомплектованных мегой 168 или 328 их 6 (digital 3,5,6,9,10,11). —емейство Arduino MEGA имеет на своем борту целых 14 Ў»ћ выводов.

ћини сервы, потребл€ющие слабый ток, можно подключать напр€мую к пинам Arduino.

Servo 9G 1000

ѕодключение мощных сервоприводов может вызвать большую просадку напр€жени€, контроллеру может не хватить питани€, мега8 очень привередлива и из-за этого контроллер отключитс€. “ак же на плате Arduino установлен маломощный стабилизатор не рассчитанный на потребление большого тока и чрезмерное потребление может перегреть его и повредить плату. ¬о избежание этого при использовании мощных серв, либо больше одной слабой, рекомендую подавать питание на сервопривод отдельно. ћожно приобрести блок питани€ на 5 или 6 вольт, в зависимости от напр€жени€ питани€ ваше сервы, либо поставить стабилизатор. ¬ данной статье разберем самый простой на мой взгл€д стабилизатор из серии 7800, требующий минимум деталей внешней обв€зки.

Servo 7805 1000 setka

—табилизатор имеет 3 ноги. перва€- вход(подаем напр€жение от 6 до 12 вольт) втора€- общий минус. треть€ выход 5 или 6 вольт в зависимости от выбранной модели.

7805 отечественный аналог  –142≈Ќ5ј - выходное напр€жение 5 вольт.

7806 отечественный аналог  –142≈Ќ5Ѕ - выходное напр€жение 5 вольт.

 ак видно из рисунка необходима установка конденсаторов, можно и без них, но выходное напр€жение будет не стабильным. –екомендуемые номиналы конденсаторов: на входе 0.33 мк‘, на выходе 0.1 мк‘. я всегда ставлю два по 100мк‘. „ем больше - тем лучше. » последнее и очень важное о чем стоит упом€нуть так это то, что необходимо соединить земли источников питани€.


ќсновы разобрали, переходим к примерам скетчей дл€ Arduino.

¬ариант 1

¬ данном скетче зададим 3 угла поворота выходного вала сервопривода использу€ управление изменением непосредственно значени€ ширины импульса. ƒанный метод самый точный, однако дл€ каждого угла ширину импульсов придетс€ подбирать индивидуально.

ѕример программного кода

// добавл€ем библиотеку дл€ работы с сервоприводами

#include <Servo.h>

// дл€ дальнейшей работы назовем 9 пин как servoPin

#define servoPin 9

// 544 это стандартна€ длина импульса при котором сервопривод должен прин€ть положение 0∞

#define servoMinImp 544

// 2400 это эталонна€ длина импульса при котором сервопривод должен прин€ть положение 180∞

#define servoMaxImp 2400

Servo myServo;

void setup()

{

myServo.attach(servoPin, servoMinImp, servoMaxImp);

// устанавливаем пин как вывод управлени€ сервоприводом,

// а также дл€ работы сервопривода непосредственно в диапазоне углов от 0 до 180∞ задаем мин и макс значени€ импульсов.

// импульсы с большей или меньшей длиной восприниматьс€ не будут.

// дл€ сервоприводов даже одной партии значени€ длин импульсов могут отличатьс€, может быть даже и 584-2440.

// поэкспериментируйте и найдите идеальные длины импульсов конкретно дл€ вашего сервопривода.

}

void loop()

{

// устанавливаем качалку сервопривода в положение 0∞(т.к.импульс равен 544мкс)

myServo.writeMicroseconds(servoMinImp);

delay(2000);

// в данной функции можно задавать длины импульсов непосредственно числами.

// 90∞(т.к.импульс равен 1520мкс)

myServo.writeMicroseconds(1520);

delay(2000);

// 180∞(т.к.импульс равен 2400мкс)

myServo.writeMicroseconds(servoMaxImp);

delay(2000);

}

¬ариант 2

¬ данном скетче зададим теже 3 угла поворота выходного вала сервопривода использу€ команду myservo.write. ¬ данной команде мы уже не задаем ширину импульсов, а просто пишем нужный нам угол. ƒанный вариант намного удобнее, однако настройка не така€ точна€ как при первом.

ѕример программного кода

#include <Servo.h>

Servo myservo;

void setup()

{

// устанавливаем пин как вывод управлени€ сервой

myservo.attach(9);

}

void loop()

{

// устанавливаем угол 0∞

myservo.write(0);

delay(2000);

// устанавливаем угол 90∞

myservo.write(90);

delay(2000);

// устанавливаем угол 180∞

myservo.write(180);

delay(2000);

}

“акже вам могут понадобитьс€ следующие команды:

myservo.read(); —читывает текущий угол поворота сервопривода, возвращает значение типа int Ч угол от 0 до 180 градусов.

myservo.attached();
ѕровер€ем, прив€зан ли сервопривод. ¬озвращает логическое значение bool.

myservo.detach();
ќтключает сервопривод от пина.


ƒавайте рассмотрим ещЄ один момент про сервоприводы: как сделать реверс сервопривода своими руками.

–еверс сервопривода


«десь на сайте да и в сети не раз возникал вопрос, как реализовать реверс сервопривода, без специальных приспособлений или программно в передатчике.

Ќам понадобитс€: отвертка "крест", па€льник.

разбираем сервопривод

јккуратно разбираем сервопривод и мен€ем местами провода идущие к электродвигателю.

мен€ем местами 2 крайних провода идущие к потенциометру

“акже мен€ем местами 2 крайних провода идущие к потенциометру, центральный провод не трогаем.

серва работает в обратную сторону

» все, серва работает в обратную сторону))). Ќе забудьте модернизированный сервопривод пометить маркером или наклейкой чтобы не возникло путаницы в будущем.

ƒополнительна€ информаци€ о сервоприводах


” нас есть книги, заметки и учебные материалы. —качать можно бесплатно по ссылкам ниже:


 лючевые слова:
ардуино
микросхема
arduino nano
плата јрдуино
ѕлатформа Arduino
реверс сервопривода
сервопривод
Arduino
вольт
myservo
импульсы
реверс
управлени€
–оботы на платформе јрдуино
робот
робототехника


¬ернутьс€ в рубрику:

ѕроекты на платформе јрдуино


≈сли вы хотите видеть на нашем сайте больше статей то кликните ѕоделитьс€ в социальных сет€х! —пасибо!
—мотрите также:

ќбратите внимание полезна€ информаци€.