Forum: Mikrocontroller und Digitale Elektronik RGB Multiplexer


von Max (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ihr müsst mir mal helfen. Ich bekomm da nicht so ganz was auf die Reihe.
Ich will die drei RGB Led's via multiplexing anzusteuern. So womit ich 
jetzt nicht klar komme ist die PWM steuerung. Folgende Werte sind nur 
Beispielwerte.

- Reihe 1 durch die PWM 2.5V z.B.
- Reihe 2 durch die PWM 3.7V z.B.
- Reihe 3 erstmal egal

So jetzt kommt mein Problem

- Spalte 1 schalte ich direkt durch. Also auf Masse.

Jetzt würden LED 1 und 4 so helleuchten wie ich will. Jetzt kommt mein
Knackpunkt.

- Spalte 2 schalte ich so das der Mittelwert der PWM sagen wir mal 1.2V 
beträgt.

Jetzt würde auch LED 2 so Leuchten wie ich will. Allerdings kann ich 
jetzt LED 5 keine andere Helligkeit zuordnen, weil sie ja schon durch 
die PWM der Reihe 2 und Spalte 2 bestimmt wird.

Wo ist mein Denkfehler. Denn ich hab jetzt schon öfters gelesen und mein 
Kollege ist überzeugt davon das es geht.

LG Max

von STK500-Besitzer (Gast)


Lesenswert?

Du wirst unterschiedliche Helligkeiten in deiner MAtrix nur hinbekommen, 
wenn du die LEDs einzeln ansteuerst.

von Max (Gast)


Lesenswert?

Also ist Multiplexing mit einer gemeinsamen Anode nicht möglich?

von STK500-Besitzer (Gast)


Lesenswert?

>Also ist Multiplexing mit einer gemeinsamen Anode nicht möglich?

Doch, warum sollte das nicht möglich sein?

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Max wrote:
> Also ist Multiplexing mit einer gemeinsamen Anode nicht möglich?

Natürlich ist das möglich, aber nicht so wie Du denkst. Zunächst einmal 
bedeutet Multiplexing, dass Du z.B. eine Spalte nach der anderen streng 
zyklisch aktivierst, während Du die Reihen so ansteuerst, dass die 
gewünschten LEDs einer Spalte leuchten, wenn die entspechende Spalte 
gerade aktiviert ist. Auf diese Weise kannst Du jede beliebige LED 
leuchten lassen oder ausschalten, also jedes x-beliebige Muster 
erzeugen. Das geht natürlich nicht nur im 0/100%-Modus sondern auch mit 
jeder beliebigen Helligkeitsabstufung. Dazu aktiviersts Du die Reihen 
nicht während der Gesamtzeit, in der eine Spalte aktiviert ist sondern, 
je nach gewünschter Helligkeit, nur einen Teil dieser Zeit. Mit einem 
µ-Controller sollte das zu machen sein. Für die einzelne LED in einer 
3x3-Matrix bedeutet das allerdings, dass sie nur mit einer PWM von 
0...33,3% leuchten kann. Zur Nutzung der vollen Leistung einer LED ist 
dazu der 3-fache LED-Nennstrom erforderlich.

Jörg

von Max (Gast)


Angehängte Dateien:

Lesenswert?

Aso ok! Also Programmiertechnisch würde das so aussehen, das die Spalten 
einen Zyklus an sein und dann wird zu nächsten Spalte gegangen. Sprich 
der Zähler zählt von 0 - 255. Solang ist die Spalte 1 an. Wenn er bei 0 
wieder anfängt wieder die Spalte 2 aktiviert. Und so weiter. So weit 
richtig?

Nehmen wir einen Blauton. R = 145; G = 49; B = 228.

Also:

Spalte 1 zähl 0-255 dabei ist Rot (Pin1) 145 Zeiteinheiten an und den 
Rest aus.

Dann Spalte 2 zähl 0-255 dabei ist Grün (Pin1) 49 Zeiteinheiten an und 
den Rest aus.

Dann Spalte 2 zähl 0-255 dabei ist Grün (Pin1) 228 Zeiteinheiten an und 
den Rest aus.

So richtig?!

-----

Noch ne andere Frage. Mein Kollege hat die obige Zeichnung gemacht. Wo 
ist da der Unterschied. Bei mir wären es 9 Reihen und 3 Spalten. Bei ihm 
irgendwas anderes?! Ist seine Version eventuell besser auf bezug auf den 
Nennstrom. Wenn ich das richtig sehe müssen ja meine LED's pro Spalte 
kurzzeitig 180 mA aushalten?! Das muss dann auch der entsprechende 
Widerstand sein, oder? Sprich ca. 66 Ohm bei 12V?!

ICH DANKE EUCH! :) Ich kann nämlich deswegen schon net schlafen.

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Max wrote:
> Aso ok! Also Programmiertechnisch würde das so aussehen, das die Spalten
> einen Zyklus an sein und dann wird zu nächsten Spalte gegangen. Sprich
> der Zähler zählt von 0 - 255. Solang ist die Spalte 1 an. Wenn er bei 0
> wieder anfängt wieder die Spalte 2 aktiviert. Und so weiter. So weit
> richtig?

Ja, so kann man es machen

> Nehmen wir einen Blauton. R = 145; G = 49; B = 228.
>
> Also:
>
> Spalte 1 zähl 0-255 dabei ist Rot (Pin1) 145 Zeiteinheiten an und den
> Rest aus.
>
> Dann Spalte 2 zähl 0-255 dabei ist Grün (Pin1) 49 Zeiteinheiten an und
> den Rest aus.
>
> Dann Spalte 2 zähl 0-255 dabei ist Grün (Pin1) 228 Zeiteinheiten an und
> den Rest aus.
>
> So richtig?!

Ja

> Noch ne andere Frage. Mein Kollege hat die obige Zeichnung gemacht. Wo
> ist da der Unterschied. Bei mir wären es 9 Reihen und 3 Spalten. Bei ihm
> irgendwas anderes?!

in der 1. Zeichnung sind 3 RGB-LEDs in einer 3x3-Matrix angeordnet
in der 2. Zeichnung sind 9 RGB-LEDs in einer 9*3-Matrix angeordnet

> Ist seine Version eventuell besser auf bezug auf den
> Nennstrom. Wenn ich das richtig sehe müssen ja meine LED's pro Spalte
> kurzzeitig 180 mA aushalten?! Das muss dann auch der entsprechende
> Widerstand sein, oder? Sprich ca. 66 Ohm bei 12V?!

Ich weiss weder, welches jetzt Deine Zeichnung ist noch mit wieviel 
Strom die LEDs normalerweise betrieben werden sollen/müssen/dürfen.

Jörg

von Max (Gast)


Lesenswert?

1. Zeichnung ist von mir. Ich hatte nur jetzt keine Lust 9 Rot, 9 Grüne 
und 9 Blaue untereinander zu machen.

Also ist kein Unterschied zwischen Zeichnung 1 und 2?! Hab ich bei 
beiden Zeichnungen das "Problem" mit dem kurzzeitigen Peakstrom?!

Angenommen jede LED braucht 23 mA. (max. 50mA) Was würdest du denn für 
einen Mosfet empfehlen.

von Max (Gast)


Lesenswert?

So dann gibt es doch ein paar Dinge die mir noch net ein Leuchten.
Nehme wir mal den Artikel also eagle vorlage. Bei mir wäre es halt dann 
9 Zeilen und 3 Spalten. Spalte 1 wäre Rot, Spalte 2 wäre Grün, Spalte 3 
Blau.
Jetzt die Fragen.

1.) Wo tu ich jetzt die Vorwiderstände genau hin? (Warum dann an die 
Position?)

2.) Welchen Wert muss der Vorwiderstand haben? Bzw. wie rechne ich das. 
Denn Rot, Grün bzw. Blau brauchen ja jeweils einen anderen Widerstand um 
auf 20mA zu kommen. Also kann ich ja schonmal keinen einheitlichen 
Zeilen-Vorwiderstand nehmen. Kommt der dann in die Spalte?

3.) Wie ist das mit dem Pulsstrom zu verstehen? Das ich einen höhren 
Strom brauche, damit alle LED die gleiche Helligkeit haben leuchtet mir 
vielleicht noch ein. Aber wie kommt der hohe Strom zusammen.

4.) Ich hab jetzt auch öfters gelesen, dass es Probleme mit der Frequenz 
geben könnte. Warum ist das so?

Ich danke Euch! :)

LG Max

von Max (Gast)


Angehängte Dateien:

Lesenswert?

So ich hab mal eine fixe Eagle Skizze gemacht. Kann ich das so 
schalten?!

LG Max

von Max (Gast)


Lesenswert?

Keiner ne Antwort berat?! Och büdde...

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Max wrote:
> Keiner ne Antwort berat?! Och büdde...

Ich finde es garnicht so schlecht, wenn meine Familie und ich ein Dach 
überm Kopf haben und nicht hungern müssen. Daneben brauche ich einen 
Internet-Anschluß und Strom für den Computer, damit ich Dir antworten 
kann. Daher sah ich mich genötigt, statt Dir sofort zu antworten, mich 
mit anderen Problemen zu befassen, und zwar mit den Problemen zahlender 
Kunden. Ich kann Dich gerne in diesen exclusiven Kreis mit aufnehmen und 
würde Dich dann genauso bevorzugt behandeln. Ansonsten wirst Du wohl 
warten müssen bis ich Zeit und Muse habe. Den anderen kompetenten 
Antwortgebern wird es vermutlich ähnlich gehen.
Ich muß mich auch jetzt kurz fassen:

1. Die Vorwiderstände kommen dort hin, wo die Parallelausgabe 
stattfindet, also in diesem Fall in die 9 Reihen. Nur dann bekommt jede 
LED einer Spalte einen eigenen Widerstand.

2. Der Vorwiderstand muß so bemessen sein, dass er bei der Differenz von 
Ansteuerspannung und LED-Flußspannung den 3-fachen Nennstrom durchläßt 
(bei Spaltenmultiplexer). In diesem Fall wäre es u.U. sinnvoller, die 
Reihen zu multiplexen (9-facher Nennstrom) und die unterschiedlich 
großen Vorviderstände in die Spalten zu legen

3. Wenn eine LED im Mittel max. 1/3 bzw. 1/9 der Zeit leuchtet, muß sie 
das mit 3-fachen, bzw. 9-fachem Strom tun, um auf ihre Nennleistung zu 
kommen.

4. Bei so wenigen LEDs sollte es keine Probleme mit der Frequenz geben

Die angehängt Schaltung wird nicht funktionieren. Mit einem MOSFET als 
Sourcefolger in den Zeilentreibern bekommst Du bei 5 V Steuerspannung 
kaum mehr als 3 V für die LEDs. Besser wäre ein BC337 in 
Kollektorschaltung. Da kommen noch über 4 V raus. Ebenso ist es 
unsinnig, die Zeilentreiber mit mehr als 5 V zu versorgen. Das 
produziert nur zusätzliche Verlustleistung in den Transistoren.

Jörg

von Max (Gast)


Lesenswert?

Danke Jörg! ;-)

Ich sah nur meinen Thread wirder im Nervana versinken. Danke für die 
Antwort.

zu 1. und 2.)
Multiplexe ich denn jetzt eigentlich nicht die Reihen?! Denn so bin ich 
auf den 51 Ohm Widerstand gekommen. (9 facher Nennstrom)

Wenn ich jetzt Spalten muxe muss ich ja, wie du geschrieben hast in jede 
Reihe einen Widerstand machen. Berechne ich dann den Vorwiderstand für 
den Blaue Led?! Sprich R= (12V-3,2)/60mA = 146,6 Ohm (theoretisch)

zu 4.)

Ja das mit dem Mosfets ist mir nach späteren draufschauen auch 
aufgefallen. Vorwiderstand und LED müssten eigentlich an den Drain. Hm 
müsste ich mir noch mal Gedanken machen. Es fehlen ja auch noch 100kOhm 
am Gate nach Masse, was mir gerade auch noch aufgefallen ist... ;-)

Aber den den BC337 schau ich mir mal an.

Das mit der Frequenz würde mich aber im allgemeinen trotzdem noch 
interessieren. :-)

So dann danke ich dir schon mal Jörg!

Gute Nacht
Max

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Max wrote:

> zu 1. und 2.)
> Multiplexe ich denn jetzt eigentlich nicht die Reihen?! Denn so bin ich
> auf den 51 Ohm Widerstand gekommen. (9 facher Nennstrom)

Das ist zwar auch eine Frage der sprachlichen Definition, aber Du hast 
weiter oben geschrieben, dass Du die Spalten 1 bis 3 zyklisch aktivieren 
willst. Zur Erinnerung:
> Aso ok! Also Programmiertechnisch würde das so aussehen, das die Spalten
> einen Zyklus an sein und dann wird zu nächsten Spalte gegangen. Sprich
> der Zähler zählt von 0 - 255. Solang ist die Spalte 1 an. Wenn er bei 0
> wieder anfängt wieder die Spalte 2 aktiviert. Und so weiter. So weit
> richtig?

Das verstehe ich als multiplexen der Spalten und dafür müssen die LEDs 
mit dem 3-fachen Nennstrom betrieben werden.

> Das mit der Frequenz würde mich aber im allgemeinen trotzdem noch
> interessieren. :-)

Der komplette Zyklus sollte nicht länger als 10 ms (100 Hz) sein, damit 
die LEDs nicht flimmern. Die Multiplexfrequenz und der zu schaltende 
Strom multipliziert sich mit der Anzahl der zu schaltenden Reihen oder 
Spalten. Wenn Du hohe Ströme schnell schalten willst gibt es häufig 
Probleme mit Funkstörung (EMV) und induktiven Spannungsspitzen bzw. 
kapazitiven Verkopplungen, insbesondere bei größeren Leitungslängen. 
Außerdem müssen die verwendeten LED genügend schnell eio- und 
ausschalten. Deswegen wird man die Multiplexfrequenz nicht höher wählen 
als unbedingt nötig. Andernfalls kann es neben den EMV-Problemen auch 
zum Übersprechen zwischen den LEDs kommen, d.h. LEDs, die ausgeschaltet 
sein sollten, glimmen mehr oder weniger hell

Jörg

von Max (Gast)


Lesenswert?

So dann grabe ich den Thread mal wieder aus!

Würde das auch mit einem MAX7219 gehen?!

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.