- Необходимый материал
- Принципиальная электрическая схема
- Что такое серводвигатель?
- Пояснение кода Arduino
- Управление несколькими сервоприводами с помощью Arduino - Работа:
Использовать один или два сервопривода с Arduino просто, но что, если мы хотим использовать более одного сервомотора?
Здесь мы собираемся показать вам, как управлять несколькими сервомоторами с помощью Arduino. Соединение нескольких сервомоторов с Arduino кажется простым, но если мы подключим все сервомоторы к контактам питания Arduino, они не будут работать правильно из-за отсутствия достаточного тока для управления всеми двигателями. Таким образом, вы должны использовать отдельный источник питания для двигателей, либо от некоторых адаптеров (5v 2A), либо от батарей 9v хорошего качества.
Необходимый материал
- Arduino UNO
- Серводвигатель
- Источник питания
- Макетная плата
- Подключение проводов
Принципиальная электрическая схема
Что такое серводвигатель?
Прежде чем вдаваться в подробности, сначала мы должны узнать о сервомоторах.
Серводвигатели доступны в различных формах и размерах. У серводвигателя в основном есть провода: один для положительного напряжения, другой - для заземления, а последний - для установки положения. КРАСНЫЙ провод подключается к источнику питания, черный провод подключается к земле, а ЖЕЛТЫЙ провод подключается к сигналу.
Серводвигатель - это комбинация двигателя постоянного тока, системы управления положением, шестерен. Положение вала двигателя постоянного тока регулируется управляющей электроникой в сервоприводе в зависимости от продолжительности включения сигнала ШИМ на выводе SIGNAL.
Проще говоря, управляющая электроника регулирует положение вала, управляя двигателем постоянного тока. Эти данные о положении вала передаются через СИГНАЛЬНЫЙ штифт. Данные о положении в систему управления должны быть отправлены в виде сигнала ШИМ через сигнальный контакт серводвигателя.
Частота сигнала ШИМ (широтно-импульсная модуляция) может варьироваться в зависимости от типа серводвигателя. Важным моментом здесь является ДОПОЛНИТЕЛЬНОСТЬ ШИМ-сигнала. На основании этого ОБЯЗАННОСТИ управляющая электроника регулирует вал.
Как показано на рисунке ниже, для перемещения вала на 9 ° СООТНОШЕНИЕ ВКЛЮЧЕНИЯ должно быть 1/18. 1 мс времени включения и 17 мс времени выключения для сигнала 18 мс.
Чтобы вал был перемещен на 12o часов, время включения сигнала должно быть 1,5 мс, а время выключения - 16,5 мс. Это соотношение декодируется системой управления в сервоприводе, и она регулирует положение на основе этого. Этот ШИМ здесь генерируется с помощью ARDUINO UNO.
Перед подключением сервоприводов к Arduino вы можете проверить свой сервопривод с помощью этой схемы тестера серводвигателя. Также проверьте наши проекты сервоприводов ниже:
- Управление серводвигателем с помощью гибкого датчика
Пояснение кода Arduino
Полный код Arduino для множественного сервоуправления приведен в конце.
В Arduino есть библиотека для сервомоторов, и она обрабатывает все вещи, связанные с ШИМ, для поворота сервопривода, вам просто нужно ввести угол, на который вы хотите повернуть, и есть функция servo1.write (angle); который будет вращать сервопривод на желаемый угол.
Итак, мы начинаем с определения библиотеки для серводвигателя.
#включают
В приведенном ниже коде мы инициализируем все четыре сервопривода как Servo1, Servo2, Servo3 и Servo4.
Серво servo1; Серво servo2; Серво servo3; Серво servo4;
Затем мы устанавливаем все входные контакты сервопривода с помощью Arduino. Как показано в приведенном ниже коде, Servo1 подключен к 3-му выводу Arduino. Вы можете изменить контакты по своему усмотрению, но имейте в виду, что это должен быть контакт PWM. Использование сервопривода с цифровыми выводами Arduino ненадежно.
пустая настройка () { servo1.attach (3); servo2.attach (5); servo3.attach (6); servo4.attach (9); }
Теперь в функции void loop () мы просто поворачиваем все сервоприводы от 0 до 180 градусов, а затем с 180 до 0 градусов. Задержка, используемая в приведенном ниже коде, используется для увеличения или уменьшения скорости сервопривода, поскольку она влияет на увеличение или уменьшение скорости переменной «i».
void loop () { для (int я = 0; я <180; я ++) { servo1.write (я); servo2.write (я); servo3.write (я); servo4.write (я); задержка (10); } for (i = 180; i> 0; i--) { servo1.write (i); servo2.write (я); servo3.write (я); servo4.write (я); задержка (10); } }
Управление несколькими сервоприводами с помощью Arduino - Работа:
Мы все сталкиваемся с текущей проблемой при использовании более двух сервоприводов с одним Arduino. Единственное решение - подключить внешний источник питания с соответствующей величиной номинального тока (в этом проекте я использовал 2А с питанием 9В). Для внешнего источника питания вы можете использовать адаптеры, RPS (регулируемый источник питания) или батареи хорошего качества на 9 В, даже если вы можете использовать USB-порт ноутбука для питания небольшого сервопривода. Чтобы использовать внешний источник питания, вам просто нужно замкнуть заземление Arduino на заземление внешнего источника питания.
Используйте приведенный ниже код Arduino, чтобы запрограммировать Arduino и подключить все серводвигатели, как показано на принципиальной схеме, с надлежащим источником питания для двигателей. Таким образом, все сервоприводы будут работать вместе без перебоев.