CORSO BRACCIO ROBOT LEZIONE 1
INDICE
- Avvertenze
- Note sul Copyright
- Introduzione
- Prepariamo il nostro Laboratorio
- Un po’ di Fisica per iniziare: Forza, Momento e Coppia.
- Il Servomotore MG996R
- L’importanza di testare i Servo e la configurazione iniziale
- Progetto 01 – Il Servo Tester
- Progetto 02 – Il Servo Tester con Arduino
- Considerazioni finali sul Progetto 02
Avvertenze
Relativamente agli aspetti di sicurezza, poiché i progetti sono basati su alimentazione elettrica in bassissima tensione erogata dalla porta usb del pc o da batterie di supporto o alimentatori con al massimo 9V in uscita, non ci sono particolari rischi di natura elettrica. È comunque doveroso precisare che eventuali cortocircuiti causati in fase di esercitazione potrebbero produrre danni al pc, agli arredi ed in casi estremi anche a ustioni, per tale ragione ogni qual volta si assembla un circuito, o si fanno modifiche su di esso, occorrerà farlo in assenza di alimentazione e al termine dell’esercitazione occorrerà provvedere alla disalimentazione del circuito rimuovendo sia il cavo usb di collegamento al pc che eventuali batterie dai preposti vani o connettori di alimentazione esterna. Inoltre, sempre per ragioni di sicurezza, è fortemente consigliato eseguire i progetti su tappeti isolanti e resistenti al calore acquistabili in un qualsiasi negozio di elettronica o anche sui siti web specializzati.
Al termine delle esercitazioni è opportuno lavarsi le mani, in quanto i componenti elettronici potrebbero avere residui di lavorazione che potrebbero arrecare danno se ingeriti o se a contatto con occhi, bocca, pelle, etc. Sebbene i singoli progetti siano stati testati e sicuri, chi decide di seguire quanto riportato nel presente documento, si assume la piena responsabilità di quanto potrebbe accadere nell’esecuzione delle esercitazioni previste nello stesso. Per i ragazzi più giovani e/o alle prime esperienze nel campo dell’Elettronica, si consiglia di eseguire le esercitazioni con l’aiuto ed in presenza di un adulto.
Note sul Copyright
Tutti i marchi riportati appartengono ai legittimi proprietari; marchi di terzi, nomi di prodotti, nomi commerciali, nomi corporativi e società citati possono essere marchi di proprietà dei rispettivi titolari o marchi registrati d’altre società e sono stati utilizzati a puro scopo esplicativo ed a beneficio del possessore, senza alcun fine di violazione dei diritti di Copyright vigenti. Quanto riportato in questo documento è di proprietà di Roberto Francavilla, ad esso sono applicabili le leggi italiane ed europee in materia di diritto d’autore – eventuali testi prelevati da altre fonti sono anch’essi protetti dai Diritti di Autore e di proprietà dei rispettivi Proprietari. Tutte le informazioni ed i contenuti (testi, grafica ed immagini, etc.) riportate sono, al meglio della mia conoscenza, di pubblico dominio. Se, involontariamente, è stato pubblicato materiale soggetto a copyright o in violazione alla legge si prega di comunicarlo tramite email a info@bemaker.org e provvederò tempestivamente a rimuoverlo.
Roberto Francavilla
Introduzione
Il nuovo Corso è dedicato ad uno straordinario attrezzaggio robotico che trova applicazioni in tantissimi ambiti, dall’industria automotive, al farmaceutico, allo storage, etc.. e cioè al “Braccio Robotico” o anche chiamato in inglese “Robot Arm”. Ovviamente, per i nostri studi, utilizzeremo un braccio robotico “semplificato”, ma ciò non toglie che le sue funzionalità e la sua logica di programmazione sia del tutto identica ai bracci robotici di tipo industriale.
In particolare il Corso illustrerà le caratteristiche principali del funzionamento di un braccio robotico e della relativa programmazione per ottenere tutti i movimenti a noi necessari. Utilizzeremo quanto già appreso sia nel Corso Base con Arduino e sia quanto visto nel Corso sull’Intelligenza Artificiale, per cui suggerisco, per una migliore comprensione del Corso sul Braccio Robotico e prima di proseguire (se non lo si è già fatto), di andare a leggere soprattutto la Lezione 6 del Corso Base di Arduino. In particolare: Cosa sono i Gradi di Libertà, gli azionamenti elettrici e dare movimenti ad un robot.
Prepariamo il nostro Laboratorio
Ci sono diversi modelli di braccio robotico attualmente in commercio, le differenze sostanziali tra i vari KIT proposti sono: i gradi di liberta (DOF) del braccio, il materiale con cui sono realizzati i bracci robotici e la tipologia dei servomotori utilizzati per dare i movimenti al braccio robotico.
Ovviamente, le carartteristiche sopra indicate si traducono in costo ed il costo di un KIT di braccio robotico può variare da alcune decine di euro ad alcune centinaia di euro, per cui prima dell’acquisto tenete ben presente che la scelta dovrà tenere anzitutto conto di sin dove desideriamo spingerci nello studio del braccio robotico.
Poiché il Corso ha lo scopo di fornire tutti quei strumenti base che occorre conoscere per poi avventurarsi in questo fantastico mondo, per tale scopo utilizzeremo un braccio robotico con struttura in alluminio, a 6 gradi di libertà e con servomotori della tipologia MG996R.
La parte più delicata nella scelta, come potrete vedere in seguito nella lezione, è la scelta dei servomotori anche perché sono componenti molto costosi.
Oltre al nostro braccio robotico avremo bisogno di un alimentatore stabilizzato con tensione continua in uscita possibilmente variabile, tramite potenziometro, tra i 5V e i 12V ed erogazione di corrente di almeno di 2A-3A. Infine necessitiamo del nostro microcontrollore, che inizialmente sarà un Arduino Uno R3, ma vedremo anche l’uso di microcontrollori diversi in funzione di ciò che desidereremo fare.
Un po' di Fisica per iniziare: Forza, Momento e Coppia.
Prima di avventurarci a giocherellare con il nostro braccio robotico, come al mio solito, desidero anche introdurre quegli aspetti teorici derivanti dalle discipline STEM che caratterizzano tutti i miei Corsi. In particolare mi preme dare alcuni principi di Fisica che saranno utilizzati per comprendere al meglio ciò che vedremo durante lo studio del braccio robotico.
In particolare ci concentreremo sulla Fisica Meccanica che consiste nello studio del moto dei corpi e delle cause che lo determinano. Essa viene suddivisa in tre specifici settori:
- La Cinematica; che si occupa dello studio del moto indipendentemente dalle cause che lo hanno generato;
- La Dinamica; per lo studio del moto e delle cause che lo hanno generato;
- La Statica; per lo studio delle condizioni di equilibrio.
Analizziamo la figura sopra da un punto di vista della Statica, possiamo osservare che l’uomo (o anche una donna!) sta sollevando un peso di 5 kg e lo tiene sospeso in aria.
Analizziamo tale situazione facendo delle approssimazioni che semplificano l’analisi, ma che ci aiutano comunque a comprendere i concetti fondamentali che ci servono. Supponiamo che l’intero braccio abbia peso nullo, per cui l’unica forza agente sul braccio sia la forza peso dell’oggetto sollevato dalla mano. Da questa rappresentazione è facilmente intuibile che per tenere sollevato l’oggetto dovrò reagire con il mio braccio con una forza uguale e contraria.
Ma cosa significa reagire con una forza uguale e contraria?
Schematizziamo quanto sopra aggiungendo la possibilità di far ruotare il braccio all’altezza della spalla aggiungendo un giunto di rotazione.
Quindi la forza peso tende a far ruotare in senso orario il nostro braccio, creando un “Momento” indicato con “M”, al centro del nostro giunto, pari al prodotto tra forza peso “P” ed il braccio “b”:
M = P x b
Quindi per tenere il peso sollevato i miei muscoli devono creare, nel giunto di rotazione (detto anche “cerniera”), un momento “Mr” (Momento di Reazione) di verso contrario.
Ora la domanda successiva è: e per i bracci robotici, chi da questo momento?
La risposta è semplice: il Servomotore.
Per i servomotori, ma più in generale per le macchine elettriche, sui datasheet, generalmente non si parla di “Momento di una forza”, bensì di “Coppia” (in alcuni casi rari di Momento torcente), infatti la Coppia è definita come l’azione, su un asse di rotazione, di due forze complanari e parallele ed aventi direzioni opposte distanti tra loro “r”. Il Momento generato dalla Coppia di Forze è dato dal prodotto:
Mr = F x r
Con queste nozioni base di Fisica è possibile quindi già fare diverse considerazioni importanti, infatti poiché il nostro braccio robotico dovrà spostare dei pesi con la mano (cioè in punta al braccio), più il braccio robotico è lungo o più l’oggetto è pesante e maggiore sarà la coppia che dovrà avere il servomotore per poter movimentare l’oggetto stesso.
Nella analisi sopra fatta non abbiamo considerato il peso del braccio, che già di suo, in funzione del materiale che lo costituisce, introduce un ulteriore forza e quindi momento che deve essere vinto per poterlo far muovere.
Ad ogni giunto di rotazione dobbiamo inserire un servomotore ed avere un servomotore più performante significa anche che l’alimentazione disponibile da Arduino non è sufficiente per alimentare i servomotori, per questo motivo si utilizzerà una alimentazione esterna con tensione che dovrà essere compatibile con quella massima ammessa dal servomotore stesso.
Il Servomotore MG996R.
Abbiamo visto l’importanza della scelta del giusto servomotore nel paragrafo precedente, adesso vediamo in dettaglio il suo funzionamento concentrandoci su quello che normalmente viene utilizzato per applicazioni su bracci robotici di tipo educativo, ovvero l’MG996R.
Sotto, riporto un estratto della sua scheda tecnica:
Vediamo che tipo di informazioni ci vengono fornite dal costruttore del servomotore. Innanzi tutto ci vengono fornite informazioni sulle dimensioni, queste ovviamente sono molto importanti specialmente se acquistiamo i servomotori separatamente dal braccio robotico, infatti occorre verificare la compatibilità tra le asole disponibili ed i punti di fissaggio sui componenti con le dimensioni dei motori.
Poi ci viene detto che la tensione di alimentazione (tensione operativa) può essere tra i 4,8V e i 7,2 V e il fornitore ci dice anche qual è la massima coppia che può sprigionare il servomotore, indicandola come coppia di stallo (in inglese: stall torque).
Ci viene fornita anche un’indicazione sulla corrente massima, in corrispondenza della coppia massima, e con i colori dei cavi, ci viene data anche l’indicazione su come collegare il servomotore.
Occorre tenere ben presente che tutti i Servomotori sono considerati degli Azionamenti Elettrici in quanto cono costituiti da un motore elettrico che trasforma l’energia elettrica in movimento meccanico, hanno un sistema di sensoristica per restituire un feedback al sistema di controllo che corregge ed adatta i movimenti del motore elettrico affinché esso risponda in modo corretto.
Possiamo schematizzare un azionamento con il grafico sotto
I sensori normalmente utilizzati per misurare e rilasciare un feedback al sistema di controllo del Servomotore sono i Potenziometri (in questo caso si ha un controllo di tipo analogico) o gli Encoder (in questo caso si ha un controllo di tipo digitale).
Nella figura sopra viene mostrato come è fatto un Servo a controllo analogico con Potenziometro, mentre nella figura sotto un tipico Servo Motore a controllo digitale con Encoder.
Bene! A questo punto, dopo questa descrizione del Servomotore, impariamo ad utilizzarlo in modo adeguato.
Già nella Lezione 6 del Corso Base di Arduino, abbiamo imparato a programmare il servomotore SG90, vi invito ad andarvi a rivedere la lezione perché qui faremo altro e partiremo comunque da una base minima di conoscenza.
L’importanza di testare i Servo e la configurazione iniziale.
Prima dell’assemblaggio del braccio robotico è assolutamente necessario testare il corretto funzionamento di ogni singolo servomotore e soprattutto stabilire la configurazione iniziale (ovvero l’angolo di rotazione inziale) del rotore. Infatti poiché i servo hanno un angolo minimo ed uno massimo di rotazione, è possibile che posizionando male il rotore e fissandolo al braccio, non si riesca ad ottenere la rotazione corretta perché viene impedita dall’interferenza fisica che si crea tra le varie parti del braccio assemblato, costringendoci a disassemblare tutto.
Per fare questo possiamo muoverci in due modi o creare uno sketch di test dei servo ed utilizzare Arduino come tester, oppure acquistare un servo tester.
Vedremo entrambe le soluzioni e quella che meglio ci soddisfa, utilizzeremo.
Progetto 01 – Il Servo Tester
Il Servo-tester è un apparecchietto che si acquista sui maggior market place per pochi euro, ha due versi predefiniti di collegamento e si possono testare fino a tre servo contemporaneamente (ma, personalmente, ve lo sconsiglio).
Ha tre modalità di funzionamento Man = manuale, ovvero ruotando il potenziometro si genera la rotazione del rotore, Neutral = neutrale, ovvero il rotore si posiziona a metà della sua rotazione massima ed infine Auto = automatico, il servo ruota per step predefiniti andando dal suo valore minimo al massimo e con il potenziometro si regola la velocità (che dipende ovviamente dal tipo di servo). Per passare da una modalità all’altra c’è uno switch in basso a sinistra indicato con Select e la modalità scelta è indicata da un led che si accende.
Per questo progetto ci occorre:
Molto importante è seguire il corretto collegamento dei poli di alimentazione altrimenti si rischia di bruciare il servo-tester che non ha alcuna protezione in tal senso (infatti ne ho bruciato uno).
Lo schema da utilizzare è il seguente:
Video-Progetto 1 – IL SERVO - TESTER
Progetto 02 – Il Servo Tester con Arduino
Lo scopo di questo progetto è riprodurre la funzionalità del servo-tester visto nel progetto precedente con Arduino e magari aggiungendoci anche qualche funzione in più che non guasta.
Per questo progetto ci occorre:
Lo schema elettrico è:
Lo schema di Montaggio:
Video-Progetto 2 – Servo-Tester con Arduino
Considerazioni finali sul Progetto 02:
In sostanza con questo progetto si riproduce quelle che sono le funzionalità dell’apparecchio servo-tester visto nel progetto precedente, ma utilizzando Arduino. Poiché abbiamo a disposizione un microcontrollore, ovviamente, gli facciamo fare anche altro al nostro servo-tester infatti, all’avviamento parte una routine automatica che stabilisce il massimo angolo di rotazione che il servo riesce a fare. Sulla base di tale massimo angolo, che può essere letto se si apre la finestra della porta seriale (serial monitor), vengono eseguite le funzioni successive : Man, Neutral ed Auto.
Interessante è la regolazione, mediante potenziometro della velocità di esecuzione della funzionalità auto.