3.8.md


# УПРАВЛЕНИЕ СЕРВОПРИВОДОМ

СЕРВОПРИВОД — это такой вид привода, который может точно управлять параметрами движения. Другими словами, это двигатель, который может повернуть свой вал на определенный угол и поддерживать непрерывно его положение

НАПОМИНАНИЕ При использовании внешнего питания сначала подключаем внешнее питание, а потом USB-кабель для связи или программирования. При выключении все делаем наоборот: сначала вытаскиваем USB-кабель, а затем внешнее питание. Несоблюдение данного правила может привести к выходу из строя платы Рудирон.

Рисунок 1

Рисунок 1

Сервоприводы используются для управления перемещением:

  • частей робота (рук, ног, головы);
  • элементов управления модели транспортного средства — самолета, вертолета, автомобиля, катера;
  • поворотного устройства для видеокамеры;
  • различных механизмов.

Для управления сервоприводом используется сигнал специальной формы. Временная диаграмма сигнала приведена на рисунке ниже. Частота повторения сигнала составляет 20 мс. Длина импульса соответствует заданному углу поворота вала сервопривода. Импульс в 1000 мкс соответствует крайнему левому положению, 2000 мкс — крайнему правому. 1500 мкс соответствует среднему положению.

Рисунок 1

Параметры сервопривода SG90S:

Рисунок 1

Наименование Значение Назначение
1 Тип сервопривода аналоговый Управляется широтно-импульсной модуляцией
2 Напряжение питания 4.8 ~ 5 В ————-
3 Усилие на валу: 4.8В 1.4 кг/см ————-
4 Скорость: 4.8В 0.12 сек/60° ————-
5 Размеры (мм) 22.8×12.2×28.5 ————-
6 Разъем JR / Spektrum / Dupont ————-

ПОДКЛЮЧЕНИЕ СЕРВОПРИВОДА И ПРОГРАММА УПРАВЛЕНИЯ

Вход модуля Наименование Значение
Коричневый провод Земля Ground Подключается к порту GND на плате
Красный провод Питание +5 V Подключается к порту 5V на плате
Желтый провод Сигнал управления Подключается к цифровому порту работающий в режиме ШИМ (PWM)

Рисунок 1

Фото варианта подключения сервопривода:

Рисунок 1

В соответствии с правилами подключения сервопривода — коричневый провод соединен с разъемом земля контроллера. Красный провод соединен с разъемом +5 В контроллера. Желтый провод соединяем с выводом 8 так как он может генерировать ШИМ(PWM) сигнал в соответствии с таблицей GPIO. Питание поступает от разъема USB пока проводится отладка программы.

Листинг программы по управлению сервоприводом:

include «Arduino.h»

#include «Servo.h»	// подключаем дополнительную программу по управлению сервоприводом
#define SERVO_PIN 8 // даем имя порту 8 по управлению сервоприводом

Servo servo; // создаем переменную типа сервопривод
int delay_ms; // создаем переменную для хранения значения паузы в миллисекундах

void setup()

{

pinMode(SERVO_PIN, OUTPUT);
servo.attach(SERVO_PIN, 450,2500); // устанавливаем параметры сервы порт, и значения мин 
                       и макс заполнения длительности импульсов ШИМ

}

void loop()

{

delay_ms = 500;
servo.write(0); // устанавливаем 0 градусов на сервоприводе
delay(delay_ms);
servo.write(90); // устанавливаем 90 градусов на сервоприводе
delay(delay_ms);
include «Arduino.h»

#include «Servo.h»	// подключаем дополнительную программу по управлению сервоприводом
#define SERVO_PIN 8 // даем имя порту 8 по управлению сервоприводом

Servo servo; // создаем переменную типа сервопривод
int delay_ms; // создаем переменную для хранения значения паузы в миллисекундах
void setup()

{

pinMode(SERVO_PIN, OUTPUT);
servo.attach(SERVO_PIN, 450,2500); // устанавливаем параметры сервы порт, 
                     и значения мин и макс заполнения длительности импульсов ШИМ

}

void loop()
{

delay_ms = 500;
servo.write(0); // устанавливаем 0 градусов на сервоприводе
delay(delay_ms);
servo.write(90); // устанавливаем 90 градусов на сервоприводе
delay(delay_ms);
}

В данном примере мы каждые 500 миллисекунд поворачиваем вал на определенный градус. От 0 до 180 градусов и обратно. Затем возвращаем положение в 0 отметку и цикл начинается заново.

Порядок наших действие:

  1. Подключаем программу управления сервоприводом #include “Servo.h”.
  2. Эта программа будет встроена в исполняемый файл для микроконтроллера на этапе сборки проекта на основании файла CMake.
  3. Определяем имя для вывода 8 контроллера. #define SERVO_PIN 8
  4. Устанавливаем режим на вывод pinMode(SERVO_PIN, OUTPUT).
  5. Вызываем внешнюю программу Servo, которой сообщаем на каком выходе контроллера подключен сервопривод. Так же указываем минимальную длину импульсов ШИМ и максимальную. Для каждого типа сервопривода параметр подбирается индивидуально. servo.attach(SERVO_PIN, 450, 2500).
  6. Управляем углом поворота сервопривода командой servo.write(90), указав команде на какой угол необходимо повернуть вал.

Как видите не сложно! Так как настройка микроконтроллера происходит в программе Servo, которая написана за нас. Мы этой программой пользуемся внутри нашего проекта. Нам необходимо лишь подключить программу — строкой (называется – директива) #include Servo.h. А когда мы будем запускать сборку проекта, то программа будет включена внутрь исполняемого файла для нашего микроконтроллера.

ПРИМЕЧАНИЕ Если Вы хотите выполнять программу при последующих включениях «Рудирона», то не забудьте переставить перемычку из положения «Режим программирования» обратно в «Режим выполнения». Если этого не сделать, то программа при включении «Рудирона» выполняться не будет.

ВЫВОДЫ

Мы научились работать с сервоприводом в наших программах, поняли принципы управления сервоприводом, научились применять библиотеку ** «Servo.h»** и поворачивать ось сервопривода на заданный угол.

СПИСОК КОНТРОЛЬНЫХ ВОПРОСОВ

  1. Что такое сервопривод и чем он отличается от обычного электродвигателя?
  2. Как управляется сервопривод?
  3. Какой алгоритм работы применяется при работе с сервоприводом?
  4. Какая дополнительная библиотека необходима для работы с сервоприводом? Что будет если ее не подключить?
  5. Провода какого цвета используются для подключения сервопривода? Их назначение?
  6. Какую технологию мы использовали для управления вращением сервопривода? Подсказка: вспомните урок по управлению яркостью светодиода.
  7. Переменную какого типа необходимо создать для вызова функций
  8. управления сервоприводом?
  9. Для чего необходима функция attach() и какие параметры ей передаются при вызове?
  10. С какой целью используется функция write() и какой параметр ей передается при вызове?
  11. Что будет результатом выполнения программы?

СПИСОК ДОПОЛНИТЕЛЬНЫХ ЗАДАЧ

  1. Использовать для написания программы среду Arduino IDE.
  2. Написать программу поворота оси сервопривода на 45против часовой стрелки, затем возврат в базовую позицию, поворот на 45по часовой стрелке и возврат в базовую позицию.
  3. Написать программу поворота оси сервопривода на 90по часовой стрелке, затем возврат в базовую позицию, поворот на 90 против часовой стрелки и возврат в базовую позицию.

ЭЛЕМЕНТЫ КОНТРОЛЯ И ПРОВЕДЕНИЯ СОРЕВНОВАНИЙ

  1. Проведение тестирования по контрольным вопросам. Критерии: кто быстрее и допустил меньшее количество ошибок.
  2. Написание одного из трех вариантов (исходный и два варианта из списка дополнительных задач) программы и загрузка этого варианта в контроллер. Критерии: Правильно написанная программа согласно выданного задания, работающий контроллер и наименьшее количество времени затраченного на эти работы.