Как обсуждалось ранее, Arduino Due - это плата на базе контроллера ARM, разработанная для инженеров-электронщиков и любителей. Эта плата DUE может использоваться для изготовления станков с ЧПУ, 3D-принтеров, роботизированных манипуляторов и т. Д. Все эти проекты имеют общую функцию - управление положением. Любой из этих проектов требует точности по отношению к своей позиции. Точное положение в этих машинах может быть достигнуто с помощью сервомоторов. На этом занятии мы собираемся контролировать положение серводвигателя с помощью Arduino Due. Мы уже рассмотрели взаимодействие серводвигателя с Arduino Uno и взаимодействие серводвигателя с микроконтроллером 8051.
Сервомоторы:
Сервомоторы известны своим точным перемещением или положением вала. Они не предлагаются для высокоскоростных приложений. Они предлагаются для работы с низкой скоростью, средним крутящим моментом и точным позиционированием. Эти двигатели используются в роботизированных манипуляторах, системах управления полетом и системах управления. Серводвигатели также используются в некоторых принтерах и факсимильных аппаратах.
Серводвигатели доступны в различных формах и размерах. В этом уроке мы будем использовать серводвигатель SG90. SG90 - это серводвигатель на 180 градусов. Таким образом, с помощью этого сервопривода мы можем позиционировать ось от 0 до 180 градусов.
Серводвигатель в основном имеет три провода: один для положительного напряжения, другой - для заземления, а последний - для установки положения. КРАСНЫЙ провод подключается к источнику питания, коричневый провод подключается к земле, а ЖЕЛТЫЙ провод (или БЕЛЫЙ) подключается к сигналу.
Серводвигатель - это комбинация двигателя постоянного тока, системы управления положением и шестерен. В сервоприводе у нас есть система управления, которая принимает сигнал ШИМ с сигнального контакта. Он декодирует сигнал и получает из него коэффициент заполнения. После этого он сравнивает соотношение с заранее заданными значениями позиций. Если есть разница в значениях, он соответственно регулирует положение сервопривода. Таким образом, положение оси серводвигателя зависит от продолжительности включения сигнала ШИМ на вывод SIGNAL.
Частота сигнала ШИМ (широтно-импульсная модуляция) может варьироваться в зависимости от типа серводвигателя. Важным моментом здесь является ДОПОЛНИТЕЛЬНОСТЬ ШИМ-сигнала. Проверьте это для PWM с Arduino Due. Однако в этом случае нам даже не нужно беспокоиться о выборе Duty Ratio. В Arduino у нас есть особая функция; после его вызова мы можем отрегулировать положение сервопривода, просто указав угол. Об этом мы поговорим в Рабочем разделе ниже.
Перед подключением серводвигателя к Arduino Due вы можете проверить свой сервомотор с помощью этой схемы тестера серводвигателя. Также проверьте эти проекты на Control Servo с помощью Flex Sensor или Force Sensor.
Составные части:
Оборудование: Arduino Due, блок питания (5 В), серводвигатель.
Программное обеспечение: Arduino nightly, загрузите его по ссылке ниже (https://www.arduino.cc/en/Main/Software)
Для получения подробной информации о том, как загрузить и установить это программное обеспечение, посетите первое руководство «Начало работы с Arduino Due».
Принципиальная схема и рабочее объяснение:
Как было сказано ранее в ARDUINO, у нас есть предопределенные библиотеки, которые будут соответственно устанавливать частоты и коэффициенты заполнения после вызова или включения файла заголовка. В ARDUINO нам просто нужно указать положение сервопривода, которое необходимо, и DUE генерирует соответствующий сигнал ШИМ для сервопривода. Что нам нужно сделать для получения точного положения сервопривода:
#включают
Сервомоторный резервуар;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (необходимый_позиционный_ угол);
Заголовочный файл «#include
Во-вторых, имя должно быть выбрано для сервопривода с помощью «Servo myservo» , здесь myservo - это имя, выбранное, поэтому при написании позиции мы собираемся использовать это имя, эта функция пригодится, когда у нас есть много сервоприводов для управления, с помощью этого мы можем контролировать до 12 сервоприводов.
Поскольку Arduino Due имеет 12 каналов ШИМ, нам нужно сообщить DUE, где подключен сигнальный вывод сервопривода или где ему нужно генерировать сигнал ШИМ. Для этого у нас есть myservo.attach (2); , здесь мы сообщаем DUE, что мы подключили сигнальный контакт сервопривода к PIN2.
Все, что осталось, это установить положение, мы собираемся установить положение сервопривода с помощью « myservo.write (45);» , по этой команде стрелка сервопривода перемещается на 45 градусов. Если мы изменим «45» на «175», ось сервопривода повернется на 175 градусов и останется там. После этого, когда нам нужно изменить положение сервопривода, нам просто нужно вызвать команду « myservo.write (required_position_angle);» .
В программе мы собираемся увеличивать и уменьшать углы с помощью циклов. Таким образом, сервопривод переходит от 0 до 180, затем от 180 до 0 и так далее. Управление серводвигателем от Arduino Due лучше всего объясняется пошагово с помощью кода C ниже.