Datum:
Hallo Leute, ich habe heute mal etwas mit PWM und SMD Led Streifen experimetiert. Habe auch schon ein kleines Programm für meine Zwecke geschrieben (Auto Innenbeluchtung (LED) langsam andimmen). Meine Türkontakte schlaten gegen Masse. Also hab ich die Schaltung so angedacht, das sie mit den internen Pullups läuft.
$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
Dim A As Integer
Config Pinb.0 = Input
Portb.0 = 1
Config Pinb.1 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Do
Waitms 100
If Pinb.0 = 0 Then 'Taster 1 wird geschlossen
Waitms 10
If Pinb.0 = 0 Then
If A < 255 Then
A = A + 4 'LED um 4 Stufe heller dimmen
End If
End If
End If
If Pinb.0 = 1 Then 'Taster 1 wird geöffnet
Waitms 10
If Pinb.0 = 1 Then
If A > 0 Then
A = A - 4 'LED um 4 Stufe dunkler dimmen
End If
End If
End If
Compare1a = A
Loop
End |
Mein Problem ist jetzt folgendes. Wenn ich den Taster drücke (Tür wird geöffnet), dimmt das Licht langsam an. Soweit so gut. Wenn ich den Taster in der An-dimmphase loslasse (also Tür geschlossen) dimmt es wieder langsam aus. So soll es ja auch sein. Wenn ich den Taster aber jetzt zu lange gedrückt halte, bis die 255 erreicht sind, geht das Licht schlagartig aus. Lass ich den Taster nach dem schlagartigen ausgehen los, gehen die LEDs sofort auf die volle Helligkeit und dimmen dann langsam aus. Ich muss also den Zustand der 255 irgendwie halten, bis der Taster wieder losgelassen wird. Aber wie stelle ich das an, ich dachte es gehr mit dem Until Befehl, aber dabei kommen immer nur Fehlermeldungen. Auch der Befehl While brachte nicht das gefünschte Ergebnis. Was habe ich falsch gemacht bzw vergessen? Danke für eure Hilfe
Datum:
Auch wenn A ein 16 Bit Integer ist, Für Compare1a ist nur 1 Byte relevant, da du ja eine 8 Bit PWM hast. Welche Werte nimmt denn A an. A beginnt bei 0 0, 4, 8, 12, 16, ... 200, 204, 208, ..... 240, 244, 248, 252, 256 Opps. 256 ist aber größer als 255. 252 war es noch nicht. Aber 252 + 4 liegt über dem erlaubten Bereich.
Datum:
Hallo Danke erstmal für deine Antwort, der Gedanke mit den 256 statt 255 kam mir auch schon. also du meinst wenn ich statt der 4 den Dimmfaktor 1 nehme geht es ohne dieses schlagartige abschalten bei 255?
Datum:
Ja, wenn Du immer um 1 erhöhst, bleibt er dann bei 255 stehen. OT: Immi, bist Du eventuell aus der Ecke Westthüringen? MfG Paul
Datum:
Immi schrieb: > Hallo > Danke erstmal für deine Antwort, > der Gedanke mit den 256 statt 255 kam mir auch schon. also du meinst > wenn ich statt der 4 den Dimmfaktor 1 nehme geht es ohne dieses > schlagartige abschalten bei 255? Entweder das. Oder aber du gestaltest die Abfrage so, dass auch bei einer Erhöhung um 4 nichts passieren kann. Wann kann man nicht mehr erhöhen? Na offenbar dann, wenn der aktuelle Wert größer dem Maximalwert weniger der Stufenbreite ist. Du kannst es aber auch so machen A = A + 4 if A > 255 Then A = 255 d.h. du versuchst zunächst zu erhöhen. Stellst du hinten nach fest, dass du über dem Maximum bist, dann limitierst du aufs Maximum. Aber Achtung! Damit bist du aus der 4-er Sequenz draussen. d.h. beim Runterzählen kommst du damit nicht mehr automatisch bei 0 raus. Dort muss man dann etwas ähnliches machen. Nur mit 0. Aber ganz ehrlich: Da man den Unterschied einer LED mit PWM STufe 252 nicht von einer mit PWM STufe 255 unterscheiden kann, würde ich es einfach so machen. if A > 256 - 4 A = A + 4 'LED um 4 A wird nur dann erhöht, wenn das Ergebnis nicht über 255 kommen würde.
Datum:
Hallo Ich habe jetzt das Programm nach den Vorschlägen angepasst, es funktioniert auch wunderbar. Danke schonmal dafür. Hier ist der fertige Code, nur für die die es interessiert.
$regfile = "m8def.dat" 'Mega8
$framesize = 32 '
$swstack = 32 '
$hwstack = 32 '
$crystal = 16000000 '16Mhz
Dim A As Integer 'Integer = 16 Bit = 2^16 = 65536 Zustände
Config Pinb.0 = Input 'Türkontaktschalter an PINB.0
Portb.0 = 1 'Internen Pullup aktivieren
Config Pinb.1 = Output 'PWM Ausgang definieren
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1
' PWM = (8 oder9) oder 10 --> 10 Bit = 2^10 = 1024 Schritte
Do
Waitms 20
If Pinb.0 = 0 Then 'Türkontaktschalter, gegen Masse schaltend, wird geschlossen
Waitms 10
If Pinb.0 = 0 Then
If A < 1023 Then
A = A + 5 'LED um 5 Stufen heller dimmen
End If
End If
End If
If A > 1023 Then
A = 1023
End If
If Pinb.0 = 1 Then 'Türkontaktschalter, gegen Masse schaltend, wird geöffnet
Waitms 10
If Pinb.0 = 1 Then
If A > 0 Then
A = A - 1 'LED um 1 Stufe dunkler dimmen, dauert ca 25 sek bis LED aus, dient auch als Ausschaltverzögerung
End If
End If
End If
If A < 0 Then
A = 0
End If
Compare1a = A 'PWM an Pin15 (Portb.1), A= Tastverhältnis (Verhältnis zwischen ein und ausschalten)
Loop
End |
Ich habe jetzt aber eher ein elektrisches Problem. Ich betreibe die LED Leisten über einen BUZ11 Transistor. Datenblatt: http://www.datasheetcatalog.org/datasheet/fairchil... Ich habe den Anschluss Gate an Dauermasse angeschlossen, den Ausgang Drain habe ich über einen 1k Widerstand an den µC gehängt und der Anschluss Source hängt am Minus des LED Streifen (Plus an Dauerplus). Wenn ich jetzt noch eine LED Leiste parallel schalte, dann wird die erste Leiste ein Stückchen dunkler. Noch extremer ist es, wenn ich eine einfache LED parallel zu einem LED Streifen hänge, diese glimmt bei dem Wert von 1023 nur. Mir ist klar, das sich bei einer Parallelschaltung der Strom aufteilt. Ist das jetzt nur so, weil die ganze Schaltung an einem PC Netzteil hängt (kommt später im Auto zum Einsatz)? Was kann ich dagegen tun? Ich hatte die Idee, das ich die LEDs über eine KSQ laufen lasse, aber das funktioniert nicht. Ich habe es mit einer 20mA KSQ ausprobiert, aber die LED die ich dran hatte, bleibt auf der vollen Helligkeit. @Paul: Nein ich bin nicht aus Westthüringen, bin aus Sachsen. Danke schonmal für eure Hilfe.
Datum:
Der Anschluß des BUZ11 kommt mir seltsam vor...;-) Wie sehen die LED-Leisten aus? (wieviele LED, wie beschaltet, mehrere Gruppen LED mit Vorwiderständen parallel, alle in Reihe...?) Ich frage deshalb: Nur wenn man weiß, wie der (industriell hergestellte?) LED-Streifen aussieht, kann man eine anständige Antwort geben. OT: Mein Ex-Kollege hieß so wie Du, deshalb fragte ich, woher Du kommst. MfG Paul
Datum:
Immi schrieb: > Ich habe den Anschluss Gate an Dauermasse angeschlossen, den Ausgang > Drain habe ich über einen 1k Widerstand an den µC gehängt und der > Anschluss Source hängt am Minus des LED Streifen (Plus an Dauerplus). Paul Baumann schrieb: > Der Anschluß des BUZ11 kommt mir seltsam vor...;-) In der Tat: Source gehört an Masse und Gate an den Controller. Der Gate-Widerstand darf auch kleiner sein, gerade bei höheren Frequenzen (um die 100-220 Ohm). Würde ich mal austesten ...
Datum:
Danke für eure schnellen Antworten. Ich habe das mit den Anschlüssen damals bloß ausprobiert und mit der Konfiguration hat es eben geklappt. Ich werde das mal tauschen und testen. Das es auch diese LL-FETs gibt, habe ich leider erst nach der letzten Bestellung gemerkt. Ich habe mir heute bei Conrad mal einen IRLZ34N besorgt, die sind wohl die billigsten auf dem Gebiet. Allerdings machen sie mir einige Probleme. Das Dimmen funktioniert, auch die Heilligkeit beim parallelschalten von mehreren Streifen bleibt gleich. Allerdings scheint es ein Problem zu geben. Wenn ich das Programm auf 1023 hochlaufen lassen, dimmt es nicht mehr auf null runter. Die Leisten werden etwas dunkler, bleiben aber an. Wie schließe ich den IRLZ34N an? Doch eigentlich genauso wie den BUZ11, oder. Im Datenblatt ist leider nicht ersichtlich welche Anschlüsse Drain, Gate und Source sind. Woran könnte das eigenartige Verhalten liegen? Die Leisten sind von ebay aus China. Es sind pro Leiste 60 SMS LEDs, die in Dreiergruppen in Reihe geschaltet sind und die Dreiergruppen hängen dann parallel. Jede Dreiergruppe hat einen Vorwiderstand. Die Farbe ist weiß, falls das für euch irgendwie wichtig ist im Bezeug auf die Stromaufnahme der einzelnen SMD-LED.
Datum:
Hallo, ich habe im Datenblatt von IR auf dem vorletzten Blatt die Anschlussbelegung vom IRLZ34 gefunden (bei der Gehäuse-Zeichnung). Sie ist identisch mit der vom BUZ11. Hat der IRLZ einen Gate-Widerstand? Hast du die Möglichkeit, mit einem Scope die PWM vor und nach dem FET anzusehen? (Nur um Hardware-Probleme deines Phänomens auszuschliessen)? > Es sind pro Leiste 60 SMS LEDs ^^ Coole LEDs; jetzt können die schon SMS ... ;-D