Hi! Ich weiß dass es nicht wenige LED-ansteuern-Beiträge gibt... Aber als Anfänger fällt es mir noch schwer, die Spreu vom Weizen zu trennen ;) 90 (5+5)x9 rote LEDs für eine Wanduhr sollen einzeln ansteuerbar sein, möglichst in zwei Helligkeitsstufen. Zusätzlich sollen alle LEDs gedimmt werden können für Anpassung an die Umgebungshelligkeit. Wäre schön, wenn das einigermaßen stromsparend abläuft. Meine erste Idee wäre Multiplexen. Habe da aber Bedenken wegen dem Flimmern, wenn man die Wanduhr zum Beispiel beim Lesen im Augenwinkel sieht und jedesmal das Flimmern bemerkt, dass bei der Anzahl der LEDs und einer Dimmstufe wohl zustand kommt? Sollte ich besser einen fertigen Baustein dafür nehmen, der einigermaßen günstig ist? Und schließlich die Ansteuerung: Die Uhr soll einige zufallsgesteuerte Animationen ausführen können. Ich hab' meine ersten Erfahrungen mit dem Atmega8 gesammelt und bin da recht schnell an die Speichergrenzen gestoßen. Wahrscheinlich muss ich einen anderen/größeren Microcontroller nehmen, oder das aufteilen. Da würde sich anbieten, der linken Ziffer (5x9) und rechten Ziffer (5x9) einen eigenen Controller zu spendieren (Die Animationen sind jeweils auf eine Ziffer beschränkt unabhängig voneinander) und einen Master, der dann noch solche Bonbons wie Funk übernehmen kann. Was meint ihr? Vielen Dank! - dartrax
... dartrax ... schrieb: > Ich hab' meine ersten Erfahrungen mit dem > Atmega8 gesammelt und bin da recht schnell an die Speichergrenzen > gestoßen. es kann zwar sein das du an die Grenze gekommen bist, aber das lag vermutlich weniger am controller als in der Art der Programmierung. Für ein paar LEDs spielchen sollte er bequem ausreichen. Wenn man animationen darstellen will dann könnte es höchstens sein das sie viel Platz brauchen aber die kann man ja auf eine SD karte auslagern.
... dartrax ... schrieb: > 90 (5+5)x9 rote LEDs für eine Wanduhr sollen einzeln ansteuerbar sein, > möglichst in zwei Helligkeitsstufen. > Zusätzlich sollen alle LEDs gedimmt werden können für Anpassung an die > Umgebungshelligkeit. > Wäre schön, wenn das einigermaßen stromsparend abläuft. Machbar. ... dartrax ... schrieb: > Meine erste Idee wäre Multiplexen. Habe da aber Bedenken wegen dem > Flimmern, wenn man die Wanduhr zum Beispiel beim Lesen im Augenwinkel > sieht und jedesmal das Flimmern bemerkt, dass bei der Anzahl der LEDs > und einer Dimmstufe wohl zustand kommt? Da müsstest du schon verdammt schnell laufen ... wenn das korrekt gemacht ist gibt's kein Flimmern da muss man schon außerordentlich blöd sein um es flimmern zu lassen. Nachdem du ja einen Atmega nimmst hast du ja Puffer bis zum Umfallen. ... dartrax ... schrieb: > Sollte ich besser einen fertigen Baustein dafür nehmen, der einigermaßen > günstig ist? Das erspart dir halt ein bisschen Programmierarbeit (Timingarbeit) am ATMEGA. Wenn du genug Pins hast dann würde ich von einem externen IC abraten. Nur unnötige Kosten und Einarbeitungszeit ... Ansonsten bei deinen Anforderung kommt man auch so sehr gut zurecht. Wenn du viel Puffer haben willst dann nimm einen 16MHz Quarz - alternativ nimm den interenen und einen zusätzlichen IC. Hier ein netter Artikel: http://www.mikrocontroller.net/articles/LED-Matrix ... dartrax ... schrieb: > Und schließlich die Ansteuerung: Die Uhr soll einige zufallsgesteuerte > Animationen ausführen können. Ich hab' meine ersten Erfahrungen mit dem > Atmega8 gesammelt und bin da recht schnell an die Speichergrenzen > gestoßen. Ist meistens eine Frage des Codes. Code zu optimieren lernt man leider erst mit der Erfahrung / Zeit. Ich kenne einen RGB-LED-Würfel 8x8x8 und seinen verrückten Besitzer der macht da die aberwitzigsten Animationen in unglaublich kleinem Speicher. Der hat nur ein output Array. Er macht da eine Figur die sich im Würfel dreht und die Animation braucht 5 Zeilen im Code. Verwendet wird nur dieses eine output Array. Die Shift-Operations pro Zeile füllen ausgedruckt mehrere Seiten. Speicherplatztechnisch braucht er aber nicht viel .. Als Alternative sind SD/MMC Karten sehr leich anzusteuern. ... dartrax ... schrieb: > Da würde sich anbieten, der linken Ziffer > (5x9) und rechten Ziffer (5x9) einen eigenen Controller zu spendieren > (Die Animationen sind jeweils auf eine Ziffer beschränkt unabhängig > voneinander) und einen Master, der dann noch solche Bonbons wie Funk > übernehmen kann. Glaub mir - nimm lieber einen größeren Controller. Das mit der Kommunikation zwischen den 3 MEGAs macht überhaupts keinen Spaß. Es ist einfach viel besser einen größeren zu nehmen. ... dartrax ... schrieb: > Was meint ihr? Zuerst mal ein ordentliches Multiplexing zu stande bringen, dann drüber nachdenken, ein Uhr oder sowas zu implementieren. Halt dir die Schnittstellenpins offen...
Danke für die Antworten! Schlechter Code kann sein, ich werd's dann einfach ausprobieren und sehen, ob mein vorhandener Atmega8 reicht. Code für den SD-Zugriff hatte ich da auch schon drin \*stolz-sei\* ;) Hast du für die Codeoptimierungen dieser Animationen zufällig noch eine URL? Ich werde also erstmal auf Einkaufstour begeben (ggf. Quarz, 3 Schieberegister-ICs, 90 LEDs...) und versuche mich dann am Multiplexing. - dartrax
Eine andere Idee wäre zur ansteuerung statt der Idee Multiplexing Charlieplexing. Damit hat jemand sogar schon eine 90 LED Uhr gebaut: http://en.wikipedia.org/wiki/Charlieplexing (siehe Bild). Dann reichen 10 Pins für 90 LEDs, da #LED = #PINs * (#PINs - 1) Oder anders: 10 * (10 - 1) = 10 * 9 = 90
MAX7219 kann schonmal 64 LEDs. Wenn das nicht reicht, muss du den Rest manuell oder mit einem 2. MAX machen. Seitdem ich das Ding einmal in der Hand hatte, will ich kein Software-Multiplexing auf dem Atmega mehr ;)
Hallo, mit dem MAX7219 habe ich auch nur gute Erfahrungen gemacht. Noch habe ich hier auch welche rumliegen. Bei Bedarf: Beitrag "MAX 7219 CNG 24 DIP 2 Stk. 10,- incl. Versand" Der IC spricht 64 LED`s an und ist kaskadierbar, so sollten 2 Stück für 128 LED`s genügen.Die Ansteuerung erfolgt seriell über SPI oder mit eigener Software. Jens
Oder den MAX6954, der kann allein 128 LEDs und wenn es sein muss noch 32 Tasten gleichzeitig ansteuern/ abfragen, Helligkeit in 16 Stufen regelbar ... Ansteuerung per SPI oder I2C (MAX6955). Gut aber nicht billig. Gruss Uwe
Ich hatte spontan an Schieberegister gedacht. Die Ansteuerung per SPI ist ja recht einfach. Dann schreibst du noch eine SW-PWM für die Anzahl der Schieberegister und fertig. Kleiner Nachteil: ohne größeren Programmieraufwand haben immer jeweils alle LEDs an einem Schieberegister die gleiche Helligkeit -> nicht jede LED hat einen anderen Helligkeitswert. Aber es wäre einfach :) ... Gruß
@Fer T: (schau mir das heute Abend an) @Löwe, Jens, Uwe: Danke für den Tipp. Was kostet denn ein 128er? Hab' da heute morgen auf die Schnelle kein Preis ergooglen können. @Joachim B: Jede LED muss einzeln gedimmt werden können, wobei eine Dimmstufe ausreicht. Schieberegister allein geht also nicht ;) - dartrax
Schau mal hier vorbei: http://search.digikey.com/scripts/DkSearch/dksus.dll?vendor=0&keywords=max6954 Naja, ca.22 Euronen, wie gesagt nicht billig. Andere Bezugsquelle ist Maxim selbst - Stichwort Samples (Muster). Vorteil: du benötigst nur den AVR, den MAX6954 und einen Spannungsregler plus das obligatorische Vogelfutter + LEDs, alles in allen sehr übersichtliche Software, einfaches Schematic und Routing. Oder halt 2 MAX7219 nehmen, die bekommst du AFAIK auch bei Reichelt. Die kosten aber in der SMD Variante auch etwa 7 Euros (aber keine Tastenabfrage). Du kannst es natürlich auch mit den "klassischen" Schieberegistern lösen. Nachteil: etwas "angegraute" Technik, erinnert mich irgendwie an die "TTL-Gräber", weil viele IC's Alles eine Frage des Geschmacks + Geldbeutel Gruss Uwe
Die 1. Frage ist: Welche LEDs müssen gleichzeitig leuchten können ? Nur 1 von 60 ? Das geht mit weniger Aufwand als wenn alle 60 gleichzeitig leuchten müssen (ausserdem reicht ein kleiner dimensioniertes Netzteil). 2. MAX7219 und MAX6954 funktionieren natürlich nur mit Schummerlicht. Wenn deine Uhr im Dunklen Zimmer ohne Fenster steht oder tagsüber nicht ablesbar sei muss, kann das gehen. Wenn du volle Helligkeit der verbauten LEDs erreichen willst, taugen die nicht. Dimmbar mit Konstantstrom ohne Multiplexing und Flimmern wären: TLC5921 und ähnliche.
Nachtrag: der MAX7219 hat die Möglichkeit, per externen Transistor stärkere, sprich hellere Leds anzusteuern. Das sollte beim MAX6954 prinzipiell auch gehen, ist hier allerdings aufgrund des "Charlieplexings" nicht ganz so trivial. Gruss Uwe
22€ sind nicht ganz so ideal wie ich mir das vorgestellt hab'. Da ich mit nur 1-2 Tasten rechne, würden's auch zwei MAX7219 tun, denke ich. Die könnten dann laut Uwe entsprechend helle LEDs betreiben. Momentan tendiere ich zu dieser Lösung... Oder Multiplexing mit Atmega... Um nochmal sicher zu gehen: Der MAX7219 kann jede LED einzeln dimmen? Im Datenblatt hab' ich nur gefunden "analog and digital brightness control". Oder geht das nur per Soft-IWM vom Atmega aus? @MaWin: Es werden zwischen 24 und 46 LEDs gleichzeitig leuchten. Was hat denn der TLC5921 für Vorteile gegenüber zwei Max7219? Ich brauch' wahrscheinlich nur einen, hab' einen Preis bei http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-10349-5-ND gefunden für 4$. Wie sieht's hier mit der Dimmbarkeit einzelner LEDs aus? @Fer T: Ich habe hier: Beitrag "Charlieplexing Frequenz?" gelesen, dass Charlieplexing nicht für 24-46 LEDs brauchbar ist. - dartrax
... dartrax ... schrieb: > Um nochmal sicher zu gehen: Der MAX7219 kann jede LED einzeln dimmen? Negativ, er kann die Helligkeit nur global steuern. Genauso beim MAX6954, der kann segmentweise die Helligkeit steuern. @MaWin: Hab gestern einen älteren, fliegenden Testaufbau vom MAX6954 gefunden, die Helligkeit reicht nicht wirklich um zu "blenden", aber es gibt einen durchaus sichtbaren Unterschied zwischen den alten und den neueren, effizienteren LEDs zu sehen. Gruss Uwe
> Was hat denn der TLC5921 für Vorteile gegenüber zwei Max7219? Deutlich mehr Strom pro (einzelner oder parallelgeschalteter gleichzeitig leuchtender Gruppe von) LED, nämlich 80mA statt 3.8mA des MAX7219. Gedimmt werden muss aber per PWM vom Microconroller aus, alle zusammen per BLANK Eingang oder unterschiedliche Helligkeit jeder einzelnen LED durch zyklisches neuschreiben. Wenn man das nicht in Software sondern in Hardware machen will, geht weder der MAX7219 noch der TLC5921, sondern man braucht so was wie den TLC5940 oder PCA9532. Kostet auch. Geiz und hohe Anspruchshaltung geht selten zusammen.
Ich hoffe, du hast dich bei den Controllern nicht vertan, MaWin. Denn die gibt's ja fast geschenkt: Den PCA9532 bei Reichelt für 1,90€: http://www.reichelt.de/?ARTICLE=70043 den TLC5940 bei eBay für 2,60€: http://cgi.ebay.de/290499654425 Wären zwei von den (welcchen?) zusammen mit einem Atmega nicht die beste Lösung? - dartrax
... dartrax ... schrieb: > Wären zwei von den (welcchen?) zusammen mit einem Atmega nicht die beste > Lösung? Nicht wenn du 90 LEDs ansteuern willst. Dann benötigst du insgesamt 6 LED Treiber. PCA9532 od. TLC5940 ist egal, weil beide "nur" 16 Ausgänge haben - die werden NICHT gemultiplext. Wenn das individuelle Steuern der Helligkeit ein "must have" ist, dann wird es halt aufwändiger. Aber warum nicht ? :-) Gruss Uwe P.S. ICs kauft man (meine Meinung) nicht in der Bucht.
Ok da war der Haken. Also doch zwei Max7219 mit Dimmen einzelner LEDs durch Soft-PWM im Atmega, oder gleich das ganze Multiplexing über Schieberegister direkt vom Atmega steuern? Ist ein bisschen weniger zu löten, aber dafür mehr zu programmieren, nehme ich mal an. - dartrax
... dartrax ... schrieb: > Also doch zwei Max7219 mit Dimmen einzelner LEDs durch Soft-PWM im > Atmega, ... Die PWM erzeugt der MAX intern selbst, da kommst du von aussen nur per SPI ran. Einzeln dimmen sollte machbar sein, umständlich aber. > ... oder gleich das ganze Multiplexing über Schieberegister direkt > vom Atmega steuern? Die Schieberegister Variante hat mit Multiplexing nix zu tun. > Ist ein bisschen weniger zu löten, aber dafür mehr zu programmieren, > nehme ich mal an. Nein, ist easy. Gruss Uwe
Uwe N. schrieb: > Die PWM erzeugt der MAX intern selbst, da kommst du von aussen nur per > SPI ran. Einzeln dimmen sollte machbar sein, umständlich aber. Aber schon in dem ich die zu dimmende Einzel-LED vom Atmega aus im entsprechenden Zeitinterval aus und ein schalte, oder? >> ... oder gleich das ganze Multiplexing über Schieberegister direkt >> vom Atmega steuern? > > Die Schieberegister Variante hat mit Multiplexing nix zu tun. Ja nee, aber für die Multiplexing-Variante brauch' ich doch Schieberegister, wenn ich ganz auf MAX und Moritz verzichte, oder? Jedenfalls hab' ich das in dem schönen Artikel gelesen: http://www.mikrocontroller.net/articles/LED-Matrix Die nur-Schieberegister-Variante wäre auch noch möglich, aber ein "TTL-Grab", wie du sagst, und wenn ich eh' x ICs einbauen soll, kann's auch der PCA9532 sein, dann wird wenigstens die Software übersichtlich und das zahlt sich wahrscheinlich auch aus. >> Ist ein bisschen weniger zu löten, aber dafür mehr zu programmieren, >> nehme ich mal an. > > Nein, ist easy. Was meinst du jetzt "ist easy", die Programmierung von der Schieberegistervariante, Multiplexingvariante oder beide? - dartrax
... dartrax ... schrieb: > Aber schon in dem ich die zu dimmende Einzel-LED vom Atmega aus im > entsprechenden Zeitinterval aus und ein schalte, oder? Nein, das macht der Max. Deshalb vereinfachen solche ICs ja einem das Leben. Du musst dem Ding nur sagen, welche LED(s) leuchten sollen. > Ja nee, aber für die Multiplexing-Variante brauch' ich doch > Schieberegister, wenn ich ganz auf MAX und Moritz verzichte, oder? Ja, meine Aussage kannste glaube ich auch vergessen. ;-) > Die nur-Schieberegister-Variante wäre auch noch möglich, aber ein > "TTL-Grab", wie du sagst, und wenn ich eh' x ICs einbauen soll, kann's > auch der PCA9532 sein, dann wird wenigstens die Software übersichtlich > und das zahlt sich wahrscheinlich auch aus. Naja, die Software für den oder die "MAXe" ist sehr simpel, die für die Muxer-Variante im Prinzip auch, der AVR muss halt ständig rackern. Wenn du irgendwelche Animationen noch ablaufen lassen willst, kann es dann schon mal zu "Hängern" kommen. > Was meinst du jetzt "ist easy", die Programmierung von der > Schieberegistervariante, Multiplexingvariante oder beide? Ich meinte die Programmierung des MAX. Gruss Uwe
>> Ja nee, aber für die Multiplexing-Variante brauch' ich doch >> Schieberegister, wenn ich ganz auf MAX und Moritz verzichte, oder? Einen hab ich noch: Es gibt ja mehrere Arten, zu LEDs zu multiplexen: entweder, indem man die LEDs in Spalten und Reihen anordnet und ensprechend schaltet, oder mit Schieberegistern. Der Vorteil der "Spalten und Reihen" Muxer ist die Einsparung von Leitungen. Gruss Uwe
Uwe N. schrieb: > ... dartrax ... schrieb: >> Aber schon in dem ich die zu dimmende Einzel-LED vom Atmega aus im >> entsprechenden Zeitinterval aus und ein schalte, oder? > > Nein, das macht der Max. Deshalb vereinfachen solche ICs ja einem das > Leben. > Du musst dem Ding nur sagen, welche LED(s) leuchten sollen. Dann widersprichst du aber MaWin: MaWin schrieb: > Gedimmt werden muss aber per PWM vom Microconroller aus, alle > zusammen per BLANK Eingang oder unterschiedliche Helligkeit > jeder einzelnen LED durch zyklisches neuschreiben. Wie dimme ich denn eine einzelne LED nun konkret wenn ich den MAX7219 oder besser den TLC5921 nehmen will? Ich denke man kann denen das nicht sagen?? >> Die nur-Schieberegister-Variante wäre auch noch möglich, aber ein >> "TTL-Grab", wie du sagst, und wenn ich eh' x ICs einbauen soll, kann's >> auch der PCA9532 sein, dann wird wenigstens die Software übersichtlich >> und das zahlt sich wahrscheinlich auch aus. > > Naja, die Software für den oder die "MAXe" ist sehr simpel, die für die > Muxer-Variante im Prinzip auch, der AVR muss halt ständig rackern. > Wenn du irgendwelche Animationen noch ablaufen lassen willst, kann es > dann schon mal zu "Hängern" kommen. Die Animationen sollen einen Defekt simulieren, daher wäre ein Hänger in der Animation hier und da nicht so schlimm. Wenn dadurch aber die wie-auch-immer-einzeln-gedimmten-LEDs wieder aufleuchten oder ausgehen, wäre das unschön. Außerdem hat der Atmega eventuell auch noch mit einer SD-Karte und einem DCF-Modul zu hantieren. Braucht der Atmega eigentlich mehr Strom wenn er ständig rackert als ein Atmega und zwei MAXe zusammengenommen bzw. ein Atmega und 6 PCA9532, oder ist das gegenüber den LEDs wahrscheinlich sowieso vernachlässigbar? >> Was meinst du jetzt "ist easy", die Programmierung von der >> Schieberegistervariante, Multiplexingvariante oder beide? > > Ich meinte die Programmierung des MAX. Tja Leute... Da ja jetzt alles easy ist, kann ja nun nichts mehr schiefgehen ;P Wenn jetzt nicht gleich das ultimative Argument kommt, mach' ich eine Tabelle mit allen Möglichkeiten, euren Meinungen und würfel' dann ;D > Einen hab ich noch: Es gibt ja mehrere Arten, zu LEDs zu multiplexen: > entweder, indem man die LEDs in Spalten und Reihen anordnet und > ensprechend schaltet, oder mit Schieberegistern. Der Vorteil der > "Spalten und Reihen" Muxer ist die Einsparung von Leitungen. Und der Nachteil? - dartrax
... dartrax ... schrieb: > Dann widersprichst du aber MaWin: > MaWin schrieb: >> Gedimmt werden muss aber per PWM vom Microconroller aus, alle >> zusammen per BLANK Eingang oder unterschiedliche Helligkeit >> jeder einzelnen LED durch zyklisches neuschreiben. Nein, er sprach von den PCA9532/ TLC5940. ... dartrax ... schrieb: > Wenn dadurch aber die wie-auch-immer-einzeln-gedimmten-LEDs wieder > aufleuchten oder ausgehen, wäre das unschön. Ich meinte mit Hängern eine ruckelige Darstellung, die LEDs sollten dabei nicht unkontrolliert an oder aus gehen. > Außerdem hat der Atmega eventuell auch noch mit einer > SD-Karte und einem DCF-Modul zu hantieren. Das ist für den AVR ja schon viel gerechne, da wird es sicher bei einer Animation hakeln. Aber das ist ja kein Problem. > Tja Leute... Da ja jetzt alles easy ist, kann ja nun nichts mehr > schiefgehen ;P Jetzt keinen Sarkasmus ;-). Einfach 2 Maxe geordert/ gesampled und loslegen. Nimm die AVR eigne SPI Schnittstelle und schicke einfach ein paar Befehle ins Senderegister. Ausser der korrekten SPI-Initialisierung kommt da nicht viel mehr. ... dartrax ... schrieb: > Wenn jetzt nicht gleich das ultimative Argument kommt, mach' ich eine > Tabelle mit allen Möglichkeiten, euren Meinungen und würfel' dann ;D Warum baust du nicht beide ? Da lernste ne Menge, und Spass macht es ausserdem. > Und der Nachteil? Hm, ehrlich gesagt, die Schieberegister Variante habe ich selber nie gebaut, aber der Software Aufwand der Spalten u. Reihen Muxer ist vielleicht ein Ticken grösser ... Gruss Uwe
... dartrax ... schrieb: > Wie dimme ich denn eine einzelne LED nun konkret wenn ich den MAX7219 > oder besser den TLC5921 nehmen will? Ich denke man kann denen das nicht > sagen?? Beim MAX ist das eher umständlich: du müsstest vor jedem setzen einer neuen LED Position einen Befehl zum einstellen der Helligkeit senden. Solange nur eine LED leuchten soll ist das kein Problem, bei mehreren funktioniert das nicht mehr (gleichzeitig). Beim TLC5921 schreibst du nur einen neuen Wert für die Helligkeit in das entsprechende Register, die haben, wenn ich das DB richtig überflogen habe, jeweils pro LED-Treiber einen eigne PWM-Erzeugung. Den TLC5921 kannte ich bisher auch nicht, scheint aber interessant zu sein.
> Wie dimme ich denn eine einzelne LED nun konkret wenn ich den MAX7219 > oder besser den TLC5921 nehmen will? Ich denke man kann denen das nicht > sagen?? Die Leute hier verwechseln Multiplex und PWM. Bei Multiplex ist eine LED zwar auch nur einen Bruchteil der Zeit an und den Grossteil der Zeit aus, aber nur damit andere an derselben Leitung in der Zwischenzeit leuchten können. Am MAX7219 ist eine LED also entweder voll leuchtend oder ganz dunkel, mit PWM für die Helligkeit hat das Multiplexen nichts zu tun. Damit man die Helligkeit einzeln regeln kann, muss der uC dafür sorgen, daß sie nur eine bestimmte Prozentzahl der Zeit von MAX7219 leuchtend dargestellt wird. Dazu muss der uC die Information im Speicher des MAX7219 ganz schnell neu scheiben, bei 100 Hz und 10 Helligkeitsstufen 1000 mal pro Sekunde, wobei er ja nach zu erzielender Helligkeit die LED 0 bis 9 mal als 1 und entsprechend 9 bis 0 mal als 0 schreibt. Das muss man auch noch sychron zur Multiplex des MAX7219 machen, sonst gibt es nervende Flimmereffekte. Der TLC5921 ist im Prinzip genau so, auch 1000 mal die LED als 0 oder 1 neuschreiben, aber zumindest muss man bei ihm nicht auf irgendeine andere Frequenz synchronisieren. Erst der TLC5940/PCA9532 ist anders, dort schreibt man direkt die Helligkeit der LEDs und der Chip macht alles weitere von allein, der uC kann sich also (bis das dargestellte Bild geändert werden soll) schlafen legen.
MaWin schrieb: > Dazu muss der uC die Information im Speicher des MAX7219 ganz schnell > neu scheiben, bei 100 Hz und 10 Helligkeitsstufen 1000 mal pro Sekunde, Nein. So ist es eben nicht. Der Max hat intern etwas RAM zum speichern. Ich sag ihm nur EINMAL, welche LED leuchten soll, danach kann der AVR schlafen gehen. Und nochmal: der MAX steuert die Helligkeit intern per PWM (ja, hat nix mit Muxen zu tun). Der µC muss hierbei nix weiter machen, als einen Wert in das PWM Register zu schreiben. > Das muss man auch noch sychron zur Multiplex des MAX7219 machen, sonst > gibt es nervende Flimmereffekte. Umso was braucht man sich im Falle des MAX7219 keine Sorgen machen, hier muss nix synchron geschehen - ist schon ein netter, praktischer und einfacher Käfer.
... dartrax ... schrieb: > 90 (5+5)x9 rote LEDs für eine Wanduhr sollen einzeln ansteuerbar sein, > möglichst in zwei Helligkeitsstufen. > Zusätzlich sollen alle LEDs gedimmt werden können für Anpassung an die > Umgebungshelligkeit. > Wäre schön, wenn das einigermaßen stromsparend abläuft. Ich habe mir eine LED Uhr gebaut mit 5x16 LEDS (eigentlich 5X16 bi-color). Dazu habe ich 4x 74hc4094 verbaut und treibe damit die LEDs direkt. Die LEDs liegen aber verteilt an den 4094, damit diese nicht überlastet werden, also immer 4 pro 4094. Weitere Pins mit Transistor für die jew. Zeile sind ebenfalls auf die 4094 verteilt (5 rot, 5 gelb). Also ein "spalten-und-reihen-muxer". Beim Proggen muss man sehr aufpassen und testen testen testen, damit wirklich nur immer eine Zeile aufs Mal aktiv ist, sonst rauchen die 4094 ab. Mein atmegaXX8 20Mhz schafft ohne Probleme 2k "Zeilen" pro Sekunde, damit kann ich 3 Helligkeitsstufen softwaremässig abbilden, ohne dass ein Flackern wahrnehmbar ist. Hab alles mit C, ohne inline/extern ASM programmiert. Einfach als Gedankenanstoss, dass es auch ohne Spezial-ICs geht. :)
led frickler schrieb: > Einfach als Gedankenanstoss, dass es auch ohne Spezial-ICs geht. :) Ja, denke ich auch. Aber wenn schon, dann rate ich wie led frickler auch zur Spalten/ Reihen Variante. Die ist vom IC Aufwand her geringer. Mit einem 16fach und einem 8fach Muxer kannst du 128 LEDs bedienen, d.h. mit 2 ICs ! Wenn diese dann auch noch ordentlich Strom treiben können, kommst du um Nachbrenner in Form von zusätzlichen Transitoren herum. Allerdings muss ich zugeben, das mir spontan kein Muxer mit akzeptabler Strom Sink/ Source Fähigkeit einfällt :-(
Ich werde folgende Vorschläge ausprobieren: a) Zwei TLC5921 b) Multiplexen mit drei 74hc4094 und zwei ULN2003 (Alles richtig?) c) Multiplexen ohne Schieberegister mit Spalten-Reihen-Schaltung (???) @Uwe: Kannst du mir noch erklären/einen Link geben, wie die Spalten/Reihenschaltung ohne Schieberegister genau funktioniert? Und falls du doch noch einen "Muxer" (sind das Schieberegister?) weißt, der genug Strom (wie viel?) abkann, könnte ich mir wohl die ULNs sparen. Im Prinzip fehlen mir dann ja nur noch die LEDs, Vorwiderstände, Atmega und Stromquelle. - dartrax
Hi, weitere Alternative?! WS2801 Kann dann jeweils eine RGB LED ansteuern. Konstantstromquelle ist integriert. Allerdings ist es natürlich auch eine Kostenfrage bei 90 Leds werden auch 90x WS2801 benötigt. Angesteuert werden können die über SPI. Eine Pause von größer 500µs führt zur Ausgabe der Werte. Jeder WS2801 wird mit 24 Bit gefüttert, je Farbe 1 Byte. Die WS2801 werden kaskadiert. Gruß Flo
Du könntest auch einen AVR mit etwas mehr I/O verbauen (z.B. Mega 16). Ich würde 2 Ports für die LED-Spalten und einen für die Zeilen verwenden (16x8 Matrix). Du hast dann auch immer noch einen Port frei. Eventuell kannst du die Spalten direkt mit dem AVR ansteuern (die max. 200mA Gesamtstrom beachten!). Für das Multiplexing/Dimming könntest du einen Timer mit 2 Output Compare Units verwenden (Timer 1 im Mega 16). Der Interupt von Unit A schaltet die LED-Zeilen weiter und mit dem für Unit B kannst du die Zeile bei einem beliebigen Zwischenstand des Zählers abschalten. Die 2 Helligkeitsstufen könntest du damit erreichen, dass du eine Zeile während des Multiplexens 2x darstellst (An/An - An/Aus - Aus/Aus). Falls du mehr Speicher brauchst: es gibt 40 Pin AVR die deutlich mehr davon haben (Mega 644: 64k).
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.