Requisitos
- AtMega 16 IC /placa de desarrollo
- 2. Acelerómetro de 3 ejes
- 3. Pantalla LCD de 16X2 (para mostrar datos X, Y y Z)
Descripción
Este proyecto utiliza tres de los ocho ADC presentes en el IC AtMega16 para mostrar los datos digitales correspondientes de las salidas X, Y y Z de un acelerómetro en una pantalla LCD de 16X2.
Acelerómetro
Primero hablemos del acelerómetro IC; Aquí utilicé el ADXL-335, que es un módulo de acelerómetro de 3 ejes.
Figura 1: Imagen del módulo acelerómetro ADXL335
Es muy fácil lidiar con este tipo de módulos, ya que solo necesitan alimentación VCC y GND para arrancar, el resto es su trabajo proporcionarnos datos analógicos. Estos módulos trabajan con un concepto simple como es la fuerza que actúa sobre un objeto en un plano inclinado. Se ocupa de la parte Mg(sin?) y Mg(cos?) de la fuerza y determina el ángulo para cálculos adicionales. Ahora también notas el cambio de fuerza a partir del cual se calculará la aceleración.Convertidor analógico/digital
Hay 8 ADC independientes que comparten sus pines con los de PORTA. Estos ADC son de 10 bits, lo que simplemente significa que pueden convertir un valor analógico determinado en sus correspondientes datos digitales de 10 bits.
Antes de continuar, primero debemos discutir qué son los ADC. ADC significa Convertidor analógico a digital. Todos sabemos que los microcontroladores funcionan únicamente con valores digitales, pero ¿qué pasa si necesitamos interactuar con dispositivos o valores analógicos? En estas situaciones necesitamos un dispositivo que pueda funcionar como comunicador entre la parte analógica y la parte digital. Los ADC (convertidores de analógico a digital) juegan el mismo juego; convierten los valores analógicos a digitales mediante algún medio de referencia (Vref).
En AtMega16, el pin 32 requiere un voltaje de referencia (normalmente suministrado +5 V) cuando se trabaja con ADC. También hay un término más que debe introducirse, es decir, Resolución. En términos simples, podemos decir que es la precisión o exactitud con la que trabaja un ADC. Para un ADC de 10 bits que funciona con Vref de 5 V, su resolución es de 4,88 mV. Esto significa además que por cada aumento o disminución de 4,88 mV en la entrada analógica, la salida digital aumentará o disminuirá en una unidad, respectivamente. Como es un ADC de 10 bits, los datos de salida varían de 0 a 1023 (2^10 = 1024) con 1024 valores diferentes. Ahora, volviendo a este proyecto, conecté los pines X, Y y Z al ADC0-ADC2. Proporcionan valores analógicos individuales e independientes. También mostré el resultado digital correspondiente en la pantalla LCD. Las conexiones de la pantalla LCD son las siguientes: • Los pines de DATOS están conectados a PB4-PB7 ya que funciona en modo de 4 bits • Los pines RS, RW y ES están conectados a PB0, 1, 2 respectivamente. Al mirar la parte del video, notará que los valores de X, Y y Z solo oscilan entre 300 y 500. Esto se debe a que mi Vref está configurado en 5V mientras las salidas del acelerómetro permanecen entre 1,6 y 1,9 V. En la parte de codificación utilicé tres archivos de encabezado: •Código fuente del proyecto
###
#incluir
#incluir
#incluir
#incluir
vacío principal
{
adc0 interno ;
ADCinit;
inicio LCD ;
LCDclr ;
Cursor LCD APAGADO ;
Caracteres cap(16);
mientras (1)
{
adc0=ler_adc(0); //leyendo datos del eje X
sprintf(ch,"X: %d",adc0); //convirtiendo int a char
LCDGotoXY (0,0);
Pantalla LCD (CH);
LCDsendChar (' ');
adc0=ler_adc(1); //leer datos del eje Y
sprintf(ch,"Y: %d",adc0);
LCDGotoXY (0,10);
Pantalla LCD (CH);
LCDsendChar (' ');
adc0=ler_adc(2); //leer datos del eje Z
sprintf(ch,"Z: %d",adc0);
LCDGotoXY (1.5);
Pantalla LCD (CH);
LCDsendChar (' ');
_delay_ms (500); //un retraso de medio segundo
}
}
###
Diagramas de circuito
Diagrama de circuito-ADXL335-Módulo-acelerómetro-Interfaz-AVR-ATMega16 |