Doppelnetzgerät mit Ping-Pong-Voltmeter      

von Hermann Nieder                     
Elektronik-Labor  Projekte  AVR 

 

Das abgebildete Doppelnetzgerät ermöglich die Einstellung von zwei Ausgangsspannungen mit Tastern in 256 Schritten zwischen 0 und 20 V. Es werden  zwei PWM-Ausgänge eines ATtiny13 verwendet, dessen Signale zwei Leistungsstufen speisen. Der Atmega8 auf einer Ping-Pong-Platine zeigt  auf seinem LED-Display die beiden einstellbaren Ausgangsspannungen an.

 

Die Schaltung mit einem ATtiny13 und die fünf abgebildeten Taster sowie einige weitere Bauelemente passen auf ein kleines Steckboard.

 

Mit den Tastern S2 und S3 wird das Signal am PWM-Ausgang a gesteuert, während die Taster S4 und S5 dem PWM-Ausgang b zugeordnet sind. Die Reihenschaltung von R1 und R2 sorgt zusammen mit der Schaltung im Inneren des Mikrocontrollers dafür, dass die Spannung am Reset-Eingang, der hier sowohl als Analogeingang als auch als Reset-Eingang (Taster S1) genutzt wird, bei geöffnetem und auch bei geschlossenen Taster S2 stets so groß ist, dass der Mikrocontroller nicht zurückgesetzt wird. Auf diese Weise gewinnt man quasi einen zusätzlichen Eingang, der im Bascom-Programm zur Steuerung des Signals am PWM-Ausgang A verwendet wird. www.elo-web.de/elo/mikrocontroller-und-programmierung/bascom-avr/einstellbares-netzgeraet




  

Die Schaltung auf der Lochrasterplatine im Bild wurde bereits in einem ELO-Beitrag über Experimente zur Verwendung des ADC0(=RESET)-Eingangs des Attiny13 vorgestellt: (www.elo-web.de/elo/mikrocontroller-und-programmierung/bascom-avr/einstellbares-netzgeraet).

 



 


Eine der beiden Leistungsstufen-Schaltungen  wurde um den abgebildeten Teil mit einem einstellbaren Spannungsregler LM317 zur Speisung der Platine aus dem Ping-Pong-Bausatz mit 4,5 V Gleichspannung ergänzt.

Im Bild ist außerdem die Spannungsteilerschaltung zu sehen, mit der es möglich ist, den Messbereich für die Spannungsmessung mit dem Atmega8 auf der Ping-Pong-Platine auf das Fünffache zu erweitern. Diese Schaltung ist für jeden der beiden Analogeingänge jeweils einmal vorhanden. Beträgt die Eingangsspannung maximal 4 V, ist die zu messende Gleichspannung zwischen  Eingang A und Masse zu legen. Die Drahtbrücke zwischen PD.2 ist nicht gesteckt. Es wird der Spannungswert an ADC7 unten auf den unteren fünf Zeilen des  LED-Displays der Ping-Pong-Platine angezeigt.

Ist die zu erwartende Messspannung größer als 4 V, wird die oben erwähnte Drahtbrücke eingefügt, und die Messspannung zwischen Punkt B des Spannungsteilers und Masse angeschlossen. Im Bascom-Programm wird die Messbereichserweiterung nun auch entsprechend berücksichtigt, da in diesem Fall die Anzeige von Spannungen zwischen  0 und 19,99 V möglich ist.

Für die Messung der zweiten Spannung und deren Anzeige auf den oberen fünf Zeilen des Displays muss diese ähnlich, wie dies oben erläutert worden ist, an den Anschlusspunkt A bzw. bei zu erwartenden Werten, die größer als 4 V sind,  an Punkt B der Spannungsteilerschaltung vor dem Eingang ADC6 des Mikrocontrollers auf der Ping-Pong-Platine angeschlossen werden. 

Wird die Drahtbrücke zwischen PD.3 und Masse eingefügt,  ändert sich die Spannungsanzeige auf den Zeilen 1 bis 5 des LED-Displays entsprechend, da nun Spannungen von 0 bis 19,99 V gemessen und angezeigt werden können.


 
Mit dem Programm Supermustergenerator, das auch von den ELO-Seiten heruntergeladen werden kann (www.elo-web.de/elo/mikrocontroller-und-programmierung/ping-pong/super-mustergenerator), wurden jeweils die Zeichen für die Ziffern in den oberen und den unteren fünf Zeilen des LED-Displays auf der Ping-Pong-Platine entwickelt, die in dem Bascom-Programm für die Anzeige verwendet werden, und die Programmzeilen damit gestaltet.

Dies hier ist ein Auszug aus dem Listing für den Atmega8 in Bascom AVR:

 
...
If Pind.2 = 0 Then
Dat = Dat * 5
End If
Dat_zu = Dat / 100000
'Wenn die Messspannung größer als 9.99 V ist, wird in
'den ersten beiden Spalten der fünf Zeilen links
'eine 1 dargestellt, während dies entfällt bei
'Werten unter 10 V

If Dat_zu = 1 Then
Spltz1u = 64
Spltz2u = 992
Else
Spltz1u = 0
Spltz2u = 0
End If
R_zehner1u = Dat Mod 100000
Dat = R_zehner1u

'Nun Anzeige unten auf dem Display(Zeilen 6 bis10)
'Einer
Gosub Mw_anzeige1
Gosub Darstellung1_u
'Zehntel
Gosub Mw_anzeige2
Gosub Darstellung2_u
'Hunderstel
Gosub Mw_anzeige3
Gosub Darstellung3_u

...

Die Programmzeilen für die Darstellung der Ziffern oben auf dem LED-Display(Zeilen 1 bis 5) sind ähnlich gestaltet. Die beiden Messwerte sollen gleichzeitig auf dem Display angezeigt werden . Dafür stehen folgende Programmzeilen:


..
'Nun Gesamtanzeige
'Zehner
Gosub Darstellung_z
'Einer
Gosub Mw_anzeige1
Gosub Darstellung1_o
'Zehntel
Gosub Mw_anzeige2
Gosub Darstellung2_o
'Hunderstel
Gosub Mw_anzeige3
Gosub Darstellung3_o
Waitms 1000
...

Damit die Darstellung der ermittelten Zeichen unten, wie z. B. hier für die Ziffern 0 und 1, erfolgen kann, stehen den Ziffern entsprechend die folgenden Programmzeilen:

...
Zeichen_zu:
'Fallunterscheidung für Muster der Zeichen 0..9
Select Case Zeichen
Case 0:
Splt1u = 992
Splt2u = 544
Splt3u = 992

Case 1:
Splt1u = 0
Splt2u = 64
Splt3u = 992
...

In ähnlicher Weise sind die Programmzeilen gestaltet, mit denen die Ziffern für die Darstellung einer Spannung auf den Zeilen 1 bis 5 des LED-Displays möglich sind. Außerdem wird darauf in der 6. Spalte von links für jede Spannung jeweils ein Dezimalpunkt angezeigt. Dies hier ist ein Auszug aus dem Listing für den ATtiny13, aus dem zu entnehmen ist, wie einfach in Bascom AVR z. B. die Steuerung der beiden PWM-Ausgänge des Mikrocontrollers möglich ist:

Do
'PWMA
Adw0 = Getadc(0)
If Adw0 > 700 Then
Gosub Pwma_plus
End If

If Pinb.3 = 0 Then
Gosub Pwma_minus
End If

'PWMB
If Pinb.2 = 0 Then
Gosub Pwmb_plus
End If

If Pinb.4 = 0 Then
Gosub Pwmb_minus
End If
Loop

Pwma_plus:
While Pwm_a < 255
Incr Pwm_a
Gosub Warten
Pwm0a = Pwm_a
Goto Pwma_end1
Wend
If Pwm_a = 255 Then
Gosub Warten
Pwm0a = Pwm_a
Goto Pwma_end1
End If
Pwma_end1:
Return

Pwma_minus:
While Pwm_a > 0
Decr Pwm_a
Gosub Warten
Pwm0a = Pwm_a
Goto Pwma_end2
Wend
If Pwm_a = 0 Then
Gosub Warten
Pwm0a = Pwm_a
Goto Pwma_end2
End If
Pwma_end2:
Return
...
Download: Programmlistings und HEX-Dateien:  Ping_2Vmtr.zip   T13_DplNG2.zip


Elektronik-Labor  Projekte  AVR