Серводвигатель MG995 и Arduino
Серводвигатель MG995 поставляется с проводом длиной 30 см и 3-мя ‘S’ контактами типа мама.
Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.
Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.
Общий вид серводвигателя MG995 и габаритные размеры показаны на рисунке ниже.

Технические характеристики MG995
- Масса: 55 грамм;
- Размеры: примерно 40.7 х 19.7 х 42.9;
- Крутящий момент: 8.5 кг х см (при 4.8 В питания), 10 кг х см (при 6 В);
- Скорость: 0.2 с/60º (при 4.8 В), 0.16 с/60º (при 6 В);
- Рабочее питание: 4.8 - 7.2 В;
- Ширина мертвой зоны: 5 мкс;
- Диапазон рабочих температур: 0 ºC – 55 ºC.
Подключаем MG995 к Arduino
Для управления серводвигателем с помощью Arduino, можно подключить оранжевый контакт к пину 9 или 10 и использовать библиотеку Servo library, которая включена в Arduino IDE.
Как правило, контакт сигнала, который подключается к ШИМ выходу (а именно он используется для управления серводвигателем), оранжевого цвета, питание "+" - красного, питание "-" (GND) - коричневого.

Схема, которую можно использовать для подключения MG995 к Arduino показана на рисунке ниже.

В принципе, если запитать одну серву MG995 от Arduino, двигатель будет вращаться. Если вы дадите на двигатель слишком большую нагрузку, силы тока на плате может не хватить. Судя по отзывам, MG995 может потреблять до 0.3 А. Если в вашем проекте используется несколько серводвигателей, надо предусмотреть для них отдельный источник питания. При этом не забывайте, что «земля» должна быть общая. То есть, контакт GND на Arduino обязательно соединяется с GND на источнике питания для сервомашинок.
Скетч для Arduino и MG995
Для первого (тестового) запуска MG995, можно воспользоваться примером Sweep. В скетче используется библиотека Servo library. Пояснения и сам скетч приведены ниже.
#include <Servo.h>
Servo myservo; // создаем объект servo для управления серводвигателем
// можно создать 12 объектов servo на большинстве плат Arduino
int pos = 0; // переменная для хранения текущего положения сервы
void setup() {
myservo.attach(9); // серва подключена к 9 пину
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // вращаем ротор от 0 до 180 градусов
// с шагом в 1 градус
myservo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной 'pos'
delay(15); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию
}
for (pos = 180; pos >= 0; pos -= 1) { // вращение выходного вала от 180 градусов до 0 градусов
myservo.write(pos); // даем команду выйти в положение, которое записано в переменной 'pos'
delay(15); // ждем 15 мс, пока серва выйдет в заданное положение
}
}
Более детально особенности управления серводвигателями раскрыты в статье «Сервомотор и Arduino».
Если вы попали на эту статью и не понимаете, в чем разница между серводвигателем, двигателем постоянного тока и шаговым двигателем, рекомендуем вам ознакомиться со статьёй «Двигатели и Arduino».
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!