Проект 21: Сервопривод


Введение:

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

Принцип работы:

Приемник или MCU выдает сигнал на серводвигатель. Двигатель имеет встроенную опорную схему, выдающую опорный сигнал, цикл 20 мс и ширину 1 .5мс. Электродвигатель сравнивает полученное напряжение смещения постоянного тока с напряжением потенциометра и выводит разность напряжений.

ИС на печатной плате соответственно определяет направление вращения и приводит в действие двигатель без сердечника. Затем шестерня передает усилие на вал. Датчик определяет, достиг ли он заданного положения в соответствии с сигналом обратной связи.

Серводвигатели используются в системах управления, которые требуют иметь и поддерживать различные углы. Когда скорость двигателя определена, передача вызывает вращение потенциометра. Когда разность напряжений уменьшается до нуля, двигатель останавливается. Обычно угол поворота составляет 0-90 градусов.

Проект 21: Сервопривод

Серводвигатель поставляется со многими спецификациями. Но все они имеют три соединительных провода, отличающиеся коричневым, красным, оранжевым цветами (разные марки могут иметь разный цвет). Коричневый - для GND, красный - для Power Positive, оранжевый - для сигнальной линии.

Проект 21: Сервопривод

Угол поворота сервопривода регулируется регулированием рабочего цикла сигнала ШИМ (широтно-импульсная модуляция).

Стандартный цикл сигнала ШИМ фиксируется в 20 мс (50 Гц), а длительность импульса распределяется между 1 мс-2 мс. Ширина соответствует углу поворота от 0 ° до 90 °.

Но отметим, что для разных фирменных моторов один и тот же сигнал может иметь разный угол поворота.

Проект 21: Сервопривод

После некоторых базовых знаний давайте научимся управлять серводвигателем.В этом эксперименте нужен только серводвигатель и несколько перемычек.

Необходимые аппаратные средства:

  1. Сервомотор motor*1
  2. Провод перемычки монтажной платы * 3

Варианты подключения:

Существует два способа управления серводвигателем с Arduino.

Один из них заключается в использовании общего цифрового сенсорного порта Arduino для получения прямоугольной волны с различным рабочим циклом для моделирования сигнала ШИМ и использования этого сигнала для управления положением двигателя.

Другим способом является непосредственное использование сервопривода Arduino для управления двигателем. Таким образом, программа будет проще, но она может управлять только двухконтактным двигателем из-за сервопривода, можно использовать только цифровые выводы 9 и 10.

Мощность привода Arduino ограничена. Так что если нужно управлять более чем одним мотором, понадобится внешняя мощность.

Метод 1:

Подключите сигнальную линию двигателя к цифровому контакту 9.

Связь для REV4:

Проект 21: Сервопривод

Подключение для 2560 R3:

Проект 21: Сервопривод

Скомпилируйте программу управления двигателем для поворота на заданный угол и отображайте угол на мониторе.

Пример кода A:

int servopin=9;// select digital pin 9 for servomotor signal line

int myangle;// initialize angle variable

int pulsewidth;// initialize width variable

int val;

void servopulse(int servopin,int myangle)// define a servo pulse function

{

pulsewidth=(myangle*11)+500;// convert angle to 500-2480 pulse width

digitalWrite(servopin,HIGH);// set the level of servo pin as “high”

delayMicroseconds(pulsewidth);// delay microsecond of pulse width

digitalWrite(servopin,LOW);// set the level of servo pin as “low”

delay(20-pulsewidth/1000);

}

void setup()

{

pinMode(servopin,OUTPUT);// set servo pin as “output”

Serial.begin(9600);// connect to serial port, set baud rate at “9600”

Serial.println("servo=o_seral_simple ready" ) ;

}

void loop()// convert number 0 to 9 to corresponding 0-180 degree angle, LED blinks corresponding number of time

{

val=Serial.read();// read serial port value

if(val>='0'&&val<='9')

{

val=val-'0';// convert characteristic quantity to numerical variable

val=val*(180/9);// convert number to angle

Serial.print("moving servo to ");

Serial.print(val,DEC);

Serial.println();

for(int i=0;i<=50;i++) // giving the servo time to rotate to commanded position

{

servopulse(servopin,val);// use the pulse function

}

}

}

Метод 2:

Сначала рассмотрим встроенную сервопривод Arduino и некоторые из ее общих утверждений.

  1. Attach (interface) - - выберите контакт для сервопривода, можно использовать только контакт 9 или 10.
  2. Write (угол) - - используется для управления углом поворота сервопривода, может устанавливать угол от 0 до 180 градусов.
  3. Read () - - используется для считывания угла сервопривода, считается функцией для считывания значения в функции write ().
  4. Attached () - определяет, передается ли параметр сервопривода на сервопривод.
  5. Отсоединить () - отсоединить сервопривод и контакт, а контакт (цифровой контакт 9 или 10) можно использовать для порта ШИМ.

Примечание.Письменная форма приведенных выше операторов - "имя переменной сервопривода. Конкретное утверждение () ", например, myservo. Будьте свойственны (9).

Тем не менее, подключите сигнальную линию сервопривода к контакту 9. См. схему подключения, упомянутую выше.

 

Типовая программа B:

Не забудьте поместить библиотеку Servo.h в каталог библиотек arduino.

#include <Servo.h>

/* define a header file. Special attention here, you can call the servo function directly from Arduino's software menu  bar Sketch>Importlibrary>Servo, or input

#include <Servo.h>. Make sure there is a space between #include and  <Servo.h>. Otherwise, it will cause compile error.*/

Servo myservo;// define servo variable name

void setup()

{

myservo.attach(9);// select servo pin(9 or 10)

}

void loop()

{

myservo.write(90);// set rotation angle of the motor

}

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

Проект 21: Сервопривод