Forum: Mikrocontroller und Digitale Elektronik Mehere PWM's für RGB LED


von Thorsten (Gast)


Lesenswert?

Moin !

Ich möchte 10 RGB LEDs per PWM ansteuern.( 10 x 3 Pins ) Ein Mega 32
hat ja nicht 30 PWM Pins.Gibt es externe Bauteile per IIC , SPI u.s.w ?


Oder wurde auch Multiplexing funktionieren ? Wenn ja, wie ?

Danke im vorraus !

Thorsten

von Hannes L. (hannes)


Lesenswert?

Multiplex reduziert die Gesamthelligkeit.

Multiplex mit Software-PWM könnte gehen, wenn nicht allzuviele
PWM-Stufen vorgesehen werden. Ansonsten wird es wohl zu langsam werden.
Ob es realisierbar (also schnell genug) ist, hängt auch davon ab, was
der AVR sonst noch tun soll und wie effizient man ihn programmieren
kann.

10 LEDs verkomplizieren die Sache, mit 8 LEDs halte ich es auf dem
Mega85x5 (in Software-PWM ohne Multiplexing) für machbar.

...

von Ralf B. (Gast)


Lesenswert?

Jo, 8 RGB's könnten in ner Software PWM Funktionieren, 10 sicherlich
auch, müsste man mal durchrechnen. Allerdings macht diese Lösung nur in
Assembler Sinn, Hochsprachen dürften in dem Fall recht viel Codeoverhead
produzieren, der die Sache nur unnötig verlansamt.

Ansonsten könntest du ja mal nen Blick auf den PCA9532 werfen, das ist
ein 16 Bit I2C LED Dimmer.

von Hannes L. (hannes)


Lesenswert?

Ja sicher in ASM...

...

von Sebastian Heyn (Gast)


Lesenswert?

wenn man nen timer interrupt benutzt könnte es auch in ner hochsprache
prima gehen, 10 variablen für die 10 pwm kanäle und dann eine einfache
bedingung - die mit nem counter arbeitet brainstorming

von Thorsten (Gast)


Lesenswert?

Jo danke, das mit dem Multiplexen dachte ich mir das es nicht so gut
wäre.Sehe mir den PCA9532 einmal an, ansonsten assembiliere ich mir mal
den Soft-PWM zusammen und teste, aber 10 LEDs sollten es schon sein *g

Thorsten

von C-Freak (Gast)


Lesenswert?

Mal eben nachrechnen, 70Hz PWM Frequenz,

70Hz*256=17.92kHz Timer Interrupt Frequenz

Ein 16MHz Processor hat 890 Cyclen pro Interrupt.

Was muss er tun:
Im Timer Interrupt 1 counter der von 0 ... 255 zählt.
Dazu 10 Vergleiche auf den jeweilen PWM Wert der 10 Kanäle

-> alles 8-bit da muss er mit 40 Takten auskommen

Dann noch 2000 Port-Wechsel pro Sekunde

-----------------------------------------------------------
Da braucht man kein Assembler....

von Läubi (Gast)


Lesenswert?

man kann das ganze sogar ohen timer in einer schleife machen,
funktioniert problemlos, hab ich selber schon probiert für eine
Weihnachtsdekoration.

von Ralf B. (Gast)


Lesenswert?

@ C-Freak: Nur sind 10 RGB's eben 30 LED's ...

@ Läubi, könnte man, nur macht der Mega dann nix anderes mehr ...

von Florian M. (----florian----)


Angehängte Dateien:

Lesenswert?

Wenn der Controller sonst nichts machen sollte, dann könntest du einen
Tiny45 nehmen (4kb Flash und 20 MhZ) und dazu ein paar Schieberegister.
Dazu bräuchtest du nur 3 Anschlüße vom Tiny45. Data,Clk und Store mit
Output Enable. Store mit Output Enable kannst du auf eine Leitung
legen.

Das gute daran ist, du kannst die Schaltung jederzeit vergrößern. Wenn
du einmal 20 oder 30 Rgb Leds ansteuern willst, dann ist das immer noch
möglich. Wenn du nur einen Controller nimmst, dann sind die
Möglichkeiten eingeschränkt.

Dazu könntest du einen 4094 oder einen 74HC595 nehmen. Ich habe einmal
eine Schaltung mit 16 RGB Leds aufgebaut (siehe Anhang). Der Nachteil
ist, die viele Hardware, weil ich noch 6 Stück ULN2803 dazugebaut habe.
Dazu noch 6 Stück 4094 und natürlich 48 Widerstände. Das ganze wird mit
5 Leitungen angesteuert: Data_rot, Data_grün, Data_blau, Clock und
Output Enable.  Wenn du soviel Hardware meiden möchtest, dann würde ich
dir einen STP16C596 wärmstens empfehlen. Dann bräuchte man für diese
Schaltung nur mehr 3 STP16C596 und 3 Widerstände, mit denen man den
Strom jedes einzelnen Schieberegisters steuern kann (ich glaube bis zu
120mA pro Pin).

Der Nachteil: Gibt es nur bei www.digikey.com und kosten halt ein
bisschen Geld, da sie aus Amerika importiert werden.

Gruß Florian

von HendrikHoelscher (Gast)


Lesenswert?

vielleicht hilft das ja schon mal weiter:

www.hoelscher-hi.de/hendrik/light/ressources.htm

Ist eine 8ch-PWM dabei...

von Jan (Gast)


Lesenswert?

@C-Freak: 70Hz PWM-Frequenz. Gut, kann man machen, wenn man sich und
seine Augen quälen will. Ich empfinde alles unter 1kHz als erheblich
störend. Einen angenehmen Seheindruck habe ich erst bei etwa 3kHz. Aber
auch dann kann ich, wenn ich das will, noch das Flimmern gerade so
wahrnehmen.
-> Ein atmega @20Mhz schafft gerade so 8 Kanäle, wird aber schon
gewaltig knapp mit der Zeit.

von Florian M. (----florian----)


Lesenswert?

>>Ein atmega @20Mhz schafft gerade so 8 Kanäle, wird aber schon
gewaltig knapp mit der Zeit.<<

Ich hoffe aber doch nicht in Assembler, oder doch?. Dann stimmt mit
deinem Programm was nicht...


Gruß Florian

von Läubi (Gast)


Lesenswert?

@ Ralf B. - ralf_bachmannweb.de
> @ Läubi, könnte man, nur macht der Mega dann nix anderes mehr ...
Klar kann der noch was anderes machen, ich hab das so gemacht, das ich
ne unterfunktion PWM habe, die wird folgendermassen ausgeführt:

loop:
//Abfrage ob Tasten gedrückt sind
//Abfrage ob ADC fertig
//Abfrage ob Timer abgelaufen
//Abfrage ob sosnt noch was zu tun
call pwm
jmp loop

Auf diese Weise wird die PWM sozusagen unterste Priotität behandelt,
und wenn dann nämlich ein ereignis eintritt auf das man reagieren
muß/will/soll wie nen Tastendruck ( oder ich habe die geschwindikeit
über einen Poti mittels ADC eingelesen ) kann das in ruhe durchlaufen
ohne das es von der PWM routine ggf unterbrochen wird (hier fällt es
nämlich auch nicht auf wenn nen paar ms später erst die routine
durchlaufen wird) auf jeden fall braucht man dann keinen AVR mit 20mhz,
ich hab das einfach mi nem mega8 auf 1mhz intern ozilator gemacht, und
man muss schon etwas Voodoo kräfte aufbringen um da was flackern zu
sehen ;)

von Manos (Gast)


Lesenswert?

@Jan
"Ich empfinde alles unter 1kHz als erheblich störend." 70 Hz nimmst
Du wahrscheinlich noch wahr, bei 100 Hz wirst Du wohl keinen
Unterschied mehr zu Dauerlicht sehen.

von Jan (Gast)


Lesenswert?

@Manos: Oh doch. Was meinst du, was ein 100Hz Fernseher noch flackert.
Es sind wirklich echte 1kHz (50-50 Tastverhältnis), die ich noch ohne
Probleme erkennen kann.
Wenn ich direkt in das Licht hineinstarre, dann sieht man davon
natürlich nichts, aber sobald man etwas vorbeischaut, wie man das bei
Beleuchtung ja normalerweise macht, merkt man es.

@Florian:
Aber sicher mit Asm. Und selbst da habe ich eine Weile gebraucht, bis
ich den Code so effektiv hatte (ok, im Nachhinein ist es
offensichtlich):

8 Kanäle x 8bit Auflösung x 4kHz x 2 Befehle = 16 Mio. Befehle pro
Sekunde

Und irgendwann muss man dann auch noch die Helligkeit ändern etc...
8bit Auflösung sind nicht wirklich von nöten, daraum betreibe ich das
ganze mit 64 Helligkeitsstufen, 8bit brauchts aber trotzdem, da man die
sehr kurzen Zeiten von 1/256 braucht, um die LED langsam angehen zu
lassen.

von SuperUser (Gast)


Lesenswert?

@Jan:
Wenn du >100Hz noch wahrnehmen kannst, dann bist du mit einer ganz
besonderen Begabung geboren. Das kann vmtl. weltweit keiner ausser dir.
Wäre es nicht - im interesse der Menschheit - zu empfehlen, dass du dich
der Wissenschaft für Versuchszwecke zur Verfügung stellst?

Der aktuelle Stand der Technik schreibt Flackerfrequenzen groesser
etwas über 60Hz vor (genauen Wert weiss ich gerade nicht). Damit sehen
99.9999% der Menschen (-Jan) konstantes Licht. Das ganze ist dann sogar
Epilleptiker sicher.

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Ansonsten schau doch mal in die LED driver Sektion bei Maxim. Ich
versuche zur Zeit etwas ähnliches, und die Auswahl bei Maxim ist
relativ gut. So entlastest du den Prozessor gewaltig.
Ein paar Bauteilbezeichnungen findest du in meinem Thread über
ULN2803.

Greetz
KMT

von Florian__ (Gast)


Lesenswert?

Ich hab mir mal den PCA9532 angeschaut. Ist es bei diesem Chip nicht so
das er seine LEDs garnicht mit verschiedenen Frequenzen ansteuern kann,
sondern nur zwei verschiedenen PWM-Werte hat und die einzelnen Leds dann
Entweder Ein Aus bzw. Auf PWM1 oder PWM2 geschaltet sind?

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Ich dachte jetzt eher an ICs wie MAX6966/6967 oder ähnliche in der
Gruppe. Da könnte es auch was für Deinen Anwendungsfall geben: bei der
Ansteuerung von RGB-Displays zum Beispiel...

Greetz
KMT

von Thorsten (Gast)


Lesenswert?

Hallo,

habe mir gerade einmal den MAX6966/6967 angesehen, das ist genau das
was ich gesucht habe ! Danke ! Muß jetzt nur noch sehen, wo ich den
organisiert bekomme.

Thorsten

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Bei Maxim direkt kann man die Dinger kaufen.

Greetz
KMT

von Thorsten (Gast)


Lesenswert?

Muß man auch, da weder Reichelt,Farnell,Schuricht oder Conrad die Teile
hat *nerv

Kennt jemand noch einen anderen Händler ?

Thorsten

von Stefan K. (_sk_)


Lesenswert?

Je nachdem, an welche Bauteile Du rankommst:

TI hat einen Treiber für 16 LEDs, mit in 127 Stufen einstellbarem
Konstantstrom - pro LED:

TLC5922 / TLC5923

Gruß, Stefan

von Thorsten (Gast)


Lesenswert?

Jo, das sind alles Bauteile die den programmiertechnischen Aufwand
deutlich für mich verringern könnten, danke für die Hinweise, wühle
mich mal durch Kataloge und Co.

Hab da aber noch eine Frage, ich habe die RGB LED von Reichelt hier vor
mir liegen, und frage mich, wieso das Teil 2 Blaue LED's hat? Ist das
blaue Licht so schwach, oder reicht auch nur eine blaue LED
anzusteuern?

Thorsten

von Florian__ (Gast)


Lesenswert?

Hey, ich dachte auch erst an die Maxim ICs aber der TLC5922 ist ja mal
der Hammer! Ich bin gerade mal das Datenblatt überflogen, und er
scheint sich auch sehr gut von einem Mikrokontroller ansteuern zu
lassen. Bei Digikey für 2.57€ zu haben.

Wo bekommt ihr eigentlich eure RGB-Leds her? Also ich habe mir gerade
ein 50er Pack für 20€ schicken lassen. Kommt man auch unter 40Cent Wenn
man nur um die hundert bestellt?

von Stefan K. (_sk_)


Lesenswert?

@Florian:
Gegenfrage: wo hast Du Deine RGB-LEDs herbekommen? 40 Cent bei 50 Stück
sind ziemlich günstig.
Von den TLC5923 werde ich mir wohl demnächst ein paar bestellen. Schön
finde ich, dass bei denen keine PWM gemacht wird, sondern der Strom
über D/A eingestellt wird.

Gruß, Stefan

von Florian M. (----florian----)


Lesenswert?

@Stefan Kleinwort

Wo bestellst du den TLC5923? Bei Digikey? Klingt nämlich interessant...
Oder gibt es den noch wo anders?

Gruß Florian

von Danny (Gast)


Lesenswert?

Soviel zu Software-PWM:
http://www.mikrocontroller.net/forum/read-1-249081.html#new
(Mega128 @8MHz, 16MHz als option)
nur mal so als Anregung....

von Danny (Gast)


Lesenswert?

Nachtrag:
Ist zwar keine PWM-Lösung, aber liese sich damit durchaus machen.
Die Ur-Version davon hatte 8 RGB-LEDs und waren dimmbar. damals mit dem
90S8535.

von SuperMan (Gast)


Lesenswert?

>Der aktuelle Stand der Technik schreibt Flackerfrequenzen groesser
>etwas über 60Hz vor (genauen Wert weiss ich gerade nicht). Damit
>sehen
>99.9999% der Menschen (-Jan) konstantes Licht. Das ganze ist dann
>sogar
>Epilleptiker sicher.

dann muss ich mich wohl auch der wissenschaft zur verfügung stellen.
ich sehe das blinken von LEDs auch weit über 100Hz hinaus. irre ich
mich, oder redest du von monitoren und fernsehern? du weisst aber, das
die eine nachleuchtende schicht haben?

von SuperUser (Gast)


Lesenswert?

So ist das bei normalen Menschen:
Sehpurpur - aufgebaut aus Carotin und Eiweiß - wird unablässig in den
Sehzellen gebildet und wieder verbraucht. Trifft ein Lichtstrahl
darauf, entlädt sich unter seiner Mithilfe das elektrische Potenzial
der Zelle. Jeder einzelne Lichtimpuls wird so in einen winzigen
elektrischen Impuls umgewandelt und über den Sehnerv zum Gehirn
geschickt. Das Sehpurpur verbraucht sich bei dieser Reaktion und muss
immer wieder nachgeliefert werden. Deshalb ist das Auge erst nach fünf
Hundertstel Sekunden wieder bereit für eine neue Reaktion. Ein
angenehmer Effekt dieser "Trägheit": Ab einer Bildfrequenz von
mindestens 25 Bildern pro Sekunde erscheinen die Einzelbilder in Film
und Fernsehen als kontinuierliche Bewegung.

5/100=1/20->20Hz

Euer Auge muss irgendwie schneller sein. Es gibt ja durchaus auch
andere Lebewesen die wesentlich weniger träge Augen haben.

Habt ihr auch bei Neon Licht Probleme? (flackert mit 50Hz, wie man
immer wieder schön an rotierenden Rädern sehen kann)

von Läubi (Gast)


Lesenswert?

Einbildung ist alles, man muß nur fest drann glauben :)
(Nicht bös gemeint)

von Bri (Gast)


Lesenswert?

Zu bedenken wäre auch, dass das Auge am Rand viel empfindlicher für
schnelle Bewegungen ist. Könnt ihr auch selbst ausprobieren, schaut mal
direkt auf einen 50Hz Fernseher und dann ungefähr 50cm darüber.

von beta-frank (Gast)


Lesenswert?

>Der aktuelle Stand der Technik schreibt Flackerfrequenzen groesser
>etwas über 60Hz vor (genauen Wert weiss ich gerade nicht). Damit
>sehen
>99.9999% der Menschen (-Jan) konstantes Licht. Das ganze ist dann
>sogar
>Epilleptiker sicher.

Wenn z.B. ein Auto mit neuartigem LED-Rücklicht und 100Hz PWM mit
50km/h=13,9m/s fährt, macht das alle 13,9cm einen unschönen
hell/dunkel-Wexel.  Diesen Effekt könnte Jan und Supermann meinen...

von Florian M. (----florian----)


Lesenswert?

Weiß sonst keiner, woher man so einen TLC592x beziehen kann?

Wäre echt super das Teil


Gruß Florian

von SuperUser (Gast)


Lesenswert?

@beta-freak
Das könnte eine Erklärung sein...

Geht es hier vielleicht um etwas rotierendes?

von Peter Z. (Gast)


Lesenswert?

Hallo,
evt. könnte es auch daran liegen das die 1khz mit einer Neoröhre
unerwünschte nebenffekte ergeben. Vieleicht sollte man mal irgeneine
krumme zahl nehmen. (Primzahl??) also mal mit 71HZ probieren.
Gruß
Peter

von Hagen (Gast)


Lesenswert?

Der TLC5940 oder TLC5941 klingt noch viel interessanter. Falls jemand an
die dinger rankommt und eine Bestellung macht so würde ich mich gerne
mit dranhängen.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

@SuperUser: deine Erklärung ist nicht korrekt.

Das Auge des Menschen kann physikalisch sehr wohl viel schneller sehen
als 50Hz. Eine Fliege die mit 8m/s auf das Auge zufliegt wird
wahrgenommen, aber nicht mehr bewusst sondern führt zu dem Reflex das
wir das Lid schließen. Die Augen sind also wesentlich schneller als die
Verarbeitung der gelieferten Bilder durch unser Gehirn. Das Gehirn ist
es also das die bewusste Wahrnehmunggrenze bildet.

Der Effekt um den es hier aber geht ist in der Interferenz begründet.
Entweder weil man sich schnell auf ein "Blinklicht" zubewegt oder die
Augen in der Pralaxe zum Blinklicht jin wegbewegt.

Physikalisch kommt noch hinzu das wir im Grunde nur in einem winizigen
Punkt unseres Auges auch wirklich scharf und in Farbe sehen. Der Rest
der Netzhaut ist auf Scharz/Weis und schnelle Bewegungen optimiert.
Dies ist Evolutionstheoretisch auch sehr sinnvoll. Denn so können wir
Reflexartig auf schnelle Bewegungen reagieren.

Gruß Hagen

von Florian__ (Gast)


Lesenswert?

Ja, genau des kenne ich wenn ich mir eine LED 7-segment-Anzeige (zb von
einem Automaten) anschaut, die wird auch gemuliplext. Und wenn ich
drauf schaue sieht Sie normal aus. Wenn ich aber meinen Blick nur
drüber schweifen lasse, dann flackert sie.

von Bastian Nagel (Gast)


Lesenswert?

Schaut doch mal auf mein aktuelles Projekt. Da geht es um die
ansteuerung von RGB LED´s. Ich benutze dafuer kein PWM, was bei 256
LED´s auch kaum zu vertreten wäre. :) Ich hab das ganze in 8x8er
Matrixen unterteilt und "füttere" die LED´s spaltenweise mit 3x
74HCT374 / je Matrix und jeweils einen ULN2803 als Zeilentreiber.

von Bastian Nagel (Gast)


Lesenswert?

Sorry, URL vergessen. :) http://voiceteam.de/ledrul/

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Florian Mauerhofer schrieb:

"Weiß sonst keiner, woher man so einen TLC592x beziehen kann?
Wäre echt super das Teil

Gruß Florian"

Kleiner Wink mit dem Zaunpfahl: Lies Dir mal diesen Beitrag durch:
http://www.mikrocontroller.net/forum/read-1-282175.html#new

Ich möchte jetzt nicht wortwörtlich drauf hinweisen, sonst
werde ich wieder verbal verprügelt...

Greetz
KMT

von TimRes (Gast)


Lesenswert?

Hallo an alle die die Diskussion etwas später lesen,

bin gerade dabei eine LED-Treiber-Platine mit TLC5923 anzufertigen. Hat
jemand Interesse an die Bausteine (habe welche abzugeben) oder an die
Platinen mit dem aufgelötetem Chip (dann fertige ich etwas mehr an)?

Die Platinen können beliebig zu einer Kette geschaltet werden. Die
tragen den Treiber selbst die Anschlüsse für den Bus und für die LEDs.

Grüß,
Tim

von Tobias Tetzlaff (Gast)


Lesenswert?

Hallo Tim,

wie weit bist Du mit deinen Treibern?

Wäre da evtl. interessiert.

Gruß Toby

von maxerl (Gast)


Angehängte Dateien:

Lesenswert?

Hi
Also ich bin ein totaler Fan des MAX7221.
Er kann bis zu 64 LEDs ansteuern.
Wenns mehr sein sollen >> kaskadieren.
Helligkeit einstellen, SPI Ansteuerung usw.

Maxim ist dazu auch noch sehr spendabel mit Samples.

von Falk (Gast)


Lesenswert?

Wer sagt denn, dass Multiplexen die Helligkeit verringert? Wenn ich N:1 
multiplexe, muss ich logischerweise den N-fachen Strom in die LEDs 
einspeisen.
Mit 3 + 10 Pins kann ich locker 30 LEDs per PWM dimmen. Und ein AVR@20 
MHz macht das locker. Man muss nur gescheit programmieren, die 0815 
Lösungen die mal so schnell hier aus der Tasche gezaubert werden sind 
damit sicher nicht gemeint.
Summa-summarum, 30 LEDs per Software dimmen, ohne extra ICs ist mit nem 
MEGA AVR problemlos möglich.

MFG
Falk

von harry (Gast)


Lesenswert?

also ich schließ mich falk an... je nach ansteuerung wird das auch mit 
einem 8051 gehen @12Mhz.


wenn du nicht alle LEDs einzeln ansteuern möchtest würde doch auch das 
gehen:
DA-Wandler spannung einstellen -> Leistungsstufe für den hohen Strom-> 
und die gemeinsame Kathode mit einem Leistungstransistor schalten und 
schon bruachst nur einen PWM-Ausgang

von TimRes (Gast)


Lesenswert?

An: Tobias Tetzlaff.

Hallo Tobias,

die Treiber-Platinen sind fertig, für den Eigenbedarf bestückt und 
getestet. Die Bestückung mit QFN-Bausteinen ist ein wenig fummelig aber 
noch in Grenzen. Wenn du interesse an die Platinen und/oder Bausteine 
hast erreichst du mich unter tim_reset "at" web "punkt" de.

Gruß,
Tim

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.