pilotaggio arto artificiale - O. Belluzzi

ISTITUTO TECNICO INDUSTRIALE e
per GEOMETRI
O. Belluzzi – L. Da Vinci
Via Ada Negri 34 - 47923 RIMINI
Tel. 0541-384159 Fax 0541-383252
Sito: http://www.itigrimini.it/ e.mail: [email protected]
PILOTAGGIO ARTO ARTIFICIALE
ANNO SCOLASTICO:
2015/2016
Alessandro Giovagnoli
Samuele Fantini
Michele Olei
FOTO PROGETTO
INDICE
1. Presentazione del progetto;
2. Progettazione e sviluppo hardware;
2.1 Descrizione dell’arto;
2.2 Motori e controllo velocità;
2.3 Driver motori (l298);
2.4 Trasmettitori di impulsi e fine-corsa;
2.5 IMU (MPU6050) e EMG;
3. Progettazione e sviluppo software;
3.1 Ambiente di sviluppo software e linguaggio
codice;
3.2 Filtro Kalman;
1 Presentazione del progetto:
La prima versione dell’arto meccanico, realizzato da una classe precedente, non
implementava l’utilizzo simultaneo di più motori. Il nostro scopo è quello utilizzare
nuovi hardware e sofisticati microcontrollori per muovere l’arto meccanico in base
al movimento del nostro braccio. Per far ciò utilizziamo un IMU che legge gli angoli
di inclinazione e l’accelerazione sui 3 assi (x,y,z) e un lettore di EMG.
2 Progettazione e sviluppo hardware:
2.1 Descrizione dell’arto:
Il dispositivo rotante fissato sulla base d'appoggio sorregge il corpo che, insieme
alla spalla, al braccio e alla mano, vengono mossi da motori a corrente continua.
L’arto meccanico è composto da 6 motori che gli permette il movimento in più
direzioni simulando un braccio reale. Ogni motore è dotato di un encoder
incrementale. Alcuni di questi motori necessitano di un fine-corsa per evitare danni
al motore, risultanti dal fatto che esso abbia raggiunto senza controllo la posizione
finale meccanica.
Mot 1 =pinza;
Mot 2 =Rotazione
mano;
Mot 3 =Mano;
Mot 4 =Braccio;
Mot 5 =Spalla;
Mot 6 =Corpo;
Per ciascun dispositivo è previsto un "flat cable" a
poli:
Impulso (2) = Filo bianco;
Massa (3) = Filo Blu;
Mot. + (4) = Filo Marrone;
Mot. - (5)= Filo Verde;
Alimentazione +5V (6)= Rosso;
2.2 Motori CC e Controllo velocità:
Il motore in corrente continua è molto
utilizzato per piccole potenze e trova largo
utilizzo nel settore dell ’automazione e
nella robotica. Il principio di
funzionamento di un motore elettrico è
basato sull ’interazione di due campi
magnetici che si attraggono e si
respingono a vicenda. Il motore è
composto da una parte rotante detta
rotore o armatura , costituito da una serie
di spire solidali con l ’albero rotante, ed
una parte fissa detta statore . Lo statore è
l’induttore di campo magnetico, mentre il
rotore è l’indotto, ovvero l ’elemento
soggetto al campo.
Il collegamento elettrico con l ’alimentazione è costituito da due spazzole striscianti
(brush) che costituiscono la parte pi ù delicata del motore.
Applicando alle spazzole una tensione viene fatta circolare nella spira una corrente,
i lati della spira disposti lungo l ’asse sono soggetti a una coppia che tende a far
ruotare la spira in verso antiorario. La coppia tende a diminuire fino ad annullarsi
dopo una rotazione della spira di 90 °, ogni 90 ° di rotazione la corrente viene
commutata da una spira all ’altra, in questo modo la coppia mantiene sempre lo
stesso verso. Il numero delle spire in un motore è elevato e la coppia risulta
sostanzialmente costante e la rotazione del motore uniforme.
Controllo velocità:
Possiamo facilmente ed efficacemente controllare la velocit à di un motore con una
PWM (Pulse Width Modulation) ovvero modulazione a variazione di larghezza d ’
impulso di un ’ onda quadrata di duty cycle variabile che permette di controllare l ’
assorbimento di un carico elettrico (nel nostro caso il motore DC), variando il duty
cycle. Il duty cycle è il rapporto tra il tempo in cui l ’onda assume valore alto e il
periodo T (l’inverso della frequenza: T=1/f).
Agendo il motore come filtro passa basso, applicando la PWM, la componente
alternata viene tagliata lasciando solo la componente continua, ovvero il valor
medio della PWM.
2.3 Driver Motori (L298):
I valori di tensione necessari ad alimentare i motori sono superiori alle possibilit à del
nostro microcontrollore, di conseguenza risulta necessario utilizzare un
amplificatore (L298), in modo da aumentare la tensione in uscita dal regolatore,
adattandola a quella richiesta dal motore.
I nostri motori possono essere alimentati con una tensione massima di +19 Volt
onde evitare un danno permanente di esso.
Si può notare dallo schema elettrico del L298 che al suo interno ci sono 2 ponti H e
che i transistor lavorano in coppia, fungendo da tasti aperti interdizione) o chiusi
(saturazione), a seconda dell’impulso fornito in base, mutando la polarizzazione del
motore e quindi il suo senso di rotazione.
Il ponte H è costituito da 4 interruttori comandati e da 4 diodi di ricircolo.
Il nome deriva dalla somiglianza del circuito alla lettera maiuscola H, dove il motore
costituisce il segmento
orizzontale ed i quattro transistor
i quattro segmenti verticali. Lo
schema mostra come i quattro
transistor sono connessi.
A seconda di quali transistor
sono attivi, abbiamo diversi
possibili percorsi per la corrente,
illustrati nell ’ immagine in figura
Tale integrato è costituito da
quattro mezzi ponti H (numerati
in figura come 1-2-3-4)
ognuno dei quali è costituito da due transistor e da una logica che li comanda in
modo da accenderne solo uno alla volta: quando il transistor superiore di un mezzo
ponte è in conduzione quello inferiore sar à necessariamente spento e viceversa. E’
inoltre presente un comando di ENABLE che permette di inibire il funzionamento
di una coppia di mezzi ponti. Ricapitolando, per ognuno dei due ponti presenti
nell’ integrato abbiamo a disposizione due ingressi di controllo per permettere il
passaggio di corrente in un verso e un ingresso di ENABLE per accendere e
spegnere il ponte.
2.4 trasmettitori di impulsi e fine-corsa:
Nell’arto meccanico la comunicazione del percorso o movimento viene fornita per
mezzo di trasmettitori di impulsi comunemente chiamati Encoder, collegati in
maniera stabile all’albero del motore i quali emettono 4 impulsi per ogni giro.
L’Encoder, che produce impulsi rettangolari, è elettricamente indipendente dal
motore. Questi Encoder sono Encoder incrementali quindi “contano ” gli impulsi in
maniera progressiva, indipendentemente dal verso di rotazione del motore. Per
questo motivo dobbiamo fare un programma software per ricavare la posizione
esatta in cui ci troviamo.
I movimenti lineari dell ’arto meccanico si possono determinare con dei fine-corsa. I
fine-corsa provocano l ’interruzione del flusso di corrente per un senso di rotazione
prima che il dispositivo venga condotto nella sua posizione finale meccanica. Allora
è possibile solo spostarlo nella direzione contraria, fino a quando il senso di
trazione originario non venga di nuovo liberato.
2.5 IMU (MPU6050) e EMG:
MPU-6050:
La MPU-6050 è un chip a basso costo di uso comune che combina un
giroscopio MEMS e un accelerometro MEMS e utilizza un bus I2C
standard per la trasmissione dei dati. È molto preciso, in quanto
contiene 16 bit analogici a hardware con conversione digitale per
ciascun canale. Perci ò cattura x, y, z allo stesso tempo.
I dati di orientamento da sensori giroscopi sono incline ad andare alla
deriva in modo significativo nel corso del tempo, infatti i giroscopi
sono spesso abbinati ad altri sensori come accelerometri o
magnetometri per correggere questo effetto. Questa combinazione di sensori è
spesso indicato come IMU, o “Inertial Measurement Unit ” (Unità di misura
inerziale), e viene usato in aerei, veicoli spaziali e altri dispositivi. Il numero di
ingressi di sensore in un IMU sono indicati come "DOF" (gradi di libert à), quindi un
chip con un giroscopio a 3 assi e un accelerometro 3 assi si chiamerebbe 6-DOF
IMU.
Accelerometro:
E’ un dispositivo in grado di rilevare o misurare un ’accelerazione, ovvero una
variazione di velocit à nel tempo.
E’ in grado di sia di misurare l ’accelerazione
statica (ad esempio quando ruotiamo sul posto)
che l’accelerazione dinamica (ad esempio lo
fissiamo su un oggetto in movimento).
Un corpo pu ò ruotare nello spazio lungo 3 assi,
facendo riferimento alla dinamica applicata ai
velivoli si parla pi ù propriamente di rollio,
beccheggio e imbardata.
Per convenzione la rotazione del velivolo lungo
l’asse X del velivolo si chiama rollio (Roll). La
rotazione lungo l ’asse Y del velivolo si chiama
beccheggio (Pitch) e la rotazione lungo l ’asse Z
del velivolo si chiama Imbardata (Yaw).
L’angolo di rollio viene indicato con la lettera greca φ (phi minuscola);
l’angolo di beccheggio viene indicato con la lettera greca θ (theta minuscola);
l’angolo di imbardata viene indicato con la lettera greca ψ (psi minuscola).
Un accelerometro a 3 assi è in grado di rilevare l ’angolo X e l’angolo Y ma non
l’angolo Z, perch é non provocano una variazione degli angoli che gli assi formano.
Per questo esistono i giroscopi
che servono in maniera pi ù specifica a misurare gli angoli di rotazione.
Un giroscopio elettronico, in realt à, rileva la velocit à angolare, poi per successiva
integrazione si risale all’angolo.
I dati letti dall ’IMU vengono in seguito filtrati con un filtro software, nel nostro caso
utilizziamo il Filtro di kalman.
EMG
Nella nostra prova utilizziamo anche un
sensore EMG (elettromiografo) che ci
permette la misura dell'attivazione
muscolare attraverso il potenziale elettrico.
Questo sensore è stato progettato per
essere usato direttamente con un
microcontrollore. Il sensore fornisce in
uscita un segnale amplificato, rettificato e
smussato con valori da 0V a 5V.
CARATTERISTICHE DEL SEGNALE EMG
Il segnale EMG (elettromiografico) presenta diverse
caratteristiche:
• Ampiezza tra 0 – 10mV;
• Frequenza tra 0 – 500Hz;
• Energia dominante tra 20 – 150Hz.
Il segnale EMG presenta molto rumore che pu ò essere
diviso in:
• Rumore delle apparecchiature elettroniche (pu ò essere minimizzato utilizzando
componenti di alta qualit à);
• Rumore ambientale ( può essere minimizzato utilizzando filtri passa banda e filtri
notch a 50 Hz).
Il rumore ambientale ha ampiezza fino 3 volte quella del segnale EMG e pu ò essere
causato da:
• Ponti radio;
• Collegamenti elettrici;
• Tubi al neon o luci fluorescenti;
• Frequenza di rete (50HZ).
Esempi di segnali:
Sforzo debole,
Sforzo medio,
Sforzo intenso,
3.2 Filtro di Kalman:
L'uso di un ’accelerometro e del giroscopio, richiede un filtro matematico per unire i
segnali restituiti dai sensori.
Il giroscopio è una derivata e in poco tempo i valori restituiti sono completamente
sbagliati. L'accelerometro, dall'altro lato, restituisce un valore vero quando
l'accelerazione è progressiva ma soffre molto delle vibrazioni, restituendo valori
dell'angolo sbagliati.
Di solito un filtro matematico viene utilizzato per mescolare e unire i due valori, in
modo da avere un valore corretto come il filtro di Kalman. Questo è il migliore filtro
che è possibile utilizzare, anche da un punto di vista teorico, poich é è quella che
minimizza gli errori dal valore del segnale vero. Tuttavia è molto difficile da capire il
funzionamento del filtro di Kalman, infatti, il filtro deve essere in grado di calcolare i
coefficienti delle matrici, l'errore per processi, errore di misura ecc.
Teoricamente il filtro di Kalman e ’ uno strumento per stimare lo stato di un sistema
dinamico lineare perturbato da rumore, sulla base di misure (o osservazioni)
linearmente dipendenti dallo stato e disturbate dal rumore. Lo stimatore é ottimo
rispetto a qualunque funzione quadratica dell ’errore di stima: si basa su tutte le
informazioni disponibili.
Praticamente non è un filtro in senso tradizionale (caratterizzato da poli e zeri), ma
piuttosto un “programma ” infatti è ricorsivo, quindi in continuo aggiornamento, le
nuove misure possono essere processate via via che arrivano.
Viene chiamato filtro ma si pu ò definire anche stimatore poich é solitamente un filtro
è un dispositivo che elimina o seleziona alcune componenti frequenziali del
segnale. In questo caso si chiama Filtro perch é elimina il rumore delle misure per
poi costruirne le stime.
Ecco un esempio del filtro di Kalman applicato ad una lettura dell ’IMU, possiamo
notare come il i dati di Kalman (linea Rossa per l ’asse Y e Blu per l’asse X) siano
molto pi ù stabili e lineari rispetto ai dati letti direttamente dall ’arduino.