Realizzazione di una scheda di acquisizione dati da interfacciare ad un microprocessore ARM ed impiego della stessa per applicazioni mobili Laureando: Danilo Dalena Relatori: Sergio Carrato Slim Hachani Premessa GE863-PRO3 (Telit): Processore GSM/GPRS quadband Microcontrollore ARM9 AT91SAM9260: • 220 MIPS • Interfacce SPI, I2C, SD/MMC, USB,… • Sistema operativo Linux 8/64 MB SDRAM + 4 MB Flash 2 Problema Sfruttare GE863-PRO3 per sviluppo di applicazioni quali: Rilevazione del nord magnetico (Compass) Realizzazione di un sistema di navigazione inerziale (INS) 3 Soluzione Usare sensori per rilevare: Campo magnetico terrestre Accelerazione di gravità Accelerazione dinamica Velocità angolare Compass INS 4 Sensor Board (1/3) Componenti scelti: Campo magnetico Magnetometro HMC1052L (assi x e y) + HMC1051Z (asse z) Accelerazione (statica + dinamica) Accelerometro ADXL330 (assi x, y e z) Velocità angolare Giroscopio 3 x LISY300AL (asse z) Convertitore analogico-digitale AD7718 5 Sensor Board (2/3) ADXL330 (x,y,z) LISY300AL (y) HMC1051Z (z) Connettore 26 pin LISY300AL (x) AD7718: ADC ΔΣ con 10 ingressi 24 bit di risol interfaccia SPI LISY300AL (z) HMC1051Z (x,y) 6 Sensor Board (3/3) 7 Interfacciamento Adapter Board GE863-PRO3 Interface Board Motherboard 8 Linux O.S. Formato da: Filesystem (JFFS2, contiene directory predefinite) Linux kernel gestisce processi, memoria e periferiche dispone di moduli, cioè driver per uso di: GPIO SPI SD/MMC 9 Acquisizione Si sviluppa applicativo in C che: Riceve i dati dei sensori tramite bus SPI Salva i dati su scheda SD Da analisi statistica dei dati si ricava: Errore sistematico Errore statistico 10 Accorgimenti Per ridurre: Errore sistematico calibrazione Errore statistico Riduzione banda segnale Aumento tempo acquisizione dell’ADC Filtro alpha-trimmed 11 Algoritmo Compass (1/2) Per rilevare nord magnetico, si ha θ = arctan (mY / mX) Sensor Board su piano xy Altrimenti tilt compensation (calcolo inclinazione Sensor Board) 12 Algoritmo Compass (2/2) θ = arctan (Y / X) X = mX ·cos(φ) + mY ·sin(φ) ·sin(ρ) - mZ ·sin(φ) ·cos(ρ) Y = mY ·cos(ρ) + mZ ·sin(ρ) 13 Algoritmo INS (1/2) 14 Algoritmo INS (2/2) ωB(t) C(t) aG(t) = C(t) · aB(t) vG(t+δt) = vG(t) + δt · (aG(t) - gG) sG(t+δt) = sG(t) + δt · vG(t) 15 Risultati Algoritmo Compass: OK, con precisione di ± 0.3° Algoritmo INS: Errore crescente nel tempo, con drift di 5.5 m dopo 60 secondi 16 Conclusioni Per migliorare algoritmo INS 17