Как да управлявате серво мотор с Arduino

Kak Da Upravlavate Servo Motor S Arduino



Серво мотори е вид електрическо устройство, което може да промени или завърти позицията на обект с голяма точност. В началото те бяха използвани за управление на крила на RC самолет, мигове по-късно те си проправиха път към роботиката, хуманоидните роботи и много проекти за автоматизация. За разлика от стъпковите двигатели тяхното движение е ограничено между 0o до 180o.

Обикновено серво моторите имат рамена, които могат да се управляват с помощта на Arduino. Серво моторите се състоят от система за управление, която осигурява обратна връзка относно текущото положение на вала на двигателя тази обратна връзка позволява да се движите с голяма точност.

Pinout на серво мотор

Обикновено повечето серво мотори имат три щифта:







  • Vcc щифт (обикновено червен 5V)
  • GND щифт (обикновено черен 0V)
  • Pin за входен сигнал (Получаване на PWM сигнал от Arduino)



Работа на серво мотор

Можем да управляваме серво мотора, като свържем щифта Vcc към 5V и щифта GND към 0V. На терминала с жълт цвят предоставяме a ШИМ сигнал, който контролира ъгъла на въртене на сервомотора. Ширината на PWM сигнала ни дава ъгъла, под който моторът ще завърти рамото си.



Ако погледнем в листа с данни на серво мотори, получаваме следните параметри:





  • Времеви период на сигнала на ШИМ
  • Минимална ширина за ШИМ
  • Максимална ширина за PWM

Всички тези параметри са предварително дефинирани в библиотеката Arduino Servo.

Серво мотори с Arduino

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



Всичките три параметъра, споменати по-горе, са фиксирани в серво библиотеката. Използвайки тези параметри, можем да контролираме ъгъла на серво мотора по следния начин:

  • Ако ширината на PWM сигнала = WIDTH_MAX, сервото ще се завърти на 180o
  • Ако ширината на PWM сигнала = WIDTH_MIIN, сервото ще се завърти до 0o
  • Ако ширината на PWM сигнала е между тях WIDTH_MAX и WIDTH_MIN , серво моторът ще се върти между 0o и 180o

Можем да генерираме желания PWM сигнал на някои от щифтовете на Arduino. ШИМ сигналът ще бъде подаден на щифта на входния сигнал на серво мотора. Свързване на останалите два пина на серво към 5v и GND на Arduino.

Как да управлявате серво мотор с помощта на Arduino

Тук ще обясня как можем да свържем и програмираме нашия серво мотор с помощта на Arduino. Всичко от което се нуждаеш е:

  • Arduino UNO
  • USB B кабел
  • Серво мотор
  • Джъмперни проводници

Как да програмирате серво с Arduino

Следват няколко прости стъпки:

Етап 1: Включете предварително дефинирана серво библиотека:

# включват < Серво.ч >

Стъпка 2: Създайте серво обект:

Серво myservo;

Съвет: В случай, че контролирате повече от един серво мотор, трябва да създадете повече серво обекти:

Серво myservo1;
Серво myservo2;

Стъпка 3: Задайте контролен щифт (9) на Arduino Uno, който изпраща PWM сигнал към порта за входен сигнал на серво:

myservo.attach ( 9 ) ;

Стъпка 4: Завъртете ъгъла на серво мотора до желаната стойност, например 90o:

myservo.write ( поз ) ;

Код на Arduino

Отворете примерна програма за серво мотор от Файл>Пример>Серво>Почистване , ще се отвори нов прозорец, показващ нашата серво скица:

#include

Серво myservo; // се създава серво обект за управляващ серво мотор
int pos = 0 ; // за съхраняване на позицията на серво се създава нова променлива
void настройка ( ) {
myservo.attach ( 9 ) ; // това ще комплект Arduino щифт 9 за ШИМ изход
}
празен цикъл ( ) {
за ( поз = 0 ; поз = 0 ; поз -= 1 ) { // отива от 180 да се 0 степени
myservo.write ( поз ) ; // кажете на сервото да отиде в позиция 'поз'.
забавяне ( 5 ) ; // чака за 5 ms, така че сервото да може да достигне до позиция
}
}

След като програмата бъде компилирана и качена, серво моторът ще започне да се върти бавно от начална позиция 0 градуса до 180 градуса, градус по градус точно като стъпки. Когато моторът завърши завъртането си на 180 градуса, той ще започне да се върти в обратна посока към началната си точка, т.е. 0 градуса.

Схеми

Как да управлявате серво мотор с помощта на потенциометър

Можем също да контролираме позицията на серво мотора на ръка. За да направим това, имаме нужда от a Потенциометър . Потенциометърът има три пина. Свържете двата външни щифта към 5V Vcc и GND на Arduino и средния към щифта A0 на платката на Arduino.

Как да програмирате серво с потенциометър

По-голямата част от скицата за потенциометъра е същата като в предишния пример. Единствената разлика е нова променлива вал и подщифт се дефинира преди секцията за настройка и цикъл на кода.

int potpin = A0;
int val;

В секцията на веригата аналоговият щифт A0 се използва за четене на стойности за потенциометър с функция analogRead() . Платките на Arduino съдържат 10-битов ADC (аналогово-цифров преобразувател), който ни дава стойности между 0 и 1023 в зависимост от позицията на потенциометъра:

val = analogRead ( подщифт ) ;

Накрая използвахме карта() функция за пренасочване на числа от 0 до 1023 според ъгъла на серво, както знаем, че серво моторите могат да се въртят само между 00 и 1800.

val = карта ( Вал, 0 , 1023 , 0 , 180 ) ;

Код на Arduino

Скица на отворено копче, налична в Arduino IDE, отидете на Файлове>Примери>Серво>Копче . Ще се отвори нов прозорец, който ни показва нашата скица на копчето за серво:

#include
Серво myservo; // Създаване на серво обект с име myservo
int potpin = A0; // определящ аналогов щифт за потенциометър
int val; // променлива който ще Прочети аналогови пин стойности за потенциометър

void настройка ( ) {
myservo.attach ( 9 ) ; // дефиниран щифт 9 за ШИМ входен сигнал на серво на Arduino
}
празен цикъл ( ) {
val = analogRead ( подщифт ) ; // чете стойност от потенциометъра ( стойност между 0 и 1023 )
val = карта ( Вал, 0 , 1023 , 0 , 180 ) ; // мащабирайте стойността, която да използвате със сервото ( стойност между 0 и 180 )
myservo.write ( вал ) ; // задава серво позиция с мащабирана стойност
забавяне ( петнадесет ) ; // чака за сервото, за да стигне до позиция
}

Горният код ще ни помогне да контролираме вала на серво мотора с помощта на потенциометър, валът ще се върти между 0 и 180 градуса. Можем също така да поддържаме скорост заедно с посоката на сервото, използвайки го.

Електрическа схема

Колко серво мотора мога да свържа с Arduino?

Максималният брой серво мотори, с които Arduino UNO може да работи, е до 12 с библиотека Arduino за серво и максимум 48 серво може да се свърже с табла като Mega.

Бакшиш: Можем директно да стартираме серво, като използваме ток на Arduino, но помнете дали сервомоторите черпят повече от 500mA тогава вашата Arduino платка може автоматично да се нулира и да загуби захранване. Препоръчително е винаги да използвате специално захранване за серво мотори.

Заключение

В този урок разгледахме механизма за управление на серво мотори с Arduino. Обхванахме основите на контролиране на позицията и скоростта на серво с помощта на потенциометър. Вече имате представа за серво и възможностите за вашата роботика, RC проекти и автоматизация с помощта на серво са безкрайни.