www.mikrocontroller.net

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

Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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
Autor: Peter Dannegger (peda)
Datum:

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
Autor: flätz (Gast)
Datum:

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.
Autor: B e r n d W. (smiley46)
Datum:

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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

@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.
Autor: B e r n d W. (smiley46)
Datum:

@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.
Autor: Falk Brunner (falk)
Datum:

@  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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

@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.
Autor: flätz (Gast)
Datum:
Angehängte Dateien:

> 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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

@flätz:
Okay, jetzt versteh ich das. Könnte aber bei meiner Schaltung meiner
Meinung nach nicht passieren.
Autor: Peter Dannegger (peda)
Datum:

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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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...^^
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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
Autor: Falk Brunner (falk)
Datum:

@  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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

@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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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?
Autor: Falk Brunner (falk)
Datum:

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
Autor: S. Man. (schassa)
Datum:
Angehängte Dateien:

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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

@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!
Autor: was-willst-du (Gast)
Datum:

Warum quält Ihr euch mit den HC595 rum?
Kennt niemand den Baustein UCN5821 und seine Verwandten?
Autor: flätz (Gast)
Datum:

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.
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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...
Autor: flätz (Gast)
Datum:

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.
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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 :(
Autor: flätz (Gast)
Datum:

> 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.
Autor: Jens Schmitt (Firma: eXtensive media) (djstorm)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net