Arduino и серводвигатели - основы

В данном примере мы рассмотрим основы управления серводвигателями с помощью Arduino.

Сфера применения серводвигателей в моделировании и производстве очень обширна. В основном они используются для приводов позиционирования, так как обеспечивают высокую точность поворота ротора и его выхода в позицию. Естественно, практически ни один «живой» робототехнический проект без серводвигателей не обойдется.

Необходимые материалы

  • Плата Arduino Uno R3
  • Макетная плата
  • Переходники
  • 2 микро-серводвигателя (вал поворачивается на 180 градусов). Можно и один. Это не принципиально.
  • 2 серводвигателя с возможностью вращения ротора на 260 градусов. Также достаточно одного.
  • Потенциометр

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

Потенциометр

Ардуино+потенциометр

Советую более детально ознакомиться с этим примером, если вы подключаете потенциометр к Arduino впервые. Впрочем, в его подключении ничего сложного нет.

Средний контакт потенциометра подключается к аналоговому пину A0 (синий), два боковых контакта – к земле (черный) и питанию 5 вольт (красный).

Подключение серводвигателей

Servo 360

Micro-servo

Обратите внимание, что никакой разницы между подключением серводвигателей с поворотом ротора на 360 градусов и на 180 нет. Вообще, любой серводвигатель имеет три выхода – земля (в данном случае, на схеме – черный, на приводах может быть коричневым), питание (красный, но может быть и оранжевым) и сигнал (белый или желтый на сервах, на схеме обозначен синим).

4 servos

Единственное, на что стоит обратить внимание: подключаются сервы только к ШИМ-выходам. На плате Arduino Uno их шесть: пины 3, 5, 6, 9, 10, 11. В нашем примере и скетче прописаны пины 3, 5, 10, 11/

Программирование платы

Можете просто скопировать и вставить этот кусок кода в оболочку Arduino IDE. С помощью данной программы вы сможете управлять вращением ротора серводвигателя, подключенного к 10 пину вашей платы. Обратите внимание, что в скетче использована встроенная библиотека Servo.h.

#include <Servo.h>

Servo myservo;

int potpin = 0;

int val;

void setup()

{

myservo.attach(10); // меняем это значение для управления двигателями,

которые подключены к другим пинам

}

void loop()

{

val = analogRead(potpin);

val = map(val, 0, 1023, 0, 179);

myservo.write(val);

delay(15);

}

Аналогичным образом мы можем реализовать управление остальными приводами. Учтите, что если вы захотите запустить их одновременно, вам может не хватить силы тока и привода просто не сдвинутся. Ну или вообще может сгореть плата (что, впрочем, маловероятно ;)). Для одновременного запуска всех приводов необходим дополнительный источник питания, который выдаст больше, чем 1 A, который максимально пропускает плата Arduino.