Forum: Mikrocontroller und Digitale Elektronik Suche günstige Open-Collector Schieberegister


von Daniel H. (waza-ari1)


Lesenswert?

Hallo zusammen,

nach langen Jahren des passiven Mitlesen habe ich eine Frage, die bisher 
glaube ich noch nicht gestellt wurde (zumindest habe ich keine 
gefunden).

Folgendes Szenario: Ich möchte an einem Atmel ATMega328 ingesamt etwas 
unter 100 LEDs steuern können. Von diesen 100 LEDs ist immer nur eine 
gleichzeitig aktiv (!).

Statt also mit Schieberegistern und massenweise Widerständen zu 
arbeiten, würde ich gerne einen passenden Widerstand nehmen, an VCC 
anschließen, alle 100 LEDs mit der Anode an die andere Seite des 
Widerstands und ein paar Schieberegistern mit Open Collector für die 
Kathoden benutzen. So kann ich mir einige Bauteile sparen.

Man findet häufig Hinweise auf den 74HC596, der ist aber heute scheinbar 
unmöglich zu bekommen. Außerdem habe ich den TPIC6B595N 
(https://www.reichelt.de/powerlogik-8-bit-schiebe-register-dil-20-tpic-6b595-n-p147328.html) 
gefunden. Der ist allerdings mit 1,70€ doch recht teuer, und ich 
brauchte 12-13 Stück davon, was bei nem DIP-20 Gehäuse (nur 8 Drains pro 
IC) ziemlich viel Platz brauchen würde.

Meine Fragen nun:

Kennt ihr einen anderen, ähnlichen Chip (ggf sogar mit mehr Ausgängen)?
Habt ihr eine andere Idee, um das Beschriebene sinnvoll zu realisieren?

Herzlichen Dank!

PS:
Jetzt wo ich das gerade schreibe - da eh immer nur eine LED an ist... 
74HC595 (DIP-16, also etwas kompakter), Anode der LED direkt an den IC, 
Kathoden zusammen führen und über Widerstand an GND müsste genauso 
gehen, oder übersehe ich etwas?

von Wolfgang (Gast)


Lesenswert?

Daniel H. schrieb:
> Statt also mit Schieberegistern und massenweise Widerständen zu
> arbeiten, würde ich gerne einen passenden Widerstand nehmen, an VCC
> anschließen, alle 100 LEDs mit der Anode an die andere Seite des
> Widerstands und ein paar Schieberegistern mit Open Collector für die
> Kathoden benutzen. So kann ich mir einige Bauteile sparen.

Und was würde so schlimmes passieren, wenn du bei dem Konzept "ein 
passender Widerstand von zusammengeführten Anoden an VCC" bleibst und 
die Kathoden an Standard-Schieberegister mit Push-Pull-Ausgangsstufe 
anschließt (z.B. 74HC595)?

von Einer (Gast)


Lesenswert?

Die Stromaufnahme der LED wäre auch noch ein zu berücksichtigender 
Faktor.

Wenn immer nur eine LED leuchtet könnte man auch über eine Matrix 
nachdenken.
Nur 4 IC und 8 R.

von Axel S. (a-za-z0-9)


Lesenswert?

Daniel H. schrieb:

> Folgendes Szenario: Ich möchte an einem Atmel ATMega328 ingesamt etwas
> unter 100 LEDs steuern können. Von diesen 100 LEDs ist immer nur eine
> gleichzeitig aktiv (!).
>
> Statt also mit Schieberegistern und massenweise Widerständen zu
> arbeiten, würde ich gerne einen passenden Widerstand nehmen, an VCC
> anschließen, alle 100 LEDs mit der Anode an die andere Seite des
> Widerstands und ein paar Schieberegistern mit Open Collector für die
> Kathoden benutzen.

Aha. Und warum glaubst du, du bräuchtest open-collector Ausgänge 
dafür? Sofern du die LED mit ihren Anoden an die Betriebsspannung deiner 
Schieberegister legst (und nicht etwa an eine höhere Spannung) dann geht 
das doch prima mit auch mit Gegentaktausgängen. Und dann kannst du die 
üblichen Verdächtigen wie HC595 oder 4094 verbauen.

> Jetzt wo ich das gerade schreibe - da eh immer nur eine LED an ist...
> 74HC595 (DIP-16, also etwas kompakter), Anode der LED direkt an den IC,
> Kathoden zusammen führen und über Widerstand an GND müsste genauso
> gehen, oder übersehe ich etwas?

Das ist das gleiche in grün. Ob du die Anoden der LED ansteuerst und die 
Kathoden über einen gemeinsamen Widerstand an GND legst - oder - ob du 
die Kathoden der LED ansteuerst und die Anoden über einen gemeinsamen 
Widerstand an Vcc legst - das ist gehupft wie gesprungen.

von Noch einer (Gast)


Lesenswert?

Daniel H. schrieb:
> oder übersehe ich etwas?

Ja, den 74HC164 / 74HCT164. Der würde auch funktionieren.

Ansonsten passt deine Idee schon ganz gut.

von Wolfgang (Gast)


Lesenswert?

Noch einer schrieb:
> Ansonsten passt deine Idee schon ganz gut.

Das kommt drauf an, ob die LEDs linear oder quadratisch angeordnet 
werden sollen. In letztem Fall könnte man mit einer Matrixanordnung 
einiges an Verdrahtung/Treiberaufwand sparen.

von Joe F. (easylife)


Lesenswert?

Wie wäre es denn mit WS2812B LEDs?
Die bekommt man ja heute schon so für etwas über 10 Cent/Stück.
Und hat Farbe...

von Daniel H. (waza-ari1)


Lesenswert?

Vielen Dank für alle eure Antworten!

Wolfgang schrieb:
> Und was würde so schlimmes passieren, wenn du bei dem Konzept "ein
> passender Widerstand von zusammengeführten Anoden an VCC" bleibst und
> die Kathoden an Standard-Schieberegister mit Push-Pull-Ausgangsstufe
> anschließt (z.B. 74HC595)?

Also im Prinzip invertierte Logik am 595: Invertierte Logik, wenn der 
Output High ist, gibts keine Spannungsdifferenz und kein Strom fließt. 
Wenn er low ist, wird der Ausgang auf GND gezogen (haben die 
Schieberegister einen internen Widerstand, um den Ausgang auf GND zu 
ziehen? Oder werden die direkt auf GND gelegt? Ein Widerstand müsste man 
dann ja bei der Dimensionierung des anderen Widerstands berücksichtigen. 
Im Datenblatt hab ich dazu leider nichts gefunden.

Allerdings ist der Stromverbrauch der 595er höher, wenn alle Ausgänge 
auf High sind. Das wäre abträglich bezüglich der Batterielaufzeit ;) 
Aber vermutlich verkraftbar.

Einer schrieb:
> Die Stromaufnahme der LED wäre auch noch ein zu berücksichtigender
> Faktor.

Mit ungefähr 30mA komme ich problemlos hin.

Einer schrieb:
> Wenn immer nur eine LED leuchtet könnte man auch über eine Matrix
> nachdenken.
> Nur 4 IC und 8 R.

Was genau meinst Du mit einer Matrix in dem Fall?

Axel S. schrieb:
> Aha. Und warum glaubst du, du bräuchtest open-collector Ausgänge
> dafür? Sofern du die LED mit ihren Anoden an die Betriebsspannung deiner
> Schieberegister legst (und nicht etwa an eine höhere Spannung) dann geht
> das doch prima mit auch mit Gegentaktausgängen. Und dann kannst du die
> üblichen Verdächtigen wie HC595 oder 4094 verbauen.

Wie oben schon geschrieben. VCC wird gleich der Spannung für die LEDs 
sein, dagegen spricht eigentlich nur der höhere Verbrauch der ICs wenn 
alle Ausgänge HIGH sind.

Noch einer schrieb:
> Ja, den 74HC164 / 74HCT164. Der würde auch funktionieren.
>
> Ansonsten passt deine Idee schon ganz gut.

Danke für den Hinweis! Ist kleiner, das stimmt, hat aber kein Serial 
out. Entsprechend müsste ich alle separat vom Prozessor aus ansteuern. 
Könnte knapp werden mit den PINs, müsste ich mal zählen ;)

Wolfgang schrieb:
> Das kommt drauf an, ob die LEDs linear oder quadratisch angeordnet
> werden sollen. In letztem Fall könnte man mit einer Matrixanordnung
> einiges an Verdrahtung/Treiberaufwand sparen.

Es wird ein Raster von 10x12 LEDs, also kein Quadrat, aber schon in 
einem mxn Raster. Wie würde man das denn anders beschalten können?

Joe F. schrieb:
> Wie wäre es denn mit WS2812B LEDs?
> Die bekommt man ja heute schon so für etwas über 10 Cent/Stück.
> Und hat Farbe...
Eine sehr interessante Idee! Ich sehe sie bisher nur als SMD, allerdings 
brauche ich eine "normale" Form, die ich von unten durch eine dünne 
Holzplatte stecken kann.

Danke schonmal an alle für die vielen Antworten!

von Joe F. (easylife)


Lesenswert?

Daniel H. schrieb:
> Joe F. schrieb:
>> Wie wäre es denn mit WS2812B LEDs?
>> Die bekommt man ja heute schon so für etwas über 10 Cent/Stück.
>> Und hat Farbe...
> Eine sehr interessante Idee! Ich sehe sie bisher nur als SMD, allerdings
> brauche ich eine "normale" Form, die ich von unten durch eine dünne
> Holzplatte stecken kann.

Gibts auch als "traditionelle" 5mm LED.

hier für 0,50 EUR/Stck
https://www.watterott.com/de/WS2812-5mm-LED-matt-10Stueck

Auf eBay aus .cn teilweise auch für 0,04 EUR/Stck zu finden, wenn man 
das riskieren möchte...

von c-hater (Gast)


Lesenswert?

Daniel H. schrieb:

> Folgendes Szenario: Ich möchte an einem Atmel ATMega328 ingesamt etwas
> unter 100 LEDs steuern können. Von diesen 100 LEDs ist immer nur eine
> gleichzeitig aktiv (!).

Dann ist "Charlieplexing" das Mittel der Wahl. Kostet genau elf Pins. 
Kann dann sogar 110 LEDs ansteuern. Ansonsten brauchst du nix. Alles 
andere, was nötig ist, kann der Mega328.

Und wenn die elf Pins nicht verfügbar sind und du keinen Weg siehst, elf 
Pins freizuschaufeln, dann ist die günstigste Lösung: Mega32. Oder eine 
modernere Abart davon. Jedenfalls irgendwas, was eben genug Pins bietet 
und die ansosnten benötigte Funktionalität.

Alles andere ist geistiger und kostenmäßiger Dünnschiss.

von Daniel H. (waza-ari1)


Lesenswert?

Joe F. schrieb:
>
> Gibts auch als "traditionelle" 5mm LED.
>
> hier für 0,50 EUR/Stck
> https://www.watterott.com/de/WS2812-5mm-LED-matt-10Stueck
>
> Auf eBay aus .cn teilweise auch für 0,04 EUR/Stck zu finden, wenn man
> das riskieren möchte...

50€ sind natürlich ne Hausnummer für so ein Bastelprojekt, aber dafür 
wäre ich sicher, dass die Dinger auch funktionieren ;) Für 4Cent pro 
Stück finde ich sie selbst allerdings auf Ebay aus CN nicht... darf ich 
fragen, nach was du gesucht hast?

c-hater schrieb:
> Daniel H. schrieb:
>
>> Folgendes Szenario: Ich möchte an einem Atmel ATMega328 ingesamt etwas
>> unter 100 LEDs steuern können. Von diesen 100 LEDs ist immer nur eine
>> gleichzeitig aktiv (!).
>
> Dann ist "Charlieplexing" das Mittel der Wahl. Kostet genau elf Pins.
> Kann dann sogar 110 LEDs ansteuern. Ansonsten brauchst du nix. Alles
> andere, was nötig ist, kann der Mega328.
>
> Und wenn die elf Pins nicht verfügbar sind und du keinen Weg siehst, elf
> Pins freizuschaufeln, dann ist die günstigste Lösung: Mega32. Oder eine
> modernere Abart davon. Jedenfalls irgendwas, was eben genug Pins bietet
> und die ansosnten benötigte Funktionalität.
>
> Alles andere ist geistiger und kostenmäßiger Dünnschiss.

Wieder was gelernt, danke sehr! 11 Pins sollten kein Problem sein, eine 
Frage allerdings: Auch wenn die anderen LEDs nicht leuchten, verbrauchen 
sie aber nun doch (minimal) Strom. Bei knapp 100 inaktiven LEDs, die 
jeweils "minimal" Strom verbrauchen, summiert sich das eventuell. Hast 
du ne ungefähre Idee, wie viel Strom dabei verloren geht?

Danke!
Daniel

von H.Joachim S. (crazyhorse)


Lesenswert?

Wirst du nicht messen können :-)

von Daniel H. (waza-ari1)


Lesenswert?

H.Joachim S. schrieb:
> Wirst du nicht messen können :-)

Haha okay ;) wollte nur nachfragen, da das ganze ja über lange Zeit über 
Batterien laufen soll und ich versuche, auch beim Prozessor jedes mA 
rauszuquetschen.

Hab eben kurz gesucht und nicht gefunden - gibts irgendwie ein Generator 
für größeres Charlieplexing? :)

von Wolfgang (Gast)


Lesenswert?

Daniel H. schrieb:
> Es wird ein Raster von 10x12 LEDs, also kein Quadrat, aber schon in
> einem mxn Raster. ...

Das sind bei mir 120 LEDs ;-)

> ... Wie würde man das denn anders beschalten können?
10 Leitungen die jeweils eine Zeile über den Widerstand nach VCC 
schalten, 12 Leitungen die ein Spalte nach Gnd schalten. Am 
Kreuzungspunkt leuchtet es.

Charlieplexing spart aber noch mehr Leitungen und bei WS2812B kämest du 
mit einer Leitung vom µC aus.

> Also im Prinzip invertierte Logik am 595: Invertierte Logik, wenn der
> Output High ist, gibts keine Spannungsdifferenz und kein Strom fließt.

Das wird man nicht hin kriegen, weil die leuchtende LED die 
Sammelleitung auf U_F + U_CE runter zieht. Die nicht leuchtenden LEDs 
bekämen eine negative Spannung, die von der Farbe der leuchtenden LED 
abhängt.

von Daniel H. (waza-ari1)


Lesenswert?

Wolfgang schrieb:
> Das sind bei mir 120 LEDs ;-)
>

Stimmt wohl ;-)

>> ... Wie würde man das denn anders beschalten können?
> 10 Leitungen die jeweils eine Zeile über den Widerstand nach VCC
> schalten, 12 Leitungen die ein Spalte nach Gnd schalten. Am
> Kreuzungspunkt leuchtet es.
>
> Charlieplexing spart aber noch mehr Leitungen und bei WS2812B kämest du
> mit einer Leitung vom µC aus.

Okay, danke für die Erklärung, irgendwie stand ich vorhin auf der 
Leitung ;)

> Das wird man nicht hin kriegen, weil die leuchtende LED die
> Sammelleitung auf U_F + U_CE runter zieht. Die nicht leuchtenden LEDs
> bekämen eine negative Spannung, die von der Farbe der leuchtenden LED
> abhängt.

Dann habe ich glaube ich deinen ersten Vorschlag oben nicht verstanden 
:(

Danke!
Daniel

von Joe F. (easylife)


Lesenswert?

Daniel H. schrieb:
> Für 4Cent pro
> Stück finde ich sie selbst allerdings auf Ebay aus CN nicht... darf ich
> fragen, nach was du gesucht hast?

PL9823 F5

Ist nen WS2812 Clone.
https://www.led-genial.de/mediafiles/Sonstiges/PL9823.pdf

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Daniel H. schrieb:

> Wieder was gelernt, danke sehr! 11 Pins sollten kein Problem sein, eine
> Frage allerdings: Auch wenn die anderen LEDs nicht leuchten, verbrauchen
> sie aber nun doch (minimal) Strom.

Nein. Wie kommst du darauf?

Neben der einen, die tatsächlich angesteuert werden soll, gibt es noch 
eine, die an denselben Pins hängt, aber "falsch gepolt" ist. Die 
verbraucht im schlimmsten Fall ihren maximalen Sperrstrom bei der 
Betriebsspannung des AVR. Also so gut wie nix. Alle anderen LEDs 
"verbrauchen" den Leckstrom der Ausgänge eines AVR. Also quasi garnix.

von Axel S. (a-za-z0-9)


Lesenswert?

Daniel H. schrieb:
> Axel S. schrieb:
>> Aha. Und warum glaubst du, du bräuchtest open-collector Ausgänge
>> dafür? Sofern du die LED mit ihren Anoden an die Betriebsspannung deiner
>> Schieberegister legst (und nicht etwa an eine höhere Spannung) dann geht
>> das doch prima mit auch mit Gegentaktausgängen. Und dann kannst du die
>> üblichen Verdächtigen wie HC595 oder 4094 verbauen.
>
> Wie oben schon geschrieben. VCC wird gleich der Spannung für die LEDs
> sein, dagegen spricht eigentlich nur der höhere Verbrauch der ICs wenn
> alle Ausgänge HIGH sind.

Wie kommst du darauf? Der Stromverbrauch der Schieberegister wird 
annähernd Null sein. Nennenswert Strom fließt da nur durch die LED.


Daniel H. schrieb:
> Es wird ein Raster von 10x12 LEDs, also kein Quadrat, aber schon in
> einem mxn Raster. Wie würde man das denn anders beschalten können?

Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen. Das könnten 
z.B. 3 kaskadierte HC595 sein. Von den insgesamt 24 Ausgängen läßt du 
einfach zwei unbenutzt.

Lies den Artikel LED-Matrix im hiesigen Wiki.

Da bei dir immer nur eine LED leuchten soll, brauchst du weder Treiber 
noch Multiplexing. Du schaltest einfach einen der Zeilen-Ausgänge auf H 
und einen der Spalten-Ausgänge auf L. Dann leuchtet die LED im 
Kreuzungspunkt der Zeile und Spalte. Du brauchst entweder in den Zeilen 
oder den Spalten jeweils einen Vorwiderstand. Da du sparen willst, 
nimmst du die Dimension der Matrix, die kleiner ist. Also 10 
Widerstände.

von c-hater (Gast)


Lesenswert?

Daniel H. schrieb:

> Hab eben kurz gesucht und nicht gefunden - gibts irgendwie ein Generator
> für größeres Charlieplexing? :)

Wozu braucht man da irgendeinen Generator? Du musst doch über jede LED 
nur zwei Sachen wissen:

1) An welchen Pin ist die Anode angeschlossen
2) An welchen Pin ist die Kathode angeschlossen

Wenn die Aufgabe ist: Lasse LEDx leuchten, dann macht die Software 
einfach nur folgendes:

1) Setze alle LED-Pins auf High-Z
2) Ermittle die beiden Pins für die gewünschte LED (hier bietet sich 
wohl eine Tabelle an)
3) Setze die beiden Ausgänge, den für die Anode auf high und den für die 
Kathode auf low. Oder umgekehrt, ich kann mir einfach nicht merken, was 
nun Anode und Kathode ist...

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Daniel H. schrieb:
> Wolfgang schrieb:
> ...
>> Das wird man nicht hin kriegen, weil die leuchtende LED die
>> Sammelleitung auf U_F + U_CE runter zieht. Die nicht leuchtenden LEDs
>> bekämen eine negative Spannung, die von der Farbe der leuchtenden LED
>> abhängt.
>
> Dann habe ich glaube ich deinen ersten Vorschlag oben nicht verstanden

So war das gemeint - ganz direkt ...

von Wolfgang (Gast)


Lesenswert?

Daniel H. schrieb:
> Für 4Cent pro Stück finde ich sie selbst allerdings auf Ebay aus CN
> nicht... darf ich fragen, nach was du gesucht hast?

Soviel muss man dafür doch gar nicht mehr ausgeben, z.B. 200 Stk. für 
7€.
https://www.ebay.de/itm/254388479089

Allerdings sollte man sich überlegen, ob man klare oder diffuse 
bevorzugt.

von Daniel H. (waza-ari1)


Lesenswert?

Joe F. schrieb:
> PL9823 F5
>
> Ist nen WS2812 Clone.
> https://www.led-genial.de/mediafiles/Sonstiges/PL9823.pdf

Danke, gefunden und bestellt ;)

c-hater schrieb:
> Neben der einen, die tatsächlich angesteuert werden soll, gibt es noch
> eine, die an denselben Pins hängt, aber "falsch gepolt" ist. Die
> verbraucht im schlimmsten Fall ihren maximalen Sperrstrom bei der
> Betriebsspannung des AVR. Also so gut wie nix. Alle anderen LEDs
> "verbrauchen" den Leckstrom der Ausgänge eines AVR. Also quasi garnix.

Denkfehler meinerseits. Bin heute nicht ganz so fit im Kopf... 
Charlieplexing hab ich nun verstanden, auch der Generator wird 
überflüssig. Hab den High-Z Status irgendwie verdrängt...

Axel S. schrieb:
> Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen. Das könnten
> z.B. 3 kaskadierte HC595 sein. Von den insgesamt 24 Ausgängen läßt du
> einfach zwei unbenutzt.
>
> Lies den Artikel LED-Matrix im hiesigen Wiki.
>
> Da bei dir immer nur eine LED leuchten soll, brauchst du weder Treiber
> noch Multiplexing. Du schaltest einfach einen der Zeilen-Ausgänge auf H
> und einen der Spalten-Ausgänge auf L. Dann leuchtet die LED im
> Kreuzungspunkt der Zeile und Spalte. Du brauchst entweder in den Zeilen
> oder den Spalten jeweils einen Vorwiderstand. Da du sparen willst,
> nimmst du die Dimension der Matrix, die kleiner ist. Also 10
> Widerstände.

Hier fehlt mir noch was.. ich habe mir die Datenblätter und 
Logikdiagramme angeschaut. Beim HC595 kann ich einen Ausgang auf High 
oder Low stellen, oder alle Ausgänge "aus schalten", aber nicht 
individuell. Wenn ich also den Ausgang A für die A-te Reihe (oder 
Spalte, egal) ändern will, muss ich allen vorherigen Ausgängen ebenfalls 
einen Wert geben. D.h. wenn ich eine Spalte auf High setze, müsste ich 
eine bestimmte Zeile auf Low setzen. Die davor wären ja aber dann auch 
low. Einen individuellen High-Z Status wie beispielsweise der Atmel 
haben die 595er nicht. Ich hab das Gefühl ich hab noch einen 
gravierenden Denkfehler hier drin...

Siehe 
https://cdn-reichelt.de/documents/datenblatt/A240/74HC595%23STM.pdf 
Seite 3. High-Impedance geht nur für alle Ausgänge, wenn G high ist.

Wolfgang schrieb:
> So war das gemeint - ganz direkt ...

Vielen Dank für die Grafik! Aber auch hier die gleiche (vermutlich 
dumme) Frage wie oben drüber: sagen wir, ich möchte Q_c auf low setzen, 
damit die dritte LED leuchtet. Auf was setze ich dann Q_a und Q_b?

Danke auch für den Ebay-Link, genau die habe ich in der 100er Packung 
mal bestellt. Habe ich nach dem Hinweis auf PL9823 F5 dann auch gefunden 
;)

Nochmals danke für eure Geduld mit mir!

von Jürgen W. (Firma: MED-EL GmbH) (wissenwasserj)


Lesenswert?

Es gibt das 8-bit-Latch 74x259.

Das hat 3 Steuerleitungen (je Ausgang eines), eine Daten- und eine 
Adreßleitung.

Du könntest also alle LEDs über einen gemeinsamen Anodenwiderstand 
betreiben und auf insgesamt 13 Latches die Kathoden anbinden.

Dazu brauchst Du effektiv
* 3 Adreßleitungen
* 1 Datenleitung
* 13 CS-Leitungen

von Wolfgang (Gast)


Lesenswert?

Daniel H. schrieb:
> Auf was setze ich dann Q_a und Q_b?

Auf High - anders kann der 74HC595 nicht, weil Q_c aktiv sein muss und 
der Chip nur über ein gemeinsames Output Enable verfügen.
Weil auf Grund des Spannungsabfalls über dem Widerstand die 
Sammelleitung deutlich unter VCC liegt, bekommen die nicht 
eingeschalteten Dioden dann eine geringe Spannung in Sperrrichtung.

von Gerald B. (gerald_b)


Lesenswert?

2x MAX7219 oder 3x TM1637
Beides Matrix-Treiber. Die müssen nicht zwingend mit 7 Segmentanzeigen 
oder fertigen Matrixanzeigen beschaltet werden.
Beide ICs sind aus China Pfennigware.

von Axel S. (a-za-z0-9)


Lesenswert?

Daniel H. schrieb:
> Axel S. schrieb:
>> Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen.
...
>> Da bei dir immer nur eine LED leuchten soll, brauchst du weder Treiber
>> noch Multiplexing. Du schaltest einfach einen der Zeilen-Ausgänge auf H
>> und einen der Spalten-Ausgänge auf L. Dann leuchtet die LED im
>> Kreuzungspunkt der Zeile und Spalte.
>
> Hier fehlt mir noch was.. ich habe mir die Datenblätter und
> Logikdiagramme angeschaut. Beim HC595 kann ich einen Ausgang auf High
> oder Low stellen, oder alle Ausgänge "aus schalten", aber nicht
> individuell.

Ja. Und?

> Wenn ich also den Ausgang A für die A-te Reihe (oder
> Spalte, egal) ändern will, muss ich allen vorherigen Ausgängen ebenfalls
> einen Wert geben. D.h. wenn ich eine Spalte auf High setze, müsste ich
> eine bestimmte Zeile auf Low setzen. Die davor wären ja aber dann auch
> low. Einen individuellen High-Z Status wie beispielsweise der Atmel
> haben die 595er nicht. Ich hab das Gefühl ich hab noch einen
> gravierenden Denkfehler hier drin...

Anscheinend glaubst du, es wäre verboten, eine LED in Sperrichtung zu 
betreiben. Ist es nicht. Wie Vorredner schon anmerkten, liegt die 
Sperrspannung in dieser Schaltung bei (Vcc - Uf). Wenn du mit Vcc=5V 
unterwegs bist (Arduino-Fraktion) und deine LED 2V Flußspannung haben, 
dann sind das 3V. Das hält jede LED aus. Die meisten LED sind bis 5V 
spezifiziert und der Sperrstrom liegt bei wenigen µA. Da das die Angabe 
über den ganzen Temperaturbereich ist, kannst du bei Raumtemperatur von 
Faktor 10 bis 100 weniger ausgehen. Sprich: nicht meßbar.

: Bearbeitet durch User
von GeGe (Gast)


Lesenswert?

Daniel H. schrieb:
>> Ist nen WS2812 Clone.
>> https://www.led-genial.de/mediafiles/Sonstiges/PL9823.pdf
>
> Danke, gefunden und bestellt ;)

Nun ja, hast du geschaut was die verbraucht auch wenn die LED aus ist?
7-8mA pro PL9823 > Die Batterie wirds nicht lange machen!
Hier in dem Blog der Verbrauch und Vergleich zur WS2812

http://laneboysrc.blogspot.com/2014/07/ws2812-and-pl9823-led-power-consumption.html

von Joe F. (easylife)


Lesenswert?

GeGe schrieb:
> Nun ja, hast du geschaut was die verbraucht auch wenn die LED aus ist?
> 7-8mA pro PL9823 > Die Batterie wirds nicht lange machen!

Huch, das ist bei 100 Stck im Batteriebetrieb natürlich echt 
unbrauchbar.
Hoffentlich noch Zeit die LED Bestellung zu stornieren...
Selbst 2mA wären bei der Stückzahl an 5V noch 1 Watt Verbrauch für 
nichts. Hätte nicht gedacht, dass diese Dinger solche Stromsäufer sind.

: Bearbeitet durch User
von Daniel H. (waza-ari1)


Lesenswert?

Jürgen W. schrieb:
> Es gibt das 8-bit-Latch 74x259.
>
> Das hat 3 Steuerleitungen (je Ausgang eines), eine Daten- und eine
> Adreßleitung.
>
> Du könntest also alle LEDs über einen gemeinsamen Anodenwiderstand
> betreiben und auf insgesamt 13 Latches die Kathoden anbinden.
>
> Dazu brauchst Du effektiv
> * 3 Adreßleitungen
> * 1 Datenleitung
> * 13 CS-Leitungen

Danke für den Hinweis! Allerdings habe ich das Gefühl, dass das 595 
Schieberegister+Latch dann effektiver ist. Die Schieberegister kann ich 
seriell hintereinander schalten und brauche damit effektiv nur 4 PINs, 
und die gleiche Anzahl ICs. Oder übersehe ich etwas?

Wolfgang schrieb:
> Daniel H. schrieb:
> Auf High - anders kann der 74HC595 nicht, weil Q_c aktiv sein muss und
> der Chip nur über ein gemeinsames Output Enable verfügen.
> Weil auf Grund des Spannungsabfalls über dem Widerstand die
> Sammelleitung deutlich unter VCC liegt, bekommen die nicht
> eingeschalteten Dioden dann eine geringe Spannung in Sperrrichtung.

Und

Axel S. schrieb:
> Anscheinend glaubst du, es wäre verboten, eine LED in Sperrichtung zu
> betreiben. Ist es nicht. Wie Vorredner schon anmerkten, liegt die
> Sperrspannung in dieser Schaltung bei (Vcc - Uf). Wenn du mit Vcc=5V
> unterwegs bist (Arduino-Fraktion) und deine LED 2V Flußspannung haben,
> dann sind das 3V. Das hält jede LED aus. Die meisten LED sind bis 5V
> spezifiziert und der Sperrstrom liegt bei wenigen µA. Da das die Angabe
> über den ganzen Temperaturbereich ist, kannst du bei Raumtemperatur von
> Faktor 10 bis 100 weniger ausgehen. Sprich: nicht meßbar.

Mir ist bewusst, dass eine LED immer noch eine Diode ist ;) Ich hatte 
Wolfgangs Kommentar oben falsch verstanden:

Wolfgang schrieb:
> Daniel H. schrieb:
>> Also im Prinzip invertierte Logik am 595: Wenn der
>> Output High ist, gibts keine Spannungsdifferenz und kein Strom fließt.
>
> Das wird man nicht hin kriegen, weil die leuchtende LED die
> Sammelleitung auf U_F + U_CE runter zieht. Die nicht leuchtenden LEDs
> bekämen eine negative Spannung, die von der Farbe der leuchtenden LED
> abhängt.

Jetzt klärt sich einiges ;) Du hattest den Aufbau ja Anfangs 
vorgeschlagen, ich habe versucht, das in eigenen Worten wiederzugeben 
und dann von "keine Spannungsdifferenz" gesprochen. Dann habe ich deine 
Antwort "das wird man nicht hinkriegen" falsch verstanden.

Ich dachte, dass Du damit meinst, dass der von mir wiedergegebene Aufbau 
nicht funktionieren würde, was dann zu Verwirrung bei mir geführt hatte, 
weil ich dachte, deinen Vorschlag nicht richtig verstanden zu haben.

Du meintest allerdings nur, dass man "keine Spannungsdifferenz" nicht 
hinbekommen würde, der Kommentar war nicht auf den Aufbau selbst 
bezogen. Dass die Spannungsdifferenz kein Problem ist, ist klar und 
jetzt auch verstanden. Schwere Geburt, danke nochmal :-)

GeGe schrieb:
> Nun ja, hast du geschaut was die verbraucht auch wenn die LED aus ist?
> 7-8mA pro PL9823 > Die Batterie wirds nicht lange machen!
> Hier in dem Blog der Verbrauch und Vergleich zur WS2812
>
> 
http://laneboysrc.blogspot.com/2014/07/ws2812-and-pl9823-led-power-consumption.html

Mist... vielen Dank für den Hinweis. Das hatte ich mir tatsächlich nicht 
angeschaut, ich hab naiv angenommen, dass der WS2812 Klon sich dann auch 
ähnlich verhält ;) Dann schauen wir mal, ob wir das noch stornieren 
können...

Gerald B. schrieb:
> 2x MAX7219 oder 3x TM1637
> Beides Matrix-Treiber. Die müssen nicht zwingend mit 7 Segmentanzeigen
> oder fertigen Matrixanzeigen beschaltet werden.
> Beide ICs sind aus China Pfennigware.

Vielen Dank auch für den Hinweis! Der 7219 scheint vielversprechend zu 
sein, auch wenn dann etwas Gehirnakrobatik notwendig sein wird, um das 
Mapping zwischen LED Position in der 8x8 Matrix und der tatsächlichen 
Position hinzubekommen. Aber das sollte machbar sein :)

Falls jemand hierauf stößt, ich habe zufällig ein ziemlich guten 
Blog-Eintrag zum 7219 gefunden:

https://tronixstuff.com/2013/10/11/tutorial-arduino-max7219-led-display-driver-ic/

Ich werde heute im Laufe des Tages mal die verschiedenen Optionen 
vergleichen und melde mich dann nochmal wieder.

Danke nochmals an alle!

von W.S. (Gast)


Lesenswert?

Axel S. schrieb:
> Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen.

Soll das etwa Charlieplexing werden? Wohl nicht.

Für selbiges braucht man aber Steuerleitungen, die man einzeln 
hochohmig schalten kann. Da sind TTL-IC's aus dem Rennen.

Und die Rechnung geht so: LedAnzahl = N*(N-1); mit N = Anzahl der 
Steuerstrippen. Für N=11 wären das 11*10=110 LED's.

W.S.

von Axel S. (a-za-z0-9)


Lesenswert?

W.S. schrieb:
> Axel S. schrieb:
>> Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen.
>
> Soll das etwa Charlieplexing werden? Wohl nicht.

Natürlich nicht. Hast du mal die Posts des TE überflogen? Das ist ein 
Anfänger. Mit Charlieplexing wird der nie fertig.

> Für selbiges braucht man aber Steuerleitungen, die man _einzeln_
> hochohmig schalten kann. Da sind TTL-IC's aus dem Rennen.

TTL IC sind seit 20 Jahren aus dem Rennen. 74HC595 ist kein TTL.

von Michael B. (laberkopp)


Lesenswert?

Daniel H. schrieb:
> Vielen Dank auch für den Hinweis! Der 7219 scheint vielversprechend zu
> sein, auch wenn dann etwas Gehirnakrobatik notwendig sein wird, um das
> Mapping zwischen LED Position in der 8x8 Matrix und der tatsächlichen
> Position hinzubekommen. Aber das sollte machbar sein :)

Vor allem brauchst du 2.

Warum nicht Charlyplexing mit 12 Ausgangspins des uC reichen soll, ist 
mir schleierhaft.

von Daniel H. (waza-ari1)


Lesenswert?

Axel S. schrieb:
> W.S. schrieb:
>> Axel S. schrieb:
>>> Na als Matrix 10×12. Mit insgesamt 10+12=22 Steuerleitungen.
>>
>> Soll das etwa Charlieplexing werden? Wohl nicht.
>
> Natürlich nicht. Hast du mal die Posts des TE überflogen? Das ist ein
> Anfänger. Mit Charlieplexing wird der nie fertig.

Ich würde mich mal als Wiedereinsteiger bezeichnen. Dass ich gelötet 
habe und Schaltungen erstellt habe liegt inzwischen >10 Jahre zurück und 
ich habe einiges aus dieser Zeit (und auch meinem 
Elektrotechnik-Studium) vergessen und muss ich etwas langsamer wieder 
heran tasten.

Charlieplexing hatte ich tatsächlich noch nie gehört, vielleicht hat es 
deswegen einen Moment länger gedauert. Mir zu unterstellen, dass ich das 
nicht hinbekomme ist aber etwas weit her geholt, dafür reicht mein 
Intellekt gerade noch ;)

Michael B. schrieb:
>
> Vor allem brauchst du 2.
>
> Warum nicht Charlyplexing mit 12 Ausgangspins des uC reichen soll, ist
> mir schleierhaft.

Ja das ist mir schon klar... der erste kann wirklich als 8x8 Matrix 
fungieren, der andere muss die restlichen LEDs übernehmen, die nicht 
mehr so schön quadratisch angeordnet sein werden. Daher der Hinweis auf 
Gehirnakrobatik, aber auch das schaffe ich gerade noch... :)

Charlieplexing mit 11 Ausgängen (110 LEDs) reicht vermutlich auch 
schon... Es gibt kein Grund warum das nicht reichen soll, ich würde nur 
gerne unterschiedliche Alternativen vergleichen.

von Daniel H. (waza-ari1)


Lesenswert?

So, wie versprochen meine Summary. Ich habe mich schlussendlich für die 
LED Matrix mit 74HC595 Schieberegistern (3 Stück reichen in diesem Fall) 
entschieden. Die Alternativen waren:

- Direkt ansteuern mit Schieberegister (gemeinsame Anode oder Kathode 
erstmal egal) über 74HC164 oder 74HC595: zu viele ICs, ich bräuchte 13 
Stück mit je 8 Ausgängen um dies zu realisieren. Das macht kein Sinn für 
mich.

- Charlieplexing: Für mich eigentlich am elegantesten, es hat aber einen 
entscheidenden Nachteil bei der Verdrahtung. Ich müsste sowohl Anode als 
auch Katode einer jeden LED ans PCB führen. Ja, man könnte durch 
geschickte Platzierung der LEDs einige Kabelwege sparen, das ist mir 
aber zu viel Aufwand

- WS2812B / PL9823: Zu teuer / zu stromhungrig, wenn ausgeschaltet. 
Leider :(

- MAX7219 Scheint mir ein bisschen Overkill verglichen mit den anderen 
Lösungen, ich brauche 99% der Funktionalität nicht.

Außerdem wäre die Matrix-Lösung mit 3 74HC595 und 10 Widerständen am 
günstigsten und ich denke auch am einfachsten.

Nochmals danke für alle eure Vorschläge.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Daniel H. schrieb:
> Es gibt kein Grund warum das nicht reichen soll, ich würde nur
> gerne unterschiedliche Alternativen vergleichen.

In diesem Falle vermute ich mal sehr, daß du schon übermorgen auf die 
Idee kommst, ja vielleicht doch nicht nur eine LED, sondern mehrere 
davon leuchten lassen zu wollen.

Ich hab sowas schon oft erlebt, daß zum Anfang das Pflichtenheft schön 
übersichtlich war und mit der Zeit durch hereintröpfelnde Zusatz-Wünsche 
aufgebläht wurde.

Falls so etwas auch nur in deine Nähe käme, würde ich dir zu einem CPLD 
raten (XC95144 oder so). Kostet bei Ali nur ne Mark und du hast 
annähernd 100 Ausgänge parallel. Hauptsache die GND-Pins schaffen's.

W.S.

von P.S. (Gast)


Lesenswert?

Gerald B. schrieb:
> 2x MAX7219 oder 3x TM1637
> Beides Matrix-Treiber. Die müssen nicht zwingend mit 7 Segmentanzeigen
> oder fertigen Matrixanzeigen beschaltet werden.
> Beide ICs sind aus China Pfennigware.

Oder einen einzelnen HT16K33. Die Version im SOP28-Gehäuse kann max. 128 
LEDs ansteuern. Im Gegensatz zum TM1637 hat dieser ein richtiges 
I²C-Interface.

von Daniel H. (waza-ari1)


Lesenswert?

W.S. schrieb:
> Daniel H. schrieb:
>> Es gibt kein Grund warum das nicht reichen soll, ich würde nur
>> gerne unterschiedliche Alternativen vergleichen.
>
> In diesem Falle vermute ich mal sehr, daß du schon übermorgen auf die
> Idee kommst, ja vielleicht doch nicht nur eine LED, sondern mehrere
> davon leuchten lassen zu wollen.
>
> Ich hab sowas schon oft erlebt, daß zum Anfang das Pflichtenheft schön
> übersichtlich war und mit der Zeit durch hereintröpfelnde Zusatz-Wünsche
> aufgebläht wurde.
>
> Falls so etwas auch nur in deine Nähe käme, würde ich dir zu einem CPLD
> raten (XC95144 oder so). Kostet bei Ali nur ne Mark und du hast
> annähernd 100 Ausgänge parallel. Hauptsache die GND-Pins schaffen's.
>
> W.S.

Uiuiui, VHDL/Verilog sind noch länger her als der Rest, ich habe damit 
effektiv nie gearbeitet. Das würde dann in die Kategorie "mal was neues 
lernen" fallen ... :)

In diesem Fall bin ich sehr sicher, dass die Anforderung mehrerer LEDs 
nicht kommen wird. Dafür ist das Projekt einfach nicht gedacht. Aber 
danke für deinen Tip! ;)

P.S. schrieb:
> Gerald B. schrieb:
>> 2x MAX7219 oder 3x TM1637
>> Beides Matrix-Treiber. Die müssen nicht zwingend mit 7 Segmentanzeigen
>> oder fertigen Matrixanzeigen beschaltet werden.
>> Beide ICs sind aus China Pfennigware.
>
> Oder einen einzelnen HT16K33. Die Version im SOP28-Gehäuse kann max. 128
> LEDs ansteuern. Im Gegensatz zum TM1637 hat dieser ein richtiges
> I²C-Interface.

Der sieht auch interessant aus - ähnlich wie der MAX7219 aber overkill - 
es muss wirklich nur eine LED leuchten ;)

von Joe F. (easylife)


Lesenswert?

Daniel H. schrieb:
>> Oder einen einzelnen HT16K33. Die Version im SOP28-Gehäuse kann max. 128
>> LEDs ansteuern. Im Gegensatz zum TM1637 hat dieser ein richtiges
>> I²C-Interface.
>
> Der sieht auch interessant aus - ähnlich wie der MAX7219 aber overkill -
> es muss wirklich nur eine LED leuchten ;)

Ob eine oder mehrere ist doch egal.
1 IC, für ein paar Euro schon auf PCB aufgelötet im Handel, 2mA 
Stromverbrauch und alle LEDs können kabelsparend als Matrix 
angeschlossen werden.
Einfacher gehts doch nicht. Würde ich nehmen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> Falls so etwas auch nur in deine Nähe käme, würde ich dir zu einem CPLD
> raten (XC95144 oder so).

Stolze 160mA ist aber nicht gerade stromsparend und High liegt bei 3,5V.
Und wer weiß, wie lange es die 5V Typen noch gibt.
Die CMOS-Typen XCR3128 gehen nur bis 3,3V.

von GeGe (Gast)


Lesenswert?

Daniel H. schrieb:
> Außerdem wäre die Matrix-Lösung mit 3 74HC595 und 10 Widerständen am
> günstigsten und ich denke auch am einfachsten.

Da eh nur eine LED an sein soll kann man das auch gleich mit "3to8 
decoder" machen. Einen 74HC238, dort ist nur immer ein Ausgang von den 
acht auf HIGH.
Dazu einen 74HC138 bei dem nur immer ein Ausgang von den acht auf LOW 
ist.
Das ganze verschaltet als Matrix und man kan schon 64 LEDs einzeln 
schalten.
Da beide Dekoder noch je drei Chip-Enable Eingänge haben kann man das 
leicht kaskadieren.
Die Programmierung mit einer einfachen Byte-Ausgabe ist sicher deutlich 
einfacher als Schieberegister zu bedienen.

von Daniel H. (waza-ari1)


Angehängte Dateien:

Lesenswert?

Ehrlich gesagt läuft ein erster Prototyp mit dem Arduino und ner 4x5 LED 
Matrix mit 2 kaskadierten 74HC595 schon, siehe Anhang. Die Bauteile 
dafür hatte ich zufällig noch hier.

 Der Sketch macht momentan nichts außer von oben links nach unten rechts 
die LEDs nacheinander anzumachen, aber die Funktion, eine LED mit 
gegebener x/y Koordinate anzuschalten funktioniert schon.

Vielen Dank aber für den Hinweis ;)

Als nächstes steht die Kommunikation zwischen dem Raspi auf dem Tisch 
und dem Arduino mittels NRF24L01+ Modulen auf dem Programm, da die 
extrem wenig Strom brauchen.

: Bearbeitet durch User
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.