Com es va comentar anteriorment, Arduino Due és una placa basada en controladors ARM dissenyada per a enginyers i aficionats electrònics. Aquesta placa DUE es pot utilitzar per fabricar màquines CNC, impressores 3D, braços robòtics, etc. Tots aquests projectes tenen una característica comuna que és el control de posició. Qualsevol d’aquests projectes necessita precisió en la seva posició. Els servomotors poden aconseguir posicions precises en aquestes màquines. En aquesta sessió, controlarem la posició d'un Servo Motor amb Arduino Due. Ja hem cobert la Servo Motor Interfacing amb Arduino Uno i la Servo Motor Interfacing amb el Microcontrolador 8051.
Servomotors:
Els servomotors són coneguts pel seu moviment o posició exacta de l’eix. No es proposen per a aplicacions d'alta velocitat. Es proposen per a aplicacions de velocitat, parell mitjà i precisió de posició. Aquests motors s’utilitzen en màquines de braços robòtics, controls de vol i sistemes de control. Els servomotors també s’utilitzen en algunes impressores i màquines de fax.
Els servomotors estan disponibles en diferents formes i mides. Nosaltres farem servir SG90 servo motor en aquest tutorial. SG90 és un servomotor de 180 graus. Així doncs, amb aquest servo podem situar l’eix de 0 a 180 graus.


Un Servo Motor té principalment tres cables, un per a tensió positiva, un altre per a terra i un darrer per a configuració de posició. El cable VERMELL està connectat a l’alimentació, el cable marró a terra i el cable GROC (o BLANC) al senyal.
Un servomotor és una combinació de motor de corrent continu, sistema de control de posició i engranatges. Al servo, tenim un sistema de control que pren el senyal PWM del pin de senyal. Descodifica el senyal i obté la relació de treball. Després compara la relació amb els valors de posicions predefinits. Si hi ha una diferència en els valors, ajusta la posició del servo en conseqüència. Per tant, la posició de l’eix del servomotor es basa en la relació de treball del senyal PWM amb el pin SIGNAL.
La freqüència del senyal PWM (Pulse Width Modulated) pot variar en funció del tipus de servomotor. L’important aquí és la RELACIÓ DE DEURE del senyal PWM. Comproveu això per a PWM amb Arduino Due. Tanmateix, en aquest cas, ni tan sols ens hem de preocupar de la selecció de Duty Ratio. A Arduino tenim una funció especial; en trucar-lo podem ajustar la posició del servo, només indicant l’angle. En parlarem a la secció de treball següent.
Abans d’ interfaçar el servomotor amb Arduino Due, podeu provar el servo amb l’ajut d’aquest circuit de verificador de servomotors. Consulteu també aquests projectes a Control Servo per Flex Sensor o per Force Sensor.
Components:
Maquinari: Arduino Due, font d'alimentació (5v), servomotor.
Programari: Arduino cada nit, descarregueu-lo des de l'enllaç següent (https://www.arduino.cc/ca/Main/Software)
Per obtenir més informació sobre com descarregar i instal·lar aquest programari, visiteu el primer tutorial Introducció a Arduino Due.
Diagrama del circuit i explicació de treball:

Com s'ha dit anteriorment a ARDUINO, tenim biblioteques predefinides, que establiran les freqüències i les relacions de treball en conseqüència, una vegada que es cridi o s'inclogui el fitxer de capçalera. A ARDUINO simplement hem d’indicar la posició del servo que calia i el DUE genera el senyal PWM adequat per al servo. Les coses que hem de fer per aconseguir una posició precisa del servo són,
#incloure
Servo miservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (angle_posició_ necessària);
El fitxer de capçalera "#include
En segon lloc, s’ha d’escollir un nom per al servo mitjançant “Servo myservo” , aquí myservo és el nom escollit, de manera que mentre escrivim per a la posició utilitzarem aquest nom, aquesta característica és útil quan tenim molts servos per controlar amb això podem controlar fins a 12 servos.
Amb l’ Arduino Due que té 12 canals PWM, hem d’indicar a DUE on està connectat el pin de senyal del servo o on ha de generar el senyal PWM. Per fer-ho, tenim "myservo.attach (2);" , aquí estem dient al DUE que hem connectat el pin de senyal del servo al PIN2.
Tot el que queda és establir la posició, establirem la posició del servo mitjançant " myservo.write (45);" , amb aquesta ordre, la mà del servo es mou 45 graus. Si canviem "45" a "175", l'eix del servo angularà a 175 graus i es quedarà allà. Després d'això, sempre que necessitem canviar la posició del servo, només hem de trucar a l'ordre " myservo.write (needed_position_angle);" .
Al programa, augmentarem i disminuirem els angles utilitzant bucles. Així, el servo escombra de 0 a 180, després de 180 a 0, etc. El Servo Motor Control d'Arduino Due s'explica millor pas a pas del codi C que es mostra a continuació.
