PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hardware PWM Dimmer Mega8



oZe
25.08.2008, 15:31
Hallo!
Also ich habe ein kleines Problem mit einer PWM Schaltung die ich gelötet habe. Ich habe an den PWM Ausgang 1 (PortB.1) einen BC337 über einen 1k Widerstand angeschlossen (Basis). der Kollektor liegt auf +12V und am Emitter befindet sich eine Klemme um einen Verbraucher anzuschließen. Wenn ich jetzt eine LED über einen 470 Ohm widerstand an die Klemme anschließe (die Anode) und die Kathode auf Masse lege funktioniert das ganze auch so wie ich mir das vorstelle. Wenn ich auf 100% high und 0% low schalte leuchtet die LED dauerhaft mit voller Leuchtkraft. Bei niedrigeren Tastverhältnissen entsprechend weniger.

Ich will mit der Schaltung allerdings 5 LED`s betreiben die parallel geschaltet sind mit einem Vorwiderstand. Wenn ich diese LED`s anschließe leuchten die bei 100% high wesentlich dunkler als wenn ich direkt 12V Spannung anlege. Woran kann das liegen? Der Transistor kann 1A laut Datenblatt ab. Das sollte also reichen. Die Spannung am Emitter des Transistors liegt komischerweise auch nur bei rund 5V bei 100% high. Einen Lötfehler kann ich nahezu ausschließen. Ich wär euch dankbar für ein wenige Hilfe. Ich hänge mal noch den Sourcecode an und die Schaltung.



$regfile = "m8def.dat"
$crystal = 4000000

Config Portb.1 = Output
Config Pinb.0 = Input

Portb.0 = 1

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Compare1a = 255

Dim Richtung As Integer
Richtung = 0
Do

Debounce Pinb.0 , 0 , Pr , Sub

Loop
End


Pr:
If Richtung = 1 Then
Do
Compare1a = Compare1a + 1
Waitms 10
Loop Until Compare1a = 255
Richtung = 0
Else
Do
Compare1a = Compare1a - 1
Waitms 30
Loop Until Compare1a = 0
Richtung = 1
End If

Return

jeffrey
25.08.2008, 15:47
hi,
ich hoffe du hast auch deinen widerstand auf ein fünftel verkleinert. allerdings würde ich das nicht machen. ich würde jeder led einen eigenen vorwiderstand verpassen, sioe danken es dir mit einer hohen lebensdauer.
mfg jeffrey

Andree-HB
25.08.2008, 15:56
....vielleicht ist einfach nur der Basisvorwiderstand mit 1k zu groß und der Transistor schaltet deswegen nicht voll durch.

oZe
25.08.2008, 16:42
hmm den vorwiderstand der LEDs habe ich nicht geändert aber das scheint nicht das Problem zu sein. Die LED`s leuchten ja mit voller kraft wenn ich einfach direkt 12V anlege anstelle des PWM Moduls. Das mit dem Basiswiderstand kann ich mir eigentlich auch nicht vorstellen aber es wäre ein Lösungsansatz. Ich mess gleich mal einen durch um zu schauen ob wirklich 12V anliegen.


Edit:
Also ich habe jetzt grade mal einfach einen Transistor genommen und an die Basis über 1k 5V angelegt. Kollektor auf +12V gelegt und dann zwischen emitter und masse gemessen. Ergebniss: wieder knappe 5V. Sah für mich so aus als würde er wirklich nicht ganz durchsteuern. Also habe ich mal auf gut glück ohne basiswiderstand gemessen aber es liegen nach wie vor nur besagte knappe 5V an... Ich weiß echt nicht weiter. Falls das wichtig ist: Auch mit Verbraucher bekomme ich keine anderen Ergebnisse.

Edit2:
Fehler gefunden. Es geht scheinbar nur, wenn ich nicht dem Emitter des Transistors offen lasse sondern den Kollektor. Also Emitter liegt auf Masse und an den Kollektor wird die Kathode des LED angeschlossen. An die Anode kommt natürlich der Vorwiderstand und danach +12V.
Kann mir eventuell jemand erklären warum das so ist? Warum kann ich nicht den Emitter benutzen?

Hubert.G
25.08.2008, 20:37
Eigentlich ganz einfach:
Die Basis muss immer um etwa 0,7V positiver sein als der Emitter damit Strom in die Basis fließt und damit ein um die Stromverstärkung höherer Strom von Kollektor nach Emitter.
Wenn du nun die Last am Emitter hast, kann die Spannung dort nie höher werden als an der Basis.
Für Schaltanwendungen also die Last immer in den Kollektorkreis geben.

oZe
25.08.2008, 20:41
Wow danke Hubert! Wieder was gelernt :-)
Die neue Platine ätzt schon fleißig und dann läuft alles so wie ich mir das vorgestellt habe.

placasoft
28.08.2008, 00:06
Hey,

ich hab das Problem so wie hier im Thread Geschrieben gelöst.

Ich benutze Portb.1 Portb.2 als Output. Nun stehe ich aber vor dem Problem das ich nicht weiß wie ich einen dritten Ausgang ansteuer. Kann mir jemand zeigen wie ich einen weitern Timer hinzufüge und welchen Port ich bei meinem a168 benutzen soll?

Wäre echt wunderbar wenn mir das einer schreiben könnte :) Dann kann ich endlich losstarten und hab keine Hindernisse =).

MfG
Placa