Как подключить сервопривод к Ардуино

Как подключить и управлять сервоприводом на Ардуино Рассмотрим устройство и принцип работы сервоприводов, разберем скетчи для управления сервопривода.


Рассмотрим на этом занятии устройство и принцип работы сервоприводов. Разберем два простых скетча для управления сервоприводом с помощью потенциометра на Ардуино. Также мы узнаем новые команды в языке программирования C++ — servo.write, servo.read, servo.attach и научимся подключать в скетчах библиотеку для управления сервоприводами и другими устройствами через Ардуино.

Устройство сервомотора (servo)

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

Что такое сервопривод. Схема устройства сервопривода
Что такое сервопривод. Схема устройства сервопривода

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

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

Управление сервоприводом с помощью ШИМ
Управление сервоприводом с помощью широтно импульсной модуляции

Как подключить сервопривод к Ардуино

Схема подключения сервопривода к Arduino обычно следующая: черный провод присоединяем к GND, красный провод присоединяем к 5V, оранжевый/желтый провод к аналоговому выводу с ШИМ (Широтно Импульсная Модуляция). Управление сервоприводом на Ардуино достаточно просто, но по углам поворота сервомоторы бывают на 180° и 360°, что следует учитывать в робототехнике.

Для занятия нам понадобятся следующие детали:

  • Плата Arduino Uno / Arduino Nano / Arduino Mega;
  • Макетная плата;
  • USB-кабель;
  • 1 сервопривод;
  • 1 потенциометр;
  • Провода «папа-папа» и «папа-мама».
Схема подключения сервопривода к Ардуино
Схема подключения сервопривода к Ардуино UNO

В первом скетче мы рассмотрим как управлять сервоприводом на Arduino с помощью команды myservo.write(0). Также мы будем использовать стандартную библиотеку Servo.h. Подключите сервомашинку к плате Ардуино, согласно схеме на фото выше и загрузите готовый скетч. В процедуре void loop() мы будем просто задавать для сервопривода необходимый угол поворота и время ожидания до следующего поворота.

Скетч для сервопривода на Ардуино

#include <Servo.h> // подключаем библиотеку для работы с сервоприводом

Servo servo1; // объявляем переменную servo типа "servo1"

void setup() {
   servo1.attach(11); // привязываем сервопривод к аналоговому выходу 11
}

void loop() {
   servo1.write(0); // ставим угол поворота под 0
   delay(2000); // ждем 2 секунды

   servo1.write(90); // ставим угол поворота под 90
   delay(2000); // ждем 2 секунды

   servo1.write(180); // ставим угол поворота под 180
   delay(2000); // ждем 2 секунды
}

Пояснения к коду:

  1. Стандартная библиотека Servo.h содержит набор дополнительных команд, которая позволяет значительно упростить скетч;
  2. Переменная Servo необходима, чтобы не запутаться при подключении нескольких сервоприводов к Ардуино. Мы назначаем каждому приводу свое имя;
  3. Команда servo1.attach(10) привязывает привод к аналоговому выходу 10.
  4. В программе мы вращаем привод на 0-90-180 градусов и возвращаем в начальное положение, поскольку процедура void loop повторяется циклично.

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

Подключение сервопривода и потенциометра к Ардуино
Подключение сервопривода и потенциометра к Ардуино Уно

Ардуино позволяет не только управлять, но и считывать показания с сервопривода. Команда myservo.read(0) считывает текущий угол поворота вала сервопривода и его мы можем увидеть на мониторе порта. Предоставим более сложный пример управления сервоприводом потенциометром на Ардуино. Соберите схему с потенциометром и загрузите скетч управления сервоприводом.

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

#include <Servo.h> // подключаем библиотеку для работы с сервоприводом

Servo servo; // объявляем переменную servo типа "servo"

void setup() {
   servo.attach(10); // привязываем сервопривод к аналоговому выходу 10
   pinMode(A0, INPUT); // к аналоговому входу A0 подключим потенциометр
   Serial.begin(9600); // подключаем монитор порта
}

void loop() {
   servo.write(analogRead(A0)/4); // передает значения для вала сервопривода

   Serial.println (analogRead(A0)); // выводим показания потенциометра на монитор
   Serial.println (analogRead(A0)/4); // выводим сигнал, подаваемый на сервопривод

   Serial.println (); // выводим пустую строчку на монитор порта

   delay(1000); // задержка в одну секунду
}

Пояснения к коду:

  1. В этот раз мы присвоили имя для сервопривода в скетче, как servo;
  2. Команда servo.write(analogRead(A0)/4) передает значения для вала сервопривода — получаемое напряжение с потенциометра мы делим на четыре и оправляем данное значение на сервопривод.
  3. Команда Serial.println (servo.read(10)) считывает значение угла поворота вала сервопривода и передает его на монитор порта.

Сервомоторы часто используются в различных проектах на Ардуино для различных функций: повороты конструкций, движение частей механизмов. Так как мотор серво постоянно стремится удерживать заданный угол поворота, то будьте готовы к повышенному расходу электроэнергии. Это будет особенно чувствительно в автономных роботах, питающихся от аккумуляторов или батареек.

1 Star2 Stars3 Stars4 Stars5 Stars (23 votes, average: 4,83 out of 5)
Загрузка...

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *