Перейти к содержанию

Подключение сервопривода

Сервопривод - это маленький мотор с редуктором и управляющей электроникой. Ему можно сказать, в какое положение повернуть вал.

В iDryer-подобных устройствах сервопривод может открывать заслонку, двигать небольшой замок, нажимать механический переключатель или переключать поток воздуха.

Главная ошибка с сервоприводами: считать, что это "маленькая штука" и её можно питать от любого 5V пина контроллера. Сервопривод может потреблять заметный ток, особенно при старте, резком движении или когда механизм закусывает.

Три провода

Обычный hobby servo имеет три провода:

  • питание: обычно 5V или 6V;
  • земля: GND;
  • сигнал: управляющие импульсы от контроллера.

Частые цвета:

  • красный - питание;
  • чёрный или коричневый - земля;
  • жёлтый, оранжевый или белый - сигнал.

Но цветам нельзя верить слепо. У разных производителей цветовая схема может отличаться. Перед подключением проверь маркировку, страницу товара или техническое описание.

Питание отдельно, сигнал отдельно

Сигнальный провод не питает сервопривод. Он только сообщает, куда повернуться.

Энергию для мотора сервопривод берёт с провода питания.

Правильная логика:

  • контроллер даёт только управляющий сигнал;
  • сервопривод питается от 5V/6V источника, который выдерживает его ток;
  • земля контроллера и земля питания сервопривода соединены вместе.

Цветовая маркировка проводов сервопривода

Источник: SparkFun Electronics, CC BY-SA 4.0

Почему нельзя питать от слабого 5V

Многие платы имеют 5V пин. Это не значит, что от него можно безопасно питать сервопривод.

При движении сервопривод может кратковременно брать намного больше тока, чем кажется по размеру. Если питания не хватает, появляются типичные симптомы:

  • контроллер перезагружается;
  • экран моргает;
  • USB-соединение пропадает;
  • сервопривод дёргается;
  • Wi-Fi на ESP32 отваливается;
  • сервопривод гудит, но не двигается;
  • питание проседает при старте движения.

Для одного маленького сервопривода иногда хватает питания от платы, если плата и источник явно рассчитаны на такой ток. Но для реального устройства с заслонкой, замком или механизмом лучше сразу использовать отдельный 5V/6V DC-DC или блок питания с запасом.

Общая земля

Если сервопривод питается от отдельного источника, нужна общая земля.

Без общей земли контроллер и сервопривод не имеют общего уровня сигнала. Сервопривод может не реагировать, дёргаться или вести себя случайно.

Простое подключение:

  1. +5V или +6V источника питания идёт на питание сервопривода.
  2. GND источника питания идёт на землю сервопривода.
  3. GND контроллера соединяется с той же землёй.
  4. PWM/GPIO пин контроллера идёт на сигнальный провод сервопривода.

Питание сервопривода и питание контроллера могут быть разными, но земля должна быть общей.

Какой сигнал нужен

Обычный позиционный hobby servo управляется импульсами.

Типичный сигнал:

  • импульс примерно раз в 20 ms;
  • около 1 ms - один край диапазона;
  • около 1.5 ms - середина;
  • около 2 ms - другой край диапазона.

Это не обычный PWM для яркости светодиода или скорости вентилятора. Здесь важна ширина импульса в микросекундах.

У конкретного сервопривода реальные границы могут отличаться. Некоторые безопасно ходят не от 0 до 180 градусов, а меньше. Поэтому крайние положения нужно проверять осторожно.

Не упирай сервопривод в механику

Сервопривод пытается удержать заданное положение.

Если заслонка упёрлась в корпус, рычаг закусило или механизм дошёл до физического упора раньше команды, сервопривод продолжит давить. В этот момент ток растёт, мотор греется, редуктор изнашивается.

Для заслонок и замков это особенно важно.

Перед постоянной работой проверь:

  • механизм свободно ходит во всём диапазоне;
  • нет перекоса;
  • тяга не закусывает;
  • сервопривод не гудит в конечном положении;
  • крайние углы в прошивке не заставляют механизм упираться;
  • при отключении питания устройство остаётся в безопасном положении или возвращается пружиной, если это нужно по задумке.

Если сервопривод гудит в покое, это часто признак нагрузки, упора или неправильной геометрии рычага.

Пусковой и стопорный ток

У сервопривода есть обычный рабочий ток и ток при остановленном валу. Последний часто называют stall current.

Stall current появляется, когда сервопривод пытается двигаться, но вал заблокирован или механизм слишком тяжёлый.

Именно этот режим часто вызывает:

  • просадку питания;
  • перезагрузку контроллера;
  • нагрев проводов;
  • перегрев DC-DC;
  • поломку шестерёнок.

Если техническое описание указывает ток заклинивания (stall current), источник питания нужно выбирать с учётом этого значения и запаса. Если технического описания нет, нельзя считать сервопривод безопасной нагрузкой "на глаз".

Конденсатор рядом с сервоприводом

Иногда помогает электролитический конденсатор между +5V и GND рядом с сервоприводом.

Он не заменяет нормальный источник питания, но может сгладить кратковременную просадку при старте движения.

Ориентир для маленького сервопривода: сотни микрофарад, например 470 uF или больше, с напряжением конденсатора выше напряжения питания.

Полярность электролитического конденсатора важна:

  • плюс конденсатора к +5V;
  • минус конденсатора к GND.

Если устройство должно быть надёжным, сначала выбирают нормальное питание и проводку, а конденсатор используют как дополнительную меру.

Пример Klipper-конфигурации

В Klipper сервопривод описывается секцией [servo].

Пример:

[servo chamber_damper]
pin: PA8
maximum_servo_angle: 180
minimum_pulse_width: 0.001
maximum_pulse_width: 0.002
initial_angle: 90

Команды:

SET_SERVO SERVO=chamber_damper ANGLE=0
SET_SERVO SERVO=chamber_damper ANGLE=90
SET_SERVO SERVO=chamber_damper ANGLE=180

Имена пинов здесь примерные. В реальном устройстве нужно смотреть распиновку своей платы.

Для механики лучше не начинать сразу с 0 и 180. Сначала проверь безопасный диапазон, например 60, 90, 120, и только потом расширяй углы.

Пример Arduino/ESP32-логики

В Arduino-подходе обычно используют библиотеку Servo:

#include <Servo.h>

Servo damper;

void setup() {
  damper.attach(9);
  damper.write(90);
}

void loop() {
}

Это только пример логики сигнала. Питание сервопривода всё равно нужно рассчитывать отдельно. Даже если сигнальный провод подключён к Arduino или ESP32, мотор сервопривода не должен перегружать питание контроллера.

Что проверить после подключения

Перед установкой в корпус:

  • сервопривод получает правильное напряжение;
  • источник питания выдерживает ток сервопривода;
  • земля контроллера и земля сервопривода общие;
  • сигнальный провод подключён к правильному пину;
  • сервопривод двигается в нужную сторону;
  • крайние углы не ломают механику;
  • механизм не закусывает;
  • сервопривод не гудит постоянно;
  • провода не попадают в рычаг или шестерни;
  • после движения питание не проседает;
  • контроллер не перезагружается.

Проверяй механику без нагрузки и с реальной нагрузкой. Заслонка, которая легко ходит в руках, может закусывать после установки в корпус.

Типовые ошибки

  • питают сервопривод от GPIO;
  • питают сервопривод от слабого 5V пина платы;
  • забывают общую землю;
  • верят цветам проводов без проверки;
  • подключают питание наоборот;
  • ставят слишком тонкие провода;
  • не учитывают ток при старте и заклинивании;
  • заставляют сервопривод давить в механический упор;
  • используют угол 0 или 180, хотя реальный механизм безопасно ходит только в меньшем диапазоне;
  • ставят сервопривод рядом с нагревом без проверки рабочей температуры;
  • считают continuous rotation servo обычным позиционным сервоприводом.

Главное

  • У сервопривода три линии: питание, земля и сигнал.
  • Сигнал не питает сервопривод.
  • Для реального устройства часто нужен отдельный 5V/6V источник питания.
  • Земля сервопривода и земля контроллера должны быть общими.
  • Самая опасная нагрузка - заклинивание или упор в механику.
  • Крайние углы нужно подбирать осторожно, а не сразу отправлять 0 и 180.
  • Если контроллер перезагружается при движении сервопривода, сначала проверяй питание и общий GND.

Материалы по теме