Mehere PWM's für RGB LED

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

...
Gast #278516
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.
Gast #278518
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
Gast #278520
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....
#278523
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
Angehängte Dateien:
Gast #278525
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.
Gast #278527
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 ;)
Gast #278529
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.
Gast #278530
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.
Gast #278531
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
Gast #278532
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?
Gast #278538
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
Gast #278539
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?
Gast #278544
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?
Gast #278545
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)
Gast #278547
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.
Gast #278548
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...
Gast #278551
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
Gast #278553
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
Gast #278554
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.
Gast #278555
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.
Gast #278557
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
Gast #278558
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
Gast #463899
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
Gast #463909
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
Gast #474507
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

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