Spannungsmessung mit der Ping-Pong-Platine

von Hermann Nieder

Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller


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


Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller