Как подключить сервопривод к Ардуино. Пример использования сервопривода SG90
В этой короткой статье мы расскажем вам, как подключить сервопривод к Ардуино. Этот проект идеально подойдет для новичков, потому что он прост и обеспечивает основу для создания множества интересных конструкций, например роботов, в которых обычно используются сервоприводы.
Сервоприводы (сервомоторы, серводвигатели) — это двигатели с высоким крутящим моментом и контролируемым углом вращения, которые обычно используются в робототехнике и в ряде других областях техники.
В отличие от обычных двигателей постоянного тока, сервоприводы обычно помимо выводов питания (Vcc и GND) имеют еще один дополнительный вывод (сигнальный). Сигнальный вывод используется для подачи управляющего сигнала от микроконтроллера, поворачивая тем самым его вал на необходимый угол.
В данной статье мы будем использовать популярный сервопривод SG90, и нашей задачей будет – вращать вал мотора от одного крайнего положения до другого.
Характеристики сервопривода SG90:
- Вес сервопривода: 9 гр
- Габариты: 21,5мм х 11,8мм х 22,7мм
- Напряжение питания: от 4,8В до 6В
- Крутящий момент: 1,2 кг*см при напряжении питания 4,7В
- Время поворота на угол 60 гр: 0,12 сек. при напряжении питания 4,7В
- Рабочая температура: -30°C…+60°C
Сервоприводы имеют высокие требования к току, поэтому при использовании более одного сервопривода с Ардуино важно подключать их силовые провода (Vcc и GND) к внешнему источнику питания, поскольку источник питания Ардуино не сможет обеспечить ток, необходимый для этих сервоприводов.
Поскольку в этом учебном пособии мы будем использовать только один сервопривод, то он будет прекрасно работать от источника питания самого Ардуино.
Схема подключения сервопривода SG90 к Ардуино
Схема подключения довольно проста, так как к Ардуино мы будем подключать только сервопривод.
Как мы уже сказали ранее — сервомоторы обычно имеют три провода:
- VCC — плюс источника питания (красный провод).
- GND — минус источника питания (черный или коричневый).
- Signal — сигнальный провод (желтый или оранжевый).
Сигнальный провод (обычно оранжевого цвета) — это тот, который используется для подачи управляющего сигнала с микроконтроллера, для того чтобы вращать вал на определенный угол.
Подключите сервопривод к Ардуино, как показано на схеме ниже.
Сигнальный провод подключен к цифровому выводу D8 (ШИМ) Ардуино, поскольку управляющие сигналы от микроконтроллера Ардуино к сервоприводу отправляются в качестве импульсов ШИМ.
Скетч управления сервоприводом SG90
Скетч для этого проекта довольно прост благодаря функциональной и компактной библиотеке servo.h, разработанной командой Ардуино для облегчения использования серводвигателей в проектах Ардуино.
Библиотека упрощает поворот вала сервопривода под разными углами с помощью всего одной команды. Библиотека поставляется с предустановленной Arduino IDE, и поэтому нет необходимости в ее скачивании и установки.
Начинаем код проекта с подключения библиотек, которые мы будем использовать, в нашем случае это библиотека servo.h.
#include <Servo.h>
Затем мы создаем объект библиотеки, который будет использоваться в качестве ссылки для управления нашим сервомотором по всему коду.
Servo servo;
После этого переходим к функции void setup (). Мы запускаем функцию, прикрепляя объект сервопривода к выводу D8 микроконтроллера, после чего мы центрируем сервопривод, поворачивая его на ноль градусов.
void setup() { servo.attach(8); servo.write(angle); }
Выполнив это, мы можем поворачивать вал сервопривода в любом направлении и делать это мы будем внутри функции void loop().
Благодаря библиотеке servo.h, все что нам нужно сделать, чтобы повернуть сервопривод на нужный угол — это передать желаемый угол в качестве аргумента в функцию servo.write ().
Чтобы продемонстрировать это, используем цикл с несколькими углами поворота в одном направлении, и другой цикл в обратном направлении (для возврата)
void loop() { // поворот от 0 до 180 градусов for(angle = 10; angle < 180; angle++) { servo.write(angle); delay(15); } // возврат от 180 to 0 градусов for(angle = 180; angle > 10; angle—) { servo.write(angle); delay(15); } }
Полный скетч проекта будет выглядеть следующим образом:
#include <Servo.h> Servo servo; int angle = 10; void setup() { servo.attach(8); servo.write(angle); } void loop() { // поворот от 0 до 180 градусов for(angle = 10; angle < 180; angle++) { servo.write(angle); delay(15); } // возврат от 180 to 0 градусов for(angle = 180; angle > 10; angle—) { servo.write(angle); delay(15); } }
Скопируйте приведенный выше код и загрузите его в Ардуино и через несколько секунд вы увидите вращение сервомотора то в одну, то в другую сторону.