LED PWM mit kondensatoren dämpfen?

Gast #5739483
Lesenswert?

Wie erwartet, flimmern die LEDs bei Versuchen mit PWM niedriger 
Frequenz.

Taktgeber der PWM ist ein Timer, Ausgang ein digital Pin. PWM fähige 
Pins will ich im Versuch nicht verwenden, weil es ein Versuch ist und 
weil ich später mehr LEDs treiben will (ca. 100), als ich PWM fähige 
Pins habe. Die LEDs hängen übrigens an Schieberegistern auf einer 
externen Platine, die über einen Bus mit der uP-Platine verbunden ist.

Weil die LEDs extern sind, kann ich die Frequenz nicht beliebig erhöhen. 
Irgendwann macht der Bus das Tempo wohl nicht mehr mit. Ich habe das 
aber noch nicht genau durchgerechnet. Der uP taktet übrigens mit 16MHz.

Mir fallen nun zwei Möglichkeiten ein, das Flackern bei niedrigen 
Frequenzen zu verhindern.

1. Ich spendiere jeder LED einen kleinen Kondensator

2. Ich moduliere nicht jede der 100 LEDs, sondern deren gemeinsame 
Rückleitung. Dann brauche ich zwar einen größeren Treiber (ca. 2A), aber 
die PWM kann lokal auf der Platine erzeugt werden. Somit wäre ich an 
keine Bus-bedingten Einschränkungen gebunden.

Was würdet ihr tun?
#5739503
Lesenswert?

PWM schrieb:

> 1. Ich spendiere jeder LED einen kleinen Kondensator

Das funktioniert eher schlecht bis garnicht. Da LEDs stromgesteuert
und nicht spannungsgesteuert sind, müssten solche Kndensatoren
unverhältnismäßig gross werden. Schau Dir mal das Strom/Spannungs-
diagramm einer LED im Datenblatt an. Schon bei einer Veringerng
der Spannung um nur 0,1 Volt gibt es eine starke Verringerung des
Stroms und damit der Helligkeit.
#5739570
Lesenswert?

PWM schrieb:

> Weil die LEDs extern sind, kann ich die Frequenz nicht beliebig erhöhen.
Stimmt nicht.
> Irgendwann macht der Bus das Tempo wohl nicht mehr mit.
Das ist der Fehler im Konzept:
Wenn man PWM über den Bus übertragen wil, geht die Bandbreite schnell 
aus.

Nimmt man stattdessen einen LED-Treiber, der die PWM und/oder 
Stromeinstellung der LEDs lokal erledigt, muss man über den Bus nur noch 
die Helligkeitswerte für die LEDs übertragen, und das auch nur dann, 
wenn die sich ändern.

Schau dir mal Treiber wie den TLC59116 an, oder für RGB LEDs z.B. den 
LP5030 / LP5036...


> Was würdet ihr tun?
ein passenderes Konzept wählen, s.o.
Gast #5739638
Lesenswert?

Wolfgang schrieb:
> PWM schrieb:
>> Die LEDs hängen übrigens an Schieberegistern auf einer
>> externen Platine, die über einen Bus mit der uP-Platine verbunden ist.
>
> Warum nicht PCA9685 an Stelle der Schieberegister?
> Wieviel Strom brauchen deine LEDs?

2mA pro LED, das würde schon passen. Bei ca. 15V brauche ich 
Open-Collector. Der PCA9685 ist interessant. Habe einen (nur ganz 
kurzen) Blick in das DB geworfen. Das Limit scheint leider 12V zu sein. 
Ich sehe mir das aber heute abend nochmal an.
Gast #5739655
Lesenswert?

Thorsten S. schrieb:
>> Was würdet ihr tun?
> ein passenderes Konzept wählen, s.o.

Bin ja schon dabei :-)


> Nimmt man stattdessen einen LED-Treiber, der die PWM und/oder
> Stromeinstellung der LEDs lokal erledigt, muss man über den Bus nur noch
> die Helligkeitswerte für die LEDs übertragen, und das auch nur dann,
> wenn die sich ändern.
>
> Schau dir mal Treiber wie den TLC59116 an, oder für RGB LEDs z.B. den
> LP5030 / LP5036...

Von den TPIC6B595 haben ich noch einen Karton voll. So schlecht sind die 
eigentlich nicht. Bin gerade am überlegen, ob man am Pin !G das 
PWM-Singal anlegen und damit dann alle LEds steuern kann. Das wäre das 
einfachste.
Gast #5739665
Lesenswert?

Harald W. schrieb:
> PWM schrieb:
>
>> 1. Ich spendiere jeder LED einen kleinen Kondensator
>
> Das funktioniert eher schlecht bis garnicht.

Gut, danke für die Anregung. Der Kondensator ist damit vom Tisch weg.

Was haltet ihr von der Ansteuerung des !G Pins (TPIC6B595) zur 
PWM-Modulation der Ausgänge? Kann man Output enable dafür verwenden 
(zweckentfremden)?
Gast #5739681
Lesenswert?

Harald W. schrieb:
> PWM schrieb:
>
>> Ich habe 15V max. Kfz-Spannung.
>> Eigentlich wollte ich nur für die LEDs keinen Spannungsregler
>> investieren. Das ist ein Teil des Konzepts.
>
> Hmm. Du kennst das hier?
> http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

Ich mache nichts anderes. Welche Probleme hast du mit dem 
"hochverseuchten Kfz-Netz" und LEDs  ;-) Das klappt schon, sorge dich 
nicht
#5739683
Lesenswert?

PWM schrieb:
> Was würdet ihr tun

Nachdenken.

Wer nur Hämmer kennt, für den ist alles ein Nagel.

Da du nur Kondensatoren kennst, willst du alles abblocken.

Block wie Zementklotz.

Wenn bei dir der Fahnenmast im Wind wackelt: Einfach einen Betonklotz 
oben dran, da wird er träger und wackelt nicht mehr so schnell.
Wenn dein Automotor Aussetzer hat, einfach Zementsäcke in den 
Kofferraum, dann reicht der Schwung bis der Aussetzer vorbei ist.
Ebenso blöd ist es, einen Kondensator parallel zu einer LED an PWM zu 
schalten.

Wenn überhaupt filtert man Strom, und der Strom ist es der die LED 
Hellilgkeit bestimmt, durch eine Drosselspule (mit Freilaufdiode am 
Schaltelement).

Aber ein deinem Fall ist sicher ein ordentliches Programm die Lösung, 
denn auch PWM in Software kann so schnell sein, daß es nicht flackert 
oder flimmert. Man darf halt nur nicht im Arduino-Style programmieren.

Ein AVR schafft es, ein 320 x 240 LED Matrix Feld in 256 
Helligkeitsbstufungen pro Pixel mit einem Bild im Multiplex zu bedienen 
und bleibt bei 60Hz Bildwiederholfrequenz. Wenn du viel weniger 
schaffst, kannst du viel schlechter programmieren. Lern halt was.
Gast #5739688
Lesenswert?

Stefanus F. schrieb:
> Wolltest du etwa im ernst so viel Energie verheizen?

> Für so etwas verwendet man Spannungswandler. Ich würde die 12V erst (je
> nach Farbe) auf 3V oder 4V reduzieren und dann damit die LEDs ansteuern.

Leute!
Heute ist doch nicht der erste Mai

Jetzt muss ich auch noch rechnen
sagen wir mal, 100 LEDs
Low Current, 2mA pro LED

Alle LEDs sind DUO. Da brennt nur 1 Farbe.
Das reduziert die LEDs effektiv auf 50
x2mA = 100mA

Meist habe ich rot und grün
Wenn rot leuchtet, habe ich ein anderes Problem als LEd-Energie

Auch die grünen sollen nicht alle leuchten. Ich fahre ein Auto, keine 
Disko.
Bleiben ca. 5 stück übrig.

Ich rechne aber 100 LEDs, weil .. na ihr wisst schon. Worst case ist 
Standard.

Über ein "Energieproblem" bei low current LEDs habe ich übrigens noch 
nie im Leben nachgedacht. Jetzt zum ersten mal. Befreit euch aus 
theoretischen Zwängen
Gast #5739698
Lesenswert?

Und schon wieder ist er unter uns. Arduino Fanboy Schreibstil braucht 
die Welt nicht, freundliche Lösungen sind besser. Sieh doch mal die 
anderen Schreiber an. Mach es so wie die, und glaube mir, du wirst den 
Alfred Tetzlaff in dir bald los sein ;-)

Michael B. schrieb:

> Aber ein deinem Fall ist sicher ein ordentliches Programm die Lösung,
> denn auch PWM in Software kann so schnell sein, daß es nicht flackert
> oder flimmert. Man darf halt nur nicht im Arduino-Style programmieren.

Ja du neunmalkluger Schreibklotz. Oben stand aber auch was von BUS.
Gast #5739701
Lesenswert?

Stefanus F. schrieb:
> Ok, dann ist die Energie nicht so schlimm. Aber immerhin löst du mit
> einem Spannungswandler das Problem der Spannung. Davon brauchst du ja
> nur einen, nicht 100 Stück.

Ja da hast du recht. Wenn ich den PCA9685 einsetze, ist das auf jeden 
Fall eine Option.

Aber was ist denn nun mit !G ? Hat keiner eine Idee? Dann probiere ich 
es halt später einfach aus. Die HW ist ja noch am Nudelbrett äh 
Reisbrett äh..., also noch änderbar
Gast #5740130
Lesenswert?

Stefanus F. schrieb:

> Ich würde allerdings auch die PCA9685 verwenden, weil das Timing auf dem
> steuernden Computer dadurch viel einfacher wird.
>
> Guck mal wie billig die sind, da sind sogar 200Ω Vorwiderstände für die
> LEDs mit drauf: https://www.ebay.de/i/272495242297?chn=ps

Stimmt, dagegen sind Argumente kraftlos :)

Letzte Frage noch zu PCA9685: Wie lang dürfen die Verbindungskabel zur 
uC Platine sein?
Gast #5740223
Lesenswert?

Stefanus F. schrieb:
> PWM schrieb:
>> Wie lang dürfen die Verbindungskabel zur uC Platine sein?
>
> Hängt stark von der Übertragungsrate, den Pull-Up Widerständen, dein
> Eigenschaften des Kabels, der Anzahl der Busteilnehmer und der Stärke
> von Störfeldern ab.

Hach, seufz, ich liebe Prosa. Gibts zum Überbrücken von 2 Metern (das 
reicht völlig) auch irgendwo einen Schaltplan, wo z.B. die Pull-Up 
Widerstände einen Ohmwert haben? Einen speziellen I²C Treiber braucht es 
wohl nicht, oder? "Arduino Fanboy" hatte dahingehend recht: der uC ist 
ein Mega 2560.
Gast #5740231
Lesenswert?

Schlumpf schrieb:
> Du willst einen gemeinsamen Enable Pin für die PWM nutzen?
> Dann kannst du aber die LEDs an diesem Chip immer nur alle gleich hell
> leuchten lassen.

Ja genau. Das reicht schon. Die LEDs sind Kfz-Kontrollampen. Nachts 
sollen die dunkler sein, damit sie nicht blenden.

> Wenn das kein Problem ist, warum willst du dann überhaupt die LEDs
> einzeln ansteuern können?
Hatte ich das geschriebn? Dann war das so nicht richtig. Per Steuerung 
lässt sich jede LED zwar einzeln ansprechen, damit Blinken möglich ist, 
aber beim Dimmen (PWM) ist das nicht nötig.

> Dann schalte sie doch einfach alle parallel an einen gemeinsamen PWM
Das ist ja eine der Optionen. Die Lösung per !G (Output enable) gefällt 
mir bis jetzt am besten.
Gast #5740241
Lesenswert?

Schlumpf schrieb:
> PWM schrieb:
>> Befreit euch aus theoretischen Zwängen
>
> Befreie dich doch mal von den theoretischen Zwängen und probiere es aus.

Oh mann. Ich bin doch schon unterwegs. Zaubern kann ich aber nicht :-)

Schlumpf schrieb:
> PWM schrieb:
>> Hatte ich das geschriebn?
>
> Nein, aber wenn du 100 LEDs über einen Bus per PWM ansteuern willst,
> geht man davon aus, dass du das willst.
>
> Falls du das nicht willst, dann hänge einfach alle LEDs parallel über
> getrennte Vorwiderstände an EINEN Transistor, der von EINEM PWM Pin
> gesteuert wird

Das habe ich schon in der Pipeline, gerade geschrieben.

Ich freue mich ja über Tipps, danke an alle.
Gast #5740257
Lesenswert?

Schlumpf schrieb:
> Dann helfe ich dir jetzt auf die Sprünge :
>
> LED an : 100% Duty Cycle des PWM
> LED aus: 0% Duty Cycle
>
> Wie geht jetzt zB Blinken mit 0,5 Hz?
>
> Wie geht Blinken mit gedimmter LED?
>
> Klingelt's?

Äh..nee. Weiß nicht, was du jetzt meinst.
Vom Programm her geht das schon. Bis jetzt nur auf lokale Pins bezogen, 
aber es funzt. Und es flackert ;-)

> Wie geht Blinken mit gedimmter LED?

Ist doch ganz easy. Reine Mathematik, wo 0 oder 1 raus kommt. 1=Pin 
Hhigh=LED leuchtet, und umgekehrt.
Gast #5740279
Lesenswert?

Schlumpf schrieb:
> Mit nem Draht, auf dem dein uC über EINEN pin EINE PWM für ALLE LEDs
> schickt.
>
> Wenn alle roten LED immer das gleiche tun, dann brauchst du auch nur EIN
> Signal, um sie alle GEMEINSAM anzusteuern

hatte ich doch oben schon als Option genannt

PWM schrieb:
>
> 2. Ich moduliere nicht jede der 100 LEDs, sondern deren gemeinsame
> Rückleitung.
Gast #5740287
Lesenswert?

PWM schrieb:
> hatte ich doch oben schon als Option genannt

Ok, das hab ich nicht gesehen.

Ja und warum machst du das nicht gleich so?
Du brauchst doch nur eine einzige Leitung um alles zu machen.
An, Aus, Blinken, Dimmen...

Warum willst du da überhaupt einen Bus einbauen?

Auf diese Idee wäre ich nicht mal gekommen. Die Hardware wird 
aufwändiger, die Software wird aufwändiger und der Nutzen ist NULL.

Wenn du z.B. mit 0,5Hz blinken willst, dann konfigurierst du deine PWM 
eben jede Sekunde um:
1 Sekunde 0%
1 Sekunde 100% (oder eben weniger, wenn gedimmt werden soll)
Gast #5740329
Lesenswert?

Schlumpf schrieb:
> Ok, das hab ich nicht gesehen.
>
> Ja und warum machst du das nicht gleich so?

Denkfehler passieren halt hin und wieder ;-)

> Du brauchst doch nur eine einzige Leitung um alles zu machen.
> An, Aus, Blinken, Dimmen...
>
> Warum willst du da überhaupt einen Bus einbauen?

Wat daran verstehst du nicht?
1
[Platine 1 mit dem uC]-----[Bus]-----[Platine 2 mit den LEDs]
Gast #5740332
Lesenswert?

PWM schrieb:
> Wat daran verstehst du nicht?
> [Platine 1 mit dem uC]-----[Bus]-----[Platine 2 mit den LEDs]

Jo, dann nimm nen Bus.. Wird wohl nötig sein.

Entweder habe ich die Problemstellung nicht begriffen, oder du stehst 
ganz massiv auf dem Schlauch oder dir hat mal jemand erzählt, dass man 
Platinen nur mit Bussen verbinden darf. Ich weiss es nicht.
Gast #5740337
Lesenswert?

Also unter den Voraussetzungen ist die Idee mit dem Enable Pin sicher 
eine gute Idee.

Wenn du das über ein Schiebergister machst, dann würde ich darauf 
achten, dass du den Takteingang filterst. Dass kurze Spikes auf dem Takt 
nicht zu einem ungewollten Schiebevorgang führen.
Entsprechend musst du dann natürlich mit der Datenrate runter.
Aber das ist ja kein Problem, da du ja nur noch die Information An/Aus 
übertragen musst. Und das sollte zeitlich unkritisch sein.
Das Dimmen machst du dann, wie du ja schon die Idee hattest, global über 
den Enable-Pin.

du könntest dich sogar nach einem PWM-Controller umschauen, der über SPI 
angesteuert wird. Den könntest du dann in die Schieberegisterkette 
einhängen und dann z.B. im Letzten Byte des Telegramms die Helligkeit 
übertragen.
Der Chip steuert dann mit seinem PWM Ausgang Global die OEs der 
Schieberegister.

Dann ist dein Controller völlig von irgendwelchen PWMs befreit und du 
sparst auch noch eine Leitung.
Gast #5740348
Lesenswert?

Schlumpf schrieb:
> Also unter den Voraussetzungen ist die Idee mit dem Enable Pin sicher
> eine gute Idee.

ja meinst du, das klappt? Werde das auf jeden Fall durchtesten.

Ansonsten bleibt immer noch ein Transistor für die gemeinsame 
Rückleitung der LEDs.

> Wenn du das über ein Schiebergister machst, dann würde ich darauf
> achten, dass du den Takteingang filterst. Dass kurze Spikes auf dem Takt
> nicht zu einem ungewollten Schiebevorgang führen.

Leider wieder Prosa. Ich bin kein Profi. Hobby-Frickler mit Ambition zur 
Perfektion. Sage mir: Welche Kapazität (Kabel-Länge=1 bis 2 Meter, 
gewöhnliche Steuerleitung). Takt: Sagen wir mal: 1000 Hz reichen für ein 
flackerfreies Dimmen meines bescheidenen Wissens nach völlig aus.

> Entsprechend musst du dann natürlich mit der Datenrate runter.
> Aber das ist ja kein Problem, da du ja nur noch die Information An/Aus
> übertragen musst.

Ja genau.

> Das Dimmen machst du dann, wie du ja schon die Idee hattest, global über
> den Enable-Pin.

d'accord

> du könntest dich sogar nach einem PWM-Controller umschauen, der über SPI
> angesteuert wird. Den könntest du dann in die Schieberegisterkette
> einhängen und dann z.B. im Letzten Byte des Telegramms die Helligkeit
> übertragen.

Nicht so schnell. Der PCA9685, wie von Wolfgang und Stefanus empfohlen, 
läuft via I2C. Wäre doch sinnvoll, den PWM Pin auch über I2C zu steuern.

Aber eigentlich dachte ich einfacher: Reicht ein einfaches geschirmtes 
Kabel nicht aus?



> Der Chip steuert dann mit seinem PWM Ausgang Global die OEs der
> Schieberegister.
>
> Dann ist dein Controller völlig von irgendwelchen PWMs befreit und du
> sparst auch noch eine Leitung.

Die eine Leitung habe ich. Die meisten lokalen Pins bleiben eh frei, 
weil die LEDs extern sind.

OK, freut mich wegen der Übereinkunft :-)
Gast #5740359
Lesenswert?

PWM schrieb:
> ja meinst du, das klappt? Werde das auf jeden Fall durchtesten.

Ja, das klappt

PWM schrieb:
> Hobby-Frickler mit Ambition zur
> Perfektion.

In sich widersprüchlich.. denn dann sollte man sich ein wenig mit der 
Theorie befassen.. Frickeln und Perfektion schließt sich aus. :-)

PWM schrieb:
> Welche Kapazität (Kabel-Länge=1 bis 2 Meter,

Auch wenn dir Prosa nicht gefällt:
das lässt sich so pauschal nicht beantworten. Leitungsführung spielt 
dabei auch ne Rolle. Abstand von Signal zu GND z.B.

PWM schrieb:
> Wäre doch sinnvoll, den PWM Pin auch über I2C zu steuern.

Kann man machen.. aber der Chip bietet für JEDE LED einen SEPARATEN PWM.
Kann man machen, aber ist mit Kanonen auf Spatzen geschossen, wenn du ja 
eigentlich über den Bus für jede LED nur die Info An/Aus übertragen 
willst.

PWM schrieb:
> Die eine Leitung habe ich. Die meisten lokalen Pins bleiben eh frei,
> weil die LEDs extern sind.

Dann mach es mit den Schieberegistern und der zusätzlichen Leitung, die 
die PWM an die OE Pins führt
Gast #5740365
Lesenswert?

Schlumpf schrieb:
> PWM schrieb:
>> Hobby-Frickler mit Ambition zur
>> Perfektion.
>
> In sich widersprüchlich.. denn dann sollte man sich ein wenig mit der
> Theorie befassen.. Frickeln und Perfektion schließt sich aus. :-)

Ja ich weiß :-)

> das lässt sich so pauschal nicht beantworten. Leitungsführung spielt
> dabei auch ne Rolle. Abstand von Signal zu GND z.B.

Also mit Oszi feintunen. Gut, geht auch.

> Dann mach es mit den Schieberegistern und der zusätzlichen Leitung, die
> die PWM an die OE Pins führt

Meine unsicherheit ist immer noch der Bus. Aber vielleicht ist das bei 2 
Metern kein Problem. Ich habe das tatsächlich noch nie gemacht. Oszi 
wird hoffentlich eine Hilfe sein.
Gast #5740389
Lesenswert?

Schlumpf schrieb:
> Kann man machen.. aber der Chip bietet für JEDE LED einen SEPARATEN PWM.
> Kann man machen, aber ist mit Kanonen auf Spatzen geschossen, wenn du ja
> eigentlich über den Bus für jede LED nur die Info An/Aus übertragen
> willst.

Bei 12ct pro Kanone ist das finanziell zu stemmen.

Man kann natürlich auch die WS2812 als LEDs mit eingebautem 
Bus-Controller oder WS2811 als separatem Controller einsetzen.
Gast #5740771
Lesenswert?

Harald W. schrieb:
> PWM schrieb:
>
>> Welche Probleme hast du mit dem "hochverseuchten Kfz-Netz" und LEDs  ;-) > > 
Das
> klappt schon, sorge dich nicht.
>
> Ja, wenn man einen Wechselroboter für die
> dauernd durchbrennenden LEDs hat...

WIESO in Drei Pontifex Maximus Namen sollen im Auto LEDs durchbrennen? 
Ich habe vieles noch nicht gehört, aber das auch noch nicht.

Stefanus F. schrieb:

> https://i.stack.imgur.com/GfXfF.jpgs

Das ist schon mal ein Anfang. Prima, danke dir :-)
#5741516
Lesenswert?

PWM schrieb:

> WIESO in Drei Pontifex Maximus Namen sollen im Auto LEDs durchbrennen?
> Ich habe vieles noch nicht gehört, aber das auch noch nicht.

Dann solltest Du Dich etwas mehr mit der Erlernung von Grundlagen
beschäftigen. Das es im Auto starke Störspannungen gibt, sollte
allgemein bekannt sein. Deshalb gibt es dafür Schutzschaltungen,
die auch in den DSE-FAQ beschrieben werden. Die Autohersteller
bauen für ihre serienmäßig vorhandene Elektronik auch entspre-
chende Schutzschaltungen ein, und das sicherlich nicht, weil sie
zuviel Geld haben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren