Как управлять серводвигателем с помощью Arduino

Kak Upravlat Servodvigatelem S Pomos U Arduino



Серводвигатели Тип электрического устройства, которое может изменять или вращать положение объекта с большой точностью. Вначале они использовались для управления крыльями радиоуправляемых самолетов, а через несколько мгновений они перешли в робототехнику, гуманоидных роботов и многие проекты автоматизации. В отличие от шаговых двигателей их движение ограничено от 0° до 180°.

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

Распиновка серводвигателя

Как правило, большинство серводвигателей имеют три контакта:







  • Контакт Vcc (обычно красный 5 В)
  • Контакт GND (обычно черный 0 В)
  • Входной сигнальный контакт (получение ШИМ-сигнала от Arduino)



Работа серводвигателя

Мы можем управлять серводвигателем, подключив контакт Vcc к 5 В, а контакт GND к 0 В. На желтом терминале мы предоставляем ШИМ сигнал, управляющий углом поворота серводвигателя. Ширина ШИМ-сигнала дает нам угол, на который двигатель повернет свое плечо.



Если мы заглянем в Datasheet серводвигателей, то получим следующие параметры:





  • Период времени сигнала ШИМ
  • Минимальная ширина для ШИМ
  • Максимальная ширина ШИМ

Все эти параметры предопределены в библиотеке Arduino Servo.

Серводвигатели с Arduino

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



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

  • Если ширина сигнала ШИМ = WIDTH_MAX, сервопривод повернется на 180°.
  • Если ширина сигнала ШИМ = WIDTH_MIIN, сервопривод повернется на 0°.
  • Если ширина сигнала ШИМ находится между WIDTH_MAX и WIDTH_MIN , серводвигатель будет вращаться в диапазоне от 0° до 180°.

Мы можем генерировать желаемый ШИМ-сигнал на некоторых контактах Arduino. Сигнал ШИМ будет подаваться на контакт входного сигнала серводвигателя. Подключение оставшихся двух контактов сервопривода к 5v и GND Arduino.

Как управлять серводвигателем с помощью Arduino

Здесь я объясню, как мы можем подключить и запрограммировать наш серводвигатель с помощью Arduino. Все что тебе нужно это:

  • Ардуино УНО
  • USB-кабель типа B
  • Серводвигатель
  • Перемычки

Как запрограммировать сервопривод с помощью Arduino

Ниже приведены несколько простых шагов:

Шаг 1: Включить предопределенную библиотеку сервоприводов:

# включают < Серво.ч >

Шаг 2: Создать сервообъект:

сервопривод;

Совет: В случае, если вы управляете более чем одним серводвигателем, вам необходимо создать больше сервообъектов:

Сервопривод1;
Сервопривод2;

Шаг 3: Установите управляющий контакт (9) на Arduino Uno, который отправляет сигнал ШИМ на порт входного сигнала сервопривода:

myservo.attach ( 9 ) ;

Шаг 4: Поверните серводвигатель на желаемое значение, например, 90°:

myservo.write ( поз ) ;

Код Ардуино

Откройте пример программы серводвигателя из Файл>Пример>Сервопривод>Развертка , откроется новое окно, показывающее нам наш эскиз сервопривода:

#include

сервопривод; // сервообъект создан за управляющий серводвигатель
инт поз = 0 ; // для хранения положения сервопривода создается новая переменная
недействительная установка ( ) {
myservo.attach ( 9 ) ; // это будет установлен Пин-код Arduino 9 за ШИМ-выход
}
пустая петля ( ) {
за ( поз = 0 ; поз = 0 ; поз -= 1 ) { // идет от 180 к 0 градусов
myservo.write ( поз ) ; // сказать сервоприводу перейти в положение «pos»
задерживать ( 5 ) ; // ждет за 5 мс, чтобы сервопривод мог достичь положения
}
}

Как только программа скомпилирована и загружена, серводвигатель начнет медленно вращаться от начального положения от 0 градусов до 180 градусов, по одному градусу за раз, как шаги. Когда двигатель завершит поворот на 180 градусов, он начнет свое вращение в направлении, противоположном начальной точке, т. е. на 0 градусов.

Схемы

Как управлять серводвигателем с помощью потенциометра

Мы также можем управлять положением серводвигателя вручную. Для этого нам понадобится Потенциометр . Потенциометр имеет три контакта. Подключите два внешних контакта к 5V Vcc и GND Arduino, а средний — к контакту A0 на плате Arduino.

Как запрограммировать сервопривод с помощью потенциометра

Большая часть эскиза для потенциометра такая же, как и в предыдущем примере. Единственное отличие - новая переменная вал а также подпин определяется перед разделом кода установки и цикла.

инт потпин = A0;
внутр. значение;

В секции контура аналоговый контакт A0 используется для считывания значений потенциометра с функцией аналоговоеЧтение() . Платы Arduino содержат 10-битный АЦП (аналого-цифровой преобразователь), дающий нам значения от 0 до 1023 в зависимости от того, в каком положении находится потенциометр:

val = аналоговоеЧтение ( подпин ) ;

Наконец, мы использовали карта() Функция для переназначения чисел от 0 до 1023 в соответствии с углом сервопривода, поскольку мы знаем, что серводвигатели могут вращаться только между 00 и 1800.

вал = карта ( вал, 0 , 1023 , 0 , 180 ) ;

Код Ардуино

Откройте эскиз ручки, доступный в Arduino IDE, перейдите к Файлы>Примеры>Сервопривод>Ручка . Откроется новое окно, в котором показан эскиз ручки для сервопривода:

#include
сервопривод; // Создание имени сервообъекта myservo
инт потпин = A0; // определение аналогового вывода за потенциометр
внутр. значение; // переменная который будут читать значения аналоговых выводов за потенциометр

недействительная установка ( ) {
myservo.attach ( 9 ) ; // определенный контакт 9 за Входной ШИМ-сигнал сервопривода на Arduino
}
пустая петля ( ) {
val = аналоговоеЧтение ( подпин ) ; // считывает значение с потенциометра ( Значение между 0 а также 1023 )
вал = карта ( вал, 0 , 1023 , 0 , 180 ) ; // масштабировать значение для использования с сервоприводом ( Значение между 0 а также 180 )
myservo.write ( вал ) ; // устанавливает положение сервопривода с масштабированным значением
задерживать ( пятнадцать ) ; // ждет за сервопривод, чтобы добраться до позиции
}

Приведенный выше код поможет нам управлять валом серводвигателя с помощью потенциометра, вал будет вращаться в диапазоне от 0 до 180 градусов. Мы также можем поддерживать скорость вместе с направлением сервопривода, используя его.

Принципиальная электрическая схема

Сколько серводвигателей можно подключить к Arduino?

Максимальное количество серводвигателей, с которыми может работать Arduino UNO, составляет до 12 с библиотекой Arduino для сервоприводов, и максимум 48 сервоприводов может быть подключен к платам типа Mega.

Кончик: Мы можем напрямую запустить сервопривод, используя ток Arduino, но помните, если серводвигатели потребляют больше, чем 500 мА тогда ваша плата Arduino может автоматически перезагрузиться и потерять питание. Рекомендуется всегда использовать отдельный источник питания для серводвигателей.

Вывод

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