După cum sa discutat mai devreme, Arduino Due este o placă bazată pe controler ARM, concepută pentru ingineri electronici și pasionați. Această placă DUE poate fi utilizată pentru realizarea de mașini CNC, imprimante 3D, brațe robotizate etc. Toate aceste proiecte au o caracteristică comună, care este controlul poziției. Oricare dintre aceste proiecte are nevoie de acuratețe față de poziția lor. Pozițiile exacte în aceste mașini pot fi obținute de Servo Motors. În această sesiune vom controla poziția unui servomotor cu Arduino Due. Am acoperit deja interfațarea Servo Motor cu Arduino Uno și Servo Motor Interfacing cu microcontrolerul 8051.
Servomotoare:
Servomotorele sunt cunoscute pentru mișcarea sau poziția exactă a arborelui. Acestea nu sunt propuse pentru aplicații de mare viteză. Acestea sunt propuse pentru aplicarea cu viteză redusă, cuplu mediu și poziție precisă. Aceste motoare sunt folosite la mașinile cu brațe robotizate, comenzile de zbor și sistemele de control. Servomotorele sunt, de asemenea, utilizate în unele imprimante și aparate de fax.
Servomotorele sunt disponibile la diferite forme și dimensiuni. Vom folosi SG90 Servo Motor în acest tutorial. SG90 este un servomotor de 180 de grade. Deci, cu acest servo putem poziționa axa de la 0 la 180 de grade.
Un servomotor are în principal trei fire, unul este pentru tensiune pozitivă, altul este pentru masă și ultimul este pentru setarea poziției. Firul roșu este conectat la alimentare, firul maro este conectat la masă și firul GALBEN (sau ALB) este conectat la semnal.
Un servomotor este o combinație de motor DC, sistem de control al poziției și angrenaje. În servo, avem un sistem de control care preia semnalul PWM de la pinul de semnal. Decodează semnalul și obține raportul de funcționare de la acesta. După aceea, compară raportul cu valorile pozițiilor predefinite. Dacă există o diferență în valori, aceasta ajustează poziția servo în consecință. Deci poziția axei servomotorului se bazează pe raportul de funcționare al semnalului PWM la pinul SIGNAL.
Frecvența semnalului PWM (Pulse Width Modulated) poate varia în funcție de tipul de servomotor. Important este aici RATIUNEA DE DEBIT a semnalului PWM. Verificați acest lucru pentru PWM cu Arduino Due. Cu toate acestea, în acest caz, nici nu trebuie să ne facem griji cu selecția Duty Ratio. În Arduino avem o funcție specială; la apel, putem ajusta poziția servo, doar prin declararea unghiului. Vom vorbi despre asta în secțiunea de lucru de mai jos.
Înainte de a interfața servomotorul cu Arduino Due, puteți testa servo-ul cu ajutorul acestui circuit de testare a servomotorului. De asemenea, verificați aceste proiecte pentru a controla Servo prin senzor flexibil sau prin senzor de forță.
Componente:
Hardware: Arduino Due, sursă de alimentare (5v), servomotor.
Software: Arduino pe noapte, descărcați-l de pe linkul de mai jos (https://www.arduino.cc/en/Main/Software)
Pentru detalii despre cum să descărcați și să instalați acest software, vizitați primul tutorial Noțiuni introductive despre Arduino Due.
Diagrama circuitului și explicația de lucru:
Așa cum am spus mai devreme în ARDUINO, avem biblioteci predefinite, care vor seta frecvențele și raporturile de sarcină în consecință, odată ce fișierul antet este apelat sau inclus. În ARDUINO trebuie pur și simplu să precizăm poziția servo care era necesară, iar DUE generează semnal PWM adecvat pentru servo. Lucrurile pe care trebuie să le facem pentru a obține o poziție exactă a servo-ului sunt,
#include
Servo miservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (need_position_ angle);
Fișierul antet „#include
În al doilea rând, un nume trebuie ales pentru servo folosind „Servo myservo” , aici myservo este numele ales, așa că, în timp ce scriem pentru poziție, vom folosi acest nume, această caracteristică este utilă atunci când avem multe servouri de controlat, prin aceasta putem controla până la 12 servouri.
Cu Arduino Due care are 12 canale PWM, trebuie să spunem DUE unde este conectat pinul de semnal al servo-ului sau unde trebuie să genereze semnalul PWM. Pentru a face acest lucru, avem „myservo.attach (2);” , aici îi spunem DUE că am conectat pinul de semnal al servo-ului la PIN2.
Tot ce rămâne este să setăm poziția, vom seta poziția servo folosind „ myservo.write (45);” , prin această comandă, mâna servo se deplasează la 45 de grade. Dacă schimbăm „45” în „175”, axul servo unghiuri la 175 de grade și rămâne acolo. După aceea, ori de câte ori trebuie să schimbăm poziția servo, trebuie doar să apelăm comanda „ myservo.write (needed_position_angle);” .
În program, vom crește și micșora unghiurile folosind bucle. Deci servo-ul mătură de la 0 la 180, apoi de la 180 la 0 și așa mai departe. Motor servo control de Arduino Due este cel mai bine explicată în pas cu pas de cod C de mai jos.