La brujula digital CMPS03 es un sensor de campos magneticos que una vez calibrado ofrece una precision de 3-4 grados
y una resolucion de decimas. Tiene dos interfaces, mediante pulsos temporizados (modulación en anchura), o
bien por medio de un bus I2C, lo que facilita su comunicación con una amplia gama de microcontroladores, incluyendo
los Basic Stamp, Basic X, OOPIC y otros lenguajes compilados. Este sensor magnetico esta especificamente diseñado
como sistema de navegacion para robots. La brujula esta basada en los sensores KMZ51 de Philips que son lo suficientemente
sensibles como para captar el campo magnetico de la tierra. Usando dos de estos sensores colocados en angulo de 90
grados, permite al microprocesador calcular la direccion de la componente horizontal del campo magnetico natural.
Conexionado y Funcionamiento
En la siguiente imagen se puede observar las conexiones de los diferentes pines del CMPS03, entre los que destaca
la patilla 4 y la 2 - 3, que corresponden a los dos posibles interfaces que incorpora: el PWM (Pulse Witdh Modulation
- Modulación por anchura de pulso) y el bus I2C formado por las señales SDA (señal de datos)
y SCL (señal de reloj) y que es un interfaz serie bidireccional sincrono.
En la salida 4, se obtiene una señal PWM en la que el pulso positivo representa el angulo de la brujula. El
pulso varia en duración desde 1mS (0º) hasta 36,99 ms (359,9 º), o dicho de otra forma, el pulso
es igual a 100 uS por cada grado mas 1ms de tara. La señal permanece a cero durante 65 ms entre pulsos, por
lo que el periodo de trabajo es de 65mS + la anchura del pulso. El pulso es generado por un contador de 16 bits del
propio procesador, con una resolucion de 1 uS, aunque en la practica no es recomendable hacer mediciones con una resolucion
de mas de 0,1º (10uS). Cuando use el interfaz PWM, es necesario conectar a +5V mediante 2 resistencias de 47
Kohm, los pines 2 y 3 (SCL - SDA) del interfaz I2C, ya que no se incluye resistencias de pull-up en el circuito.
La otra posibilidad es la de usar el interfaz I2C formado por los pines 2 y 3, que nos permite una lectura directa
del valor en grados de la dirección. El protocolo de comunicación I2C empleado en el modulo, es el mismo
que se emplea con la populares eeprom como la 24C04. Primero se envía un bit de comienzo, la dirección.
del modulo (0XC0) con el bit de lectura a cero, y a continuación el numero del registro que se desea leer.
Después se vuelve a mandar el bit de comienzo y la dirección. del modulo con el bit de lectura a uno
(0XC1). Ahora se puede leer uno, o los dos bytes correspondientes a los registros de 8 y 16 bits respectivamente.
(El byte de mayor peso se lee primero en los registros de 16 bits).
Registros
La brújula tiene un total de 16 bytes de registros, algunos de los cuales forman registros de 2 bytes tal
y como puede verse en la siguiente tabla:
Registro |
Función |
0 |
Numero de Revisión del Software |
1 |
Dirección. en 1 byte 0-255 para 0 - 360º |
2,3 |
Dirección. en 2 bytes 0-3599 para 0 - 359,9º |
4,5 |
Test interno señal diferencial sensor 1 |
6,7 |
Test interno señal diferencial sensor 2 |
8,9 |
Test interno, valor de calibración 1 |
10,11 |
Test interno, valor de calibración 2 |
12 |
Sin usar, devuelve 0 |
13 |
Sin usar, devuelve 0 |
14 |
Sin usar, devuelve 0 |
15 |
Comando de calibración, escribir 255 para calibrar |
El registro 0 es la Revisión del software que actualmente es el 8. El registro 1 es la dirección. en
grados convertida en un valor entre 0 y 255 y que puede ser muy útil en ciertas aplicaciones donde resulta
complicado utilizar la escala de 0 a 360 grados que requiere dos bytes y que esta disponible en los registros 2 y
3 (el 2 es el mas significativo) con un valor que va entre 0 y 3599 que equivale a 0 -359,9º. Los registros 4
a 11 son de uso interno y del 12 al 14 no se usan, por lo que no deberán leerse con el fin de no consumir el
ancho de banda del bus I2C. El registro 15 se usa para calibrar la brújula tal y como se especifica mas adelante.
El bus I2C del circuito no incorpora las necesarias resistencias de pull-up, por lo que será necesaria su
implementación en el mismo, para ello es recomendable utilizar dos resistencias de 1K8 en caso de utilizar
el bus a 400 KHz y de 1K2 o 1K si se utiliza a una frecuencia de 1Mhz. Solo son necesarias 2 resistencias en total
para todo el bus, no por cada circuito que este conectado al mismo. El sensor de brújula digital esta diseñado
para ser compatible con la velocidad estándar de reloj de 100 Khz, aunque esta pueda aumentarse si tiene en
cuenta lo siguiente:
A velocidades superiores a los 160 KHz, la CPU no puede responder lo suficientemente rápido como para leer
los datos, por lo que hay que incorporar un retardo de 50 us al finalizar la escritura del registro de dirección.
Si se hace esto de forma correcta, es posible comunicar con el modulo a velocidades superiores a 1 MHz. Esto solo
afecta a programas escritos en lenguajes de alta velocidad y bajo nivel como es el ensamblador, y no afecta a las
aplicaciones escritas para los compiladores internos como son el Basic stamp, el OOPIC o el Basic X o similares. El
modulo de sensor de brújula siempre actúa como un esclavo, nunca como un master del bus I2C.
El pin 7 se utiliza para seleccionar entre 50 Hz (puesta a cero) o 60 Hz (puesta a uno). Esto es debido a una desviación
errónea de unos 1,5º causada por el campo generado por la red eléctrica. Sincronizando la conversión
con la frecuencia en herzios de la red, se consigue disminuir el error a tan solo 0,2º. El pin si tiene un resistencia
interna de pull up, por lo que si se deja sin conectar, funcionara a 60 Hz. El circuito realiza una conversión
interna cada 40ms (50 Hz) o cada 33,3 ms (60Hz) de acuerdo con la conexión de esta entrada. No hay ningún
tipo de sincronismo entre la realización de la conversión y la salida de los datos, ya que cuando estos
son leídos se devuelven el valor mas reciente que este almacenado en su respectivo registro.
El pin 6 se usa para calibrar el sensor magnético. Esta entrada tiene su propia resistencia de polarización
(pull up) y puede dejarse sin conectar una vez realizada la conversión.
Los pines 5 y 8 están marcados como no conectados, aunque el pin 8 es en realidad el reset del microprocesador,
con el fin de poder programarlo una vez soldado al circuito impreso. Esta entrada no tiene resistencia de pull up.
Calibración
ATENCION: Antes de realizar la calibración, el modulo deberá mantenerse perfectamente horizontal
con los componentes hacia arriba y los dos sensores en la cara inferior. Mantener el modulo alejado de objetos metálicos
y muy especialmente de objetos magnéticos como imanes y altavoces. También es necesario conocer con
precisión la dirección. en la que se encuentran los cuatro puntos cardinales, por lo que es absolutamente
necesario comprobarlo con una brújula magnética.
La calibración de la brújula digital puede hacerse por cualquiera de los siguientes dos métodos:
El Método I2C
Ese Método consiste en escribir 255 en el registro 15 del modulo por cada uno de los cuatro puntos cardinales.
El valor 255 es borrado internamente cada vez que se completa la calibración Los puntos de calibración
pueden hacerse en cualquier orden, pero siempre es necesario calibrar los 4 puntos. Por ejemplo:
1 Apunte el circuito hacia el Norte. Escriba 255 en el registro 15
2 Apunte el circuito hacia el Este. Escriba 255 en el registro 15
3 Apunte el circuito hacia el Sur. Escriba 255 en el registro 15
4 Apunte el circuito hacia el Oeste. Escriba 255 en el registro 15
El Método del pulsador.
Consiste en utilizar un pulsador entre masa y el pin 6 del circuito, con el fin de iniciar la calibración
Tenga en cuenta que este pin tiene una resistencia de polarización interna y puede dejarse sin conectar una
vez realizada la calibración Para realizar la calibración, bastara con poner a masa el pin 6 momentáneamente
por cada uno de los puntos cardinales. De igual forma que con el otro Método, los puntos pueden calibrarse
en cualquier orden, pero siempre es necesario calibrar los 4 puntos cardinales. Ejemplo:
1 Apunte el circuito hacia el Norte. Pulse momentáneamente en pulsador.
2 Apunte el circuito hacia el Este. Pulse momentáneamente en pulsador.
3 Apunte el circuito hacia el Oeste. Pulse momentáneamente en pulsador.
4 Apunte el circuito hacia el Sur. Pulse momentáneamente en pulsador.
y eso es todo.
Haga clic en el botón COMPRAR para añadir este producto a su carrito de la compra.
35,05-Euros.
IVA incluido
|
SENSOR BRUJULA DIGITAL CMPS03
Vea mas productos de esta categoría en:
Sensores y detectores para robótica.
Ir a la Página Principal de www.SuperRobotica.com
Actualizada el 18/10/2024 © 2002 -2024 INTPLUS ®. Todos los derechos reservados
|