Найти в Дзене
Лютая дичЪ

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

Во всех примерах подключения сервы к Arduino ограничиваются банальной разводкой проводов и кусочками кода, однако, не все так просто на самом деле. Есть некоторые нюансы, о которых умалчивают.

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

а) Обязательно подключать питание сервопривода к питанию в обход Arduino,

б) Нужно ставить электролитический конденсатор между +и землей питания сервопривода. И чем больше, тем лучше. Тогда при запуске сервы её мотор возьмёт на старте ток из конденсатора, а дальше уже в нормальном режиме будет крутиться от питания.

Подключение с конденсатором
Подключение с конденсатором

Причем питание для сервы (кучи серв) должно быть достаточно мощным, чтобы тянуть все одновременно работающие сервы разом. По документации, например, одна серва MG90S потребляет в пике 250мА. Если разом крутим 4 сервы - то нужно , чтобы питание выдавало как минимум 1А, но это без запаса, лучше 1,5А, но надежней 2А.

На практике выглядит так:

Подключение с конденсатором и DC-DC преобразователем для питания сервы
Подключение с конденсатором и DC-DC преобразователем для питания сервы

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

Для борьбы с этим эффектом, после передачи команды на вращение сервы можно давать команду на пин digitalWrite(LOW) серва перестает дребезжать и жрать ток впустую.

#include <Servo.h> // подключаем библиотеку для работы с сервоприводом

Servo Door1; // объявляем переменную

void setup() {

Door1.attach(A0); // Дверца на А0

InitDoor(Door1, A0);

}

// процедурка дрыганья сервой

void InitDoor(Servo Door, int port){

Door.write(0); // Вертим в угол 0градусов

delay(2000); // ждем пока провернется

Door.write(90);// Вертим в угол 90градусов

digitalWrite(port, LOW); //гасим дребезг, команда на поворот уже ушла и эта сработает уже после окончания поворота, если убрать эту строку - серва будет жужжать и слегка подрыгиваться туда-сюда

delay(3000);//ждем когда закончит вертеть

}