Der Atmega hat einen eingebauten Analog-Digital-Wandler mit 10bit
Auflösung. Die Eingangsspannung darf nur zwischen 0V und +5V (gemessen
gegen die Bezugsmasse GND liegen, höhere Spannungen zerstören den
Microcontroller. Zur Sicherheit ist deshalb eine Eingangsdiode, ein
Schutzwiderstand und eine Zenerdiode eingebaut, so dass die Spannung
sicher unter den +5V bleibt.
Ohne Schutzschaltung entspricht der Wert 0V dem digitalen Wert 0 und
+5V dem Wert 1024. Bevor man mit dem ATMEGA nun Spannungen messen kann,
muss man ihn eichen. Dazu gibt es zwei Möglichkeiten:
Entweder legt man eine externe Spannung von genau 5V an und bestimmt
den Wert den der ADC zurückgibt. Im Beispiel wäre das 1008. Nun teilt
man 5V durch 1008 und erhält so den Eichfaktor. Diesen multipliziert
man dann mit dem Messwert und erhält dan den zugehörigen Wert in der
Einheit Volt.
Man kann auch die Betriebsspannung des Atmega-Boards benutzen. Diese
liegt bei rund 4,7V (mit einem guten Messgerät nachmessen). Die
Vorgehensweise ist dann identisch wie bei dem ersten Eichexperiment.
Config Adc = Single , Prescaler = Auto , Reference = Avcc
|
Diese Grundeinstellungen sind in der Vorlgagendatei enthalten
|
Start Adc
|
Startet den ADC (nur einmal verwenden)
|
Spannung = Getadc(0)
|
Der Variabel Spannung wird der Messwert des ADC zugeordnet
|
Ein Beispielprogramm für ein einfaches Voltmeter ist in der Datei
adc_atmega.bas zu finden.
Ein Hinweis zur Messgenauigkeit:
Die Auflösung von 10bit entspricht ungefähr einer digitalen Genauigkeit
von 0,005V bei 5V, die Genauigkeit des ADC selbst wird mit +/-2Digit
angegeben, damit lassen sich Spannungen ungefähr +/-0,02V genau messen.
Das reicht für viele Anwendungen aus. Der erweitere Messbereich von 50V
wird durch einen Spannungsteiler erreicht. Damit lassen sich dann
Spannungen +/-0,2V genau bestimmen.