90 LEDs einzeln ansteuern

OP (Firma: www.dartrax.de) #1937158
Lesenswert?

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
Gast #1937164
Lesenswert?

... 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.
#1937220
Lesenswert?

... 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...
OP (Firma: www.dartrax.de) #1937245
Lesenswert?

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
#1937394
Lesenswert?

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ß
OP (Firma: www.dartrax.de) #1937530
Lesenswert?

@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
#1937550
Lesenswert?

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
Gast #1937558
Lesenswert?

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.
OP (Firma: www.dartrax.de) #1939125
Lesenswert?

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
#1939143
Lesenswert?

... 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
Gast #1939161
Lesenswert?

> 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.
#1941025
Lesenswert?

... 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.
#1941083
Lesenswert?

... 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
OP (Firma: www.dartrax.de) #1941120
Lesenswert?

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
#1941145
Lesenswert?

... 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
#1941163
Lesenswert?

>> 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
OP (Firma: www.dartrax.de) #1941172
Lesenswert?

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
#1941193
Lesenswert?

... 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
#1941210
Lesenswert?

... 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.
Gast #1941213
Lesenswert?

> 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.
#1941218
Lesenswert?

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.
Gast #1941236
Lesenswert?

... 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. :)
#1941239
Lesenswert?

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 :-(
OP (Firma: www.dartrax.de) #1943993
Lesenswert?

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
#1944120
Lesenswert?

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
Gast #1944150
Lesenswert?

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).

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