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?
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
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
> - 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.
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
wenn du PB2 auf 1 also + setzt und PB3 auf 0 also - dann Leuchtet die LED oben links. Warum die blauen Verbindungen? JK
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.