Moin Moin! Ich bin grad dabei eine Uhr zu basteln, die die Zeit mit 132 LEDs anzeigt. Also 60 für die Sekunden, nochmal so viele für die Minuten und 12 für die Stunden. Nun habe ich ja das Problem, dass ich begrenz viele I/O-Pins an meinem µC habe. Also habe ich mir folgendes überlegt. 1) Ich spendiere 12 Pins für die Ansteuerung von 12 LEDs. Das ist ein Block. 2) Dann noch 2 Pins mit denen ich über einen Demultiplexer entweder Sekunden/Minuten oder Stunden auswähle (1 aus 3). 3) Und als letztes noch 3 Pins für die Auswahl (ebenso über einen Demultiplexer) des jeweiligen 12er Blocks (12 aus 60). Ich hoffe das macht soweit Sinn. Nun gehts an die Schaltung. Da der µC nicht so viele LEDs treiben kann, werde ich die LEDs an high Potential anschliessen und dann über einen Low-Pegel am µC-Pin einschalten. Für die beiden anderen Auswahlsignale 2) und 3) benutze ich ja einen Demultiplexer, der ebenso Low-aktive Pegel liefert. Also muss ich insgesamt schonmal mit PNP-Transistoren arbeiten, oder ? Also ich habe mal die folgende kleine Schaltung zum rumprobieren erstellt: Der Digitale Eingang oben links entspricht 2) und die unteren dem Punkt 1). Habe nur zur Vereinfachung nur 3 LEDs statt 12 genommen. EIgentlich macht die Schaltung schon fast, was ich will. Das Problem seht ihr in Bild 2. So ist noch alles in Ordnung, aber wenn ich nun den Eingang oben Links auf High setzte, stürzt der Simulator ab ;) Hmm also falls ihr ein paar Ideen habt, wie ich das ganze noch optimieren kann, bzw. fehlerfrei kriegen kann, wäre ich euch sehr dankbar :) Vielen Dank für Eure Hilfe :)
Das mit deiner Schaltung ist schön und gut, aber wie willst du das Layout machen? Der wesentlich einfachere Weg wären ein paar Schieberegister... Meines Erachtens machst du dir unnötig einen Knoten ins Hirn. Warum moppelst du das mit 2 Steuerleitungen eigentlich doppelt? Wenn dei linke untere alle Transistoren (=LEDs) einschaltet und die linke obere das selbe macht, was hast du dann gewonnen? Besser du lässt die ganzen Transistoren unten weg und macht eine UND-Verknüpfung der beiden linken Signale auf den oberen Transistor.
Danke schonmal für deine Tipps! Ich weiss, dass es in der von mit hochgeladenen Beispielschaltung unnötig aussieht 2 Steuerleitungen auf der linken Seite zu haben. Aber ich möchte ja insgesamt 132 LEDs anschliessen. Dann bräuchte ich die oberste Leitung um zwischen Minuten/Sekunden und Stunden zu wählen und die untere Linke um je einen Block aus 12 LEDs aus den 60 LEDs (entfällt bei Stunden) zu wählen. Aber das ist wirklich ganz schön Transistorlastig. Wie sähe denn dein Vorschlag mit den Schieberegsitern aus ?
Siggi schrieb: > Wie sähe denn dein > Vorschlag mit den Schieberegsitern aus ? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Kaskadieren_von_Schieberegistern Anstelle von 2 dann eben 132 / 8 = 17 Stück Die im Kreis entlang des Zifferblatts angeordnet werden, verbunden mit 3 Leitungen. Da du aber Sekunden, Minuten und Stunden jeweils in einem eigenen Kreis anordnen willst, würden sich 3 getrennte Schieberegisterketten anbieten: 9 Pins am Prozessor. (Über Schieberegister für die Stunden kann man streiten) Auch gibt es von TI Led-Treiber, die in einem IC gleich 24 IC-Treiberstufen integriert haben (ist aber im Prinzip immer noch ein Schieberegister)
Nimm ein paar 74HC595 und einen Schieberegisterausgang pro LED... http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister Ich würde das so machen: Einen einzigen Schieberegisterring für 60 LEDs und dann die Sekunden-, Minuten- und (an jeden 5. Ausgang) die Stunden-LEDs an die Schieberegisterausgänge anschliessen und diese drei LED-Ketten multiplexen.
Siggi schrieb: > Ich bin grad dabei eine Uhr zu basteln, die die Zeit mit 132 LEDs > anzeigt. Also 60 für die Sekunden, nochmal so viele für die Minuten und > 12 für die Stunden. Nun habe ich ja das Problem, dass ich begrenz viele > I/O-Pins an meinem µC habe. Wieviele LEDs leuchten denn maximal gleichzeitig? Wenn Du für Stunde/Minute/Sekunde nur je eine LED verwenden willst, also max. 3 LEDs gleichzeitig leuchten, könntest Du Charlieplexing verwenden. Dann kommst Du mit 12 IO-Pins aus. Sobald Du allerdings ganze Kreisabschnitte leuchten lassen möchtest, wird das unpraktikabel, weil man mit Charlieplexing zu einem Zeitpunkt max. eine LED leuchten lassen kann und das Tastverhältnis zu ungünstig werden könnte. Viele Grüße, Simon
Lothar Miller schrieb: > Nimm ein paar 74HC595 und einen Schieberegisterausgang pro LED... > http://www.mikrocontroller.net/articles/AVR-Tutori... > > Ich würde das so machen: > Einen einzigen Schieberegisterring für 60 LEDs und dann die Sekunden-, > Minuten- und (an jeden 5. Ausgang) die Stunden-LEDs an die > Schieberegisterausgänge anschliessen und diese drei LED-Ketten > multiplexen. Die Idee mit den Schieberegistern ist wirklich gut :) Habe meine Schaltung mal mit hochgeladen. So müsste das funktionieren, oder ? (Minuten und Stunden habe ich nun nicht mit eingezeichnet. die würden dann auch noch einen Transistor, wie oben, bekommen und mit an die Schieberegsiter angeschlossen werden)
die schieberegister können die LEDs aber nicht treiben. entweder du schaltest da noch einen UDN oder ULN dazwischen, oder benutzt einen TPIC595 oder einen der vorhin erwähnten Treiber von TI.
Jetzt machst du aus dem Q1 noch einen PNP. Und wenn nur 1 LED gleichzeitig leuchten soll, dann reicht 1 einziger Vorwiderstand für die gesamte Kette aus. Und dann das Ganze noch erweitern mit einem Q2 für die Minuten und einem Q3 für die Stunden und fertig. EDIT: > die schieberegister können die LEDs aber nicht treiben. Doch das geht locker.
Vlad Tepesch schrieb: > die schieberegister können die LEDs aber nicht treiben. Warum nicht? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Acht_LEDs_mit_je_20mA_pro_Schieberegister Peter
Da die 5V Betriebsspannung von oben kommen, müssen die Schieberegsiter noch nur den Strom nach Masse ableiten. Im Datenblatt steht zu den 74HC595 Schieberegistern, dass die 70 mA über VCC bzw. GND ableiten können. Ich habe meine Widerstände so dimensioniert, dass durch jede Diode (wenn eingeschaltet) knapp 7 mA fliessen. 8 mal 7 mA = 56 mA < 70 mA. Funktioniert das nicht ?
Siggi schrieb: > Diode (wenn eingeschaltet) knapp 7 mA fliessen. 8 mal 7 mA = 56 mA < 70 > mA. Funktioniert das nicht ? Doch, das funktioniert schon. Es gibt ja auch low-Current LED, die schon mit wesentlich weniger Strom eine Helligkeit erzeugen, dass du zum Ablesen eine Sonnenbrille brauchst.
Lothar Miller schrieb: > Jetzt machst du aus dem Q1 noch einen PNP. Warum PNP? > Und wenn nur 1 LED gleichzeitig leuchten soll, dann reicht 1 einziger > Vorwiderstand für die gesamte Kette aus. Da bin ich noch am überlegen, wie ich es haben möchte :-)
> dass die 70 mA über VCC bzw. GND ableiten können. ... ohne dass sie sofort kaputtgehen. > Ich habe meine Widerstände so dimensioniert, dass durch jede Diode > (wenn eingeschaltet) knapp 7 mA fliessen. 8 mal 7 mA = 56 mA < 70 mA. > Funktioniert das nicht ? Wie gesagt: wenn du nur 1 LED einschalten willst, ist 1 Widerstand ausreichend. Du willst doch niemals alle gleichzeitig einschalten, oder? BTW: Nimm "High Efficency" bzw. "Low Current" LEDs
Siggi schrieb: > Lothar Miller schrieb: >> Jetzt machst du aus dem Q1 noch einen PNP. Wieso denn PNP? Geht nicht auch NPN? in diesem Fall? Oder ergibt sich sonst ein anderer Vorteil?
> Warum PNP? PNP: Emitter an 5V, Basis über Widerstand am Portpin, Kollektor an die LED-Sammelleitung. Dann arbeitet der Transistor im Schaltbetrieb. So wie du es gezeichnet hast, kommen bei den LEDs maximal 5V-Ube = 5V-0.7V = 4.3V an. Es fallen also am Transistor 0.7V ab. Solltest du dann aber mal auf die Idee kommen, alle 60 LEDs einzuschalten, dann muß dein Transistor 420mA schalten, was zu einer Verlustleistung von 0,3W führt. Das musst du bei der Transistorauswahl beachten... EDIT: So ein PNP wie der obere Transistor in deiner zu Beginn geposteten Schaltung wäre richtig.
Siggi schrieb: > Da der µC > nicht so viele LEDs treiben kann, werde ich die LEDs an high Potential > anschliessen und dann über einen Low-Pegel am µC-Pin einschalten. btw. auch das funzt meinst nicht, AVRs können zB nur 20mA als Quelle (also raus) und -20mA rein (also wenn bei LOW die Led angeht) aber da ist ja eh schon anders
Lothar Miller schrieb: > So wie du es gezeichnet hast, kommen bei den LEDs maximal > 5V-Ube = 5V-0.7V = 4.3V an. Es fallen also am Transistor 0.7V ab. > Solltest du dann aber mal auf die Idee kommen, alle 60 LEDs > einzuschalten, dann muß dein Transistor 420mA schalten, was zu einer > Verlustleistung von 0,3W führt. Das musst du bei der Transistorauswahl > beachten... Ok vielen Dank! Das hab ich geändert. Ganz kurz nur nochmal für mein Verständnis. Das mit den 0,7 V habe ich verstanden. Ist es richtig, dass bei PNP Transistoren die Spannung zwischen Emitter und Kollektor nur etwa 0,2 V beträgt? Somit fällt also weniger am Transisor ab und bei den LEDs kommen dann etwa 4,8 V an. Das ist der Vorteil richtig? Für den Fall, dass alle LEDs leuchten sollen, muss ich aber trotzdem bedenken, dass der Transistor einen erheblichen Strom schalten muss?
> Ist es richtig, dass bei PNP Transistoren die Spannung zwischen > Emitter und Kollektor nur etwa 0,2 V beträgt? Nicht ganz. Es hat rein gar nichts mit PNP oder NPN zu tun, sondern nur mit der Ansteuerart und dem Basisstrom. Es ist ganz einfach so, dass zwischen Basis und Emitter eines jeden Transistors 0,7V abfallen. Und wenn bei deiner NPN-Schaltung an der Basis 5V vom uC anliegen, können am Emitter nur 4,3V sein. Und wenn am Emitter nur 4,3V sind, dann fallen an der CE-Strecke 5V-4,3V = 0,7V ab. Du könntest den Transistor weiter aufsteuern, wenn du an der Basis 5,7V anlegtest. Dann bliebe nur noch Ucesat (=ca. 0,2V) übrig. Wenn du aber den Emitter eines PNP-Transistors an 5V anlegst und die Basis über einen Widerstand in Richtung GND ziehst, dann kannst du soviel Strom durch die Basis schicken, dass der Transistor komplett durchsteuert. Und damit hast du auch wieder die Ucesat als Spannungsabfall.
Peter Dannegger schrieb: > Warum nicht? > > http://www.mikrocontroller.net/articles/AVR-Tutori... > > > Peter naja, hier werden die "Absolute Maximum Ratings" aber zum Standardfall gemacht.
> Charlieplexing verwenden. Komplementary LED drive, um genauer zu sein: http://ww1.microchip.com/downloads/en/AppNotes/91029a.pdf > Dann kommst Du mit 12 IO-Pins aus. Und ohne weitere Bauteile ausser 12 Vorwiderständen, allerdings im 1:3 Multiplex. Daher kann es sinnvoller sein, 9+9+4 zu verwenden, und die LEDs laufen mit vollem Strom den uC liefern kann ohne Multiplex.
>>> Dann kommst Du mit 12 IO-Pins aus.
Aber das Layout möchte ich mal sehen. Ich möchte behaupten, mit den
Schieberegistern könnte man einseitig hinkommen...
Okay danke für Eure Hilfe schonmal :) Mit dieser Schaltung werd ichs mal versuchen :)
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.