Hallo zusammen, ich habe noch nicht wirklich Erfahrung mit dem Erstellen von elektrischen Schaltungen. Daher verzeiht mir die ein oder andere Begriffsstutzigkeit. Mein Projekt: Ich möchte eine LED Matrix mit 10 Zeilen und 11 Spalten aufbauen und mit dem Raspberry Pi über die GPIO Schnittstelle ansteuern. Letztendlich möchte ich damit eine Wordclock programmieren, aber meine Fragen beziehen sich hier erstmal auf die Bauteile. Bisher liegen folgende Sachen in meinem Warenkorb: 3* 74HC 595 Schieberegister ausreichend 3mm LED rot 300mcd diffus 2.1V (von leds.de) 21 BC 337-40 Transistoren Über Multiplexing und Schieberegister habe ich mich schon ein bisschen eingelesen, blicke allerdings noch nicht ganz durch :-). Meine erste Frage ist: Welche Widerstände brauche ich? Dazu kommt noch: Je LED einen Widerstand oder pro Zeile/ Spalte? Gruß Heronation
Hero nation schrieb: > Meine erste Frage ist: Welche Widerstände brauche ich? > Dazu kommt noch: Je LED einen Widerstand oder pro Zeile/ Spalte? Wenn du multiplext fließt durch jede LED nur 1/#Zeilen der Zeit Strom, also auch Leistung. Energie = Leistung mal Zeit und die Leuchtstärke der LEDs ist proportional zur Energie. Soll heißen, um die maximale Leuchtstärke aus den LEDs zu bekommen, musst du sie mit so viel Strom speisen, damit sich die geringere Leuchtdauer ausgleicht. Die Widerstände sollten also so dimensioniert sein, dass das #Zeilen-Fache des normalen Vorwärtsstromes fließt. VORSICHT: Wenn du das machst und einen Fehler im Programm hast, brennen dir die LEDs gnadenlos ab. VORSICHT: LEDs verkraften normalerweise nicht das 10-Fache ihres normalen Stroms, auch nicht im Multiplexbetrieb, das Datenblatt der LEDs gibt hier Auskunft über den maximalen Peak-Strom. Der liegt wenn ich mich nicht täusche normalerweise so beim etwa 7-Fachen des normalen Stroms, du kannst die Teile also nicht mit voller Helligkeit fahren, wenn du eine 10x11 Matrix baust. Ein Widerstand pro Spalte, wenn du über die Zeilen multiplext.
Wenn du die 10 x 11 Matrix auch so aufbauen willst braucht eine LED 200mA also 10 mal mehr Strom in der kurzen 1/10 Zeit als wenn sie mit 20mA dauerleuchtet, und eine Zeile den Strom von 11 solchen LEDs also 2.2A das schaffen keine BC337. Es reichen 11 Widerstände. Wenn man etwas klüger ist erkennt man dass nicht alle 10 Zeilen zugleich leuchten sondern maximal 4. Dann reichen 80mA und 880mA. Für 80mA muss man keine 595 mit nachgeschalteten Transistoren nehmen, sondern es gibt LED Treiber wie CAT4016 die sogar die Widerstände einsparen helfen. Damit hat man 16 Spalten, also reichen 7 Zeilen, man muss nur geschickt verdrahten. Bleiben 7 Spalten die 1.6 A schalten müssen, dazu gäbe es IRF7301 an 74hc595.
Du möchtest LEDs mit höheren Strömen ansteuern. Du möchtest multiplexen. Du möchtest ein nicht realtime OS nutzen. Pick any two!
Spende deine Transistoren für einen guten Zweck. Kaufe dir weitere 11 Stück 595er. Alle kaskadieren, ergibt 112 Ausgänge. An jeden 595 hängst du über passende Vorwiderstände (für 10-15mA pro LED) jeweils 4 LED gegen Vcc und 4 LED gegen Masse. 1) Sclr runter und rauf 2) Daten (112Bit) 'reinschieben über Sin und Sck 3) Übernehmen mit Rck Fertich!
Hallo, danke für die schnellen und umfangreichen Antworten. Ich habe mir dazu mal ein paar Gedanken gemacht. MaWin schrieb: > Wenn man etwas klüger ist erkennt man dass nicht alle 10 Zeilen zugleich > leuchten sondern maximal 4. Dann reichen 80mA und 880mA. Ich würde zunächst gerne eine komplette LED Matrix aufbauen, ohne darauf zu achten, wie das am Ende genutzt wird. Also sollte es möglich sein, auch alle LEDs leuchten zu lassen. MaWin schrieb: > Für 80mA muss man keine 595 mit nachgeschalteten Transistoren nehmen, > sondern es gibt LED Treiber wie CAT4016 die sogar die Widerstände > einsparen helfen. Damit hat man 16 Spalten, also reichen 7 Zeilen, man > muss nur geschickt verdrahten. Da ich sehr neu bin in diesem Thema, würde ich lieber etwas offensichtlicher arbeiten und weniger "um die Ecke denken". Daher hatte ich daran gedacht, die Matrix in 4 Felder aufzuteilen: Jeweils 5 Zeilen mit 6 Spalten (bei den zwei rechten Feldern ist dann die letzte Spalte nicht vorhanden, müsste aber wahrscheinlich für gleiche Helligkeit irgendwie ausgeglichen werden) Das würde die Ströme wohl verringern. Norbert schrieb: > Du möchtest LEDs mit höheren Strömen ansteuern. > Du möchtest multiplexen. > Du möchtest ein nicht realtime OS nutzen. > > Pick any two! Also meinst du, dass das mit dem Raspberry Pi nicht geht und ich zB einen ATmega nutzen sollte, damit das zuverlässiger läuft? Dazu lasse ich mich gerne überreden. Wollte nur gerne den RasPi nutzen, da ich einen da habe und nebenbei etwas Python lernen wollte. Norbert schrieb: > Kaufe dir weitere 11 Stück 595er. > Alle kaskadieren, ergibt 112 Ausgänge. > An jeden 595 hängst du über passende Vorwiderstände > (für 10-15mA pro LED) > jeweils 4 LED gegen Vcc und 4 LED gegen Masse. Diese Dampfhammermethode gefiel mir anfangs gut, allerdings ist das mit einem recht hohen Verdrahtungsaufwand verbunden, daher schließe ich diesen Weg erstmal aus. Ein Bekannter empfiehlt pro LED einen eigenen Widerstand zu nutzen. Was hätte das für Vorteile? Bezüglich des Aufbaus hatte ich mich an folgende Schaltung gehalten. http://www.mikrocontroller.net/wikifiles/6/64/LED_Matrix_8x5.png Ich hatte naiv einfach gedacht: Ein paar mehr LEDs, Transistoren, Widerstände. Die Werte anpassen und los gehts... Gruß
Hero nation schrieb: > Also meinst du, dass das mit dem Raspberry Pi nicht geht und ich zB > einen ATmega nutzen sollte, damit das zuverlässiger läuft? Dazu lasse > ich mich gerne überreden. Wollte nur gerne den RasPi nutzen, da ich > einen da habe und nebenbei etwas Python lernen wollte. Wenn du multiplexen willst, brauchst du höhere Ströme um halbwegs Helligkeit aus den LEDs zu kitzeln. Was passiert nun, wenn das OS plötzlich mal eine andere Aufgabe als wichtig ansieht und dein Prozess erst 100ms später einen timeslice bekommt? Da wird den zur Zeit aktiven LEDs ganz warm ums Herz. > Norbert schrieb: >> Kaufe dir weitere 11 Stück 595er. >> Alle kaskadieren, ergibt 112 Ausgänge. >> An jeden 595 hängst du über passende Vorwiderstände >> (für 10-15mA pro LED) >> jeweils 4 LED gegen Vcc und 4 LED gegen Masse. > > Diese Dampfhammermethode gefiel mir anfangs gut, allerdings ist das mit > einem recht hohen Verdrahtungsaufwand verbunden, daher schließe ich > diesen Weg erstmal aus. Dafür hättest du keinerlei Timing Probleme und nahezu Null CPU Belastung. Außerdem hätte die LEDs eine akzeptable Helligkeit. > Ein Bekannter empfiehlt pro LED einen eigenen Widerstand zu nutzen. Was > hätte das für Vorteile? > Bezüglich des Aufbaus hatte ich mich an folgende Schaltung gehalten. > http://www.mikrocontroller.net/wikifiles/6/64/LED_Matrix_8x5.png Szenario 1) In der Zeile ist eine LED aktiv. Iled1 = (Vcc-Q1ce-Uf) / R1 (5V - 0,7V - 1,7V) / 68 = 38mA Szenario 2) In der Zeile sind alle 5 LEDs aktiv. Iledx = (Vcc-Q1ce-Uf) R1 5 (5V - 0,7V - 1,7V) 68 5 = 7,6mA und das auch nur wenn alle Uf absolut gleich wären! > Ich hatte naiv einfach gedacht: Ein paar mehr LEDs, Transistoren, > Widerstände. Die Werte anpassen und los gehts... Tja
Norbert schrieb: >> Norbert schrieb: >>> Kaufe dir weitere 11 Stück 595er. >>> Alle kaskadieren, ergibt 112 Ausgänge. >>> An jeden 595 hängst du über passende Vorwiderstände >>> (für 10-15mA pro LED) >>> jeweils 4 LED gegen Vcc und 4 LED gegen Masse. >> >> Diese Dampfhammermethode gefiel mir anfangs gut, allerdings ist das mit >> einem recht hohen Verdrahtungsaufwand verbunden, daher schließe ich >> diesen Weg erstmal aus. > > Dafür hättest du keinerlei Timing Probleme und nahezu Null CPU > Belastung. > Außerdem hätte die LEDs eine akzeptable Helligkeit. Man hat also eine schnelle CPU und muss dann mehr Hardwareaufwand betreiben, damit die schnelle CPU nahezu null Last mit der eigentlichen Aufgabe hat, weil man nur die schnelle CPU durch ein Betriebssystem und interpretierte Programmiersprachen langsam machen kann, während eine langsame CPU sich mit Volllast um die eigentliche Aufgabe kümmern könnte? ;-)
> Szenario 1) In der Zeile ist eine LED aktiv. > Iled1 = (Vcc-Q1ce-Uf) / R1 > (5V - 0,7V - 1,7V) / 68 = 38mA > Szenario 2) In der Zeile sind alle 5 LEDs aktiv. > Iledx = (Vcc-Q1ce-Uf) R1 5 > (5V - 0,7V - 1,7V) 68 5 = 7,6mA > und das auch nur wenn alle Uf absolut gleich wären! Du hast offensichtlich nicht mal ansatzweise verstanden, was in einer LED-Matrix Zeile und Spalte ist, willst aber einem Fragenden was raten. Au weia.
Daniel schrieb: > Man hat also eine schnelle CPU und muss dann mehr Hardwareaufwand > betreiben, damit die schnelle CPU nahezu null Last mit der eigentlichen > Aufgabe hat, weil man nur die schnelle CPU durch ein Betriebssystem und > interpretierte Programmiersprachen langsam machen kann, während eine > langsame CPU sich mit Volllast um die eigentliche Aufgabe kümmern > könnte? ;-) Ich kann nirgends eine 'schnelle' und eine 'langsame' CPU erkennen. Darum geht's noch nicht mal ansatzweise. Es geht darum, eine verlässliche 'Abtastrate' zu erzeugen, die einen zeitlichen Maximalwert nicht überschreiten darf wenn man LEDs mit höherem Pulsstrom betreibt. Wenn du das mit einem normalen Linux System sicherstellen kannst, cool!
MaWin schrieb: > Du hast offensichtlich nicht mal ansatzweise verstanden, > was in einer LED-Matrix Zeile und Spalte ist, > willst aber einem Fragenden was raten. Au weia. Wenn man die von ihm verlinkte Schaltung so ansteuert wie gezeichnet, dann werden die LEDs ausnahmslos mit Überstrom betrieben und brauchen immer ein sauberes Timing. Wenn man die Ansteuerung der Spalten und Zeilen wechselt, werden die LEDs nicht mehr mit Überstrom betrieben, sobald mehr als Eine pro Zeile leuchtet. Hatte eigentlich gedacht das so etwas Triviales sich selbst erklärt. Gerade WEIL es ja um Timing und Übesrtrom ging. Aber man lernt ja nie aus.
> Wenn man die von ihm verlinkte Schaltung so ansteuert wie gezeichnet, > dann werden die LEDs ausnahmslos mit Überstrom betrieben und brauchen > immer ein sauberes Timing. Ja, so ist das bei LED_Matrizen. > Wenn man die Ansteuerung der Spalten und Zeilen wechselt, werden die > LEDs nicht mehr mit Überstrom betrieben, sobald mehr als Eine pro Zeile > leuchtet. Und ansonsten ist alles gut, oder hast du da nicht ein keines etwas vergessen ?
Norbert schrieb: > Wenn du das mit einem normalen Linux System sicherstellen kannst, > cool! Nee, ich kann das sowieso nicht. Ich bin nur (off-topic) verunsichert über den Trend, Kanonen einzusetzen (800 MHz Linuxrechner) und den Spatzen (LED-Matrix ansteuern) dennoch nur mit beträchtlichem Zusatzaufwand erschossen zu bekommen. Ich würde (etwas mehr on-topic) dann vielleicht wirklich einen kleinen Controller für die LEDs nehmen und den Raspberry (oder sonstwas größeres) seriell damit verbinden, wenn Ethernet oder eine aufwändige Benutzerschnittstelle gefordert sind.
Hero nation schrieb: > Ich möchte eine LED Matrix mit 10 Zeilen und 11 Spalten aufbauen und mit > dem Raspberry Pi Das stelle ich mir sehr kompliziert vor, abgesehen von dem hohen Stromverbrauch des RP (700mA). Ein ATmega88 wäre viel besser geeignet und deutlich einfacher zu programmieren. Hero nation schrieb: > 3* 74HC 595 Schieberegister > ausreichend 3mm LED rot 300mcd diffus 2.1V (von leds.de) > 21 BC 337-40 Transistoren Sieht o.k. aus. Ich würde allerdings 11 npn und 10 pnp nehmen, dann spart man die Basiswiderstände und hat kein Ghosting. LED-Vorwiderstände brauchst Du 11. Die Berechnung erfolgt nach der Stromverträglichkeit der LEDs lt. Datenblatt. Ob Du überhaupt den Maximalstrom brauchst, solltest Du vorher ausprobieren.
Ich habe mich jetzt fuer eine Schaltung mit 4 Schieberegistern entschieden. Ein passendes und sehr umfangreiches Tutorial habe ich bei http://christians-bastel-leben.blogspot.de/ gefunden. Mal sehen, was dabei rauskommt.
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.