Сервопривод SG90: подключение к ESP32 и Arduino

Сервопривод

Мотор с редуктором и обратной связью: поворачивается на заданный угол от 0 до 180° и держит его. Для заслонок, рулей и манипуляторов.

Как работает

Угол задаётся длительностью импульса, который повторяется 50 раз в секунду: около 0,5–1 мс — 0°, 1,5 мс — 90°, 2–2,5 мс — 180° (у разных экземпляров крайние значения свои). Сервопривод сравнивает заданный угол с потенциометром на валу и крутит мотор, пока они не совпадут.

Библиотеки: Servo на Arduino, ESP32Servo на ESP32 — одинаковые вызовы: servo.attach(вывод) и servo.write(угол).

Выводы

ВыводНазначение
PWMсигнал угла (оранжевый или жёлтый)
V+питание (красный)
GNDобщий провод (коричневый)

Подключение к ESP32

Сервопривод SG90ESP32
PWMGPIO13
V+3V3
GNDGND

Схема из примера «Сервопривод: развёртка».

⚡ В примере «Сервопривод SG90» питается от 3V3 — в симуляторе так проще, и модель это допускает. Настоящий модуль рассчитан на 5 В: подключайте V+ к VIN (5 В от USB) или к отдельному источнику 5 В с общей землёй.

Сервопривод: развёртка

Открыть пример целиком
Код скетча
#include <ESP32Servo.h>

Servo servo;
const int PIN = 13;

void setup() {
  servo.attach(PIN);
}

void loop() {
  for (int angle = 0; angle <= 180; angle += 2) {
    servo.write(angle);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle -= 2) {
    servo.write(angle);
    delay(15);
  }
}

В железе

В примере симулятора сервопривод питается от 3V3 платы для простоты. В железе SG90 питают 5 В от отдельного источника (или от VIN при питании от USB для одного привода), а землю соединяют с землёй контроллера. От вывода 3V3 привод дёргается и перезагружает плату.

Частые ошибки

Другие детали