Forum: Mikrocontroller und Digitale Elektronik LED Matrix - Steuerung der Spalten und Zeilen


von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte eine einfache LED Matrix basteln und über Multiplexing 
steuern. In dem Artikel "LED-Matrix" ist das ja recht genau beschrieben:

http://www.mikrocontroller.net/articles/LED-Matrix

Nur zwei Verständnisfragen:

- Im beigefügten Schaltplan kommen die Vorwiderstände in die Zeilen 
zwischen den Prozessorpin und R1, R2 usw., richtig?

- Zur Steuerung steht im Artikel:

"Der Ablauf der Steuerung ist recht einfach:

1.alle Spalten ausschalten, Muster für Spalte C1 an Zeilen R1..R7 
anlegen, Spalte C1 einschalten
2.Spaltenmultiplexzeit warten
..."

--> Spalte ausschalten bedeutet, den Pin an Cx auf 1 setzen, oder?
--> Muster an Zeilen R1..R7 anlegen --> bedeutet das, für die 
angeschalteten LEDs eine 0 setzen und für die ausgeschalteten LEDs eine 
1?

Also wenn eine LED angehen soll, muss Rx = 0 und Cx = 1 sein - stimmt 
das so?

von Jürgen K. (Gast)


Lesenswert?

Wenn man den positiven Anschluss einer LED an den +Pol legt, dann lässt 
sie sich mit einer 0 Am Port einschalten, wenn man den negativen 
Anschluss an minus legt, dann lässt sie sich mit einer 1 am Portregister 
einschalten...

JK

von 4toTakoe (Gast)


Lesenswert?

Mike schrieb:
> zwischen den Prozessorpin und R1, R2 usw., richtig?

kommt drauf an, ob du die Spalten oder die Zeilen multiplext. Laut 
Artikel wird Spaltenmultiplexing betrieben, also Ja, die Widerstände 
zwischen µC und "R1 - Rx"

Mike schrieb:
> Spalte ausschalten bedeutet, den Pin an Cx auf 1 setzen, oder?

alle Spalten aus und nur die erste Spalte ein...aber die Spalten werden 
gegen Masse geschalten mit einem entsprechenden Transistor oder Mosfet.

Mike schrieb:
> bedeutet das, für die angeschalteten LEDs eine 0 setzen und für die
> ausgeschalteten LEDs eine 1?

genau anders herum.

Mike schrieb:
> Also wenn eine LED angehen soll, muss Rx = 0 und Cx = 1 sein - stimmt
> das so?

nein. es müssen in dem Sinne beide "1" sein. Wobei Cx wie bereits 
erwähnt gegen Masse geschalten wird. direkt steuerst du nur den 
Spalten-Transistor/Mosfet an.

quasi so:     Cx
---           |
µC |-----Rv--|<
   |          |
---          GND

von MaWin (Gast)


Lesenswert?

> - Im beigefügten Schaltplan kommen die Vorwiderstände in die Zeilen
> zwischen den Prozessorpin und R1, R2 usw., richtig?

Je, wenn R die Zeilen sein sollen und wie weiter unten beschrieben 
bedeit werden sollen. Und ob die Prozessorpins genug Strom liefern ist 
auch sehr zweifelhaft.

> Spalte ausschalten bedeutet, den Pin an Cx auf 1 setzen, oder?

Nein. Eine LED ist nicht ohne Grund ein Pfeil weil durch die Strom in 
Pfeilrichtuung fliesst damit sie leuchtet.

> Muster an Zeilen R1..R7 anlegen --> bedeutet das, für die
> angeschalteten LEDs eine 0 setzen und für die ausgeschalteten
> LEDs eine 1?

Nein.

von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Erstmal vielen Dank!

Ganz hab ich's noch nicht verstanden... anbei eine Skizze zur 
Verdeutlichung:

- Ich dachte ursprünglich, die roten Verbindungen wären ausreichend - 
dass der Strom quasi aus PB2 durch den Vorwiderstand und die LED in PB3 
fließen würde (als Beispiel). Aber ist wohl ein grundsätzlicher 
Denkfehler?

- Wenn ich 4toTakoe richtig verstehe, müsste ich die blauen Verbindungen 
noch ergänzen und in diese Verbindungen noch einen Transistor oder 
Mosfet einbauen. Was ist da der Unterschied? Und wie würde ich den genau 
einbauen?
--> Basis an PB3 bzw. PB4
--> Collector an LED
--> Emitter Masse
(???)

MfG
Mike

von Jürgen K. (Gast)


Lesenswert?

wenn du PB2 auf 1 also + setzt und PB3 auf 0 also - dann Leuchtet die 
LED oben links. Warum die blauen Verbindungen?

JK

von Mike (Gast)


Lesenswert?

hatte ich eigentlich auch angenommen...

Aber die Antwort von 4ToTake hat mich etwas verunsichert:

"...aber die Spalten werden gegen Masse geschalten mit einem 
entsprechenden Transistor oder Mosfet... es müssen in dem Sinne beide 
"1" sein. Wobei Cx wie bereits erwähnt gegen Masse geschalten wird. 
direkt steuerst du nur den Spalten-Transistor/Mosfet an."

Oder ist das nur eine (bessere) Alternative? Und wie würde ich diese 
Lösung genau schalten --> dafür die blauen Verbindungen, wie ich es 
verstehen würde....

Mike

von Karl H. (kbuchegg)


Lesenswert?

Ich vermute mal, die ist nicht so recht klar, wie man sich den 
jeweiligen Transistor vorstellen muss.

Stell ihn dir als Schalter vor.
Wenn du ihn von deinem Portpin aus mit einer 0 versorgst, dann ist der 
Schalter offen - kein Strom kann fliessen
WEnn du ihn von deinem Portpin aus mit einer 1 versorgst, dann ist der 
Schalter geschlossen - Strom kann fliessen

Beim Multiplexing 'schliesst' du genau jene Schalter (Transistoren), so 
dass sich ein STromfluss durch die LED ergibt, die du leuchten lassen 
willst.


Das ist also anders, als wie wenn du die LED direkt an die Portpins 
hängst.
Da stellst du mit den Portpins das jeweilige Potential an den 
LED-Anschlüssen ein. Mit Treibertransistoren machst du das im Prinzip 
auch, aber indirekt, indem du den jeweiligen 'Schalter' öffnest oder 
schliesst.

Du kannst aber nicht direkt an den Portpin gehen, weil der Portpin nicht 
den für den Betrieb der LED notwendigen Strom aufbringen kann. Schon gar 
nicht wenn es viele sind. Denn wenn in deinem Beispiel 2 LED leuchten 
sollen, dann landen beide am gleichen Portpin. Und das ist dem zuviel.

Und da kommen jetzt die Transistoren ins Spiel. Einen Transistor kann 
der µC ansteuern. Und der Transistor kann viel mehr STrom durchlassen.

Daher braucht man immer bei einer LED-Matrix (ausser vielleicht bei 
einer kleinen 2*2) Treibertransistoren, weil man sonst den Strom nicht 
zustandekriegt.
D.h. deine Verschaltung ist sowas wie der naive Ansatz, der in der 
Praxis daran scheitert, dass der µC den Strom nicht zustandebringt. Du 
hast die Prinzip-Skizze im Wiki zu wörtlich genommen.

von Karl H. (kbuchegg)


Lesenswert?

Ich greif mal einfach eine LED als Prinzipskizze heraus


    +---------+
              |
          PB2 ---------------+
              |              | Anode
              |             --
              |             \/
              |            ----
              |              | Kathode
          PB3 ---------------+
              |
    +---------+

Damit diese LED in dieser Verschaltung leuchten kann, muss PB2 auf 1 
(also +5V) und PB3 auf 0 (also 0V) sein. Denn nur dann sieht die LED an 
ihrer Annode eine höhere Spannung als an ihrer Kathode und leuchet.
Bei allen anderen Kombinationen leuchtet da nichts.
In Kürze:  PB2 - 1
           PB3 - 0

Jetzt fügst du Treibertransistoren ein. Diese Treibertransistoren 
fungieren wie Schalter.

                              o +5V
    +----------+              |
               |            \   Transistor, der die Anode der LED mit
            PB2--------------\  +5V verbindet
               |              |
               |             -- Anode
               |             \/
               |            ----
               |              |
            PB3-------------\   Transistor, der die Kathode der LED mit
               |             \  0V verbindet
   +-----------+              |
                            --+--- GND


Die LED kann nur dann leuchten, wenn beide Schalter geschlossen sind. 
Einer alleine reicht nicht. Damit die Schalter geschlossen werden, 
müssen aber sowohl PB2 als auch PB3 eine 1 ausgeben. Denn so ist das ja 
gebaut: eine 1 schliesst den Schalter, eine 0 öffnet ihn.

D.h. hier hast du in der Ansteuerung
   PB2 - 1
   PB3 - 1

nur dann leuchtet die LED.


Und da liegt die Diskrepanz zwischen dir und 4ToTakoe.
Du hast von ersterem gesrprochen. Er von letzterem. Und das aus gutem 
Grund. Denn im Regelfall benötigt man bei einer LED-Matrix diese 
Transistor-Schalter. Warum? Weil der µC den Strom nicht transportieren 
kann, der notwendig ist um die LED einer Spalte gemeinsam leuchten zu 
lassen.
Denn, um auf dein letztes Beispiel zurückzukommen:
Damit die beiden LED in deiner rechten LED-Spalte leuchten können, kommt 
der Strom aus PB0 und PB2 heraus. Soweit noch kein Problem. Aber beide 
Pfade führen über die jeweiligen LEDs zurück zu PB3. Und da liegt dann 
der 'Flaschenhals'. PB3 schafft das dann nicht mehr mit dieser 
Strommenge zurechtzukommen, die 'von beiden LED kommend' nach Masse 
abgeführt werden muss.

von Mike (Gast)


Lesenswert?

Jetzt versteh ich's!!

@ Karl Heinz: Deine Erläuterungen in den beiden Beiträgen sind "genial" 
- beantwortet genau meine Fragen und Unklarheiten - besten Dank! Hast 
echt Talent, die Dinge auf den Punkt zu bringen, so dass sie auch ein 
Anfänger wie ich begreift...

MfG
Mike

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.