Cum să controlezi servomotorul cu Arduino

Cum Sa Controlezi Servomotorul Cu Arduino



Servomotoare este un tip de dispozitiv electric care poate schimba sau roti poziția unui obiect cu mare precizie. La început, au fost folosiți pentru a controla aripile avioanelor RC câteva momente mai târziu, și-au făcut drum spre robotică, roboți umanoizi și multe proiecte de automatizare. Spre deosebire de motoarele pas cu pas, mișcarea lor este limitată între 0o și 180o.

De obicei, servomotoarele au brațe care pot fi controlate folosind Arduino. Servomotoarele constau dintr-un sistem de control care asigură părere despre poziția actuală a arborelui motor, acest feedback permite deplasarea cu mare precizie.

Pinout pentru servomotor

De obicei, majoritatea servomotoarelor au trei pini:







  • Pin Vcc (normal roșu 5V)
  • Pin GND (în mod normal negru 0V)
  • Pin semnal de intrare (primiți semnal PWM de la Arduino)



Funcționarea servomotorului

Putem controla servomotorul conectând pinul Vcc la 5V și pinul GND la 0V. Pe terminalul de culoare galbenă, oferim a PWM semnal care controlează unghiul de rotație al servomotorului. Lățimea semnalului PWM ne oferă unghiul la care motorul își va roti brațul.



Dacă ne uităm în fișa de date a servomotoarelor, obținem următorii parametri:





  • Perioada de timp a semnalului PWM
  • Lățimea minimă pentru PWM
  • Lățimea maximă pentru PWM

Toți acești parametri sunt predefiniti în biblioteca Arduino Servo.

Servomotoare cu Arduino

Servomotoarele sunt foarte ușor de controlat cu Arduino, datorită Biblioteca Servo care ne ajută să ne personalizăm codul în funcție de nevoi și ne permite să rotim brațul servo la unghiul dorit.



Toți cei trei parametri menționați mai sus sunt fixați în biblioteca Servo. Folosind acești parametri, putem controla unghiul servomotorului în următorul mod:

  • Dacă lățimea semnalului PWM = WIDTH_MAX, servo se va roti la 180o
  • Dacă lățimea semnalului PWM = WIDTH_MIIN, servo se va roti la 0o
  • Dacă lățimea semnalului PWM se află între ele WIDTH_MAX și WIDTH_MIN , servomotorul se va roti între 0o și 180o

Putem genera un semnal PWM dorit pe unii dintre pinii Arduino. Semnalul PWM va fi dat la pinul semnalului de intrare al servomotorului. Conectarea celor doi pini rămași ai servo la 5v și GND de la Arduino.

Cum să controlezi servomotorul folosind Arduino

Aici voi explica cum ne putem conecta și programa servomotorul folosind Arduino. Tot ce ai nevoie este:

  • Arduino UNO
  • Cablu USB B
  • Servo motor
  • Fire jumper

Cum se programează servo cu Arduino

Iată câțiva pași simpli:

Pasul 1: Includeți biblioteca servo predefinită:

# include < Servo.h >

Pasul 2: Creați obiect servo:

Servo myservo;

Sfat: În cazul în care, dacă controlați mai multe servomotoare, trebuie să creați mai multe obiecte servo:

Servo myservo1;
Servo myservo2;

Pasul 3: Setați pinul de control (9) pe Arduino Uno care trimite semnal PWM la portul de semnal de intrare al servo:

myservo.attach ( 9 ) ;

Pasul 4: Rotiți unghiul servomotorului la valoarea dorită, de exemplu 90o:

myservo.scrie ( poz ) ;

Cod Arduino

Deschide programul exemplu de servomotor de la Fișier>Exemplu>Servo>Sweep , se va deschide o nouă fereastră care ne arată schița noastră de servo:

#include

Servo myservo; // este creat obiectul servo pentru controlul servomotorului
int pos = 0 ; // pentru a stoca poziția servo este creată o nouă variabilă
anulează configurarea ( ) {
myservo.attach ( 9 ) ; // asta va a stabilit Pin Arduino 9 pentru Ieșire PWM
}
buclă goală ( ) {
pentru ( poz = 0 ; poz = 0 ; pos -= 1 ) { // merge de la 180 la 0 grade
myservo.scrie ( poz ) ; // spuneți servo să treacă în poziția „poz”.
întârziere ( 5 ) ; // asteapta pentru 5 ms, astfel încât servo să poată ajunge la poziție
}
}

Odată ce programul este compilat și încărcat, servomotorul va începe să se rotească lent de la poziția de pornire 0 grade la 180 de grade, câte un grad, la fel ca pașii. Când motorul a finalizat rotirea de 180 de grade, acesta își va începe rotirea în direcția opusă către punctul său de pornire, adică 0 grade.

Scheme

Cum se controlează servomotorul folosind potențiometrul

De asemenea, putem controla manual poziția servomotorului. Pentru a face acest lucru avem nevoie de un Potențiometru . Potențiometrul are trei pini. Conectați cei doi pini externi la 5V Vcc și GND ai Arduino și unul din mijloc la pinul A0 de pe placa Arduino.

Cum se programează servo cu potențiometru

Cea mai mare parte a schiței pentru potențiometru este aceeași cu exemplul anterior. Singura diferență este o nouă variabilă val și subpin este definit înainte de secțiunea de configurare și buclă a codului.

int potpin = A0;
int val;

În secțiunea buclă, pinul analog A0 este utilizat pentru a citi valorile potențiometrului cu funcție analogRead() . Plăcile Arduino conțin ADC (convertor analog-digital) pe 10 biți, oferindu-ne valori între 0 și 1023, în funcție de poziția potențiometrului:

val = analogRead ( subpin ) ;

În cele din urmă, am folosit Hartă() funcția de a re-mapează numerele de la 0 la 1023 în funcție de unghiul Servo, așa cum știm, Servomotoarele se pot roti doar între 00 și 1800.

val = harta ( val, 0 , 1023 , 0 , 180 ) ;

Cod Arduino

Deschideți schița butonului disponibilă în Arduino IDE, accesați Fișiere>Exemple>Servo>Knob . Se va deschide o nouă fereastră care ne arată schița butonului nostru pentru servo:

#include
Servo myservo; // Crearea unui obiect servo nume myservo
int potpin = A0; // definirea pinului analogic pentru potențiometru
int val; // variabil care voi citit valorile pin analogice pentru potențiometru

anulează configurarea ( ) {
myservo.attach ( 9 ) ; // pin definit 9 pentru Semnal de intrare PWM al servo pe Arduino
}
buclă goală ( ) {
val = analogRead ( subpin ) ; // citește valoarea de la potențiometru ( Valoare între 0 și 1023 )
val = harta ( val, 0 , 1023 , 0 , 180 ) ; // scalați valoarea de utilizat cu servo ( Valoare între 0 și 180 )
myservo.scrie ( val ) ; // setează poziția servo cu o valoare scalată
întârziere ( cincisprezece ) ; // asteapta pentru servo pentru a ajunge la poziție
}

Codul de mai sus ne va ajuta să controlăm arborele servomotorului folosind potențiometrul, arborele se va roti între 0 și 180 de grade. De asemenea, putem menține viteza împreună cu direcția servo folosind-o.

Schema circuitului

Câte servomotoare pot conecta cu Arduino?

Numărul maxim de servomotoare pe care le poate gestiona Arduino UNO este de până la 12 cu biblioteca Arduino pentru servo și maxim 48 de servo-uri poate fi conectat cu plăci precum Mega.

Bacsis: Putem rula servo direct folosind curentul Arduino, dar nu uitați dacă motoarele servo atrag mai mult decât 500mA atunci placa Arduino se poate reseta automat și pierde puterea. Este recomandat să folosiți întotdeauna o sursă de alimentare dedicată pentru servomotoare.

Concluzie

În acest tutorial, am acoperit mecanismul de control al servomotoarelor cu Arduino. Am acoperit elementele de bază ale controlului poziției și vitezei servo folosind potențiometru. Acum ai o idee despre servo și posibilitățile pentru robotică, proiectele RC și automatizarea folosind servo sunt infinite.