Forum: Mikrocontroller und Digitale Elektronik Multiplexer für LED Anoden


von Janos K. (noshky)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

Ich bin auf der Suche nach einem Multiplexer für die Zeilensteuerung 
einer LED Matrix. Hierfür habe ich den 4051 im Visir, und würde gerne um 
Rat und Meinungen fragen, ob das eine gute Wahl ist oder ob es 
geeignetere Multiplexer gibt.

Dass ich eine LED Matrix multiplexen möchte, ist eigentlich 
nebensächlich, hat aber folgende Anforderungen zur Folge:
- Ich muss die Anoden schalten
  (für die Kathoden ("Spalten") ist bereits gesorgt).
- Ich habe Lasten von 0-300mA (ca.).

Der 4051 scheint ein so wohl bekannter Baustein zu sein, dass in den 
Datenblättern gerne auf Informationen verzichtet wird. Ich kenne ihn 
leider noch nicht so gut - aber im Prinzip wird ja lediglich der Eingang 
"X" an den mit "A", "B" und "C" ausgewählten Ausgang gelegt.

Da ich die Anode schalte, benutze ich PNP Transistoren, deren Basis ich 
gegen Ground ziehen muss, um zu schalten. Was heißt das aber nun für den 
MUX? Kann mein Eingang "X" ebenso Ground sein?
Wie erreiche ich dann aber, dass die Ausgänge gegen VCC gezogen werden, 
wenn sie nicht aktiv sind? (also alle 7 außer der aktiven Leitung). 
Vielleicht per Pull-Up?
Den MUX-Ausgang zu invertieren möchte ich vermeiden, da ich keinen Platz 
mehr auf dem Board habe! x-D.

Ich hänge mal eine schematische Darstellung des Vorhabens an: Dabei sind 
als zu schaltende Last einfach einzelne LEDs eingezeichnet. An den 
Eingang "X" des MUX habe ich GND gelegt.

Habt ihr hier vielleicht Tips für mich, wie ich die Steuerung der Anoden 
richtig(er) machen kann?

Freue mich auf eure Beiträge!
Viele Grüße
Janosch

von Michael U. (amiga)


Lesenswert?

Hallo,

eine Analog-Mux wie der 4051 ist in einer reinen digitalen Schaltung 
recht ungünstig.
Nimm einen 74HC138.

Ich bezweifle aber generell die Funktion Deiner Matrix mit nur 3,3V.
LED-Flußspannung + 2x Sättigungsspannung der Zeilen-/Spaltentreiber 
dürften da nicht zusammen passen.

Gruß aus Berlin
Michael

von Olaf (Gast)


Lesenswert?

> Der 4051 scheint ein so wohl bekannter Baustein zu sein, dass in den
> Datenblättern gerne auf Informationen verzichtet wird.

Das wuerde ich nicht sagen. Es krankt eher an Leuten die Datenblaetter 
richtig lesen.

> - Ich habe Lasten von 0-300mA (ca.).

Welcher ON-Widerstand steht im Datenblatt? Bei mir sind das 80Ohm. Noch 
Fragen?

Olaf

von Janos K. (noshky)


Lesenswert?

Michael U. schrieb:
> eine Analog-Mux wie der 4051 ist in einer reinen digitalen Schaltung
> recht ungünstig.
> Nimm einen 74HC138.
Danke für den Tip, das ist genau der richtige. Leider scheint das Teil 
nicht sonderlich verfügbar zu sein - ist es vielleicht veraltet oder am 
Aussterben? (Farnell hat ihn nur per Bestellung, und auch Segor (Berlin) 
hat kein TSSOP Gehäuse im Lager...). Als Alternative habe ich "74LCX138" 
und "74VHC138" gefunden - beide nicht bei Segor, aber wenigstens bei 
Farnell im TSSOP zu haben. Sind das gute Ersatzteile?

> Ich bezweifle aber generell die Funktion Deiner Matrix mit nur 3,3V.
> LED-Flußspannung + 2x Sättigungsspannung der Zeilen-/Spaltentreiber
> dürften da nicht zusammen passen.
So etwas habe ich befürchet, wenn ich die Matrix erwähne ;-). Was für 
Probleme können denn entstehen? Ich habe schon einmal eine Matrix mit 
3V3 gebaut - die hat bestens funktioniert. Dort habe ich allerdings das 
Multiplexing über die "Spalten" (Kathoden) mit ULNs gemacht, und die 
"Zeilen" direkt über die Portpins betrieben.
Erzeugt meine jetzige Herangehensweise neue Probleme, oder besorgen dich 
lediglich die 3V3?

@Olaf
> Welcher ON-Widerstand steht im Datenblatt? Bei mir sind das 80Ohm. Noch
> Fragen?
Danke für deine Mühe, meine Fragen zum 4051 sind aber noch 
unbeantwortet. Kein Problem aber, denn statt dem 4051 scheint es 
deutlich bessere Bausteine für mich zu geben. Und das steht nicht im 
Datenblatt.

Danke für eure Hilfe,
Grüße
Janosch

von Janos K. (noshky)


Lesenswert?

Janosch K. schrieb:
> Leider scheint das Teil
> nicht sonderlich verfügbar zu sein - ist es vielleicht veraltet oder am
> Aussterben? (Farnell hat ihn nur per Bestellung, und auch Segor (Berlin)
> hat kein TSSOP Gehäuse im Lager...).
Ok, bei Digi-Key verfügbar zu sein, sollte für ein Bauteil ausreichen 
;-). Da hatte ich nicht geschaut, gibt es sogar als QFN. Vergesst also 
die Alternativen.

von Peter D. (peda)


Lesenswert?

Analog Multiplexer sind schlecht geeignet. Das Abschalten dauert dann 
sehr lange.

Nimm doch einfach Schieberegister 74HC164. Die lassen sich einfach 
ansteuern und auch kaskadieren für mehr als 8 Ausgänge.


Peter

von MaWin (Gast)


Lesenswert?

> denn statt dem 4051 scheint es deutlich bessere Bausteine
> für mich zu geben

CD4051 eiget sich durchaus als Ansteuerbaustein und Demultiplexer,
BTDT, er ist vor allem nützlich wenn er auch eine Pegelwandlung
miterledigt (was bei dir nicht ausgenutzt wird). Man würde wohl
die Basiswiderstandbeschaltung anders machen, ein PullUpnach 3V3,
und zumindest 12mA fliessen lassen, also statt 5k6 eher 220 Ohm,
aber im Prinzip ist der einsetzbar.

Du hast richtig erkannt, daß den Strom durch die LEDs nur
Transistoren ausreichend verstärken.

Dummerweise sind das viele Bauteile.

Wenn du 24ßmA durch die LED schicken willst, stellt sich die Frage,
wie das mit einem 120 Ohm Vorwiderstand an 3.3V zu schaffen sein
soll: Selbst ohne LED fliessne da nur 27mA. Bei einem angenommenen
Spannungsbedarf von 2.1V (rote LED) und 0.1V Spannungsabfall am
Transistor, wären 4.7 Ohmn passender. Für 3.6V LEDs (blau, weiss)
reichen die 3.3V eh nicht.

Der UDN2981 kann 250mA durch die LEDs schicken, er ersetzt deine
8 Transistoren und 16 notwendigen Widerstände (aber nicht den
CD4051 bzw. 74HC138), allerdings braucht er mehr als 3.3V, eher
5V.

von Janos K. (noshky)


Lesenswert?

Hallo, danke für eure Antworten!

Peter Dannegger schrieb:
> Nimm doch einfach Schieberegister 74HC164. Die lassen sich einfach
> ansteuern und auch kaskadieren für mehr als 8 Ausgänge.
Schieberegister hatte ich ursprünglich auf dem Plan. Besonders reizvoll 
fand ich die Idee, die "1" für die aktive Zeile rotierend durch das 
Register zu schieben (per rekursiver Kaskade oder Feedback oder wie man 
sowas auch nennen möchte).
Die inverse Ansteuerung der Transistor-Basen ist für das Schieberegister 
ein bisschen nervig. Dadurch ist es nicht ganz einfach, mal eben alle 
Leitungen auf "aus" zu legen (aber auch nicht ganz schwer ;)).

Das ist aber nur mein persönlicher Geschmack - ein Schieberegister ist 
auf jeden Fall eine sinnvolle Lösung -> danke für den Rat.
(Ich mache mir erstmal nur ein Bild über die bestehenden Möglichkeiten, 
und will will den Decoder/Demux mal austesten. Auch wenn ich am Ende ein 
Schieberegister verwende oder doch 8 Pins frei habe).


MaWin schrieb:
> Wenn du 24ßmA durch die LED schicken willst, stellt sich die Frage,
> wie das mit einem 120 Ohm Vorwiderstand an 3.3V zu schaffen sein
> soll: Selbst ohne LED fliessne da nur 27mA. Bei einem angenommenen
> Spannungsbedarf von 2.1V (rote LED) und 0.1V Spannungsabfall am
> Transistor, wären 4.7 Ohmn passender. Für 3.6V LEDs (blau, weiss)
> reichen die 3.3V eh nicht.
Ja da war ich leider inkonsequent mit meiner schematischen Zeichnung. 
Für die Matrix am Ende verwende ich gar keinen Widerstand, da für die 
Spalten Treiberbausteine verwendet werden (TLC5916) und der Stromfluss 
also auf der anderen Seite geregelt wird.
(Im Prinzip will ich den wenigen Strom, den ich habe, sowieso nicht 
begrenzen, da man beim Matrix-Multiplexing am besten immer vollen Stoff 
gibt. (So zumindest meine Erfahrung bisher ;)).
Meine Zeichnung ist an der Stelle also quatsch, der Widerstand sollte 
wenigstens keinen Wert haben.

240mA gibt dann doch auch ein PNP (BC807 habe ich im Einsatz) her oder?

Die vielen Bauteile stören mich nicht sonderlich - lieber viele kleine 
als ein großes - lässt sich besser routen :p.
Danke auch für deinen Rat!



Der 74HC138 ist genau das Bauteil, nach dem ich gesucht habe. Die 
Invertierung der Ausgänge passt gut zu der Steuerung der PNP 
Transistoren.

Nochmals Danke für Hilfe und Rat! :-)

von Peter D. (peda)


Lesenswert?

Janosch K. schrieb:
> Die inverse Ansteuerung der Transistor-Basen ist für das Schieberegister
> ein bisschen nervig. Dadurch ist es nicht ganz einfach, mal eben alle
> Leitungen auf "aus" zu legen (aber auch nicht ganz schwer ;)).

Da ist nichts nervig. Der Software ist es schnurzegal, ob da ne 1 oder 0 
durchgeschoben wird.
1
datapin = 1;
2
if( --zaehler == 0 ){
3
  datapin = 0;
4
  zaehler = 8;
5
}
6
taktpin = 0;
7
taktpin = 1;


Peter

von Janos K. (noshky)


Lesenswert?

Peter Dannegger schrieb:
> Da ist nichts nervig. Der Software ist es schnurzegal, ob da ne 1 oder 0
> durchgeschoben wird.

Nur fast egal! Initialisieren kostet 8 Shifts (alle Ausgänge auf "1" 
bringen), Löschen ebenso. Weiterhin "bootet" in meinem Fall die Matrix 
in einem enorm unsicheren Zustand, da alle "Zeilen" aktiv sind. Obwohl 
es eine Invariante in meinem Layout sein muss, dass zu jeder Zeit 
höchstens eine Zeile aktiv ist.

von Peter D. (peda)


Lesenswert?

Elektrisch ist es kein Problem, wenn nach dem Reset kurz mal alle Zeilen 
aktiv sind, der Strom teilt sich dann auf.
Aber wenn es Dich optisch stört, läßt Du eben die Spalten solange dunkel 
(einige µs).
Oder nimm eins mit Output-Enable (74HC595).


Peter

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.