Учебники

Arduino — Серво Мотор

Сервомотор — это небольшое устройство с выходным валом. Этот вал может быть установлен в определенное угловое положение, посылая сервокод кодированный сигнал. Пока кодированный сигнал присутствует на входной линии, сервопривод будет поддерживать угловое положение вала. Если кодированный сигнал изменяется, угловое положение вала изменяется. На практике сервоприводы используются в радиоуправляемых самолетах для позиционирования поверхностей управления, таких как лифты и рули направления. Они также используются в радиоуправляемых автомобилях, марионетках и, конечно же, роботах.

Серводвигатель

Сервоприводы чрезвычайно полезны в робототехнике. Двигатели маленькие, имеют встроенную схему управления и очень мощные по своим размерам. Стандартный сервопривод, такой как Futaba S-148, имеет крутящий момент 42 унции / дюйм, что является сильным для его размера. Он также потребляет мощность, пропорциональную механической нагрузке. Поэтому слегка нагруженный сервопривод не потребляет много энергии.

Кишки серводвигателя показаны на следующем рисунке. Вы можете увидеть схему управления, двигатель, набор передач и корпус. Вы также можете увидеть 3 провода, которые подключаются к внешнему миру. Один для питания (+ 5 вольт), заземления, а белый провод — провод управления.

Схема управления серводвигателем

Работа серводвигателя

Серводвигатель имеет несколько цепей управления и потенциометр (переменный резистор, или резистор), подключенный к выходному валу. На картинке выше, горшок можно увидеть на правой стороне печатной платы. Этот бак позволяет схеме управления контролировать текущий угол серводвигателя.

Если вал находится под правильным углом, то двигатель отключается. Если цепь обнаружит, что угол неправильный, она будет вращать двигатель, пока он не окажется под нужным углом. Выходной вал сервопривода способен перемещаться где-то на 180 градусов. Обычно это где-то в диапазоне 210 градусов, однако, это зависит от производителя. Обычный сервопривод используется для контроля углового движения от 0 до 180 градусов. Механически он не способен вращаться дальше из-за механического упора, встроенного в основной выходной механизм.

Мощность, приложенная к двигателю, пропорциональна расстоянию, которое необходимо пройти. Таким образом, если вал должен вращаться на большое расстояние, двигатель будет работать на полной скорости. Если ему нужно повернуть только небольшое количество, двигатель будет работать с меньшей скоростью. Это называется пропорциональным контролем .

Как вы сообщаете угол, под которым должен поворачиваться сервопривод?

Управляющий провод используется для сообщения угла. Угол определяется длительностью импульса, подаваемого на контрольный провод. Это называется импульсной кодовой модуляцией . Серво ожидает импульса каждые 20 миллисекунд (0,02 секунды). Длина импульса будет определять, как далеко двигатель поворачивает. Например, импульс в 1,5 миллисекунды заставит двигатель повернуться в положение на 90 градусов (часто называемое нейтральным положением). Если импульс короче 1,5 миллисекунд, то двигатель повернет вал ближе к 0 градусам. Если импульс дольше 1,5 миллисекунд, вал поворачивается ближе к 180 градусам.

Угол поворота

Необходимые компоненты

Вам понадобятся следующие компоненты —

  • 1 × Arduino UNO доска
  • 1 × Серводвигатель
  • 1 × ULN2003 управляющая микросхема
  • Резистор 1 × 10 кОм

Процедура

Следуйте электрической схеме и выполните соединения, как показано на рисунке ниже.

Соединения серводвигателя

эскиз

Откройте программное обеспечение Arduino IDE на своем компьютере. Кодирование на языке Arduino будет контролировать вашу схему. Откройте новый файл эскиза, нажав Новый.

эскиз

Arduino Code

/* Controlling a servo position using a potentiometer (variable resistor) */

#include <Servo.h>
   Servo myservo; // create servo object to control a servo
   int potpin = 0; // analog pin used to connect the potentiometer
   int val; // variable to read the value from the analog pin

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
   val = analogRead(potpin);
   // reads the value of the potentiometer (value between 0 and 1023)
   val = map(val, 0, 1023, 0, 180);
   // scale it to use it with the servo (value between 0 and 180)
   myservo.write(val); // sets the servo position according to the scaled value
   delay(15);
}

Код для заметки

Серводвигатели имеют три клеммы — мощность, земля и сигнал. Провод питания обычно красного цвета и должен быть подключен к 5-вольтовому выводу на Arduino. Провод заземления обычно черный или коричневый и должен быть подключен к одной клемме микросхемы ULN2003 (10 -16). Чтобы защитить плату Arduino от повреждений, вам понадобится микросхема драйвера для этого. Здесь мы использовали микросхему ULN2003 для управления серводвигателем. Сигнальный контакт обычно желтый или оранжевый и должен быть подключен к контакту Arduino № 9.

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

Делитель напряжения / делитель потенциала — это резисторы в последовательной цепи, которые масштабируют выходное напряжение в соответствии с конкретным отношением приложенного входного напряжения. Ниже приведена принципиальная схема —

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

Vout=(Vin timesR2)/(R1+R2)

V out — выходной потенциал, который зависит от приложенного входного напряжения (V in ) и резисторов (R 1 и R 2 ) в серии. Это означает, что ток, протекающий через R 1 , также будет протекать через R 2 без разделения. В приведенном выше уравнении при изменении значения R 2 V out масштабируется соответственно относительно входного напряжения V in .

Как правило, потенциометр представляет собой делитель потенциала, который может масштабировать выходное напряжение цепи на основе значения переменного резистора, который масштабируется с помощью ручки. Он имеет три контакта: GND, Signal и + 5V, как показано на рисунке ниже —

Потенциометр с описанием

Результат

Изменяя положение NOP горшка, серводвигатель изменит свой угол.