Pentru realizarea voltmetrului vom folosi convertorul
analogic-digital al microprocesorului. Pentru ca acest convertor sa functioneze,
trebuie folosita tensiunea de referinta. Aceasta reprezinta o
valoare maxima
care poate fi masurata de microcontroler. Am ales drept referinta valoarea de
2,56 volti, intrucat este mai stabila decat tensiunea de 5 volti de la
alimentare.Folosirea acestei tensiuni usureaza reprezentarea valorilor ca numere binare in microcontroler, deoarece
2.56 reprezinta puterea lui 2.
Convertorul analog-digital oferitde Atmega16 are urmatoarele caracteristici:
-
rezolutie de 10 biti
-
precizie de ±2 LSB
-
timp de conversie intre 13-260μs
-
8 canale de intrare multiplexate
-
posibilitatea de ajustare stanga
a rezultatului din registrul ADC
-
excursia de tensiune 0-VCC
-
moduri "Free-Running"
sau conversie unica
-
intrerupere la terminarea unei
conversii
În cazul convertorului A/D de 10
biti, rezolutia trebuie sa fie de Vref/2n =2,5 mV /bit. Apoi fiecare
semnal prezent la intrare va fi exprimat ca o fractie din tensiunea de
referinta.
Acesta primeste pe intrarea ADC1
o tensiune Vin(0..2,56V) si este
alimentat la tensiunea de 5V data de stabilizator(pinul 30 AVcc).Pentru
folosirea tensiunii de referinta interna este necesara conectarea unui
candensator de 100nF intre pinul Aref si Gnd.,pentru prevenirea
zgomotului.Pentru a preveni introducerea unei tensiuni mai mari de 2,56 V am
folosit 4 diode conectate intre intrare si masa care tin intrarea la un
potential de maxin 4x0,6v=2,4V.
Conversia ADC-ului este
simpla.Daca rezolutia este setata la 10 biti ,atunci vom avea 1024 de valori.La
un moment dat valoarea amplitudinii este preluata si transmisa la intrarea ADC,
unde valoare convertita este stocata in registrii ADCH si ADCL.La urmatorul
ciclu de ceas alta valoare este convertita. Deci va trebui sa luam valorile convertite intre doua conversii ,sau
valoarea convertita va fi scrisa cu o noua valoare.
Tensiunea de intrare este calculata
cu formula:
Vin[V]=(ADCH·256+ADCL)·Vref[V]/1024
Tensiunea este afisata pe un display 2x16
conectat la portul C al microcontrolerului.Pentru modificarea contrastului am
folosit un semireglabil de 500ohmi situat intre vcc si masa,iar cursorul la
pinul 3 al lcd-ului (pinul de contrast).

Codevisionul permite citirea
succesiva a registrilor ADCH si ADCL prin registrul ADCW
Initial am activat convertorul,
dar am observat ca aveam pe intrare un zgomot foarte mare .Pentru a rezolva
aceasta problema am conectat pe intrare un filtru trece jos format dintr-o
rezistenta de 100K si un condensator de 100nF.Dupa multe nopti pierdute, am
reusit sa afisem tensiunea pe display, care parea ca seamana cu cea masurata de
un voltmetru adevarat.

In saptamanile urmatoare a urmat
marirea scalii de masura de la 0-2V la 0-20 V.Pentru acest lucru am folosit un
divizor de tensiune 1/10 format dintr-o rezistenta de 100 k si una de 900k.
Pentru schimbarea scalei de
masura am folosit un comutator dublu, deoarece trebuia sa ne schimbe atat
fizic scala, cat si in soft. Pentru ultima
varianta am setat 1 logic pe un pin si am citit aceasta valoare. Daca valoarea este 1
se pastreaza scala 0-2 V,iar dc este 0(prin punerea la masa a pinul A.5 cu
ajutorul comutatorului) trece la scala 0-20V.

Pentru a atentiona utilizatorul asupra depasirii scalei
am atasat un led care se aprinde in momentul depasirii scalei, cat si un mesaj
care apare pe display.

Schema electrica finala:
Pentru mai multe detalii contactati: marisel1986@yahoo.com
|