Pilotare un braccio robot con Arduino: ArmRobot

1.453 views 1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Loading...

Ciao a tutti ragazzi, finalmente ho l’occasione di cominciare a scrivere su uno dei miei ultimi progetti che ho implementato durante questa quarantena e ultimato negli ultimi giorni. Il progetto verte intorno ad un braccio robotico che ho ricavato da un vecchio giocattolo che veniva comandato tramite cavi e un telecomando piuttosto ingombrante. Esternamente costituito da materiale plastico giallo e nero, cela al suo interno cinque motori che sono perfetti per essere comandati da Arduino tramite piccoli driver facilmente reperibili online ad un prezzo abbordabile.

Questa idea che abbiamo avuto io e il mio collaboratore è stata sviluppata nel corso di questo periodo difficile durante il quale non ci è stato possibile avere un contatto diretto per portarla a termine più velocemente. Nonostante questi intoppi che abbiamo incontrato, ora pare tutto risolto e, proprio per questo motivo ho intenzione di condividere la mia esperienza con voi, in caso vi possa essere utile per la realizzazione di progetti magari anche più complessi e utopici del nostro.

Se siete alle prime armi con Arduino non preoccupatevi perché cercherò di spiegare il tutto nella maniera più comprensibile e dettagliata possibile. Per iniziare possiamo prendere confidenza in questo progetto partendo dal cablaggio dei componenti in nostro possesso. Elencherò qui sotto ciò che ci servirà per mettere in funzione la parte elettronica.

  • Arduino UNO
  • Wire Jumpers M/F
  • 5 Motori DC
  • 3 Driver L298N acquistabili qui
  • Alimentatore 12V o pacco batterie 5V

Inizierei spiegandovi l’utilità dei suddetti L298N, che sono stati la nostra salvezza nell’attuazione del progetto. La ragione è fondamentalmente che Arduino non riesce a controllare direttamente tutti i tipi di motori tramite i suoi Pin. Per questo ci siamo serviti di questi fantastici driver. Qui sotto vi lascio il Pinout I/O con le relative descrizioni di dove andranno collegati.

Driver L298N PinOut

descrizione Pinout l298n

Prima di tutto diamo un’occhiata alla semplicità e contemporanea efficienza di questa scheda.
Infatti con un solo driver potremo controllare addirittura due motori a corrente continua.
Anticipo che le entrate con morsetti blu necessitano di essere fissate avvitando la vite apposita.

I 3 Pin contrassegnati come +12V, GND, +5V fanno parte dell’alimentazione della scheda e sono essenziali nel nostro progetto come in altri che volendo elaborerete.
>> Il Pin +12V è l’ingresso del polo positivo (+) dell’alimentazione esterna proveniente da un pacco batterie o da un semplice alimentatore ed è correlato al componente indicato con il contrassegno “Jumper“. Infatti bisogna rimuoverlo (ma conservarlo per eventuali progetti in futuro) utilizzando un cacciavite o un taglierino, ma solo nel caso in cui la corrente di alimentazione in ingresso superi il voltaggio di 12V.
>> Il Pin GND è l’ingresso e contemporaneamente l’uscita del polo negativo (-) dell’alimentazione esterna. L’alimentazione sarà quindi collegata sia al driver che ad uno dei Pin appositi di Arduino.
>> Il Pin +5V è l’uscita del polo positivo che collegheremo al Pin 5V di Arduino a condizione che la tensione entrante non superi i 12V e quindi finché è presente “Jumper”. Questo Pin infatti ha la semplice funzione di convertire la tensione fino a 12V in 5V per renderla disponibile ad Arduino.

Sono ancora di più facile comprensione i Pin contrassegnati come OUT1, OUT2, OUT3, OUT4.
>> I Pin OUT1 e OUT4 sono le uscite che corrispondono al polo positivo (+) dei due motori.
>> I Pin OUT2 e OUT3 sono le uscite che corrispondono al polo negativo (-) dei due motori.
Come si può dedurre dalla figura OUT1 e OUT2, posti affiancati servono per pilotare il motore A mentre OUT3 e OUT4, posti anch’essi affiancati servono per pilotare il motore B.

Il discorso potrebbe dilungarsi durante la spiegazione dei Pin di ingresso e degli Enable.
>> I Pin IN1 e IN2 riguardano il motore A e sono in coppia perché in base alla loro combinazione il motore si attiverà in un verso piuttosto che in un altro o in alternativa si spegnerà.
>> I Pin IN3 e IN4 presentano la stessa funzione di quelli descritti sopra ma riguardano il motore B.

IN1/IN3IN2/IN4
Motore Avanti01
Motore Indietro10
Motore Fermo00
La combinazione 1;1 NON fa muovere il motore a velocità doppia! Quella è la funzione di Enable

>> I Pin Enable A ed Enable B come auto illustra il nome servono per abilitare i rispettivi motori. La loro funzione principale se collegati a Pin PWM (~) di Arduino, oltre che un ulteriore controllo per evitare l’accensione involontaria dei motori nel caso in cui gli ingressi siano interessati da visibili interferenze, è quella di modulare la velocità del motore. Infatti inserendo un valore variabile da 0 a 255 possiamo vedere come la velocità cambi. Come possiamo osservare che i suddetti Pin sono “coperti” da un Jumper rimovibile come quello precedente che va rimosso nel nostro caso ma non se utilizziamo un motore stepper (passo-passo). Per un’immediato riscontro sul tipo di motore che state utilizzando vi basterà controllare il numero di cavi in uscita (solo 2 nel caso di un motore DC).

Cablaggio Driver -> Arduino

Una volta compreso il metodo di funzionamento del Driver è giunto il momento di utilizzare i fantomatici Wire Jumpers per collegare elettricamente il tutto. Per evitare cortocircuiti, lavorando con le polarità, consiglio di eseguire le operazioni di collegamento mentre Arduino non è alimentato.

  1. Inizieremo collegando, come indicato nel paragrafo precedente i cavi dei motori con le uscite dei vari Driver, prestando attenzione a non bruciare i motori invertendo la polarità.
  2. Procediamo rimuovendo il Jumper sui Pin Enable dei driver, lasciando in sede quello indicato con B nella terza scheda, avendo solamente 5 motori DC.
  3. Colleghiamo i Pin Enable con Pin Arduino esclusivamente PWM per la modulazione della velocità. Per esempio io li ho inseriti rispettivamente nei seguenti Pin: 3/5/6/9/10 (speedPin)
  4. Uniamo il polo positivo (+) dell’alimentazione esterna con tutti i Pin +12V, inserendo in ciascuno dei corretti morsetti a vite 2 cavi, uno in ingresso, proveniente dal Driver precedente (o dall’alimentazione nel caso del primo Driver) e l’altro in uscita verso il Driver successivo.
  5. Ripetiamo il punto 4. per il morsetto contrassegnato come GND, stavolta utilizzando il polo negativo (-) con la sola differenza che nel primo Driver inseriremo 3 cavi invece che 2 perché uno di essi andrà inserito in uno dei Pin GND di Arduino (solo nel primo Driver!).
  6. Colleghiamo gli ingressi dei Driver (escludendo gli ultimi 2 dell’ultimo Driver per lo stesso motivo del punto 2.) indifferentemente a Pin analogici o digitali di Arduino evitando quelli già occupati dagli Enable. Per esempio io ho collegato i primi Pin per ciascun motore ovvero IN1 e IN3 (dir1Pin) rispettivamente ai Pin: 2/7/11/13/A1. Analogamente ho unito gli IN2 e IN4 di ciascun driver (dir2Pin) rispettivamente ai Pin: 4/8/12/A0/A2.

Bene ragazzi, siamo sfortunatamente giunti al termine di questo primo estratto di testo facente parte del progetto ArmRobot. Oggi abbiamo visto e illustrato il funzionamento del Driver L298N e portato a termine la parte più importante ovvero il cablaggio dei componenti stessi. Spero che abbiate capito il più possibile da questo articolo, in caso contrario scrivetemi qui sotto nei commenti per ogni particolare che non vi è del tutto chiaro, e sarò io personalmente a condurvi alla risoluzione del problema. Votate 5 stelle l’articolo se vi è piaciuto e non mi resta che aspettarvi nella prossima parte dell’articolo in cui inizieremo a parlare del codice della sketch.

Fabio Java

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *