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.