Am o mică lucrare cu servo-drive-uri, am decis să împărtășesc informații.
Cred că orice persoană își imaginează ce este un motor electric, nu? - Atunci să vă amintiți ce fel de fan. Care este caracteristica caracteristică? Corect, tensiunea este aplicată, se întoarce, tensiunea este îndepărtată - nu se rotește. Servo, acesta este și un motor, dar spre deosebire de ceilalți, atâta timp cât îi spui să se întoarcă, atât de mult se întoarce și se oprește. În timp ce semnalul de control este ținut, servo-ul își va fixa poziția. Puteți chiar să-l răsuciți cu mâinile, el va reveni încă în poziția dorită.
Unghiul la care se rotește servomotorul este dat de lățimea impulsului. Merită clarificată subtilitatea mică, servoarele sunt diferite. Există unele care se rotesc în mod constant într-o anumită direcție, în timp ce lățimea impulsului afectează numai viteza de rotație. Există multe întoarceri. Cele despre care va merge mai departe pe site-ul producătorului au un marcaj explicit, care indică unghiul de rotație. Prin urmare, în cazul în care servo nu are o etichetă explicită, poate că se rotește stupid. Nu confunda, inscripțiile 0.20 sec / 60 ° înseamnă viteza de rotație, nu sunt legate de unghiul maxim de rotație.
Să ne întoarcem la teorie. Imaginați-vă un microcontroler cu un rezistor R conectat la intrarea ADC și un anumit motor care se rotește de-a lungul semnalului PWM PWM. Să presupunem că nivelul semnalului ADC este conectat direct la ieșirea PWM, atunci când vom răsuci rezistența, viteza se va schimba atunci când tensiunea ADC devine 0, motorul se va opri.
Acum, ia în considerare opțiunea 2. Butonul rezistorului este montat pe axul motorului, astfel încât atunci când motorul se rotește, schimbă rezistența rezistorului, deci și tensiunea aplicată la intrarea ADC-ului. În acest caz, dacă există o altă sursă a semnalului, microcontrolerul compară tensiunea la intrările și, dacă este mai mare, se transformă într-o direcție, dacă este mai mică, apoi pe cealaltă. Mai devreme sau mai târziu, nivelele de tensiune și motorul se vor opri. Prin urmare, servo include tot ceea ce este tras: un rezistor, un microcontroler, un motor. Semnalul extern trebuie să fie alimentat în mod natural de noi pentru a fi controlat.
Curajul tipic arata astfel:
Pe imagine puteți vedea că rezistența și motorul sunt conectate printr-o grămadă de unelte, deci, dacă urcați înăuntru, fiți pregătiți că toate aceste lucruri vor fi vărsate asupra voastră. Vedere de jos
Cel mai adesea, lățimea impulsului variază în intervalul de la 1100 microsecunde la 1900 microsecunde, cu o perioadă de 20 ms, dar cifrele pot diferi și destul de puternic. Exemplu din foaia de date:
Sistemul de control: + Controlul lățimii impulsurilor 1520usec Neutru
Puls necesar: vârf pătrat la vârf de 3-5 V până la vârf
Tensiune de operare: 4,8 V
Viteza de lucru (6V): 0,20sec / 60 grade fără încărcătură
Unghi de operare: 45 Deg. pe un puls de 400usec
Modificarea continuă a rotației: Nu
Direcție: Counter clockwise / Pulse Travel 1520-1900usec
Prin urmare, este clar că punctul mediu de 1520 microsecunde pentru a transforma un astfel de servo la 45 de grade, este deja necesar să se dea un impuls de 1900 microsecunde, respectiv, unghiurile rămase sunt calculate în proporție. Pentru a roti -45 grade, trebuie să aplicați un impuls de 1100 microsecunde. Ie range 90grad. Este, de asemenea, clar că, în timpul rotației continue, acest dispozitiv nu este ascuțit, ceea ce este bun.
Să mergem mai departe să practicăm. Există un pacient Futaba S3152 care are nevoie să răsucească runde - syudy.
Este, de asemenea, posibil să practicăm această problemă într-un proteus. Conexiune normală pentru trei fire roșu + 5V, negru - pământ, alb - control.
În cele mai recente versiuni ale CAVR, Codewizard are o mulțime de nishtyaks, de exemplu puteți să conduceți numere în papagali și să vedeți perioada și pulsul în câteva secunde. De fapt, avem nevoie de modul PWM rapid ICR. Acest mod este demn de remarcat prin faptul că ICR stabilește perioada, iar OCR lățimea impulsului.
Perioada se calculează foarte simplu:
ICR = (frecvența temporizatorului / 50Hz) -1
Apoi, lățimea impulsului dorită poate fi ușor calculată din următoarele proporții:
20ms = ICR
?ms = OCR
În final, puteți să rescrieți această:
OCR = (x * ICR) / 20; unde x este lățimea necesară a impulsului. De exemplu, aveți nevoie de o durată de impuls de 1ms, ceea ce înseamnă că OCR = (1 * 9C3) / 20 = 0x7C.
De fapt asta e tot. Acum, pornind de la faptul că punctul neutru = 1524μs sau OCR1 = (1.524 * 9C3) / 20 = 0xBE și dependențele de toga unde trebuie să rotim recalcularea OCR. Un exemplu simplu, ne îndreptăm spre -45, apoi 0 și apoi +45.