-
ЗНАКОМСТВО С TINKERCAD 2
-
Лекция1.1
-
Лекция1.2
-
-
ОСНОВЫ ЭЛЕКТРОНИКИ 10
-
Лекция2.1
-
Лекция2.2
-
Лекция2.3
-
Лекция2.4
-
Лекция2.5
-
Лекция2.6
-
Лекция2.7
-
Лекция2.8
-
Лекция2.9
-
Викторина2.1
-
-
ЗНАКОМСТВО С ARDUINO 7
-
Лекция3.1
-
Лекция3.2
-
Лекция3.3
-
Лекция3.4
-
Лекция3.5
-
Лекция3.6
-
Викторина3.1
-
Управление сервоприводом
В тех случаях, когда нужна точность управления параметрами движения, используют сервоприводы.
Сервопривод (следящий привод) – привод с управлением через отрицательную обратную связь, позволяющую точно управлять параметрами движения.
Проще говоря, сервопривод является «автоматическим точным исполнителем» – получая на вход значение управляющего параметра (в режиме реального времени), он «своими силами» (основываясь на показаниях датчика) стремится создать и поддерживать это значение на выходе исполнительного элемента.
Строение и принцип работы сервопривода
Основными компонентами сервопривода являются:
- привод – например, электромотор с редуктором;
- датчик обратной связи – например, датчик угла поворота выходного вала редуктора (энкодер);
- блок питания и управления;
- вход/конвертер/датчик управляющего сигнала/воздействия (может быть в составе блока управления).
Сервопривод управляется с помощью импульсов переменной длительности. Для посылки импульсов используется сигнальный провод. Параметрами этих импульсов являются минимальная длительность, максимальная длительность и частота повторения. Из-за ограничений во вращении сервопривода, нейтральное положение определяется как положение, в котором сервопривод обладает одинаковым потенциалом вращения в обоих направлениях. Важно отметить, что различные сервоприводы обладают разными ограничениями в своем вращении, но они все имеют нейтральное положение, и это положение всегда находится в районе длительности импульса в 1,5 миллисекунды (1,5 мс)
Угол поворота определяется длительностью импульса, который подается по сигнальному проводу (проще говоря, ШИМ). Сервопривод ожидает импульса каждые 20 мс. Длительность импульса определяет, насколько далеко должен поворачиваться мотор. Например, импульс в 1,5 мс диктует мотору поворот в положение 90 градусов (нейтральное положение)
Когда сервопривод получает команду на перемещение, он перемещается в это положение и удерживает его. Если внешняя сила действует на сервопривод, когда он удерживает заданное положение, сервопривод будет сопротивляться перемещению из этого положения. Максимальная величина силы, которую может выдерживать сервопривод, характеризует вращающий момент сервопривода. Однако, сервопривод не навсегда удерживает свое положение, импульсы позиционирования должны повторяться, информируя сервопривод о сохранении положения.
Управление сервоприводом с помощью Arduino
Подключение сервопривода
Подключить сервопривод к микроконтроллеру очень просто:
земля (коричневый/черный провод),
- питание +5 вольт (красный провод),
- сигнальный (оранжевый/желтый/белый провод).
Управляющий сигнал для сервопривода можно подавать напрямую с микроконтроллера, силовое питание (если задействовано более одного сервопривода) лучше подавать от внешнего источника питания (в этом случае необходимо соединить землю микроконтроллера с минусом внешнего источника питания).
Основы управления сервоприводом с помощью Arduino
Как было отмечено ранее, изменяя ширину импульсов напряжения на сервоприводе, мы можем перемещать сервопривод в определённое положение. Если посылать в программе импульсы каждые 20…50 мс, то сервопривод может плавно вращаться. Однако, существует и иной способ – использовать вспомогательную библиотеку Servo, значительно упрощающую работу с сервоприводами.
Пример управления сервоприводом
В качестве примера, создадим устройство, позволяющее установить сервопривод в 90°. Для этого:
- Зайдите в свое рабочее пространство TinkerCad.
- Создайте новое электронное устройство.
- На рабочее поле добавьте плату Arduino UNO и сервопривод. С помощью проводников создайте замкнутую электрическую цепь.
- Перейдите в режим написания программы в виде текстового кода и создайте следующую программу:
Исходный код | Комментарии |
#include <Servo.h> | Подключение библиотеки для работы с сервоприводом. |
Servo myServo; | Создание объекта с именем myServo для контроля сервопривода (можно использовать любое имя) |
void setup() { | |
myServo.attach(9); | Назначить пин 9 как управляющий для объекта myServo. |
} | |
void loop(){ | |
myServo.write(90); | Команда «повернуть вал на 90 градусов» |
delay(100); | Пауза в 1 секунду |
} |
- Запустив симуляцию, мы сможем убедиться в правильности нашего кода.
Замечание. В среде TinkerCad имеется лишь ограниченное количество подключаемых библиотек. Их перечень можно увидеть нажав на кнопку “Библиотеки” в режиме написания кода.
Задания: |
Задание 18. Создайте виртуальное устройство, позволяющее плавно изменять позицию вала сервопривода от 0 до 180°, а затем плавно возвращает его в исходную позицию.
Задание 19***. Создайте виртуальное устройство, позволяющее регулировать позицию вала сервопривода с помощью потенциометра. При этом, если вал сервопривода приближается к граничным значениям, то загорается “предупреждающий” светодиод.
Предоставьте общий доступ к своим виртуальным устройствам и отправьте ссылки на решения с помощью формы.