Forum: Mikrocontroller und Digitale Elektronik Bei PWM mit 74HC595 gehen LED nicht ganz aus


von Jens S. (djstorm)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von flätz (Gast)


Lesenswert?

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.

von B e r n d W. (smiley46)


Lesenswert?

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

von Jens S. (djstorm)


Lesenswert?

@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.

von B e r n d W. (smiley46)


Lesenswert?

@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.

von Falk B. (falk)


Lesenswert?

@  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

von Jens S. (djstorm)


Lesenswert?

@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.

von flätz (Gast)


Angehängte Dateien:

Lesenswert?

> 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

von Jens S. (djstorm)


Lesenswert?

@flätz:
Okay, jetzt versteh ich das. Könnte aber bei meiner Schaltung meiner 
Meinung nach nicht passieren.

von Peter D. (peda)


Lesenswert?

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

von Jens S. (djstorm)


Lesenswert?

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...^^

von Jens S. (djstorm)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@  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

von Jens S. (djstorm)


Lesenswert?

@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

von Jens S. (djstorm)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

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

von S. M. (schassa)


Angehängte Dateien:

Lesenswert?

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

von Jens S. (djstorm)


Lesenswert?

@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!

von was-willst-du (Gast)


Lesenswert?

Warum quält Ihr euch mit den HC595 rum?
Kennt niemand den Baustein UCN5821 und seine Verwandten?

von flätz (Gast)


Lesenswert?

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.

von Jens S. (djstorm)


Lesenswert?

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...

von flätz (Gast)


Lesenswert?

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.

von Jens S. (djstorm)


Lesenswert?

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

von Jens S. (djstorm)


Lesenswert?

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 :(

von flätz (Gast)


Lesenswert?

> 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.

von Jens S. (djstorm)


Lesenswert?

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
Noch kein Account? Hier anmelden.