Работа с сервоприводом ардуино

Продолжаем серию уроков “Arduino для начинающих”. Сегодня собираем модель с сервоприводом — это также одна из базовых схем. Сервоприводы используются в робототехнике для управления движениями робота. В посте помимо видео-инструкции листинг программы и схема подключения.

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

Видео-инструкция сборки модели:

Для сборки модели с сервоприводом нам потребуется:

  • плата Arduino
  • 3 провода “папа-папа”
  • сервопривод
  • программа Arduino >

Компоненты для сборки модели Arduino с сервоприводом

Схема подключения модели Arduino с сервоприводом:

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

Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):

#include //используем библиотеку для работы с сервоприводом
Servo servo; //объявляем переменную servo типа Servo
void setup() //процедура setup
<
servo.attach(10); //привязываем привод к порту 10
>
void loop() //процедура loop
<
servo.write(0); //ставим вал под 0
delay(2000); //ждем 2 секунды
servo.write(180); //ставим вал под 180
delay(2000); //ждем 2 секунды
>

Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота. Эти цифры можно поменять — в видео во втором варианте мы поставили 0-1000-90-1000, что означает поворот на 90 градусов с ожиданием в 1 секунду (1000 миллисекунд), возврат обратно и т.д. (процедура loop повторяется циклично).

Кроме того, в этом уроке мы впервые используем библиотеки.

Библиотека — это набор дополнительных команд, который позволяет вводить программу в упрощенном формате. Здесь мы используем библиотеку для работы с сервоприводами Servo.h.

Так выглядит собранная модель Arduino с сервоприводом:

Собранная модель Arduino с сервоприводом

Смотрите также:

Посты по урокам:

Все посты сайта «Занимательная робототехника» по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Продолжаем серию уроков “Arduino для начинающих”. Сегодня собираем модель с сервоприводом — это также одна из базовых схем. Сервоприводы используются в робототехнике для управления движениями робота. В посте помимо видео-инструкции листинг программы и схема подключения.

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

Читайте также:  16 Gb corsair led 3466 mhz 16t

Видео-инструкция сборки модели:

Для сборки модели с сервоприводом нам потребуется:

  • плата Arduino
  • 3 провода “папа-папа”
  • сервопривод
  • программа Arduino >

Компоненты для сборки модели Arduino с сервоприводом

Схема подключения модели Arduino с сервоприводом:

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

Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):

#include //используем библиотеку для работы с сервоприводом
Servo servo; //объявляем переменную servo типа Servo
void setup() //процедура setup
<
servo.attach(10); //привязываем привод к порту 10
>
void loop() //процедура loop
<
servo.write(0); //ставим вал под 0
delay(2000); //ждем 2 секунды
servo.write(180); //ставим вал под 180
delay(2000); //ждем 2 секунды
>

Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота. Эти цифры можно поменять — в видео во втором варианте мы поставили 0-1000-90-1000, что означает поворот на 90 градусов с ожиданием в 1 секунду (1000 миллисекунд), возврат обратно и т.д. (процедура loop повторяется циклично).

Кроме того, в этом уроке мы впервые используем библиотеки.

Библиотека — это набор дополнительных команд, который позволяет вводить программу в упрощенном формате. Здесь мы используем библиотеку для работы с сервоприводами Servo.h.

Так выглядит собранная модель Arduino с сервоприводом:

Собранная модель Arduino с сервоприводом

Смотрите также:

Посты по урокам:

Все посты сайта «Занимательная робототехника» по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Сервопривод Ардуино (англ. — arduino servo) — устройство с электрическим мотором, которое можно повернуть на определенный угол и оставить в этом положении на определенное время.

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

Обычно у них есть выходной вал, который может поворачиваться на 180 градусов. Используя Arduino мы можем задать сервомотору определенное положение в которое он перейдет.

Изначально сервоприводы начали использовать еще задолго до появления Ардуино, скажем так, в мире пультов дистанционного управления (RC), как правило, для управления рулевым колесом игрушечных машинок или крыльями самолетов. Со временем они нашли свое применение в робототехнике, автоматизации и, конечно же, в мире Ардуино.

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

Как это работает

Сервоприводы Arduino — это умные устройства. Используя только один входной пин, они получают значения для позиционирования от микроконтроллера и переходят в это положение. Как можно увидеть на рисунке в самом начале статьи внутри они имеют двигатель и цепь обратной связи, которая гарантирует, что вал/рычаг сервопривода достигнет желаемого положения.

Читайте также:  Xlsb не открывается в office 2007

Но какой сигнал сервомоторы получают на входе? Это прямоугольная волна, подобная PWM (англ. — pulse-width modulation, широтно-импульсная модуляция). Каждый цикл в сигнале длится 20 миллисекунд, и большая часть времени в значении LOW. В начале каждого цикла значение сигнала становится HIGH на время от 1 до 2 миллисекунд. При 1 миллисекунде она составляет 0 градусов, а при 2 миллисекундах — 180 градусов, а в промежутке значение от 0 до 180. Это очень хороший и надежный метод. График выше упрощает понимание.

Комплектующие

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

  • Плата Arduino (подключенная к компьютеру через USB), подойдет Arduino Uno;
  • Сервопривод;
  • Перемычки.

В мире сервомоторов мало известных брендов. Как пример, можно взять Hitec и Futaba, которые являются ведущими производителями сервоприводов для RC-моделей. Но в целом найти подходящий на АлиЭкспресс и подобных сайтах не сложно.

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

Схема подключения ниже:

Сервомотор имеет много встроенных деталей: двигатель, цепь обратной связи и, самое главное, драйвер мотора. Ему просто нужно дополнительно питание, земля и один контрольный пин. Ниже шаги для подключения сервопривода к Arduino, но вы можете всегда свериться с изображением выше.

  • Сервомотор имеет гнездовой разъем с тремя контактами. Самый темный или даже черный — это обычно земля. Подключите его к GND Arduino.
  • Подключите кабель питания, который по всем стандартам должен быть красным к 5В на Ардуино.
  • Подключите оставшийся контакт разъема сервопривода к цифровому выходу на Arduino.

Также ниже приводим пример подключения двигателя и Arduino Diecimilia. Фото найдено на официальном сайте производителя микроконтроллеров.

Для этого варианта подключение следующее:

  • Подключите красный от сервопривода к +5 В на ардуине.
  • Подключите черный/коричневый от сервопривода к Gnd на ардуино.
  • Подключите белый/оранжевый от сервопривода к аналоговому 0 на arduino.

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

Скетч ниже заставит сервопривод переместиться в позицию 0 градусов, подождать 1 секунду, затем повернуться на 90 градусов, подождать еще одну секунду, после повернуться на 180 градусов и перейти в первоначальное положение.

Также дополнительно мы используем библиотеку servo — скачайте ниже или в нашем разделе Библиотеки.

Содержимое zip-файла размещается в папку arduino-xxxx/hardware/liraries.

Если сервомотор подключен к другому цифровому контакту, просто измените значение servoPin на значение используемого цифрового вывода.

Наш код просто объявляет объект и затем инициализирует сервопривод с помощью функции servo.attach(). Мы не должны забывать подключать серво библиотеку. В цикле мы устанавливаем сервопривод на 0 градусов, ждем, а затем устанавливаем его на 90, а затем на 180 градусов.

Второй скетч для варианта с Arduino Diecimilia ниже.

Нам достаточно будет скачать и подключить библиотеку из архива:

Стандартные методы серво-библиотеки

attach(int)

Соединение пина и сервопривода. Вызывает pinMode. Возвращает 0 при ошибке.

detach()

Отсоединение пина от сервопривода.

write(int)

Установка угла сервопривода в градусах, от 0 до 180.

read()

Возвращает значение, установленное write(int).

attached()

Возвращает 1, если серво в настоящее время подключен.

Читайте также:  Простая программа для записи видео с экрана

Дополнительные примеры скетчей

Следующий код позволяет вам контролировать серводвигатель на пине 2 с помощью потенциометра на аналоговом 0.

Следующий код — это поворот (пинг/понг) на выводе A0 с переменной скоростью.

Дополнительные возможности

Управление сервоприводами на Ардуино очень простое и мы можем использовать еще несколько интересных фишек.

Контроль точного времени импульса

Ардуино имеет встроенную функцию servo.write(градусы), которая упрощает управление сервомоторами. Однако не все сервоприводы соблюдают одинаковые тайминги для всех позиций. Обычно 1 миллисекунда означает 0 градусов, 1,5 миллисекунды — 90 градусов, и, конечно, 2 миллисекунды означают 180 градусов. Некоторые сервоприводы имеют меньший или больший диапазон.

Для лучшего контроля мы можем использовать функцию servo.writeMicroseconds(микросекунды), которая в качестве параметра принимает точное количество микросекунд. Помните, 1 миллисекунда равна 1000 мкс.

Несколько сервоприводов

Чтобы использовать более одного сервопривода в Ардуино нам нужно объявить несколько серво-объектов, прикрепить разные контакты к каждому из них и обратиться к каждому индивидуально. Итак, нам нужно объявить объекты — столько сколько нам нужно:

Затем нам нужно прикрепить каждый объект к сервомотору. Помните, что каждый сервопривод использует отдельный пин:

В конце концов, мы должны обращаться к каждому объекту индивидуально:

Подключение. Земля сервоприводов идёт на GND Arduino, питание на 5В или VIN (в зависимости от входа). И, в конце концов, каждый привод должен быть подключен к отдельному цифровому выводу.

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

Управление мышью

Чтобы управлять серво с помощью мыши, вот простой код:

Вам не обязательно использовать этот код, вы также можете отправлять команды на плату arduino с серийного монитора Arduino IDE. Позиция сервопривода от 0 до 180 — это команды 0 и 180 сек соответственно.

В основном этот код берет позицию mouseX (от 0 до 720) и делит на 4, чтобы получить угол для сервопривода (0-180). Наконец, значение выводится на последовательный порт с префиксом ‘s’.

Примечание: «s» на самом деле должен быть суффиксом, но поскольку это повторяется, это не имеет значения для результата.

Не забудьте сначала проверить с помощью println(Serial.list ()) COM-порт, который следует использовать.

Сервоприводы с непрерывным вращением

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

Например, функция Servo1.write(0) заставит сервомотор вращаться против часовой стрелки на полной скорости. Функция Servo1.write(90) остановит двигатель, а Servo1.write(180) будет вращать вал по часовой стрелке на полной скорости.

Таким сервоприводам нашли несколько применений, но нужно понимать, что они достаточно медленные. Один из вариантов — микроволновая печь, когда есть необходимость в двигателе для вращения продуктов питания. Но будьте осторожны, микроволны — опасное дело!