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
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. ...
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.
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
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
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....
man kann das ganze sogar ohen timer in einer schleife machen, funktioniert problemlos, hab ich selber schon probiert für eine Weihnachtsdekoration.
@ C-Freak: Nur sind 10 RGB's eben 30 LED's ... @ Läubi, könnte man, nur macht der Mega dann nix anderes mehr ...
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
vielleicht hilft das ja schon mal weiter: www.hoelscher-hi.de/hendrik/light/ressources.htm Ist eine 8ch-PWM dabei...
@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.
>>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
@ 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 ;)
@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.
@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.
@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.
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
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?
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
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
Muß man auch, da weder Reichelt,Farnell,Schuricht oder Conrad die Teile hat *nerv Kennt jemand noch einen anderen Händler ? Thorsten
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
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
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?
@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
@Stefan Kleinwort Wo bestellst du den TLC5923? Bei Digikey? Klingt nämlich interessant... Oder gibt es den noch wo anders? Gruß Florian
Soviel zu Software-PWM: http://www.mikrocontroller.net/forum/read-1-249081.html#new (Mega128 @8MHz, 16MHz als option) nur mal so als Anregung....
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.
>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?
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)
Einbildung ist alles, man muß nur fest drann glauben :) (Nicht bös gemeint)
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.
>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...
Weiß sonst keiner, woher man so einen TLC592x beziehen kann? Wäre echt super das Teil Gruß Florian
@beta-freak Das könnte eine Erklärung sein... Geht es hier vielleicht um etwas rotierendes?
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
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
@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
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.
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.
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
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
Hallo Tim, wie weit bist Du mit deinen Treibern? Wäre da evtl. interessiert. Gruß Toby
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.