Как подключить сервопривод к Ардуино. Пример использования сервопривода SG90

В этой короткой статье мы расскажем вам, как подключить сервопривод к Ардуино. Этот проект идеально подойдет для новичков, потому что он прост и обеспечивает основу для создания множества интересных конструкций, например роботов, в которых обычно используются сервоприводы.

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

В отличие от обычных двигателей постоянного тока, сервоприводы обычно помимо выводов питания (Vcc и GND) имеют еще один дополнительный вывод (сигнальный). Сигнальный вывод используется для подачи управляющего сигнала от микроконтроллера, поворачивая тем самым его вал на необходимый угол.

В данной статье мы будем использовать популярный сервопривод SG90, и нашей задачей будет – вращать вал мотора от одного крайнего положения до другого.

сервопривод 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 - сигнальный провод (желтый или оранжевый).

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

Подключите сервопривод к Ардуино, как показано на схеме ниже.

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

Сигнальный провод подключен к цифровому выводу 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);
}
}

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

редактор

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

Ваш электронный адрес не будет опубликован.

*