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

Сервопривод

SG90 к Arduino — три провода: питание 5 В (красный), земля (коричневый) и сигнал (оранжевый) на цифровой вывод. Угол задаёт импульс 1–2 мс раз в 20 мс; стандартная библиотека Servo делает это на любом выводе.

Схема подключения сервопривода SG90 к Arduino

Сервопривод SG90Arduino Uno
PWMD9
V+5V
GNDGND

Схема из примера «Arduino Uno: сервопривод, развёртка библиотекой Servo».

Arduino Uno: сервопривод, развёртка библиотекой Servo

Открыть пример целиком

Выводы Сервопривод SG90

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

Код для Arduino

#include <Servo.h>

// Сервопривод SG90 на выводе 9.
//
// Servo.h на AVR не использует аппаратный ШИМ. Таймер 1 вызывает
// прерывание, и оно поднимает и опускает вывод само: импульс 1–2 мс раз в
// 20 мс. Угол 0° — около 0,5 мс, 180° — около 2,4 мс.
//
// Следствие, о котором забывают: пока работает Servo, на Uno и Nano не
// работает ШИМ на выводах 9 и 10 (analogWrite) — таймер 1 занят.

Servo servo;
const int PIN = 9;

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);
  }
}

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

Что учесть на Arduino

В железе

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

Частые ошибки при подключении к Arduino

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