Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

Servo, precum și un motor pas cu pas. este un element de cinematică precisă, permițând obținerea unei poziționări precise a mecanismelor. Dar, spre deosebire de motorul pas cu pas, servomotorul are un feedback, care vă permite să urmăriți în orice moment unghiul exact al rotației arborelui. Diferite tipuri de codificatoare și potențiometre pot fi utilizate ca sursă de feedback.

În articol, vom lua în considerare legătura și colaborarea cu cei mai tineri reprezentanți ai servo drive-urilor. Servo-urile sunt preferate printre roboți și modele.

Servo-ul este alcătuit dintr-o carcasă în care există un electromotor cu colector mic, reductor și electronică de comandă.

Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

Potențiometrele sunt folosite ca feedback. De aceea, aceste servomecanisme au limitări asupra unghiului de rotație a arborelui în jurul axei. Deci, în servotorul Futaba S3003 pe care îl am, unghiul de rotație al arborelui de ieșire este de 225 °.

Specificații tehnice Futaba S3003

Potențiometrul de reacție este setat direct pe arborele de ieșire, datorită căruia servomotorul monitorizează poziția exactă a arborelui: rezistența potențiometrului variază proporțional cu unghiul de rotație. După calcularea rezistenței, unitatea de control compară această valoare cu cea care ar trebui să fie pentru o anumită poziție a arborelui. Dacă aceste valori diferă, unitatea de comandă instruiește motorul să răsuce arborele în direcția specificată, reducând diferența de valori. După atingerea poziției arborelui, când valoarea de la potențiometru coincide cu valoarea setată, motorul se oprește. Citirea valorilor din potențiometru și compară apare cu o frecvență ridicată, prin urmare, arborele de ieșire va tinde să ocupe o poziție predeterminată cu schimbare a sarcinii externe.

Design Servo este realizat astfel încât cuplul de la motor la arborele de ieșire este transmisă printr-un reductor cu un raport de transmisie mare, astfel încât consumul de energie și dimensiunile mici, servo poate oferi o mai mare de tracțiune.

Semnalul de control este un semnal de impuls cu o perioadă de 20 ms și o durată de 0,8 până la 2,2 ms. Acesta este un standard pentru controlul servo-urilor. Cu cât este mai mare impulsul, cu atât servomotorul se rotește mai mult. Pentru a accelera servomotorul, perioada de repetare a impulsului poate fi redusă la 10 ms.

Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

Semnalul de comandă este aplicat servomotorului prin intermediul semnalului S. În servo este alb, în ​​unele modele - galben. În plus față de firul de semnal de la servo, există două fire - linii electrice - sol (negru) și putere (roșu)

Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

După cum puteți vedea, este destul de ușor să controlați servomotorul - este suficient să conduceți un semnal de impuls cu frecvența necesară și ciclul de funcționare. Acest semnal poate fi generat de PWM. sau scrieți propria rutină de întrerupere a temporizatorului. Dar Bascom-AVR are deja o comandă încorporată pentru servo control - Servo. Vom lua în considerare.

Pentru a începe, trebuie să configurați conexiunea servo:

Config Servos = X. Servo1 = Portb. 0. Servo2 = Portb. 1. Reîncarcă = Var

Servos = X; indică numărul de servere conectate, este posibil să se conecteze până la 14 serv.

Servo1 = Portb. 0; Este specificat portul de conectare al primului servo.

Servo2 = Portb. 1; indică portul de conectare al celui de-al doilea server

Reload = Var; aici Var este timpul în microsecunde care trece între întreruperile de la cronometru.

În mod prestabilit, Timer0 este folosit pentru întreruperi, deci nu îl puteți folosi în scopuri proprii. Bascom-AVR vă permite să transferați serviciul de întrerupere la orice alt cronometru, de exemplu, pentru a elibera Timer0 și pentru a apuca Timer1 este suficient să-l specificați în linia de configurare:

Config Servos = 2. Servo1 = Portb. 0. Servo2 = Portb. 1. Reîncărcare = 10. Timer = Timer1

După toate configurațiile, rămâne doar să ne direcționăm serpii. Aceasta se face prin următoarea comandă

a este numărul de serie al servo-ului

F este o variabilă a cărei valoare este stabilită de unghiul de rotație al arborelui servo

Codul de încercare în ansamblul său:

$ regfile = "m8def.dat" microcontroler ATmega8
$ cristal = 8000000 'frecvență de operare 8MHz

"configurați porturile pentru conectarea servoarelor
Config Portb. 0 = ieșire
Config Portb. 1 = ieșire

'configurați conexiunile a două servere
Config Servos = 2. Servo1 = Portb. 0. Servo2 = Portb. 1. Reîncărcați = 15

Dim F AsByte "pentru primul serv.
Dim S AsByte "pentru al doilea serv.

"permiteți întreruperi
EnableInterrupts

Valoarea F = 15 'a variabilei este setată la unghiul de rotație al arborelui servo
S = 70

Conexiuni de circuit nu aduc, cred că un fir de semnal nu va cauza probleme;) poate fi conectat la portul microcontrolerului direct, dar puteți printr-un cuplu rezistor sute de ohmi - pentru reasigurare.

Prin modificarea valorilor variabilelor F și S, putem schimba unghiul de rotație al primului și celui de-al doilea braț servo. Cu cât valoarea parametrului de reîncărcare este mai mică, cu atât serverele noastre devin mai repede la unghiul dorit.

Pentru serverele sale, el a selectat domeniul de lucru al valorilor Servo (a), în care arborele se poate roti. Poziția extremă a arborelui are o valoare de 0 și 150, respectiv la o valoare de 75 arborele ocupă o poziție intermediară.

Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere
Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere
Conectarea servomotorului la microcontroler - cum se conectează - avr - proiecte pe microcontrolere

Servo (a) = 0 servo (a) = 75 servo (a) = 150

Spune-mi, am încercat să citesc semnalele „servo“ la radio, dar pentru un motiv oarecare, datele de citire au o variație mare (servomecanisme nu tresar, dar datele sunt citite din spread ridicat)?
Am citit cu ajutorul comenzilor: Timer (măsură impuls) sau ADC (măsură tensiune).
Cel mai interesant este faptul că tensiunea măsurată cu o DMM și tensiune „pe canalul servo“ a fost stabil (totul este bine), dar citirea de tensiune folosind ATmega8 (comanda ADC), dispozitivul produce în mod constant de date cu o largă răspândire. Nu știu de ce nu este posibilă calcularea corectă a tensiunii folosind Atmega8? Am conectat aceleași rezistențe de stingere, dar tensiunea citită încă merge.

Poate că există un alt mod de a citi semnalele "servo" de la radio?

a jucat cu voschem program nu știu cum mașina dvs. și mi HITEC HS 422, pe segmentul refuzat să lucreze la 8 megahertzi, adevărul a început să atyuni 2313, dar 4 stabilitate bună și 2 megahertzi foarte infatuat așa, aici aș dori să fi fost o descriere a detaliilor ce altceva poate fi într-un program de vtyuhat, pot exista de reglare a unghiului de rezistență acolo sau exemplul telemetru aici VĂ MULȚUMIM

Articole similare