Kürzlich blätterte ich in einem älteren Fachbuch zum C-Control/Basic-System [1] und fand darin u. a. auch die Beschreibung einschließlich eines Schaltplans für ein gesteuertes Universalnetzgerät, das die PWM-Ausgänge des C-Control-Systems zur Ansteuerung verwendet. Warum sollte es nicht auch möglich sein, ein solches Netzgerät mit einem Attiny13 aufzubauen?
Ich
schaute in dem Handbuch des Lernpakets Mikrocontroller[2] nach und fand
heraus, dass der ATtiny13 zwar auch zwei PWM-Ausgänge besitzt, von
denen auf der Platine des Lernpakets aber nur einer genutzt werden kann,
da der Anschluss PB1 für die serielle Schnittstelle verwendet wird.
Also beschränkte ich mich auf die vereinfachte Version mit nur einer
einstellbaren Spannung. Dies hier ist der Schaltplan des einstellbaren
Netzgeräts in Anlehnung an den Schaltplan aus dem o. a. Fachbuch.
Die
Ausgangsspannung von 0 bis 20 V wird über das Terminalprogramm des
Lernpakets Mikrocontroller eingestellt, indem ein Wert von 0 bis 200 an
den ATtiny13 gesendet wird. Dieser stellt die Ausgangsspannung am
PWM-Ausgang ein, die ausreichend gesiebt und um den Faktor 5 verstärkt
wird. Der Ausgangstransistor muss je nach Belastung des Netzgeräts
ausreichend gekühlt werden. Da der AD-Wandler des Mikrocontrollers
maximal 5 V Eingangsspannung erhalten darf, ist der Messbereich mit
Hilfe der Widerstände P2 und R4 bis R7 auf 25 V erweitert.
Es
ist möglich, mit P1 die Ausgangsspannung mit einem Schraubendreher
einzustellen. Der „Spannungsmesser" kann mit P2 „geeicht" werden. Die
Ausgangsspannung wird vom ATtiny13 an den PC in Volt übertragen.Die
Genauigkeit der Messung und damit der Anzeige ist recht gut, wie es der
folgende Screenshot aufzeigt.
Das Programm für den ATtiny13 wurde in BASCOM [3] entworfen. Hier ist das Listing dazu.
$regfile = "attiny13.dat"
$crystal = 1200000
Config Portb.0 = Output
'Programm gibt am PWM-Ausgang des Lernpakets Mikrocontroller eine
'Gleichspannung aus. Diese wird gemessen und der Messwert in Volt
'an den PC ausgegeben
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
Open "comb.2:9600,8,n,1,INVERTED" For Input As #2
Dim N As Byte
Dim Ad_dat As Integer
Dim U As Integer
Dim M As Integer
Dim R As Integer
Do
Get #2 , N
Pwm0a = N
Ad_dat = Getadc(3)
Ad_dat = 25 * Ad_dat ' * 25 notwendig wegen Messbereichserwiterung
U = Ad_dat / 1023 ' Berechnung der Spannung
M = U * 1023 '
R = Ad_dat - M
R = R * 10
R = R / 102
Print #1 , "U = " ; U ; "," ; R ; " Volt" ' und Ausgabe über die serielle Schnittstelle an den PC
Loop
End
Download Programmlisting und die HEX-Datei
Im Bild oben ist eine praktische Ausführung auf einem Steckboard dargestellt. Es fehlt noch der Kühlkörper für den BD237. Die rote LED leuchtet, also ist der ATtiny13 bereit. Die beiden gelben rechts im Bild leuchten ebenfalls, folglich kann der Anwender über die serielle PC-Schnittstelle seinen Wert zur Einstellung der Spannung von 0 bis 20 V senden.
Stückliste zum einstellbaren Netzgerät mit dem ATtiny13:
C1, C2 = 470n
F1,F2 = 1A flink, einschl. Sicherungshaltern
Jmp1 = Jumper
LED1 = rot, 2mA-Typ
LED2, LED2 = gelb, 2mA-Typ
OP1,OP2 = LM358
P1, P2 = 10k
R3 = 2k2
R9 = 10k
R1,R2,R4,R5,R6,R7,R8 = 100k
R10,R11 = 33k
T1 = z.B. BD237 mit Kühlkörper
2 Steckernetzteile mit je 12 V Ausgangsspannung, einschl. zweier Hohlbuchsen passend dazu
1 Steckboard 66 x 174 x 8,5 mm