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

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

Что такое сервопривод

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

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

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

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

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

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

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

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

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

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

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

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

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

void loop() // процедура 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.

На что обратить внимание:

  1. В процедуре void loop() мы вращаем привод на 0-90-180 градусов и возвращаем в начальное положение, поскольку процедура loop повторяется циклично;
  2. Стандартные библиотеки находятся в папке «C:\Program Files\Arduino\libraries».

Задание для самостоятельного выполнения:

  1. Установите в скетче свое управление сервопривода на Ардуино.

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

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

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

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

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

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

void loop() // процедура 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. На мониторе порта мы можем увидеть угол поворота вала сервопривода.
  2. Стандартные библиотеки находятся в папке «C:\Program Files\Arduino\libraries».

Задание для самостоятельного выполнения:

  1. Выведите значение напряжения на потенциометре на монитор порта.

Пройти тест


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

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

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