Обычно серводвигатели имеют рычаги, которыми можно управлять с помощью 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. Мы рассмотрели основы управления положением и скоростью сервопривода с помощью потенциометра. Теперь у вас есть представление о сервоприводах, и возможности для вашей робототехники, радиоуправляемых проектов и автоматизации с использованием сервоприводов безграничны.