En este tutorial vamos a conectar el sensor FLEX con el microcontrolador ATMEGA8. En ATMEGA8, vamos a utilizar la función ADC (conversión analógica a digital) de 10 bits para hacer este trabajo. Ahora el ADC en ATMEGA no puede aceptar una entrada superior a + 5V.
¿Qué es un sensor flexible?
Un sensor FLEX es un transductor que cambia su resistencia cuando cambia su forma. Se muestra en la siguiente figura.
Este sensor se utiliza para detectar los cambios en la linealidad. Entonces, cuando el sensor FLEX se dobla, la resistencia se dobla drásticamente. Esto se muestra en la siguiente figura.
Ahora, para convertir este cambio de resistencia en un cambio de voltaje, usaremos un circuito divisor de voltaje. En esta red resistiva tenemos una resistencia constante y otra resistencia variable. Como se muestra en la siguiente figura, R1 aquí es una resistencia constante y R2 es un sensor FLEX que actúa como una resistencia. El punto medio de la rama se toma para medir. Cuando la resistencia R2 cambia, Vout cambia con ella linealmente. Entonces con esto tenemos un voltaje que cambia con la linealidad.
Ahora, lo importante a tener en cuenta aquí es que la entrada que toma el controlador para la conversión de ADC es tan baja como 50 µAmp. Este efecto de carga del divisor de voltaje basado en resistencia es importante ya que la corriente extraída de Vout del divisor de voltaje aumenta el porcentaje de error, por ahora no debemos preocuparnos por el efecto de carga.
Vamos a tomar dos resistencias y formar un circuito divisor de modo que para un Vin de 25 voltios, obtengamos un Vout de 5 voltios. Entonces, todo lo que tenemos que hacer es multiplicar el valor de Vout por “5” en el programa para obtener el voltaje de entrada real.
Componentes requeridos
HARDWARE: ATMEGA8, Fuente de alimentación (5v), PROGRAMADOR AVR-ISP, JHD_162ALCD (16x2LCD), condensador de 100uF, condensador de 100nF (5 piezas), resistencia de 100KΩ.
SOFTWARE: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuito y explicación de trabajo
En el circuito PORTD de ATMEGA8 está conectado al puerto de datos LCD. En LCD de 16x2 hay 16 pines en total si hay luz de fondo, si no hay luz de fondo, habrá 14 pines. Uno puede encender o dejar los pines de luz de fondo. Ahora en los 14 pines hay 8 pines de datos (7-14 o D0-D7), 2 clavijas de alimentación de alimentación (1 y 2 o VSS y VDD o GND y + 5V), 3 rd pin para el control de contraste (Vee-controla cómo de espesor los caracteres deben estar se muestra) y 3 pines de control (RS & RW & E).
En el circuito, se puede observar que solo he sacado dos pines de control. El bit de contraste y READ / WRITE no se utilizan con frecuencia, por lo que pueden cortocircuitarse a tierra. Esto coloca a la pantalla LCD en el modo de mayor contraste y lectura. Solo necesitamos controlar los pines ENABLE y RS para enviar caracteres y datos en consecuencia.
Las conexiones de LCD con ATmega8 son las siguientes:
PIN1 o VSS a tierra
PIN2 o VDD o VCC a + 5v de potencia
PIN3 o VEE a tierra (brinda el mejor contraste máximo para un principiante)
PIN4 o RS (Selección de registro) a PB0 de uC
PIN5 o RW (lectura / escritura) a tierra (pone la pantalla LCD en modo lectura facilita la comunicación para el usuario)
PIN6 o E (habilitado) a PB1 de uC
PIN7 o D0 a PD0 de uC
PIN8 o D1 a PD1 de uC
PIN9 o D2 a PD2 de uC
PIN10 o D3 a PD3 de uC
PIN11 o D4 a D4 de uC
PIN12 o D5 a PD5 de uC
PIN13 o D6 a PD6 de uC
PIN14 o D7 a PD7 de uC
En el circuito puede ver que hemos usado comunicación de 8 bits (D0-D7) sin embargo, esto no es obligatorio, podemos usar comunicación de 4 bits (D4-D7) pero con la comunicación de 4 bits, el programa se vuelve un poco complejo, así que solo elegimos 8 bits. comunicación. (Consulte también este tutorial: interfaz LCD 16x2 con microcontrolador AVR)
Entonces, por mera observación de la tabla de arriba, estamos conectando 10 pines de LCD al controlador en el que 8 pines son pines de datos y 2 pines son para control.
El voltaje en R2 no es completamente lineal; será ruidoso. Para filtrar el ruido, los condensadores se colocan a través de cada resistencia en el circuito divisor como se muestra en la figura.
El potenciómetro de 1K aquí es para ajustar la precisión del ADC. Ahora hablemos de ADC de ATMEGA8.
En ATMEGA8 podemos dar entrada Analógica a cualquiera de los CUATRO canales de PORTC, no importa qué canal elijamos ya que todos son iguales, vamos a elegir el canal 0 o PIN0 de PORTC.
En ATMEGA8, el ADC tiene una resolución de 10 bits, por lo que el controlador puede detectar un cambio mínimo de Vref / 2 ^ 10, por lo que si el voltaje de referencia es 5V obtenemos un incremento de salida digital por cada 5/2 ^ 10 = 5mV. Entonces, por cada incremento de 5mV en la entrada, tendremos un incremento de uno en la salida digital.
Ahora tenemos que configurar el registro de ADC según los siguientes términos, 1. En primer lugar, debemos habilitar la función ADC en ADC.
2. Aquí obtendremos un voltaje de entrada máximo para la conversión de ADC de + 5V. Entonces podemos configurar el valor máximo o la referencia de ADC a 5V.
3. El controlador tiene una función de conversión de disparador que significa que la conversión de ADC se lleva a cabo solo después de un disparador externo, ya que no queremos que tengamos que configurar los registros para que el ADC se ejecute en modo de ejecución libre continuo.
4. Para cualquier ADC, la frecuencia de conversión (valor analógico a valor digital) y la precisión de la salida digital son inversamente proporcionales. Entonces, para una mejor precisión de la salida digital, tenemos que elegir una frecuencia menor. Para un reloj ADC normal, estamos configurando la preventa de ADC al valor máximo (2). Dado que estamos usando el reloj interno de 1 MHZ, el reloj de ADC será (1000000/2).
Estas son las únicas cuatro cosas que necesitamos saber para comenzar con ADC.
Las cuatro características anteriores se establecen mediante dos registros:
ROJO (ADEN): Este bit debe establecerse para habilitar la función ADC de ATMEGA.
AZUL (REFS1, REFS0): Estos dos bits se utilizan para configurar el voltaje de referencia (o voltaje de entrada máximo que le vamos a dar). Como queremos tener un voltaje de referencia de 5V, REFS0 debe establecerse, según la tabla.
AMARILLO (ADFR): Este bit debe establecerse para que el ADC funcione continuamente (modo de ejecución libre).
ROSA (MUX0-MUX3): Estos cuatro bits son para indicar el canal de entrada. Dado que vamos a usar ADC0 o PIN0, no necesitamos establecer ningún bit como se indica en la tabla.
MARRÓN (ADPS0-ADPS2): estos tres bits son para configurar el prescalar para ADC. Como estamos usando un prescalar de 2, tenemos que establecer un bit.
VERDE OSCURO (ADSC): este bit se establece para que el ADC inicie la conversión. Este bit puede desactivarse en el programa cuando necesitemos detener la conversión.
La interfaz del sensor FLEX con ATmega8 se explica paso a paso en el código C que se proporciona a continuación.