Presentazione standard di PowerPoint

LABORATORIO DI ARCHITETTURE E
PROGRAMMAZIONE DEI SISTEMI
ELETTRONICI INDUSTRIALI
Laboratory Lesson 11:
Final Project
Prof. Luca Benini <[email protected]>
Filippo Casamassima <filippo.casamassima @unibo.it>
Domenico Balsamo <[email protected]>
Projects available:
• 3 different projects, to each group one project will
be assigned.
• All the projects have the same structure:
•
•
•
•
Data Acquisition
Data filtering/conditioning
Data Processing
Result output
• Use of different sensors: ADC, Magnetometer,
Accelerometer
Project 1: ADC
• La scheda viene avviata e il led verde lampeggia a 2 Hz.
• quando viene premuto il bottone viene rilevato un interrupt e
parte l'acquisizione ADC, il led verde lampeggia ora a 20Hz
• L’ADC campiona dati ad una frequenza di 10 kHz.
• Il risultato dell’ADC viene trasferito in un buffer (array) con 1000
elementi. (conviene usare un buffer circolare)
• Una funzione calcola il valore medio del segnale e calcolare poi il
«mean crossing rate" (quante volte il segnale ha superato il valore
medio).
• Calcolare la frequenza del segnale utilizzando il tasso di
attraversamento del valore medio (il calcolo non va fatto
necessariamente ad ogni nuovo campione)
• La frequenza del segnale viene inviato al PC tramite l'interfaccia
USART, insieme con l'ampiezza del segnale
Project 2: Accelerometer
• Quando la scheda parte, viene fatto lampeggiare il led Arancione
(Giallo) ad una frequenza di 2Hz.
• Quando il bottone viene premuto, viene generato un interrupt che fa
partire l’acquisizione dei dati dell’accelerometro con frequenza di
200Hz. (usare il systick)
• I dati del magnetometro vengono trasferiti usando il DMA in una
variabile o in un buffer.
• ai dati del magnetometro viene applicato un filtro passa basso del 3
ordine con frequenza di taglio 40 Hz.
• Viene calcolata la inclinazione della board rispetto all’accelerazione di
garvità
• Ogni 20 campioni vengono inviati via USART gli angoli di rollio e
beccheggio
• Se la board è inclinata verso uno dei lati, si accende il led che sta verso il
basso con intensità variabile rispetto all’inclinazione (a 90° il led è
completamente acceso)
Project 3: Magnetometer
• Quando la scheda parte, viene fatto lampeggiare il led Blu ad una
frequenza di 2Hz.
• Quando il bottone viene premuto, viene generato un interrupt che fa
partire l’acquisizione dei dati del magnetometro con frequenza di
100Hz. (conviene usare il Systick)
• I dati del magnetometro vengono trasferiti usando il DMA in una
variabile o in un buffer.
• ai dati del magnetometro viene applicato un filtro passa basso del 2
ordine con frequenza di taglio 20 Hz.
• i dati del magnetometro vengono analizzati sull’asse x e y per trovare la
direzione del campo magnetico terrestre.
• ogni 100 campioni acquisiti viene inviato via USART l’angolo rispetto al
campo magnetico terrestre
• Viene fatta variare la luminosità dei LED in base alla direzione del campo
magnetico terrestre
Useful Info:
• Sito per la generazione del codice dei filtri:
• http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
• Application note per il calcolo degli angoli dell’accelerometro:
• http://www.st.com/web/en/resource/technical/document/application_note/CD00268887
.pdf
• http://theccontinuum.com/2012/09/24/arduino-imu-pitch-roll-from-accelerometer/
• Esempio per ottenere la direzione del nord magnetico con magnetometro:
• http://www51.honeywell.com/aero/common/documents/myaerospacecatalogdocuments/Defense_Brochures-documents/Magnetic__Literature_Application_notesdocuments/AN203_Compass_Heading_Using_Magnetometers.pdf
• http://diydrones.com/forum/topics/heading-from-3d-magnetometer
• Compensazione magnetometro con accelerometro (opzionale)
• http://www.timzaman.com/2011/04/heading-calculating-heading-with-tilted-compass/
Useful Info:
Nelle impostazioni di progetto, abilitare la
Floating Point Unit. Necessario per usare
funzioni come atan2 (nella libreira math.h)