Hallo! Habe wieder mal ein kleines Problem: Und zwar habe ich mir eine Experimentierplatine aufgebaut um 2 x 14 LEDs über Schieberegister mit PWM anzusteuern. Im Grunde funktioniert das alles schon ganz gut - aber es bleibt das Problem, wenn z.B. in der ersten Spalte die 2. LED an ist und die 2. LED in der 2. Spalte eigentlich aus sein soll, dann glimmt diese trotzdem. Da ich jetzt nicht die komplette Erklärung hier reinschreiben will und den Tread dadurch ewig aufblähe, habe ich alles inklusive Beispielbilder, Schaltplan und Listing auf eine extra Seite gestellt. Diese ist zu erreichen unter: http://www.extensivemedia.de/elektro/74hc595-pwm Wäre schön, wenn jemand einen Tipp hätte, woran das liegen könnte. Gruß Jens
Das liegt an der Miller-Kapazität des übersteuerten Darlington. Der braucht erst mal einige 10µs, um zu sperren. Du mußt also erstmal beide Zeilen ausschalten, dann etwas warten und dann die nächste Zeile an. Oder Du ersetzt die Darlington durch P-FETs. Peter
Da fallen mir zunächst drei Möglichkeiten ein: 1)Die Darlingtons haben zu hohe Restströme, 2)Einige LEDs gelangen in den Lawinendurchbruch und führen so den Strom der glimmenden LEDs, 3)Nach den Schaltvorgängen bleiben Restladungen auf den Leitungen zurück, welche sich über die "glimmenden" LEDs entladen.
Darlington Transistoren schalten relativ langsam. Kannst Du mal versuchsweise nach dem Umschalten der Spalten ein Delay einfügen? (Aber das hast Du ja schon probiert) Eventuell könnte auch helfen, die Widerständswerte von R21 und R22 auf z.B. 2.2k zu verringern. Oder einer der TIP125 ist defekt und schaltet nicht ganz ab. Mfg. Bernd
@Peter: Also war ich mit meiner Vermutung, dass es am Transistor liegen könnte gar nicht so falsch. Hab die Idee umgesetzt und schalte erst einmal alle LED aus bevor ich die nächste Reihe anmache - und das klappt jetzt auch. Die LED sind halt jetzt nochmal ein Stück dunkler - denen müsste ich dann wohl neue Vorwiderstände spendieren, damit die wieder heller werden. Eine Idee, wie groß ich die am Besten dimensionieren sollte? Würde die TIP125 gerne durch P-FETS ersetzen, aber leider hab ich glaub ich gerade keine da (muss mal in der Kruschkiste suchen) bzw. hab ich bisher keine Ahnung, wie man die ansteuert (Bin selbst bei Transistoren leider erst bei den Anfängen). @flätz: Punkt 1 scheint wohl zuzutreffen. Punkt 2 verstehe ich jetzt nicht so ganz... Punkt 3 glaube ich jetzt weniger, da die LEDs recht hell geleuchtet hatten, wenn die gegenüberliegende die volle Helligkeit hatte @Bernd: Ja, das mit dem Delay hatte ich probiert - aber mit dem Ausschalten vor Anschalten der nächsten Spalte klappt es auch ganz gut. Komme jetzt hat erstmal nur auf ca. 70 Hz Anzeigefrequenz - wird langsam kritisch, weil ich noch eine Routine einbinden will für die Eingabe der einzelnen PWM-Werte durch einen externen Prozessor oder PC. Die Widerstände R21 und R22 hatte ich Testhalber zwar mal draußen - aber verkleinert hatte ich die noch nicht - werde ich auch mal austesten. Dass einer der TIP defekt ist, schließe ich mal aus, da es auf beiden Seiten das Problem gibt und ich die TIP testhalber auch mal gegen BC558 ausgetauscht hatte und dort das gleiche Problem war. Nachtrag: R21 und R22 habe ich nun testhalber auf 2,2k verkleinert - allerdings bemerkt man überhaupt keine Veränderung.
@Jens Dann teile Deine Funktion in 2 Hälften und rufe diese zwischen den Ausgaben der beiden Spalten auf. Dann hast Du das Delay und die Zeit ist nicht verschwendet. Bernd PS. Erst die Hardwarelösung versuchen, die Lösung per Software ist nur eine Notlösung.
@ Jens Schmitt (Firma: eXtensive media) (djstorm) >Würde die TIP125 gerne durch P-FETS ersetzen, aber leider hab ich glaub >ich gerade keine da (muss mal in der Kruschkiste suchen) Man kann ganz stinknormale NPN oder PNP Transistoren nehmen, da es sowieso Low Current LEDs sind reichen die locker und schalten DEUTLICH schneller, wenn man es nicht vollkommen falsch macht. Ein BC337 in Kollektorschaltung oder ein BC327 in Emitterschaltung funktionieren wunderbar. Siehe Transistor. MFG Falk
@Bernd: Klar will ich erst einmal so viel wie möglich Hardwareseitig machen - ist nur immer doof, wenn man nicht alle Bauteile da hat (oder nicht weiß, ob man die hat). @Falk: Hatte ja testhalber schon mal nen BC558 statt dem TIP drinnen (natürlich auf BCE geachtet) und testweise auch mal mit und ohne dem Widerstand zwischen Basis und Emitter probiert. Aber das Ergebnis war das Gleiche, wenn die LEDs, dia aus sein sollten nicht sogar etwas heller waren als beim TIP.
> Punkt 2 verstehe ich jetzt nicht so ganz...
Im Anhang ist mal ein Beispiel für einen potentiellen Lawinendurchbruch.
LD2 ist im Durchbruch und LD1 sowie LD3 glimmen. Der Effekt tritt aber
üblichweise erst bei relativ großem Vcc auf
@flätz: Okay, jetzt versteh ich das. Könnte aber bei meiner Schaltung meiner Meinung nach nicht passieren.
Falk Brunner wrote:
> Ein BC337 in Kollektorschaltung
Ja, pnp in Kollektorschaltung sperrt auch wesentlich schneller.
Und der Spannungsabfall ist gegenüber Darlington gleich.
pnp-Kollektorschaltung bzw. P-FET ohne Basiswiderstand direkt
anschließen.
Peter
Okay, also PNP-Kollektorschaltung. Habe nur hier auf der Seite im Transistor-Arkikel folgendes gelesen: >Bei Schaltanwendungen darf der Basisstrom nicht durch die Last fließen. >Normalerweise kommt dabei die Emitterschaltung zum Einsatz, die Last >kommt also an den Kollektor. Man sollte auch beachten, dass die aktuelle Schaltung nur zum Testen ist - die "richtige" Schaltung wird wohl mit blauen LEDs aufgebaut, welche ja 20mA brauchen... Klar ist mir schon, dass das Schieberegister max. 70mA bereitstellen kann - da muss noch ein Treiber an die Ausgänge. Aber z.B. der ULN2803, den ich genommen hätte, ist ja auch mit Darlingtons aufgebaut... Irgendwie ist es gerade ein kleines bisschen verwirrend...^^
So, ich habe mal den Schaltplan soweit abgeändert für die PNP-Kollektorschaltung (über aktuellem Schaltplan) auf: http://www.extensivemedia.de/elektro/74hc595-pwm Geändert hat sich folgendes: - TIP125 geändert in BC558 - R1 und R6 (Basisvorwiderstände) von 1k auf 8,6k geändert - R21 und R22 (B-E-Widerstände) von 10k auf 2,2k geändert - Alle LEDs umgedreht - LED-Vorwiderstände von 1,5k auf 2,2k abgeändert Ich muss jetzt hat aufpassen, dass die Ausgänge der Schieberegister HIGH sein müssen statt wie vorher LOW - aber das ist ja nur eine kleine Anpassung... Ist die Schaltung so korrekt? Bzw. sind die von mir berechneten Widerstandswerte okay? Gruß Jens
@ Jens Schmitt (Firma: eXtensive media) (djstorm) >So, ich habe mal den Schaltplan soweit abgeändert für die >PNP-Kollektorschaltung (über aktuellem Schaltplan) auf: Kann man machen ist aber eher exotisch. >http://www.extensivemedia.de/elektro/74hc595-pwm >- R1 und R6 (Basisvorwiderstände) von 1k auf 8,6k geändert Falsch, eine Kollektorschaltung hat keine Basisvorwiderstände! >- R21 und R22 (B-E-Widerstände) von 10k auf 2,2k geändert Unnütz. >- Alle LEDs umgedreht Naja, muss man wohl bei dem exotischen Ansatz. Ein einfacher BC337 (NPN) als Kollektorschaltung hätte die Logik ehalten und nur minimale Änderungen nötig gemacht. MfG Falk
@Falk: Ich glaube, ich war wohl schon ziemlich müde bzw. hatte zu kompliziert gedacht, als ich die Schaltung abgeändert hatte... Das mit NPN leuchtet natürlich ein - ich hatte immer nur im Hinterkopf "LOW-aktiv", "HIGH-aktiv", so dass ich gar nicht daran gedacht hatte, dass ich die LEDs LOW-aktiv und die Transistoren HIGH-aktiv machen kann ;) NPN wäre mir selbst sowieso lieber, da ich von denen sowieso viel mehr herumliegen habe... Dann werd ich den Plan jetzt nochmal abändern - ist ja kein Hexenwerk - und mich nochmal melden, wenn der so weit ist. Dass die Kollektorschaltung keinen R(B) hat, wusste ich nicht. In dem Artikel über Transistoren ist ja leider gleich ein Spannungsteiler mit Poti und R(B) abgebildet... Wie gesagt: Bin halt in Sachen Transistoren noch nicht gerade fit - aber ich denke, das wird noch ;) Gruß Jens
So, der neue Schaltplan steht jetzt auf http://www.extensivemedia.de/elektro/74hc595-pwm Ich hoffe mal, dass dieser jetzt auch nicht mehr so exotisch ist... ;) Ist es jetzt so in Ordnung?
Passt. Aber mit blauen LEDs wirds eng. Die haben so typ. 3,3V Flußspannung, plut 0,7V für die Kollektorschaltung + 0,5V für den 74HC595 bei Vollast macht gerade mal noch 0,5V für den Vorwiderstand. Naja, geht so 1V wäre schöner. Kannst ja dein Schaltung mit 5,5V betreiben, das machen die ICs problemlos mit. MFG Falk
Hallo Jens Schau dir das mal an. Vielleicht hilft es dir ja weiter. Ich hab mal kurz den Schaltplan herausgezeichnet. Sorry, ist sehr grob. Wenn ich mal Zeit finde, werde ich ihn säubern. Mit der Zeit sieht bei mir im Moment aber sehr schlecht aus.;-) Dieses nette Spielzeug unterstützt per PWM auch 9 Heligkeitsstufen und die Abtrennung ist sehr gut. Ich sehe auf jeden fall kein Nachleuchten der LED's. Ob diese Schaltung mit dem höheren Stromverbrauch von blauen LED's zurechtkommt weiss ich nicht, kommt wohl auf einen Versuch und Messungen an. Die Schaltung ist mit den Lowpower LED's sehr hell und kann auch bei Tageslicht gut gelesen werden. Gruss Sascha
@Falk: Ja, das ist halt das Problem bei der Kollektorschaltung... Das weitere ist, dass die 74HC595 auch max. nur ca. 70mA liefern können - da muss ich wohl auch an den Schieberegister-Ausgängen mit Transistoren arbeiten... Und dann bleibt wirklich kein Spielraum mehr... @Sascha: Schönes kleines Spielzeug - muss man schon sagen ;) Ich werd mir nachher mal den Schaltplan genauer ansehen - im Moment kämpfe ich ein bisschen mit meinem ISP-Dongle rum... ;) Aber schon mal Danke!
Warum quält Ihr euch mit den HC595 rum? Kennt niemand den Baustein UCN5821 und seine Verwandten?
Es gibt auch LED Treiber mit Schieberegister und Konstantstromausgängen in 8Bit oder 16Bit, von ST z.B: STP08CDC596 (8Bit) STP16C596 (16Bit) Damit lassen sich die Probleme mit der Spannungsreserve bei blauen LEDs ggf. vermeiden.
So, ich habe jetzt mal wieder ein paar Versuche gemacht. Die TIP125 habe ich jetzt in 2 BC548 NPN-Transistoren geändert (Kollektorschaltung). Das leuchten der LEDs, die aus sein sollen ist zwar ein Stück dunkler geworden, aber aus waren sie trotzdem nicht. Weiter hatte ich versucht vor jeder Spaltenausgabe das Schieberegister zu resetten - ist ne ganz schlechte Idee, weil dann alle LEDs sehr dunkel sind. Mal schauen, ob ich irgendow ein par FET rumliegen habe und werde die dann auch mal probieren. Ich habe jetzt erstmal wieder die Routine eingebaut, die vor jeder Spaltenausgabe die Registerausgänge zu den Transistoren auf LOW und die Äusgänge zu den LEDs auf HIGH setzt. So gehts ja erst mal, aber halt insgesamt ein bisschen dunkler. @was-willst-du: Nein, den kannte ich bis jetzt noch nicht - hab ich aber leider auch gerade nicht hier rumfliegen, so dass ich das mit dem testen könnte. @flätz: Dir auch Danke für den Tipp. Mal sehen wo ich die mal herbekomme...
Um diese "Austastlücken" beim Multiplexen wist Du wohl nicht drumrum kommen. Aber es reicht ja, wenn lediglich beim Spaltenwechsel eine kurze Lücke eingefügt wird. Die Muxfrequenz für den Spaltenwechsel kann relativ niedrig sein, z.B. 100Hz. Die kurzen Lücken sollten sich dann kaum in der Helligkeit bemerkbar machen. Wundert mich eigentlich, dass Deine LEDs dadurch so viel dunkler werden, aber ich habe den genauen Muxablauf in Deinem Code auch noch nicht verfolgt.
Ich glaube so langsam, ich habe einen Fehler in der Software... Ich gebe Spalte 1 aus, dann Spalte 2 und setze dann den PWM-Wert hoch - dann gehts wieder mit Spalte 1 los... Wenn ich jetzt alles richtig verstanden habe, sollte die PWM-Frequenz nicht gleich Spaltenfrequenz sein. Ich nehme jetzt einmal eine Spaltenfrequenz von 100Hz (= 10ms) an, dann wird bei 2 Spalten alle 5ms die Spalte gewechselt. In diesen 5ms muss die PWM mindestens 1 Mal durchlaufen, also muss die PWM-Frequenz mindestens doppelt so hoch sein wie für eine Spalte... Also: - Spaltenfrequenz = 100Hz => alle 5ms Spaltenwechsel (= 200Hz) - in 5ms muss mind. 1x PWM mit 127 Stufen durchlaufen => mindest PWM-Frequenz: 200Hz Idealerweise ist die PWM-Frequenz wohl ein Vielfaches der Spaltenfrequenz. Ich hoffe, es ist zumindest ein bisschen verständlich ;) Habe ich das jetzt so richtig verstanden? Gruß Jens
Ach: PWM-Frequenz 200Hz bedeutet dann ja wohl: 127 Stufen in 5ms = eine Stufe alle 0,039ms... oder? Also in meinem Falle bei einem mit 20 Mhz getakteten ATtiny2313: alle 780 Takte 1 PWM-Stufe... Kann doch aber irgendwie nicht sein - eine dritte Spalte wäre ja dann absolut unmöglich... Irgendwo ist der Wurm drin :(
> Ach: PWM-Frequenz 200Hz bedeutet dann ja wohl: 127 Stufen in 5ms = eine > Stufe alle 0,039ms... oder? So ungefähr. Die PWM-Frequenz wird sehr hoch: fpwm=(Stufenanzahl)*(Spaltenanzahl)*Muxfrequenz Muxfrequenz=Anzahl der Aktivierungen einer einzelnen Spalte pro Sekunde. Immer erst einen PWM Durchlauf abarbeiten, dann erst die Spalte wechseln. Für die Lücke könntest Du z.B. jeweils den "Nulldurchgang" beim PWM-Zähler verwenden. Du verlierst nur eine einzige Helligkeitsstufe. Dmit die LEDs nicht flimmern sollte jede Spalte mindestens 70mal pro Sekunde abgearbeitet werden. Exakt 100Hz sind wohl auch ungünstig, weil dann die LEDs mit der 100Hz Frequenz von Leuchtstofflampen interferieren könnten. Besser wäre eine Frequenz, die zwischen zwei Netzoberwellen liegt, also 75Hz oder 125Hz. Bei 2 Spalten und 125 Muxzyklen pro Sekunde müßte also alle 4ms Ein Spaltenwechsel stattfinden. Diese 4ms werden jetzt in 127 Stufen geteilt. Deine Rechnung stimmt also, Du müsstest ungefähr alle 30us die Register refreshen. Bei einer höheren Spaltenanzahl müssen die Refreshzeiten entsprechend kleiner werden. Vorschlag: 127 Stufen erscheinen mir unnötig viel. Auch mit 32 Stufen erreicht man schon nahezu kontinuierliche Übergänge. Nutze die Interrupts Deines Controllers und schau Dir auch mal das USI-Interface an.
Wieder mal Hallo an alle, die mir bisher weiterhelfen wollten/weitergeholfen hatten. Ich bin jetzt dazu übergegangen und habe die ganze PWM/Multiplex-Software nochmal neu geschrieben - dieamal alles in Assembler und nix mehr mit BASCOM. Die Tipps von flätz haben hier viel weitergeholfen. Das Hauptproblem lag tatsächlich an der falschen Programmierung - jetzt funktioniert das Ganze absolut tadellos! Ich muss jetzt nicht einmal mehr die Schieberegister leeren vor der nächsten Ausgabe. Danke an alle, die mir hier weitergeholfen haben! Nur zur Info: Testhalber habe ich die Testplatine mal wieder auf den Ursprungszustand zurückgelötet - also mit dem TIP125 - hat allerdings nicht funktioniert. Die Tipps zur Schaltung waren also auch sehr hilfreich ;) Bis zum nächsten "Problem" ;) Gruß Jens
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.