SlideShare a Scribd company logo
1 of 21
Università degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
Corso di Studi in Ingegneria Elettronica ed Informatica
Sviluppo del sistema di controllo
dell'assetto di un quadricottero con
processore STNucleo
Candidato:
Andrea Gulberti
Relatore:
Prof. Ing. Stefano Marsi
Correlatore:
Prof. Ing. Sergio Carrato
La tesi:
Lavoro svolto da 2 persone
Descritto da 2 Tesi di Laurea differenti
IO PARLERÒ DELLA PARTE SOFTWARE
• Librerie costruite
• Main loop
Componenti
 Microcontrollore ST-Nucleo
STM32L053R8
 4 E.S.C. (Electronic Speed
Controllers)
 Sensore MPU6050
 Sensore a infrarossi
 esc
 i2c + ic2_hw
 MPU6050
 ReceiverIR
Librerie
Libreria I2C
Libreria integrata in mbed per la comunicazione I2C
Molto limitata
Libreria I2C
Read
• address I2C_slave_addr | 1
• *data pointer to store the data read
• length number of bytes to read
• repeated don’t send the stop at the end
Libreria I2C
Read
• address I2C_slave_addr | 1
• *data pointer to store the data read
• length number of bytes to read
• repeated don’t send the stop at the end
Non é implementato il concetto di registro
interno allo slave
Libreria I2C_HW
Libreria creata per semplificare la comunicazione con MPU
Libreria I2C_HW
ReadBytes
• devAddr I2C_slave_addr (7 bit)
• regAddr register address
• length number of bytes to read
• *data pointer to store the data read
Libreria I2C_HW
ReadBytes
• devAddr I2C_slave_addr (7 bit)
• regAddr register address
• length number of bytes to read
• *data pointer to store the data read
ReadBytes corrisponde in linea di massima a:
1. Scrittura dell’indirizzo del registro che si vuole andare a leggere
2. Lettura del registro
ESC
Electronic Speed Controller
Libreria ESC
Libreria creata per il controllo degli ESC, e quindi dei
motori
Libreria ESC
setThrottle
1. Prende in input un valore float tra 0 e 1
2. Lo trasforma in un PWM di periodo 20 ms, con
ampiezza dell’impulso variabile tra 1.1 e 2.1ms
Perché il range (1.1 , 2.1)?
Configurazione degli ESC
Funzione dedicata
Libreria MPU6050
Libreria MPU6050
Un migliaio di righe di codice
Verrá presentata solo una
funzione, ritenuta
particolarmente interessante
Libreria MPU6050
Un migliaio di righe di codice
Verrá presentata solo una
funzione, ritenuta
particolarmente interessante
OffsetCalc
Calcola gli offset per accelerometro e giroscopio, in
modo tale da leggere risultati nulli in condizioni
stazionarie
Libreria ESC
OffsetCalc
1. Azzera gli offset attuali
2. Imposta la tolleranza:
• 8 per l’accelerometro
• 1 per il giroscopio
3. Calcola la media di 1000 letture
4. Per ogni asse
Se la media è superiore al range di tolleranza impostato
sottrai all’offset una frazione della media letta
torna al punto 3
Altrimenti
prossimo asse
Libreria ESC
OffsetCalc
• Ovviamente dev’essere eseguita in condizioni di
stazionarietà
• Potrebbe non convergere nel caso in cui il sensore
legga molto rumore, in tal caso basta incrementare il
range di tolleranza
Main
Il main è stato costruito seguendo il modello di Arduino:
• una funzione per il setup
• un loop infinito
Main
Il loop consiste in:
1. Calcolo degli angoli
con filtri complementari o di Kalman
2. Calcolo dei controllori
Due PID per pitch e roll, solo proporzionale per yaw
3. Variazione delle velocitá dei rotori in base all’uscita
dei controllori
Grazie per l’attenzione

More Related Content

Similar to Sviluppo del sistema di controllo dell'assetto di un quadricottero con processore STNucleo

Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiFlavio Falcinelli
 
An IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotionAn IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotionJennifer De Filicaia
 
Encoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 ITEncoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 ITLika Electronic
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUSTOPS Italia
 
Ltc2990 monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10
Ltc2990   monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10Ltc2990   monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10
Ltc2990 monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10Ionela
 
Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Michele Maffucci
 
Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollorisamu97
 
Presentazione elettro 2011
Presentazione elettro 2011Presentazione elettro 2011
Presentazione elettro 2011iisnobili
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkAntonella Zito
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreMirko Mancin
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Simone Fini
 
Caratterizzazione di sensori di immagineCMOS
Caratterizzazione di sensori di immagineCMOSCaratterizzazione di sensori di immagineCMOS
Caratterizzazione di sensori di immagineCMOSErlis Hasa
 
Teleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmetTeleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmetFrancesco Corucci
 
Smart power alfano energia
Smart power alfano energiaSmart power alfano energia
Smart power alfano energiaLuciano Minerva
 
Crouzet Automation - em4 Guida alla scelta
Crouzet Automation - em4 Guida alla sceltaCrouzet Automation - em4 Guida alla scelta
Crouzet Automation - em4 Guida alla sceltaCrouzet
 

Similar to Sviluppo del sistema di controllo dell'assetto di un quadricottero con processore STNucleo (20)

Tesi
TesiTesi
Tesi
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopi
 
An IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotionAn IoT prototype: from ideation to promotion
An IoT prototype: from ideation to promotion
 
OPDE Drives
OPDE DrivesOPDE Drives
OPDE Drives
 
Encoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 ITEncoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 IT
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
 
Ltc2990 monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10
Ltc2990   monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10Ltc2990   monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10
Ltc2990 monitoraggio di temperatura, tensione e corrente con i2 c - 2010-11-10
 
Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3
 
Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollori
 
Technical Note Tn 1201
Technical Note Tn 1201Technical Note Tn 1201
Technical Note Tn 1201
 
Presentazione elettro 2011
Presentazione elettro 2011Presentazione elettro 2011
Presentazione elettro 2011
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_Teamwork
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
 
Caratterizzazione di sensori di immagineCMOS
Caratterizzazione di sensori di immagineCMOSCaratterizzazione di sensori di immagineCMOS
Caratterizzazione di sensori di immagineCMOS
 
Teleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmetTeleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmet
 
Smart power alfano energia
Smart power alfano energiaSmart power alfano energia
Smart power alfano energia
 
2013_10_Felici.PDF
2013_10_Felici.PDF2013_10_Felici.PDF
2013_10_Felici.PDF
 
2013_10_Felici.PDF
2013_10_Felici.PDF2013_10_Felici.PDF
2013_10_Felici.PDF
 
Crouzet Automation - em4 Guida alla scelta
Crouzet Automation - em4 Guida alla sceltaCrouzet Automation - em4 Guida alla scelta
Crouzet Automation - em4 Guida alla scelta
 

Sviluppo del sistema di controllo dell'assetto di un quadricottero con processore STNucleo

  • 1. Università degli Studi di Trieste Dipartimento di Ingegneria e Architettura Corso di Studi in Ingegneria Elettronica ed Informatica Sviluppo del sistema di controllo dell'assetto di un quadricottero con processore STNucleo Candidato: Andrea Gulberti Relatore: Prof. Ing. Stefano Marsi Correlatore: Prof. Ing. Sergio Carrato
  • 2. La tesi: Lavoro svolto da 2 persone Descritto da 2 Tesi di Laurea differenti IO PARLERÒ DELLA PARTE SOFTWARE • Librerie costruite • Main loop
  • 3. Componenti  Microcontrollore ST-Nucleo STM32L053R8  4 E.S.C. (Electronic Speed Controllers)  Sensore MPU6050  Sensore a infrarossi  esc  i2c + ic2_hw  MPU6050  ReceiverIR Librerie
  • 4. Libreria I2C Libreria integrata in mbed per la comunicazione I2C Molto limitata
  • 5. Libreria I2C Read • address I2C_slave_addr | 1 • *data pointer to store the data read • length number of bytes to read • repeated don’t send the stop at the end
  • 6. Libreria I2C Read • address I2C_slave_addr | 1 • *data pointer to store the data read • length number of bytes to read • repeated don’t send the stop at the end Non é implementato il concetto di registro interno allo slave
  • 7. Libreria I2C_HW Libreria creata per semplificare la comunicazione con MPU
  • 8. Libreria I2C_HW ReadBytes • devAddr I2C_slave_addr (7 bit) • regAddr register address • length number of bytes to read • *data pointer to store the data read
  • 9. Libreria I2C_HW ReadBytes • devAddr I2C_slave_addr (7 bit) • regAddr register address • length number of bytes to read • *data pointer to store the data read ReadBytes corrisponde in linea di massima a: 1. Scrittura dell’indirizzo del registro che si vuole andare a leggere 2. Lettura del registro
  • 11. Libreria ESC Libreria creata per il controllo degli ESC, e quindi dei motori
  • 12. Libreria ESC setThrottle 1. Prende in input un valore float tra 0 e 1 2. Lo trasforma in un PWM di periodo 20 ms, con ampiezza dell’impulso variabile tra 1.1 e 2.1ms Perché il range (1.1 , 2.1)?
  • 15. Libreria MPU6050 Un migliaio di righe di codice Verrá presentata solo una funzione, ritenuta particolarmente interessante
  • 16. Libreria MPU6050 Un migliaio di righe di codice Verrá presentata solo una funzione, ritenuta particolarmente interessante OffsetCalc Calcola gli offset per accelerometro e giroscopio, in modo tale da leggere risultati nulli in condizioni stazionarie
  • 17. Libreria ESC OffsetCalc 1. Azzera gli offset attuali 2. Imposta la tolleranza: • 8 per l’accelerometro • 1 per il giroscopio 3. Calcola la media di 1000 letture 4. Per ogni asse Se la media è superiore al range di tolleranza impostato sottrai all’offset una frazione della media letta torna al punto 3 Altrimenti prossimo asse
  • 18. Libreria ESC OffsetCalc • Ovviamente dev’essere eseguita in condizioni di stazionarietà • Potrebbe non convergere nel caso in cui il sensore legga molto rumore, in tal caso basta incrementare il range di tolleranza
  • 19. Main Il main è stato costruito seguendo il modello di Arduino: • una funzione per il setup • un loop infinito
  • 20. Main Il loop consiste in: 1. Calcolo degli angoli con filtri complementari o di Kalman 2. Calcolo dei controllori Due PID per pitch e roll, solo proporzionale per yaw 3. Variazione delle velocitá dei rotori in base all’uscita dei controllori