Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Robotica Sensori CMPS03 Bussola elettronica

CMPS03 Bussola elettronica

Data di pubblicazione: 17-10-2003 | Versione Italiana  | (No English Version)The English version of this article does not exists
Parole chiave: - Domotica -

La bussola CMPS03 utilizza due sensori magnetici Philips KMZ51 posizionati tra loro con uno sfasamento di 90 gradi. Un PICmicro rileva l'intensità di flusso magnetico misurata da ogni sensore e calcola la componente orizzontale dell'angolo di rotazione del modulo rispetto al campo magnetico terrestre.

E' possibile memorizzare una posizione iniziale, detta punto di calibrazione, rispetto alla quale il modulo è in grado di fornire successivamente l'angolo di rotazione relativo con una precisione di 0.1 gradi.

Il valore di rotazione viene fornito dal modulo sia come semplice segnale impulsivo di ampiezza proporzionale all'angolo rilevato (PWM), sia in forma numerica tramite un bus I2C.

Connessioni elettriche

Il modulo dispone di nove pin di connessione la cui piedinatura viene riportata in figura 1.

Figura 1 - Piedinatura della bussola CMPS03

Sui pin 1 (+5v)9 (0v Ground) dobbiamo fornire la tensione di alimentazione a 5 volt continui.

Sul pin 4 (PWM) viene fornito il segnale impulsivo proporzionale all'angolo di rotazione come descritto più avanti.

I pin 3 (SDA) e 2 (SCL) sono rispettivamente la linea dati ed il clock del bus I2C con cui comunicare in digitale con il modulo. Questi pin devono essere collegati a Vcc nel caso si utilizzi solo il PWM per la lettura dell'angolo di rotazione.

Il pin 5 (No Connect) non deve essere connesso. Il pin 8 (No Connect) è connesso alla linea del reset del PICmicro interno e deve rimanere non connesso a meno di particolari esigenze di progettazione.

Il pin 6 (Calibrate) è usato per calibrare la bussola. La procedura di calibrazione è descritta più avanti.

Il pin 7 (50/60Hz) questo pin serve ad evitare interferenze nel rilevamento del campo magnetico terrestre dovuto alla rete elettrica. In italia il pin 7 va collegato a 0v. Nei paesi dove la corrente elettrica viene distribuita a 60Hz il pin 6 può essere lasciato non connesso.

Lettura della rotazione da segnale PWM

Sul pin 4 il modulo fornisce un segnale positivo (da 0 a +5v) in PWM (Pulse Width Modulated = Segnale a modulazione di ampiezza) la cui ampiezza è proporzionale all'angolo di rotazione dell'intero modulo rispetto al punto di calibrazione iniziale.

La durata dell'impulso è compresa in un intervallo che va da 1mS, in corrispondenza di un angolo di rotazione di 0°, a 36.99mS per una rotazione pari a 359.9°. In pratica per ogni grado di rotazione la durata dell'impulso positivo sul pin 4 incrementa di 100uS. La risoluzione massima ottenibile dal modulo è di 0.1° per cui per riuscire a rilevare l'angolo di rotazione con la stessa precisione dobbiamo poter misurare la durata dell'impulso con una precisione di almeno 10uS.

Tra un impulso e l'altro il pin 4 rimane a 0 volt per 65mS.

I pin 3 (SDA) e 2 (SCL) devono essere connessi a +5v nel caso si intenda leggere la rotazione solo tramite segnale PWM.

Lettura della rotazione da I2C bus

Sui pin 3 (SDA) e 2 (SCL) è disponibile un bus I2C per la lettura dell'angolo di rotazione del modulo oltre che di un'altra serie di dati. L'accesso a questi dati avviene tramite una serie di registri interni a cui è possibile accedere dopo aver fornito l'indirizzo giusto.

Nella tabella seguente vengono riportati i registri disponibili.

Registro    Funzione
0   Revisione software
1   Angolo di rotazione in byte da 0=0°, 255=359.9°
2,3   Angolo di rotazione in word da 0 = 0°, 3599=359.9°
4,5   Riservato - Riporta il valore rilevato dal sensore 1
6,7   Riservato - Riporta il valore rilevato dal sensore 2
8,9   Riservato - Riporta il valore di calibrazione 1
10,11   Riservato - Riporta il valore di calibrazione 2
12   Non usato
13   Non usato
14   Non usato
15   Comando di calibrazione - Scrivendo 255 in questo registro viene attivata la calibrazione

Tavola 1 - Registri accessibili via I2C bus

 

In figura 2 viene riportato il diagramma temporale dei segnali presenti sul bus I2C del modulo.

 

Figura 2 - Segnali I2C bus

Il protocollo utilizzato sull'I2C bus è identico a quello delle popolari EEPROM quali ad esempio la 24C04.

Prima deve essere inviato uno start bit, l'indirizzo del modulo (0xC0) con il bit read/write a zero, quindi il numero

del registro da leggere.

Di seguito deve viene ripetuto lo start bit e l'indirizzo del modulo ma con il bit read/write a 1 (0xC1).

Ora è possibile leggere uno o due byte dai registri a 8 o 16 bit. I registri a 16bit bit forniscono il byte più significativo per primo.

I pin dell'I2C bus non hanno resistenze di pull-up interne. La velocità di clock a cui può lavorare il modulo è pari a 100KHz, comunque possono essere raggiunte anche velocità superiori (fino a 1MHz) progettando correttamente le connessioni del bus.

Al di sopra dei 160Khz è necessario inserire dei ritardi di 50uS tra le letture.

I valori di rotazione forniti tramite segnale PWM o registri I2C vengono aggiornati continuamente indipendentemente dal fatto che vengano letti o no.

Caratteristiche tecniche

Nella seguente tabella sono riportate le caratteristiche della bussola magnetica CMPS03

 

Alimentazione
5 VCC
Assorbimento
20mA
Risoluzione
0,1 gradi
Accuratezza
3-4 gradi circa dopo la calibrazione
Uscita PWM
Impulsi da 1 a 37 mS con incrementi di 0,1 mS
Uscita I2C bus

0-255 e 0-3599

Clock massimo (SCL) 1MHz

Dimensioni

32x35 mm. Di seguito viene riportato il piano di foratura del PCB.

Tavola 2 - Caratteristiche della CMPS03

Procedura di calibrazione

La procedura di calibrazione della bussola CMPS03 serve per fissare un punto di riferimento (normalmente il nord) relativamente al quale la bussola, una volta calibrata, fornirà l'angolo di rotazione.

Durante la calibrazione il modulo deve essere mantenuto in posizione orizzontale con il lato componenti in alto, lontato da oggetti mettallici e/o magnetici e rivolto verso il nord come mostrato nella figura seguente.

La calibrazione può essere effettuata in due modi.


Calibrazione via I2C bus


La calibrazione tramite I2C bus avviene scrivendo il valore 255 (0xFF) nel registro 15 ad ogni puntamento del

modulo verso i quattro punti cardinali: nord, est, sud e ovest.

Il registro 15 viene azzerato automaticamente ad ogni calibrazione. La sequenza delle quattro calibrazioni può essere qualsiasi, l'importante è che vengano eseguite tutte.

Calibrazione via pin 6

La calibrazione tramite il pin 6 (Calibrate) avviene mettendo a zero questo pin ad ogni puntamento del modulo verso i quattro punti cardinali: nord, est, sud e ovest.

Il pin 6 dispone di una resistenza di pull-up interna per cui è sufficiente connettere un pulsante verso massa. E' importante rilasciare il pulsante ogni volta che si passa da un punto all'altro. Terminata la calibrazione in pin 6 può essere lasciato disconnesso.

La sequenza delle quattro calibrazioni può essere qualsiasi, l'importante è che vengano eseguite tutte.

Esempio di utilizzo della bussola con il modulo BX24

In questo esempio vedremo come connettere la bussola CMPS03 al microcontrollore programmabile in Basic BX24 tramite bus I2C.

Figura 3 - La bussola CMPS03 conessa al modulo BasicX BX24

Il BX24 è un piccolo microcontroller programmabile in BasicX, un basic con sintassi identica al popolare Visual Basic della Microsoft. Vediamo come sia semplice connettere la bussola CMPS03 a questo modulo tramite la connessione I2C bus come riportato nello schema elettrico seguente:

Figura 4 - Schema elettrico

 

Il pulsante Calibrate Switch connesso al pin 15 del BX24 serve ad attivare la procedura di calibrazione della bussola. Il BX24 legge i dati relativi alla rotazione del modulo e li invia tramite porta RS232 ad un PC per la visualizzazione.

Nella sezione download in fondo a questo articolo è possibile scaricare il codice BasicX da programmare sul BX24.

 

Download

  • Sorgente BasicX d'esempio E' il sorgente in BasicX per realizzare l'applicazione d'esempio riportata in figura 3 e 4. Il valore di rotazione viene letto dalla bussola CMPS03 ed inviato al PC tramite porta RS232.

Segnala questo articolo: 



Parole chiave: - Domotica -

Data di pubblicazione: 17-10-2003Hits: 75061
I marchi citati sono propriet� dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento pu� contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
CMPS03;CMPS10;BX24;BXDB;BXDS
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo
Per maggiori informazioniMicrocontrollore BasicX BX 24
Il BX24P è un potente microcontrollore programmabile in Basic, un linguaggio molto simile al Visual Basic. Dotato di 16 linee di I/O di cui 8 configurabili come ingressi AD a 10bit, multitasking, gestione matematica in virgola mobile, orologio di sistema, ecc.In ridottissime dimensioni il BX24P racchiude un completo sistema ideale per sviluppare velocemente le proprie applicazioni.
Il nuovo microprocessore BasicX 24P oltre a supportare un range di temerature industriale(da -40°C a +85°C), è nettamente più performate, infatti rispetto al modello precedente è ben il 29% più veloce e arriva ad eseguire fino a 83.000 istruzioni al secondo.


Prodotto compliant RoHs
BX24
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 
Per maggiori informazioniBussola elettronica con correzione tilt
Il CMPS10 è un compatto modulo bussola con correzione sull'inclinazione. Dotato di un potente processore a 16bit, magnetometro a 3 assi e un accelerometro a 3, il CMPS10 è in grado di eliminare gli errori causati da ribaltamento.
Principali caratteristiche tecniche:
  • Alimentazione: 3.3v-5v
  • Consumo: 25mA
  • Risoluzione: 0.1
  • Precisione orizzontale: 0.5%
  • Precisione Tilta +/- 60°: 1%
  • Uscita I2C: compatibile SMBUS, 0-255 e 0-3599 , 100khz
  • Uscita seriale: 9600 baud, no parity, 2 stop bitt e livelli 3.3v-5v
  • Uscita PWM: da 1mS a 37mS in 0.1mS
  • Dimensioni: 24mm x 18mm
  • Connettore: 6 pin passo 2.54mm


Prodotto compliant RoHs
CMPS10€ 28.00
Per maggiori informazioniPer maggiori informazioni

Rivenditori Social Contatti Condizioni
Area SX s.r.l
Via Stefano Longanesi 25
00146 Roma

Tel: +39.06.99.33.02.57
Fax: +39.06.62.20.27.85
P.IVA 06491151004
Condizioni di vendita
Procedura di rientro in garanzia
Condizioni per i rivenditori