En este proyecto vamos a hacer un amperímetro de bajo rango usando el microcontrolador ATMEGA8. En ATMEGA8, usaremos la función ADC (conversión analógica a digital) de 10 bits para hacer esto. Aunque tenemos algunas otras formas de obtener el parámetro actual de un circuito, usaremos el método de caída resistiva, porque es la forma más fácil y sencilla de obtener el parámetro actual.
En este método, vamos a pasar la corriente que debe medirse a una pequeña resistencia, con esto obtenemos una caída en esa resistencia que está relacionada con la corriente que fluye a través de ella. Este voltaje a través de la resistencia se alimenta a ATMEGA8 para la conversión de ADC. Con eso tendremos la corriente en valor digital que se mostrará en una pantalla LCD de 16x2.
Para eso vamos a utilizar un circuito divisor de voltaje. Vamos a alimentar la corriente a través de la rama de resistencia completa. El punto medio de la rama se toma para medir. Cuando la corriente cambia, habrá un cambio de caída en la resistencia que es lineal a ella. 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 la resistencia es importante ya que la corriente extraída de Vout del divisor de voltaje aumenta el porcentaje de error aumenta, por ahora no debemos preocuparnos por el efecto de carga.
Componentes requeridos
Hardware: ATMEGA8, fuente de alimentación (5v), PROGRAMADOR AVR-ISP, JHD_162ALCD (16 * 2LCD), condensador de 100uF, condensador de 100nF (4 piezas), resistencia de 100Ω (7 piezas) o 2,5Ω (2 piezas), resistencia de 100KΩ.
Software: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuito y explicación de trabajo
El voltaje entre R2 y R4 no es completamente lineal; será ruidoso. Para filtrar el ruido, se colocan condensadores a través de cada resistencia en el circuito divisor como se muestra en la figura.
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 = 5 mV. Entonces, por cada incremento de 5mV en la entrada, tendremos un incremento de uno en la salida digital.
Ahora necesitamos 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.