En aquest projecte farem un amperímetre de baix abast mitjançant microcontrolador ATMEGA8. A ATMEGA8, farem servir la funció ADC (conversió analògica a digital) de 10 bits. Tot i que tenim poques altres maneres d’obtenir el paràmetre actual d’un circuit, utilitzarem el mètode de caiguda resistiva, perquè és la forma més senzilla i senzilla d’obtenir el paràmetre actual.
En aquest mètode passarem el corrent que calia mesurar a una resistència petita, amb la qual cosa obtindrem una caiguda de la resistència relacionada amb el corrent que hi circula. Aquest voltatge a través de la resistència s’alimenta a ATMEGA8 per a la conversió ADC. Amb això tindrem el valor digital actual que es mostrarà en una pantalla LCD de 16x2.
Per a això utilitzarem un circuit divisor de tensió. Anem a alimentar el corrent a través de la branca de resistència completa. Es mesura el punt mitjà de la branca. Quan els canvis actuals hi haurà un canvi de caiguda en la resistència que li sigui lineal. Per tant, amb això tenim una tensió que canvia amb la linealitat.
Ara el més important que cal tenir en compte aquí és que l'entrada del controlador per a la conversió ADC és tan baixa com 50µAmp. Aquest efecte de càrrega del divisor de tensió basat en la resistència és important ja que el corrent extret de Vout del divisor de tensió augmenta el percentatge d'errors que augmenta, de moment no ens hem de preocupar per l'efecte de càrrega.
Components necessaris
Maquinari: ATMEGA8, font d'alimentació (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), condensador 100uF, condensador 100nF (4 peces), resistència 100Ω (7 peces) o 2,5Ω (2 peces), resistència 100KΩ.
Programari: Atmel studio 6.1, progisp o flash magic.
Diagrama de circuits i explicació de treball

La tensió a través de R2 i R4 no és completament lineal; serà sorollós. Per filtrar el soroll, els condensadors es col·loquen a cada resistència del circuit divisor tal com es mostra a la figura.
A ATMEGA8, podem donar entrada analògica a qualsevol dels QUATRE canals de PORTC, no importa quin canal escollim, ja que tots són iguals. Escollirem el canal 0 o PIN0 de PORTC. A ATMEGA8, l’ADC té una resolució de 10 bits, de manera que el controlador pot detectar un canvi mínim de Vref / 2 ^ 10, de manera que si la tensió de referència és de 5V obtindrem un increment de sortida digital per cada 5/2 ^ 10 = 5mV. Així doncs, per cada increment de 5 mV a l’entrada tindrem un increment d’un a la sortida digital.
Ara hem de configurar el registre d’ADC en funció dels termes següents:
1. Primer de tot, hem d’habilitar la funció ADC a ADC.
2. Aquí obtindreu un voltatge d'entrada màxim per a la conversió ADC de + 5V. Per tant, podem configurar el valor màxim o la referència de l’ADC a 5V.
3. El controlador té una funció de conversió d'activació que significa que la conversió ADC només té lloc després d'un activador extern, ja que no volem que hàgim de configurar els registres perquè l'ADC funcioni en mode d'execució lliure contínua.
4. Per a qualsevol ADC, la freqüència de conversió (valor analògic a valor digital) i la precisió de la sortida digital són inversament proporcionals. Per tant, per a una millor precisió de la sortida digital hem de triar una freqüència menor. Per al rellotge ADC normal, estem establint la prevenda d’ADC al valor màxim (2). Com que fem servir el rellotge intern d'1 MHz, el rellotge d'ADC serà (1000000/2).
Aquestes són les úniques quatre coses que hem de saber per començar a utilitzar ADC.
Les quatre funcions anteriors estan configurades per dos registres,


VERMELL (ADEN): aquest bit s'ha d'establir per habilitar la funció ADC d'ATMEGA.
BLAU (REFS1, REFS0): Aquests dos bits s’utilitzen per configurar la tensió de referència (o tensió màxima d’entrada que donarem). Com que volem tenir una tensió de referència 5V, s'hauria d'establir REFS0, a la taula.

GROC (ADFR): aquest bit s’ha d’establir perquè l’ADC funcioni contínuament (mode d’execució lliure).
ROSA (MUX0-MUX3): aquests quatre bits serveixen per indicar el canal d’entrada. Com que farem servir ADC0 o PIN0, no hem d’establir cap bit segons la taula.

MARRÓ (ADPS0-ADPS2): aquests tres bits serveixen per configurar el prescalar per ADC. Com que fem servir un prescalar de 2, hem d’establir un bit.

VERD FOSC (ADSC): aquest bit definit per a l'ADC per iniciar la conversió. Aquest bit es pot desactivar al programa quan necessitem aturar la conversió.
