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