Сервоприводы
Сервоприводы подключаются через стандартное трёхпроводное соединение:
- питание — обычно красный провод, подключённый к подходящему источнику питания;
- земля — обычно чёрный или коричневый провод, общий для сервопривода, платы и источника питания;
- сигнал — обычно жёлтый, оранжевый или белый провод, подключённый к GPIO платы.
Модуль формирует стандартный управляющий сигнал частотой 50 Гц. Значению 0° соответствует импульс 1000 мкс, 90° — 1500 мкс, 180° — 2000 мкс.
Не питайте сервопривод от GPIO или от маломощного выхода питания платы: пусковой ток двигателя может вызвать перезагрузку или повредить плату. Используйте подходящий источник питания и обязательно соедините его землю с землёй платы. Допустимые напряжение, ток и диапазон управляющих импульсов уточняйте в документации сервопривода.
Пример работы с сервоприводом:
Создайте объект сервопривода функцией
servo.attach().-- Подключить сигнальный вывод к GPIO26 s = servo.attach(pio.GPIO26)Задайте положение методом
write().-- Переместить сервопривод в положение 45° s:write(45)Освободите ресурсы методом
detach(), когда сервопривод больше не нужен.-- Отключить сервопривод s:detach()
instance = servo.attach(pin)
Создать новый экземпляр сервопривода. Модуль занимает канал PWM и сразу запускает сигнал 50 Гц с нейтральным импульсом 1500 мкс, соответствующим 90°.
Аргументы:
- pin: GPIO сигнального провода, например
pio.GPIO26.
Возвращает: объект сервопривода или исключение.
-- Подключить сигнальный вывод к GPIO26
s = servo.attach(pio.GPIO26)
instance:detach()
Остановить управляющий сигнал и освободить канал PWM. После этого сервопривод больше не получает команду удержания положения; его питание при этом не отключается.
Аргументы: нет.
Возвращает: ничего или исключение.
-- Отключить сервопривод
s:detach()
instance:write(value)
Задать конечное значение от 0 до 180 включительно. Значение должно быть конечным числом; NaN и бесконечность не допускаются.
Для позиционного сервопривода значение задаёт требуемый угол: 0 соответствует импульсу 1000 мкс, 90 — 1500 мкс, 180 — 2000 мкс. Реальный механический диапазон и точность зависят от модели.
Для сервопривода непрерывного вращения эти же импульсы обычно задают скорость и направление, а 90 соответствует номинальной остановке. Точная точка остановки, направления и максимальная скорость зависят от модели и её калибровки.
write() сразу меняет длительность PWM-импульса. Модуль не строит траекторию, не ограничивает скорость, ускорение или рывок и не получает обратную связь о фактическом положении вала. Встроенный регулятор позиционного сервопривода самостоятельно движется к новой команде, поэтому скорость зависит от самого сервопривода, нагрузки и питания. Если приложению нужен плавный программно управляемый переход, оно должно задавать промежуточные углы с нужными интервалами времени.
Аргументы:
- value: конечное число от 0 до 180.
Возвращает: ничего или исключение.
-- Подключить сигнальный вывод к GPIO26
s = servo.attach(pio.GPIO26)
-- Переместить стандартный сервопривод в положение 45°
s:write(45)
-- Подключить сигнальный вывод к GPIO26
s = servo.attach(pio.GPIO26)
-- Вращать сервопривод непрерывного вращения по часовой стрелке
s:write(180)