Spannungsmessung mit der Ping-Pong-Platine
von Hermann Nieder
Beim
Experimentieren mit der Ping-Pong-Platine [1] gelang es mir, den
ATMEGA8 in BASCOM AVR so zu programmieren, dass die
Spannung am Eingang ADC6 bzw. an ADC7 gemessen und angezeigt
wird. Im Bild ist gerade der Schleifkontakt eines der beiden
Potenziometer des Ping-Pong-Bausatzes an ADC6 angeschlossen. Auf
die Platine hatte ich für meine Experimente zuvor Kontaktbuchsen mit
Präzisionskontakten aufgelötet, damit ich ihre frei zugänglichen
Anschlüsse gut nutzen kann. Die äußere Schaltung auf einem
kleinen Steckboard besteht aus wenigen Bauteilen.
Von
den vier NAND-Gattern eines CD4011 sind zwei zu einem Flip-Flop
verbunden, dessen Eingänge über Inverterstufen aus den beiden
restlichen NAND-Gattern an die Pins PB6 bzw. PB7 der o. a.
Platine angeschlossen sind. Die Ausgänge des Flip-Flops sind über
Vorwiderstände und Leuchtdioden (2mA) mit Masse verbunden. Somit wird
angezeigt, an welchem Kanal gerade eine Spannung gemessen wird.
Mit
dem Taster lässt sich abwechselnd einer der beiden AD-Eingänge
ADC 6 und ADC7 einschalten. Bei Batteriebetrieb beträgt die
maximale Messspannung jeweils 3,6 V.
Für die Gestaltung des Programmlistings in BASCOM AVR nutzte ich das Mustergeneratorprogramm
aus einem anderen ELO-Beitrag. Mit diesem erstellte ich zunächst
nacheinander für alle Ziffern von 0 bis 9 wie im Beispiel für 1, 2 und
3 , die Muster und übernahm daraus die Werte, wie dies im
folgenden Auszug aus dem Programmlisting zu erkennen ist.
…
'Fallunterscheidung für Muster der Zeichen 0..9
Select Case Zeichen
Case 0:
Splt1 = 124
Splt2 = 68
Splt3 = 124
Splt4 = 0
Case 1:
Splt1 = 0
Splt2 = 8
Splt3 = 124
Splt4 = 0
Case 2:
Splt1 = 116
Splt2 = 84
Splt3 = 92
Splt4 = 0
Case 3:
Splt1 = 84
Splt2 = 84
Splt3 = 124
Splt4 = 0
..
End Select
Return
Damit
bei der Messung die Umschaltung von ADC6 nach ADC7 usw. gelingt, ist im
Initialisierungsteil des Programms u.a. folgendes festgelegt:
…
Ddrd
=
&B11111010
'Portd.2 ->
Eingang
...
Config Int0 = Falling
Enable Int0
On Int0 Int_isr
…
Durch
einen Tastendruck kommt es zu einem Interrupt , und es wird der
momentane Zustand des Bits „Kanal“ negiert, also aus 0 wird 1 , wenn
zuvor das Bit „Kanal“ gleich 0 war usw. Dafür stehen die
folgenden drei Befehlszeilen:
...
Int_isr:
Kanal = Not Kanal
Return
…
Dies
ist der Wert, der bei einer einfachen Version des Programms vom ATMEGA8
eingelesen wird, wenn die Spannung an einem der beiden
ADC-Eingänge 3,55 V beträgt.
Damit auf der
Ping-Pong-Platine 3,55 angezeigt wird, sind weitere
Programmzeilen notwendig, wie es der folgende Auszug aus dem Listing
belegt:
...
Messen:
'Schritt 1: Dat * 36 ( = 10*3,6, gemessener Betrag von Vcc bei
'Betriebsspannung von 4,5V)
Dat = Dat * 36
'Schritt 2: Division durch 10230
R_einer = Dat / 10230
Zeichen = R_einer
Gosub Darstellung1
R_einer1 = R_einer * 10230
R_zehnt = Dat - R_einer1
'Schritt 3: mit 10 multiplizieren und dann durch 10230 teilen
R_zehnt = R_zehnt / 1023
Zeichen = R_zehnt
Gosub Darstellung2
R_zehnt1 = R_zehnt * 1023
R_zehnt1 = R_zehnt - R_zehnt1
'Schritt 4: mit 10 multiplizieren und dann durch 1023 teilen
R_zehnt1 = R_zehnt1 * 10
R_hundert = R_zehnt1 / 1023
Zeichen = R_hundert
Gosub Darstellung3
Waitms 500
Return
...
Die
Anzeige der jeweiligen Spannung soll mit Komma und zwei Dezimalstellen
erfolgen, also sind auch noch die folgenden Programmzeilen einzufügen:
...
'Zeichen links
Darstellung1:
Gosub Zeichen_z
Leds(1) = Splt1
Leds(2) = Splt2
Leds(3) = Splt3
'LEDs(4) = 384 steht für ein Komma
Leds(4) = 384
Return
'Zeichen Mitte
Darstellung2:
Gosub Zeichen_z
Leds(5) = Splt1
Leds(6) = Splt2
Leds(7) = Splt3
Leds(8) = Splt4
Return
'Zeichen rechts
Darstellung3:
Gosub Zeichen_z
Leds(9) = Splt1
Leds(10) = Splt2
Leds(11) = Splt3
Leds(12) = Splt4
Return
...
Wenn
der Messbereich nicht ausreicht, lässt er sich mit folgender
Schaltung auf 9,99 V (größter Anzeigewert mit 3 Stellen) erweitern:
Die
beiden Spannungsquellen sind für den LM358 in Reihe geschaltet.
Die Spannung an seinem Pin Ub beträgt somit 13,5 V, während die
Ping-Pong-Platine weiterhin nur mit 4,5 V betrieben wird. Zwei
dreipolige Stiftleisten mit Jumpern dienen als Ersatz für Schalter, um
die beiden Batterien zu schonen.
Die
komplette Schaltung passt noch auf ein kleines Steckboard. Im Bild ist
gerade eine 9V-Block Batterie zur Messung angeschlossen.
Download: ping_Voltm4.zip