Come discusso in precedenza, Arduino Due è una scheda basata su controller ARM progettata per ingegneri elettronici e hobbisti. Questa scheda DUE può essere utilizzata per realizzare macchine CNC, stampanti 3D, bracci robotici, ecc. Tutti questi progetti hanno una caratteristica comune che è il controllo di posizione. Ognuno di questi progetti necessita di accuratezza rispetto alla propria posizione. Posizioni precise in queste macchine possono essere raggiunte dai servomotori. In questa sessione controlleremo la posizione di un servomotore con Arduino Due. Abbiamo già coperto l'interfaccia del servomotore con Arduino Uno e l'interfaccia del servomotore con il microcontrollore 8051.
Servomotori:
I servomotori sono noti per il loro movimento o posizione accurati dell'albero. Questi non sono proposti per applicazioni ad alta velocità. Questi sono proposti per applicazioni a bassa velocità, coppia media e posizione precisa. Questi motori sono utilizzati in macchine a braccio robotico, controlli di volo e sistemi di controllo. I servomotori sono utilizzati anche in alcune stampanti e fax.
I servomotori sono disponibili in diverse forme e dimensioni. Saremo utilizzando SG90 servomotore in questo tutorial. SG90 è un servomotore a 180 gradi. Quindi con questo servo possiamo posizionare l'asse da 0 a 180 gradi.
Un servomotore ha principalmente tre fili, uno per la tensione positiva, un altro per la massa e l'ultimo per l'impostazione della posizione. Il filo ROSSO è collegato all'alimentazione, il filo Marrone è collegato a massa e il filo GIALLO (o BIANCO) è collegato al segnale.
Un servomotore è una combinazione di motore CC, sistema di controllo della posizione e ingranaggi. In servo, abbiamo un sistema di controllo che prende il segnale PWM dal pin del segnale. Decodifica il segnale e ne ricava il rapporto di lavoro. Dopodiché confronta il rapporto con i valori delle posizioni predefinite. Se c'è una differenza nei valori, regola di conseguenza la posizione del servo. Quindi la posizione dell'asse del servomotore si basa sul rapporto di lavoro tra il segnale PWM e il pin SIGNAL.
La frequenza del segnale PWM (Pulse Width Modulated) può variare in base al tipo di servomotore. La cosa importante qui è il DUTY RATIO del segnale PWM. Controlla questo per PWM con Arduino Due. Tuttavia, in questo caso, non dobbiamo nemmeno preoccuparci della selezione del Duty Ratio. In Arduino abbiamo una funzione speciale; chiamandolo possiamo regolare la posizione del servo, semplicemente dichiarando l'angolo. Ne parleremo nella sezione di lavoro di seguito.
Prima di interfacciare il servomotore con Arduino Due, puoi testare il tuo servo con l'aiuto di questo circuito di prova del servomotore. Controlla anche questi progetti su Control Servo by Flex Sensor o Force Sensor.
Componenti:
Hardware: Arduino Due, alimentatore (5v), servomotore.
Software: Arduino di notte, scaricalo dal link sottostante (https://www.arduino.cc/en/Main/Software)
Per i dettagli su come scaricare e installare questo software, visita il primo tutorial Getting Started with Arduino Due.
Schema del circuito e spiegazione di funzionamento:
Come detto in precedenza in ARDUINO, abbiamo librerie predefinite, che imposteranno le frequenze e i rapporti di lavoro di conseguenza, una volta che il file di intestazione viene chiamato o incluso. In ARDUINO dobbiamo semplicemente indicare la posizione del servo necessaria e il DUE genera il segnale PWM appropriato per il servo. Le cose che dobbiamo fare per ottenere una posizione precisa del servo sono,
#includere
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (needed_position_ angle);
Il file di intestazione "#include
In secondo luogo un nome deve essere scelto per il servo usando "Servo myservo" , qui myservo è il nome scelto, quindi mentre scriviamo per la posizione useremo questo nome, questa funzione è utile quando abbiamo molti servi da controllare, possiamo controllare fino a 12 servi da questo.
Con Arduino Due che ha 12 canali PWM, dobbiamo dire a DUE dove è collegato il pin del segnale del servo o dove deve generare il segnale PWM. Per fare questo abbiamo "myservo.attach (2);" , qui stiamo dicendo al DUE che abbiamo collegato il pin del segnale del servo al PIN2.
Non resta che impostare la posizione, stiamo per impostare la posizione del servo usando " myservo.write (45);" , con questo comando la lancetta del servo si sposta di 45 gradi. Se cambiamo '45' in '175', il servoasse si inclina a 175 gradi e rimane lì. Dopodiché, ogni volta che abbiamo bisogno di cambiare la posizione del servo, dobbiamo solo chiamare il comando " myservo.write (needed_position_angle);" .
Nel programma, incrementeremo e decrementeremo gli angoli utilizzando i loop. Quindi il servo passa da 0 a 180, quindi da 180 a 0 e così via. Il controllo del servomotore di Arduino Due è meglio spiegato passo dopo passo del codice C in basso.