Arduino Tutorial: MG 996R Servo Motor
A servo motor allows to precisely control a shaft to a specific rotary position. The MG 996R is one of the most popular servo motors within the maker community. This tutorial shows how to wire the MG 996R servo to an Arduino. Moreover, this tutorials includes a simple code example that let’s the motor rotate to various rotary positions.
Related products
MG 996R Servo Motor
The MG 996R is a popular servo motor within the Arduino Community. In contrast to the likewise popular SG90 servo, the MG 996R is able to rotate much higher weights. For example, you can see the MG 996R very frequently in 3D-printed robotic arm applications.
Technical specification
| Name | Value |
|---|---|
| Dimensions | ca. 40.7 x 19.7 x 42.9 mm |
| Weight | ca. 55g |
| Operating voltage | 4.8 V – 6.6 V |
| Operating current | ca. 600 – 1500mA |
| Stall torque | 9.4 kg/cm (4.8V); 11 kg/cm (6V) |
| Operating speed | 0.19 s/60º (4.8 V), 0.15 s/60º (6 V) |
| Angle | 0-180° |
Technical specification of MG 996R. Caution: There are different manufacturers, values might vary.
Example application
The example application is kept very simple. The motor rotates to four different positions with a delay of one second in between. If the motor has completed the last position, the sequence starts again.
Wiring
The motor has three wires: Brown (GND), Red (+5V) and Orange (PWM signal). Unfortunately, the motor can’t be directly powered from the Arduino. The motor will likely draw to much current from the Arduino. As a consequence, the Arduino might get damaged. In order to overcome this problem, I wired the motor to an external power supply.
In particular, I took a 5V USB power supply (power bank) to power the motor. For the wiring, I made use of a USB terminal adapter. The “-” signal from the USB terminal adapter is wired to the brown input of the servo motor. Accordingly, the “+” signal is wired to the servo’s red input. In order to guarantee the same signal level, the terminal adapter’s “-” signal is wired to one of the Arduino’s GND pins. Luckily, it is easily possible to connect two male jumper wires to a single terminal block of the adapter.
Next, Arduino’s pin #3 is wired to the orange input of the servo motor.
| MG 996R wire color | Description | Connected to |
|---|---|---|
| Brown | GND | USB Power Bank “-” and Arduino GND |
| Red | +5V (Powering the motor directly from the Arduino, might damage the Arduino) | USB Power Bank “+” |
| Orange | PWM signal | Arduino Pin #3 |
Example source code
I made use of the servo library to control the MG 996R motor. In the setup function, pin number 3 is made known to the servo object.
In the loop function, the motor is rotated to four different positions by the write method.
If everything has been correctly executed, the motor should start moving.
Let`s go design

У меня оказался клон версии 1.0, у которого уровни сигнала на входе А0 при нажатии кнопок заметно отличались от тех, которые указаны в примерах использования LCD Shield, поэтому пришлось определить их самостоятельно.
Для этого можно воспользоваться встроенным примером AnalogReadSerial.

Достаточно загрузить его в Arduino Uno с установленным LCD Shield и открыть монитор порта: в нем отображается уровень сигнала со входа А0 — как раз то, что, нужно. Остается только нажать кнопки по очереди.

- SELECT — 640;
- LEFT — 410;
- DOWN — 256;
- UP — 100;
- RIGHT — 0;
- Кнопка не нажата — 1023.

Видео с демонстрацией работы скетча.
Последняя команда delay в цикле loop определяет скорость работы привода.
Видео с демонстрацией работы скетча (задержка 15 мс) .
Как подключить моторчик mg996r

A servo motor allows to precisely control a shaft to a specific rotary position. The MG 996R is one of the most popular servo motors within the maker community. This tutorial shows how to wire the MG 996R servo to an Arduino. Moreover, this tutorials includes a simple code example that let’s the motor rotate to various rotary positions.
Related products
- MG 996R servo motor [Search on Aliexpress | Amazon | eBay.com]
- Arduino Uno [Search on Aliexpress | Amazon | eBay.com]
- Jumper Wires [Search on Aliexpress | Amazon | eBay.com]
- USB power bank [Search on Aliexpress | Amazon | eBay.com]
- USB terminal adapter [Search on Aliexpress | Amazon | eBay.com]
MG 996R Servo Motor
The MG 996R is a popular servo motor within the Arduino Community. In contrast to the likewise popular SG90 servo, the MG 996R is able to rotate much higher weights. For example, you can see the MG 996R very frequently in 3D-printed robotic arm applications.

Technical specification
| Name | Value |
|---|---|
| Dimensions | ca. 40.7 x 19.7 x 42.9 mm |
| Weight | ca. 55g |
| Operating voltage | 4.8 V – 6.6 V |
| Operating current | ca. 600 – 1500mA |
| Stall torque | 9.4 kg/cm (4.8V); 11 kg/cm (6V) |
| Operating speed | 0.19 s/60º (4.8 V), 0.15 s/60º (6 V) |
| Angle | 0-180° |
Technical specification of MG 996R. Caution: There are different manufacturers, values might vary.
Example application
The example application is kept very simple. The motor rotates to four different positions with a delay of one second in between. If the motor has completed the last position, the sequence starts again.
Wiring
The motor has three wires: Brown (GND), Red (+5V) and Orange (PWM signal). Unfortunately, the motor can’t be directly powered from the Arduino. The motor will likely draw to much current from the Arduino. As a consequence, the Arduino might get damaged. In order to overcome this problem, I wired the motor to an external power supply.
In particular, I took a 5V USB power supply (power bank) to power the motor. For the wiring, I made use of a USB terminal adapter. The “-” signal from the USB terminal adapter is wired to the brown input of the servo motor. Accordingly, the “+” signal is wired to the servo’s red input. In order to guarantee the same signal level, the terminal adapter’s “-” signal is wired to one of the Arduino’s GND pins. Luckily, it is easily possible to connect two male jumper wires to a single terminal block of the adapter.
Next, Arduino’s pin #3 is wired to the orange input of the servo motor.
| MG 996R wire color | Description | Connected to |
|---|---|---|
| Brown | GND | USB Power Bank “-” and Arduino GND |
| Red | +5V (Powering the motor directly from the Arduino, might damage the Arduino) | USB Power Bank “+” |
| Orange | PWM signal | Arduino Pin #3 |

Example source code
I made use of the servo library to control the MG 996R motor. In the setup function, pin number 3 is made known to the servo object.
In the loop function, the motor is rotated to four different positions by the write method.
If everything has been correctly executed, the motor should start moving.
Сервопривод MG996R
Сервопривод MG996R используется в основном для управления механизмами,
угол поворота которых ограничен диапазоном от 0 до 180 градусов.
Технические характеристики сервопривода MG996R:
Рабочее напряжение: от 4,8V до 7.2V (Вольт)
Размеры устройства: 55mm x 20mm x 20mm
Вес: 50 грамм
Температура использования: от -30 до +60 градусов по Цельсию
Схема подключения сервопривода:
Коричневый провод – Земля ( Ground, подключается к пину GND на плате Arduino )
Красный провод – Питание
Желтый провод – Сигнал управления ( подключается к цифровому пину Arduino )
Программирование сервопривода .
Необходимо в первую очередь подключить библиотеку Servo, которая облегчает работу с различными сервоприводами и значительно упрощает программный код.
Затем, объявляем наш сервопривод.
В разделе setup() назначаем пин управления сервоприводом. Здесь используем цифровой пин номер 9.
Далее внутри испоняемого блока программы управляем положением сервопривода.
В данном примере мы устанавливаем сервопривод в положение 60 градусов.
Сервопривод MG996R принимает заданное нами положение очень быстро, чтобы замедлить его поворот необходимо использовать цикл поворота с шагом в 1 градус и задержкой между каждым шагом.
Для управления скоростью поворота сервопривода можно задать специальную функцию.
Здесь используем функцию servoslow.
Функция управления скоростью сервопривода использует следующие параметры:
1. Имя сервопривода
2. Конечная позиция сервопривода ( в градусах)
3. Задержка между каждым поворотом в один градус ( чем больше значение, тем медленнее будет поворачиваться сервопривод)
4. Начальная позиция сервопривода.
Следует обращать внимание на напряжение, которое используется при работе сервопривода.
Если значение напряжения превышает допустимые значения из технических характеристик сервопривода,
механические части могут выйти из строя или зубчатые колеса сервопривода провернутся в положение превышающее
максимальные значения и механизм не сможет продолжать движение в обратном направлении.
Иными словами, завышенное напряжение скорее всего не приведет к сгоранию мотора сервопривода, но повредит механические части
зубчатых механизмов.
Сервоприводы Ардуино SG90, MG995, MG996: схема подключения и управление
Сервопривод Ардуино (англ. — arduino servo) — устройство с электрическим мотором, которое можно повернуть на определенный угол и оставить в этом положении на определенное время.
Сервомоторы Ардуино по сути своей отличные устройства, которые могут поворачиваться в указанное положение и могут применяться в огромном количестве областей. Особенно сейчас их чаще всего применяют в робототехнике.
Обычно у них есть выходной вал, который может поворачиваться на 180 градусов. Используя Arduino мы можем задать сервомотору определенное положение в которое он перейдет.
Изначально сервоприводы начали использовать еще задолго до появления Ардуино, скажем так, в мире пультов дистанционного управления (RC), как правило, для управления рулевым колесом игрушечных машинок или крыльями самолетов. Со временем они нашли свое применение в робототехнике, автоматизации и, конечно же, в мире Ардуино.
В нашем материале мы увидим как подключить сервопривод Ардуино, а затем как управлять этим полезным механизмом и поворачивать его в определенные положения.
Деньги и настройки
В нижней части ценового диапазона большинство сервоприводов используют триммеры или пресеты для настройки алгоритмов управления. Хорошим примером такого сервопривода является G320X от Geckodrive Motor Controls. Хотя такие драйверы являются прекрасными «исполнителями», настройки крошечных потенциометров, находящихся на печатной плате, довольно размыты. Это может стать проблемой, так как настройки триммера трудно повторить. При параллельной работе нескольких систем невозможно установить все потенциометры в одно и то же положение «на глаз».
Регулировки аналоговых входов должны выполняться оператором вручную. Автоматизировать процесс наладки таких электроприводов очень сложно, если не невозможно.

Различие в настройках также можно использовать для устранения неполадок. Слишком большие расхождения в настройках ПИД регулятора во время сборки может сигнализировать об ошибке в сборке или проблемы с компонентами регулятора. В течении срока службы данной системы можно фиксировать и анализировать регулярные корректировки, чтоб определить слабые и сильные стороны.
Как это работает
Сервоприводы Arduino — это умные устройства. Используя только один входной пин, они получают значения для позиционирования от микроконтроллера и переходят в это положение. Как можно увидеть на рисунке в самом начале статьи внутри они имеют двигатель и цепь обратной связи, которая гарантирует, что вал/рычаг сервопривода достигнет желаемого положения.
Но какой сигнал сервомоторы получают на входе? Это прямоугольная волна, подобная PWM (англ. — pulse-width modulation, широтно-импульсная модуляция). Каждый цикл в сигнале длится 20 миллисекунд, и большая часть времени в значении LOW. В начале каждого цикла значение сигнала становится HIGH на время от 1 до 2 миллисекунд.
При 1 миллисекунде она составляет 0 градусов, а при 2 миллисекундах — 180 градусов, а в промежутке значение от 0 до 180. Это очень хороший и надежный метод. График выше упрощает понимание.
Управление сервоприводом. Интерфейс управляющих сигналов
Чтобы указать сервоприводу желаемое положение, по предназначенному для этого проводу необходимо посылать управляющий сигнал. Управляющий сигнал — импульсы постоянной частоты и переменной ширины.

То, какое положение должен занять сервопривод, зависит от длины импульсов. Когда сигнал поступает в управляющую схему, имеющийся в ней генератор импульсов производит свой импульс, длительность которого определяется через потенциометр. Другая часть схемы сравнивает длительность двух импульсов. Если длительность разная, включается электромотор. Направление вращения определяется тем, какой из импульсов короче. Если длины импульсов равны, электромотор останавливается.
Чаще всего в хобби-сервах импульсы производятся с частотой 50 Гц. Это значит, что импульс испускается и принимается раз в 20 мс. Обычно при этом длительность импульса в 1520 мкс означает, что сервопривод должен занять среднее положение. Увеличение или уменьшение длины импульса заставит сервопривод повернуться по часовой или против часовой стрелки соответственно. При этом существуют верхняя и нижняя границы длительности импульса. В библиотеке для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс — для 0° и 2400 мкс — для 180°.
Обратите внимание, что на вашем конкретном устройстве заводские настройки могут оказаться отличными от стандартных. Некоторые сервоприводы используют ширину импульса 760 мкс
Среднее положение при этом соответствует 760 мкс, аналогично тому, как в обычных сервоприводах среднему положению соответствует 1520 мкс.
Также стоит отметить, что это всего лишь общепринятые длины. Даже в рамках одной и той же модели сервопривода может существовать погрешность, допускаемая при производстве, которая приводит к тому, что рабочий диапазон длин импульсов немного отличается. Для точной работы каждый конкретный сервопривод должен быть откалиброван: путём экспериментов необходимо подобрать корректный диапазон, характерный именно для него.
На что ещё стоит обратить внимание, так это на путаницу в терминологии. Часто способ управления сервоприводами называют PWM/ШИМ (Pulse Width Modulation) или PPM (Pulse Position Modulation)
Это не так, и использование этих способов может даже повредить привод. Корректный термин — PDM (Pulse Duration Modulation). В нём крайне важна длина импульсов и не так важна частота их появления. 50 Гц — это норма, но сервопривод будет работать корректно и при 40, и при 60 Гц. Единственное, что нужно при этом иметь в виду — это то, что при сильном уменьшении частоты он может работать рывками и на пониженной мощности, а при сильном завышении частоты (например, 100 Гц) может перегреться и выйти из строя.
Подключение сервопривода к Ардуино
Схема подключения ниже:
Сервомотор имеет много встроенных деталей: двигатель, цепь обратной связи и, самое главное, драйвер мотора. Ему просто нужно дополнительно питание, земля и один контрольный пин. Ниже шаги для подключения сервопривода к Arduino, но вы можете всегда свериться с изображением выше.
- Подключите Землю к GND Arduino.Сервомотор имеет гнездовой разъем с тремя контактами. Самый темный или даже черный — это обычно земля.
- Подключите кабель питания, который по всем стандартам должен быть красным к 5В на Ардуино.
- Подключите оставшийся контакт разъема сервопривода к цифровому выходу на Arduino.
Также ниже приводим пример подключения двигателя и Arduino Diecimilia. Фото найдено на официальном сайте производителя микроконтроллеров.
Для этого варианта подключение следующее:
- Подключите красный от сервопривода к +5 В на ардуине.
- Подключите черный/коричневый от сервопривода к Gnd на ардуино.
- Подключите белый/оранжевый от сервопривода к аналоговому 0 на arduino.
Без практики никуда
Без практического опыта невозможно овладеть различными методами настройки. Лучше всего практиковаться на испытательном оборудовании. Это позволит избежать крупных финансовых потерь, так как дорогое или важное оборудование не будет уничтожено в процессе испытания. Также испытательное оборудование с меньшей вероятностью может привести к травме.
Для этой цели идеально подходит линейный этап, который может сочетаться с различными комбинациями драйверов и двигателей. Регулировка триммеров руками даст вам почувствовать каждую переменную ПИД регулятора. Этот опыт будет иметь неоценимое значение при принятии решений о выборе серводвигателей и драйверов.
Скетч для сервопривода Ардуино
Скетч ниже заставит сервопривод переместиться в позицию 0 градусов, подождать 1 секунду, затем повернуться на 90 градусов, подождать еще одну секунду, после повернуться на 180 градусов и перейти в первоначальное положение.
Также дополнительно мы используем библиотеку servo — скачайте ниже или в нашем разделе Библиотеки.
Содержимое zip-файла размещается в папку arduino-xxxx/hardware/liraries.
Скетч № 1
// Подклоючаем библиотеку Servo #include // Пин для сервопривода int servoPin = 3; // Создаем объект Servo Servo1; void setup() void loop()
Если сервомотор подключен к другому цифровому контакту, просто измените значение servoPin на значение используемого цифрового вывода.
Помните! Использование библиотеки Servo автоматически отключает функцию PWM для PWM-контактов 9 и 10 на Arduino UNO и аналогичных платах.
Наш код просто объявляет объект и затем инициализирует сервопривод с помощью функции servo.attach(). Мы не должны забывать подключать серво библиотеку. В цикле мы устанавливаем сервопривод на 0 градусов, ждем, а затем устанавливаем его на 90, а затем на 180 градусов.
Скетч № 2
Второй скетч для варианта с Arduino Diecimilia ниже.
Нам достаточно будет скачать и подключить библиотеку из архива:
Дополнительные примеры скетчей
Следующий код позволяет вам контролировать серводвигатель на пине 2 с помощью потенциометра на аналоговом 0.
Следующий код — это поворот (пинг/понг) на выводе A0 с переменной скоростью.
Дополнительные возможности
Управление сервоприводами на Ардуино очень простое и мы можем использовать еще несколько интересных фишек.
Контроль точного времени импульса
Ардуино имеет встроенную функцию servo.write(градусы), которая упрощает управление сервомоторами. Однако не все сервоприводы соблюдают одинаковые тайминги для всех позиций. Обычно 1 миллисекунда означает 0 градусов, 1,5 миллисекунды — 90 градусов, и, конечно, 2 миллисекунды означают 180 градусов. Некоторые сервоприводы имеют меньший или больший диапазон.
Для лучшего контроля мы можем использовать функцию servo.writeMicroseconds(микросекунды), которая в качестве параметра принимает точное количество микросекунд. Помните, 1 миллисекунда равна 1000 мкс.
Несколько сервоприводов
Чтобы использовать более одного сервопривода в Ардуино нам нужно объявить несколько серво-объектов, прикрепить разные контакты к каждому из них и обратиться к каждому индивидуально. Итак, нам нужно объявить объекты — столько сколько нам нужно:
// Создаем объекты Servo Servo1, Servo2, Servo3;
Затем нам нужно прикрепить каждый объект к сервомотору. Помните, что каждый сервопривод использует отдельный пин:
Servo1.attach(servoPin1); Servo2.attach(servoPin2); Servo3.attach(servoPin3);
В конце концов, мы должны обращаться к каждому объекту индивидуально:
Servo1.write(0); // Задать для Servo 1 позицию в 0 градусов Servo2.write(90); // Задать для Servo 2 позицию в 90 градусов
Подключение. Земля сервоприводов идёт на GND Arduino, питание на 5В или VIN (в зависимости от входа). И, в конце концов, каждый привод должен быть подключен к отдельному цифровому выводу.
Вопреки распространенному мнению, сервоприводами не нужно управлять через пины PWM — любой цифровой пин подойдет и будет работать.
Управление мышью
Чтобы управлять серво с помощью мыши, вот простой код:
Вам не обязательно использовать этот код, вы также можете отправлять команды на плату arduino с серийного монитора Arduino IDE. Позиция сервопривода от 0 до 180 — это команды 0 и 180 сек соответственно.
В основном этот код берет позицию mouseX (от 0 до 720) и делит на 4, чтобы получить угол для сервопривода (0-180). Наконец, значение выводится на последовательный порт с префиксом ‘s’.
Примечание: «s» на самом деле должен быть суффиксом, но поскольку это повторяется, это не имеет значения для результата.
Не забудьте сначала проверить с помощью println(Serial.list ()) COM-порт, который следует использовать.
Сервоприводы с непрерывным вращением
Существует специальные типы сервоприводов, обозначенные как сервоприводы непрерывного вращения. В то время как нормальный сервопривод переходит в определенную позицию в зависимости от входного сигнала, сервопривод непрерывного вращения вращается по часовой стрелке или против часовой стрелки со скоростью, пропорциональной сигналу.
Например, функция Servo1.write(0) заставит сервомотор вращаться против часовой стрелки на полной скорости. Функция Servo1.write(90) остановит двигатель, а Servo1.write(180) будет вращать вал по часовой стрелке на полной скорости.
Таким сервоприводам нашли несколько применений, но нужно понимать, что они достаточно медленные. Один из вариантов — микроволновая печь, когда есть необходимость в двигателе для вращения продуктов питания. Но будьте осторожны, микроволны — опасное дело!
Управление сервоприводом Ардуино
Сегодня мы поговорим про серводвигатели или сервоприводы, можно сказать и так и так.
Рассмотрим 2 модели двигателей.
- С фиксированным углом 180° градусов
- Сервопривод непрерывного вращения на 360° градусов.
Напишем простой скетч для управления движением одной и двумя сервами.
Если вы посмотрите видео, то там показано как я подключил лазер и управлял им двумя сервоприводами. И даже нарисовал квадрат. Правда на камеру снялось не очень хорошо, но движения были ровными и прямые и углы были чётко выражены.
Так что же такое сервопривод?
Сервопривод — это механизм с электромотором и с управлением обратной связи, который может вращать механический привод на заданный угол с заданной скоростью.
Отличия сервопривода от шагового мотора.
- Шаговый двигатель просто считает «шаги», сколько он должен прошагать в секунду, чтобы оказаться в месте назначения.
Его недостатки — это возможность потери шагов при больших нагрузках.
- В сервоприводах используется механизм обратной связи, поэтому он может обрабатывать ошибки и исправлять их.
Такая система называется следящей. Про шаговый двигатель я уже делал видео, посмотреть можно на моём канале.
Наиболее популярны типы сервоприводов:
- сервоприводы которые удерживают заданный угол
- сервоприводы поддерживающие заданную скорость вращения.

Управлять сервоприводом можно вручную, т.е. написав код самому или с помощью библиотеки Servo.h входящей в состав ARDUINO IDE, или библиотеки Servo2.h, если вам необходимо работать с приёмниками/ передатчиками работающими на частоте 433 МГц.
Библиотека VirtualWire.h используют одно и то же прерывание, что и Servo.h. Это означает, что их нельзя использовать в одном проекте одновременно.
Мы рассмотри вариант с библиотекой, так как он намного проще.
Подключение сервопривода к Ардуино.
Сервопривод обладает тремя контактами, провода которые идут к ним окрашены в разные цвета.
- Коричневый провод ведет к земле,
- красный – к питанию +5В,
- провод оранжевого или желтого цвета – сигнальный.

Не рекомендуется подключать мощные сервоприводы напрямую к плате , т.к. они потребляют большой ток, что может вывести из строя вашу Ардуино или вызовут другие симптому, например перегрузку платы или постоянном “дергании” сервопривода.
Для питания лучше использовать внешние источники, обязательно объединяя земли двух контуров.
Ограничение по количеству подключаемых сервоприводов
На большинстве плат Arduino библиотека Servo.h поддерживает управление не более 12 сервоприводами, на Arduino Mega это число вырастает до значения 48.
При этом есть небольшой побочный эффект использования этой библиотеки: если вы работаете не с Arduino Mega, то становится невозможным использовать функцию analogWrite() на 9 и 10 контактах независимо от того, подключены сервоприводы к этим контактам или нет.
Управление движением сервопривода
Управление движением сервопривода зависит от длинны импульсов.
Частота импульсов 50Гц. — это значит, что импульс срабатывает каждые 20мс.
Длительность импульса.
- 1520мкс = 90 градусов среднее положение
- 544мкс = 0 градусов
- 2400мкс = 180 градусов

В библиотеке Servo.h для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс — для 0° и 2400 мкс — для 180°.
Плата управления анализирует сигнал на управляющем проводе, и если информация об угле поворота содержащаяся в сигнале отличается от фактического положения вала, то он поворачивается до тех пор, пока его положение не сравняется с заданным.
Скорость перемещения можно изменять либо путем изменения задержки между шагами функцией delay(), либо путем изменения шага, а именно правкой последнего значения в аргументах цикла — for (pos = 180; pos >= 0; pos -= 1)
Сервопривод SG90.
Характеристики и подключение SG-90
Если вы собрались купить самый дешевый и простой сервопривод, то SG 90 будет лучшим вариантом. Этот сервопривод чаще всего используется в управлении небольшими легкими механизмами с углом поворота от 0° до 180°.
Технические характеристики SG90:
- Скорость отработки команды 0,12с/60 градусов;
- Питание 4,8В; Питание 5 вольт допустимо.
- Рабочие температуры от -30°С до 60°С;
- Размеры 3,2 х 1,2 х 3 см;
- Вес 9 г.
Описание SG90.
Скорость поворота — это время поворота на угол 60°;
Крутящий момент (кг/см) — эта величина говорит о том, какой вес в килограммах выдерживает двигатель, при длине рычага в 1 см от вала;
Напряжение питания и потребляемый ток;
Такой сервопривод стоит недорого, поэтому он не обеспечивает точных настроек начальных и конечных позициях.
Для того, чтобы избежать лишних перегрузок и характерного треска, в положении 0° и 180° градусов лучше выставлять крайние точки в 10° и 170°.
При работе устройства важно следить за напряжением питания.
При сильной нагрузке могут повредиться механические элементы зубчатых механизмов, т.к. они пластмассовые.
Сервопривод непрерывного вращения на 360 градусов.
Сервопривод MG995
Сервопривод MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервоприводы, обладающие гораздо лучшими характеристиками по сравнению с SG90. Они выпускаются в двух модификациях, как обычные сервопривода, так и сервоприводы непрерывного вращения. В таком варианте управлять поворотом на определённый угол очень затруднительно, а управлять можно только скоростью и направлением вращения.
При этом важно отметить, что такой сервопривод не может поворачиваться на определенный угол и делать строго заданное количество оборотов.
#include <Servo.h>
Servo myservo;
void setup()
void loop()
Отличие сервоприводов непрерывного вращения отличается в том, что функция Servo.write(angle) задаёт не угол, а скорость вращения привода:
Функция Arduino
Сервопривод 180°
Сервопривод 360°
Крайне левое положение
Полный ход в обратном направлении
Крайне правое положение
Полный ход в прямом направлении
Например.
Функция Servo.write(0) заставит сервопривод вращаться против часовой стрелки на полной скорости.
Функция Servo.write(90) остановит двигатель, а
Servo.write(180) будет вращать вал по часовой стрелке на полной скорости.
Описание работы скетчей показанных в видео, которые можно скачать в описании к видео.
Servo1
Подключаем сервомотор к пину 9 и программируем его на движение
Устанавливаем в нулевое положение
Затем двигаем на 90° градусов
Потом ещё на 90° и оказываемся в положении 180° градусов. Это максимально значение для этого сервомотора.
Потом возвращаемся в 90°, а затем снова в начальное положение.
В ноль.
Servo2
Подключаем два сервомотора.
Первый к пину 9 , второй к пину 10
Первую серву устанавливаем в начальное положение 0°, а вторую 180°.
Теперь если поставить их рядом то они будут двигаться в противоположных направлениях.
Servo3
Подключаем два сервомотора.
Первый к пину 9 , второй к пину 10
И подключаем два потенциометра по 10 кОм каждый.
Два крайних вывода подключаем к питанию.
Один к плюсу. Другой к земле.
А средний контакт к Аналоговому входу А 1, другой к А 2
Первую и вторую серву устанавливаем в начальное положение 0°.
Теперь можно управлять движением обоих сервомоторов просто вращая потенциометры.
Теперь посмотрим другой тип сервоприводов, а именно сервоприводы с непрерывным вращением.
Они могут вращаться на 360 градусов, но у них есть недостаток, они не могут повернуться на определённый угол.
У них можно управлять только скоростью вращения.
Servo4
Для Сервомоторов с непрерывным вращением также используется библиотека Servo.h
Только управление происходит не по градусам, а управляется скоростью.
90° это полная остановка,
А 0° и 180° это максимальные значения в одну и другую сторону.
В примере показано, что сначала мотор двигается с максимально скоростью против часовой стрелки 4 секунды.
Затем останавливается и ждёт 2 секунды.
Затем плавно ускоряется по часовой стрелке до максимума.
Потом остановка, и всё сначала.
Servo5
Теперь попробуем нарисовать лазером прямоугольник.
Для этого подключим лазер, Он подключается как обычный светодиод.
Если вы не знаете как подключить светодиод, то можете посмотреть моё видео, я там подробно описал как это сделать.
Если вы смотрели предыдущие примеры, то для вас это не составит труда.
В вкратце. Здесь в циклах for() мы даём команду сервомотору двигаться по определённому пути.

Servo6
Просто движение сервомоторов от минимальной до максимальной скорости.
В этом примере я изменил скорость вращения в цикле for().
Теперь он будет делать по 3 шага вместо 1.
Servo7
Управление через COM
Здесь я передаю градусы поворота.
Первые — это для первого сервопривода, вторые для второго.
Смотрите в видео.
Не забываем подписываться на канал, если вам интересно что я делаю.
Ставим лайк и оставляем комментарии – этим вы покажете мне, что я не просто так делаю обучающие уроки.
До встречи.
Сервопривод MG996R
Сервопривод MG996R используется в основном для управления механизмами,
угол поворота которых ограничен диапазоном от 0 до 180 градусов.
Технические характеристики сервопривода MG996R:
Рабочее напряжение: от 4,8V до 7.2V (Вольт)
Размеры устройства: 55mm x 20mm x 20mm
Вес: 50 грамм
Температура использования: от -30 до +60 градусов по Цельсию
Схема подключения сервопривода:
Коричневый провод – Земля ( Ground, подключается к пину GND на плате Arduino )
Красный провод – Питание
Желтый провод – Сигнал управления ( подключается к цифровому пину Arduino )
Программирование сервопривода .
Необходимо в первую очередь подключить библиотеку Servo, которая облегчает работу с различными сервоприводами и значительно упрощает программный код.
Затем, объявляем наш сервопривод.
В разделе setup() назначаем пин управления сервоприводом. Здесь используем цифровой пин номер 9.
Далее внутри испоняемого блока программы управляем положением сервопривода.
В данном примере мы устанавливаем сервопривод в положение 60 градусов.
Сервопривод MG996R принимает заданное нами положение очень быстро, чтобы замедлить его поворот необходимо использовать цикл поворота с шагом в 1 градус и задержкой между каждым шагом.
Для управления скоростью поворота сервопривода можно задать специальную функцию.
Здесь используем функцию servoslow.
Функция управления скоростью сервопривода использует следующие параметры:
1. Имя сервопривода
2. Конечная позиция сервопривода ( в градусах)
3. Задержка между каждым поворотом в один градус ( чем больше значение, тем медленнее будет поворачиваться сервопривод)
4. Начальная позиция сервопривода.
Следует обращать внимание на напряжение, которое используется при работе сервопривода.
Если значение напряжения превышает допустимые значения из технических характеристик сервопривода,
механические части могут выйти из строя или зубчатые колеса сервопривода провернутся в положение превышающее
максимальные значения и механизм не сможет продолжать движение в обратном направлении.
Иными словами, завышенное напряжение скорее всего не приведет к сгоранию мотора сервопривода, но повредит механические части
зубчатых механизмов.
