Hallo Ich versuche gerade eine Schaltung für eine Laufschrift zu entwerfen. Mit einer 5x25 LED-Matrix, ATMEGA16 und einer PS2-Buchse um mit einer Tastatur den Text eingeben zu können. Die Leds werden durch ATMEGA16 und durch BCD/Dezimal Wandler mit Multiplexverfahren angesteurert, wobei noch die Frage offen ist ob immer jede Led einzeln eingeschaltet werden soll oder die ganze Spalte? Ich habe habe noch ein paar Probleme mit der Dimensionierung einiger Bautteile, sowie mit der Auswahl der LEDs(mit oder ohne integriertem Vorwiderstand oder Low Current LEDs). Ein erster Entwurf der Schaltung habe ich als Dateianhang angefügt. (VCC = 5V) Ich würde mich freuen, wenn mir jemand behilflich sein könnte. MfG Fred B.
Fred Bauer wrote: > noch die Frage offen ist ob > immer jede Led einzeln eingeschaltet werden soll oder die ganze Spalte? Natürlich die ganze Spalte. Ansonsten müsstest du einen Strom von >1A durch jede LED jagen, um im Mittel auf 10mA zu kommen. > Ich habe habe noch ein paar Probleme mit der Dimensionierung einiger > Bautteile, sowie mit der Auswahl der LEDs(mit oder ohne integriertem > Vorwiderstand oder Low Current LEDs). Schau ins Datenblatt der LEDs. Wenn die Strom/Leuchtdichtekurve bis zu dem benötigten Strom nahezu linear verläuft, dann ist die LED brauchbar. > Ein erster Entwurf der Schaltung habe ich als Dateianhang angefügt. > (VCC = 5V) Da ist einiges falsch: - die 220 Ohm Widerstände bei der Zeilenansteuerung müssen weg - Anstelle der BCD Dekoder, verwende Schieberegister mit Latch
Wie meinst du das eine ganze Spalte immer einzuschalten. Kann ich dann noch einzelne Leds auch einschalten oder muss ich dann immer die ganze Spalte einschalten. Welchen IC würdest du für das Schieberegister mit Latch vorschlagen? mfg
Also die 220R Widerstände für die Zeilen sollten drin bleiben, dafür kommen die 100R-Spaltenwiderstände raus, schließlich willst Du ja alle LED einer Spalte gleichzeitig schalten können, und dabei sollte sich nicht die Helligkeit ändern in Abhängigkeit von der Anzahl der eingeschalten LEDs. Schieberegister ist eine gute Idee von Benedikt. Eine PS2-Tastatur benötigt Takt und Datenleitung, also 2 Pins vom µC zur Tastatur. Gruß, Markus_8051
Fred Bauer wrote: > Wie meinst du das eine ganze Spalte immer einzuschalten. Kann ich dann > noch einzelne Leds auch einschalten oder muss ich dann immer die ganze > Spalte einschalten. Ich habe bei meinem letzen Post Zeile und Spalte vertauscht. Man schaltet immer eine Zeile komplett ein (in deinem Fall also den PNP), daher müssen die 220 Ohm Widerstände weg. Soll jetzt eine LED in der Zeile leuchten, bekommt diese über die Schieberegister Strom. > Welchen IC würdest du für das Schieberegister mit Latch vorschlagen? HC595 oder HC4094 oder sowas in der Art. Es gibt auch spezielle LED Treiber Schieberegister mit eingebauten Stromquellen, wie z.B. TLC594x
Angenommen, Du wölltest Spalte 13 einschalten. Wie schaltest Du die Ports am AVR? Spalte 1 und Spalte 21 würden auch leuchten, da die Multiplexer keinen Enable haben, oder dieser nicht beschaltet ist. Lass also Ausgang"0" der Multiplexer frei, dann gehts. Wenn auch in unüblicher Weise. Da immer nur eine Spalte an sein kann, ist das Tastverhältnis sehr klein.
Benedikt schrieb: >Welchen IC würdest du für das Schieberegister mit Latch vorschlagen? HC595 oder HC4094 oder sowas in der Art. Es gibt auch spezielle LED Treiber Schieberegister mit eingebauten Stromquellen, wie z.B. TLC594x "Mit eingebauter Stromquelle" ist an dieser Stelle doch eher nicht wünschenswert, man möchte den Spalten-Summenstrom ja nicht ausregulieren. Du meintest bestimmt so eine Kombination wie den TPIC6595 von TI. So wie im Schaltplan dargestellt wird es auch nicht zufriedenstellend leuchten da die Spaltentreiber im HC Design nicht den notwendigen Summenstrom treiben werden. Schlimmer noch: Der Eigenwiderstand ist bereits so hoch dass es je nach Anzahl eingeschalteter LEDs pro Augenblick heller und dunkler werden wird. Wie bereits oben erwähnt müssen die LEDs ja mit einem hohen Impulsstrom betrieben werden damit überhaupt etwas Helligkeit übrig bleibt. Diese Forderung erfüllen i.d.R. nur hochwertige Qualitäts-LEDs die dementsprechend teurer sind. Aber es geht für Einzelstücke auch außerhalb der Spezifikation mit billigen LEDs, das Teil ist ja nicht in Industriequalität mit Haltbarkeit von zigtausend Stunden herzustellen... Viel Spaß übrigens bei dem Projekt, so Selbstbau-Laufschriften haben mich auch schon immer begeistert.
Damit das ganze auch wirklich korrekt startet beschalte den Reset-Eingang des Prozessors mit einer R/C-Beschaltung wie es schon häufiger in diesem Forum in ähnlichen Beiträgen gepostet wurde. LED`s sollten natürlich Low-Current-Typen sein.100 Öhmer weg,220 Öhmer o.k. Ob ein Schiebregister/Latch oder ein Dekoder dürfte kaum ein Unterschied machen.Ist eben nur eine Sache der Software.Es würde zwar ein Lauflicht von der Logik etwas vereinfachen,aber das Multiplexen erschweren da das Bitmuster wahrscheinlich insgesamt wieder vollständig in die Ledmatrix geladen werden mußt.Mußte eben ausprobieren. Allerdings wird in der gegenwärtigen Beschaltung die Spalte 1,11,21 ständig mitleuchten weil eine "0" an den BCD-Eingängen den Ausgang auf Low schaltet. Und das bei jedem dekoder weil eben wie schon anderweitig hier erwähnt kein Chipselect beschaltet wurde. Besser wäre die Nutzung der Codes 1-9 und 0 bleibt frei. Alles klar? Gruß Lötkünstler <Mit der Lizenz zum löten>
Kann mir mal jemand erklären, warum hier alle die Spalten multiplexen wollen ? Das ist doch Schwachsinn, denn so ist jede LED nur 1/25 der Zeit an ! Mehr als 1/16 Mux ist nur mit speziellen LEDs möglich, denn der Spitzenstrom wird dann schon extrem. Selbst bei 1/16 ist der Spitzenstrom schon unangenehm hoch. 1/8 sollte dagegen kein Problem sein. In diesem Fall sind es sogar nur 1/5. Die Zeilen werden der Reihe nach eingeschaltet, und dann bekommen die Spalten einen Strom.
http://www.mcselec.com/index.php?option=com_content&task=view&id=225&Itemid=57 Hier werden auch die zeilen gemultiplext. mit ein paar leinen Änderungen, kann man das auch für deinen Zweck verwenden. allerdings sind bei den Transistoren die Pfeile an den Emittern falsch herum eingezeichnet. MfG Turbotoni
Danke für die vielen Antworten Ich werde mal meine Schaltung überarbeiten Ich hätte trotzdem noch ein paar Fragen Ich muss ja die Zeichen von der Tastatur auslesen weiß aber nicht was ich für einen Takt dafür verwenden soll denn der PS2 Anschluss benötigt. Und für den Atmega16 wollte ich einen 16Mhz Quarz verwenden. Ich weiß aber nicht wie groß und wofür die die Kondensatoren beim Quarz sein sollen.
>wofür die die Kondensatoren beim Quarz sein >sollen. zum anschwingen. evtl. steht hier dazu etwas http://de.wikipedia.org/wiki/Quarzoszillator Lötkünstler <Mit der Lizenz zum löten>
So hab die Schaltung jetzt ein wenieg überarbeitet Ich werde jetzt Low-Current LEDs verwenden und bei Dekodern bleiben. Ich wollt halt noch fragen ob die Schaltung so funktionieren kann. Ich weiß halt noch nicht was ich für einen Takt für die PS2 Schnittstelle benötige. mfg
Gibt es für die PS/2 Schnittstelle nicht eine Application Note von Atmel? Und nochmal zu den Dekodern: mit Schieberegister braucht man weniger Portleitungen, das LP-Design wird einfacher und die Zeile kann einfacher erweitert werden wenn man sie doch länger machen möchte.
Danke für die Application Note, die kann ich gut gebrauchen! Da ich die Leds auf einer zweiten Platine unterbringen will bräuchte ich jetzt noch einen Verbindungsstecker oder sowas für eagle.
Fred Bauer wrote: > So hab die Schaltung jetzt ein wenieg überarbeitet > Ich werde jetzt Low-Current LEDs verwenden und bei Dekodern bleiben. Wenn Du gerne Platinen für den Mülleimer produzierst, nur zu. Ein Multiplex von 1:25 ist quatsch, selbst mit Low-Current LEDs. Mach 1:5- oder 1:7-Multiplex, aber das geht eben nur mit Schieberegistern. Peter
ich würde das Ergebnis auch erstmal mit einer handvoll LEDs auf einem Steckbrett ansehen bevor es endgültig in Hardware gegossen wird. Mit den Dekodern wird das ein ziemliches Geflacker werden befürchte ich. Die SR Ansteuerung ist hier bis ins Kleinste beschrieben: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister
ich habe nicht ganz alles durchgelesen, aber ich würde das mit ganze mit 4 schieberegistern und einem interrupt lösen. ich habe einen LED-Cube gebaut (bin immer noch am programmieren) und da habe ich wesentlich mehr LEDs und das geht mit den schieberegistern sehr(!) konfortabel :) in deinem fall: 4 schieberegister in serie schalten (=32 Output-Pins), wobei du die letzten 5 für deine spalten-ansteuerungs-transistoren brauchst. der vorteil ist, du brauchst nur 2 leitungen deines uC und zwar die SPI-leitungen CLK und DataOut. dann programmierst du einen interrupt mit 350Hz, der jeweils eine zeile zum leuchten bringt (70x pro sekunde bild neu aufbauen mal 5 zeilen = 350 Hz) und weil du die daten per SPI verschickst, wird dein code auch schön kurz und einfach :)
Ich weiß nicht ob ich noch Zeit habe die Schaltung umzubauen weil ich diese Led Laufschrift für ein Schulprojekt mache, aber wenn es mit Schieberegistern einfacher ist werde ich vielleicht doch auf Schieberegister umsteigen. Ich bräuchte aber vielleicht noch eine Beispiel Schaltung mit Schieberegistern und Led Matrix. Ich wollte noch wissen ob die Schaltung auch mit Dekodern funktioniert weil Peter Dannegger geschrieben hat es kann nicht funktionieren. mfg
Ich hatte oben doch schon einn Beispiel gepostet. Also hier noch mal. http://www.mcselec.com/index.php?option=com_content&task=view&id=225&Itemid=57
ich hoffe du kommst aus meinem anhang draus (sorry, habe gerade kein anständiges programm zur hand und auch keinen scanner..) dein anzeige-array sieht dann so aus: LEDbit_01, LEDbit_02 ... LEDbit_25, 0, 0, 0, 0, 0, 0, 1 LEDbit_26, LEDbit_27 ... LEDbit_50, 0, 0, 0, 0, 0, 1, 0 LEDbit_51, LEDbit_52 ... LEDbit_75, 0, 0, 0, 0, 1, 0, 0 usw. immer 8 bit sind ein byte, sprich 4 bytes pro zeile -> Byte-Array[20] beim ersten aufruf der interrupt-routine gibste die ersten 4 bytes (0..3) raus, beim nächsten aufruf 4..7 usw. im hauptprogramm musste dann nur noch dieses Byte-Array modifizieren ;)
Fred Bauer wrote: > Ich wollte noch wissen ob die Schaltung auch mit Dekodern funktioniert > weil Peter Dannegger geschrieben hat es kann nicht funktionieren. Es funktioniert schon, bloß eben sehr sehr dunkel. Mit Deinen Werten kommt man auf einen effektiven LED-Strom von max 0,6mA. Peter
So habe wieder eine neue Version. Ich habe jetzt Schieberegister verwendet um immer eine ganze Ledzeile ansteuren zu können um so eine bessere Helligkeit zu erlangen. Ich verwende jetzt normale Leds mit integrierten Vorwiederstand. Vom Programmablauf habe ich mir vorgestellt immer eine Zeile anzusteuern und mit den Schieberegistern durchzulaufen. Ich bin mir halt noch nicht sicher ob das so funktioniert wie ich mir das vorgestellt habe.
>dann programmierst du einen interrupt mit 350Hz Da kann man gleich den SPI-Interrupt nehmen. Es stört ja keinen, wenn die SPI Frequenz so langsam ist, dass diese 4Bytes gerad in (1/350)Sekunden herausgeschoben werden ;-) >weil Peter Dannegger geschrieben hat es kann nicht funktionieren Dann glaube ihm das. >So habe wieder eine neue Version. Was ist denn das für ein Blödsinn mit den 20 Schaltkreisen? (Hälst du Schaltkreisaktien bei einem Hersteller oder was soll das??) PS: Gib mal die letzte *.sch Datei. Ich mal das mal fix ein. Du brauchst NUR VIER STÜCK des Types 74HC595. (Wie oft sollen wir dir das noch sagen???)
Die neue Version der Schaltung war nicht meine Idee sondern die Idee von meinem Leher. Der meinte ich brauche die vielen Schieberegister das ich auf den benötigten Strom kommen. Ich wär dir sehr dankbar wenn du mir mal meinen Schaltplan ein wenieg überarbeiten würdest. mfg
Lehrer.... So. DIe Matrix und deren Ansteuerung ist reingemalt. Auf Block-Cs und Spannungsversorgungen für die ICs hab ich jetzt mal verzichtet.
Danke für die Schaltung die ist super! Ich hab nur ein Problem. Ich hab schon 125 normale Leds bestellt die ich laut deiner Schaltung nicht verwenden kann. Gibts da vielleicht noch ne andere Lösung?
>Gibts da vielleicht noch ne andere Lösung? Ja, du musst dann zwischen die Ausgänge der Schieberegister und den 24Vorwiderständen noch Treiber schalten. Das können ICs (ULN/UDN..) oder auch (24) pnp-Transistoren sein. Die Einschränkung LowCurrent hab ich nur gemacht, weil ein Schieberegisterausgang nicht mehr als 10mA kann. Das auf die Multiplex 1/5 runtergerechnet, ergibt 2mA pro LED (als vergleichbaren Dauerstrom). Das ist sehr hell für eine LowCurrent. Aber nicht ausreichend für eine normale LED. Falls du die 24TRansistoren nimmst, muss die Formel aber NICHT 5V-0,6V-.., sondern 5V-1,2V-.. heißen. Einbau so: AUsgang SRG an die Basis des pnp, Kollektor an Masse und Emitter an den Vorwiderstand.
Ich will gerne eine ähnliche LED-Matrix aufbauen. Und zwar eine LED-Laufschrift mit 64x8 LEDs. Der Multiplex würde ich 8-fach machen. Ein Atmega238 und 8x 74HC959 sollten dies übernehmen. Die Basis der BC-456 würde ich über einen 1K-Widerstand an einem Out-Port des Atmega hängen. Die CPU-Leistung des Atmegas sollte eigentlich kein Problem sein, momentan habe ich ein 16-fach 7-Seg Anzeige welch nicht flackert, ich konnte die Frequenz über das 20-fache erhöhen, bis der Atmega sich aufhängt. Nur sehe ich ein Problem der 8 Zeilen-Transistoren (BC-456). Mag dieser der Strom von 64LED vertragen. Eine einzelne LED hat an einem 100 Ohm Widerstand 5mA aufgenommen. Das wären 64 x 5mA = 320mA. Da ich aber ein 8-fach Multiplex habe, wären es 320mA / 8 = 40mA. Der BC-546 verträgt 100mA. Kann ich das so machen, oder muss ich Angst habe, das es etwas verbratet oder sonst irgendwie überlastet ?
:
Bearbeitet durch User
Also... ich hab schon Mutliplex Lauflicht und Statisches Lauflicht gemacht. Bei geringer LED Anzahl geht das mit dem Multiplexen gut. Aber wie schon oben geschrieben, wenn es um mehr als 10 Spalten geht ...Finger weg. Dann statisch. Habe hier ein Projekt mit 8 Platinen. Je Platine 8x8 Punkte. Jeder Punkt 4 LED. Alle Punkte im Schieberegister hintereinander (8X8x8=512 Punkte *4 LED = 2048 LED's) Bedrahtet und handgelötet. Je LED 10CDL. 8V ca. 8-9A das sieht man wenigsten noch draussen am Tag. Wer Interesse hat Target-File vorhanden... Gruß Thomas Software auf ATmega328
Mathias B. schrieb: > Ich will gerne eine ähnliche LED-Matrix aufbauen. > Und zwar eine LED-Laufschrift mit 64x8 LEDs. > Der Multiplex würde ich 8-fach machen. > > Ein Atmega238 und 8x 74HC959 sollten dies übernehmen. > Die Basis der BC-456 würde ich über einen 1K-Widerstand an einem > Out-Port des Atmega hängen. > Nur sehe ich ein Problem der 8 Zeilen-Transistoren (BC-456). > Mag dieser der Strom von 64LED vertragen. > Eine einzelne LED hat an einem 100 Ohm Widerstand 5mA aufgenommen. > Das wären 64 x 5mA = 320mA. > Da ich aber ein 8-fach Multiplex habe, wären es 320mA / 8 = 40mA. Falschrum, 2,56A > Der BC-546 verträgt 100mA. > Kann ich das so machen Nein, es reicht weder der schwache Trabnsistor, noch der Ansteuerstrom auf dem Out-Port des Atmega. Nimm P-Kanal Logic Level MOSFETs wie IRF7328, da reiche 4 Stück und sie hätten Reserven. Hier wird alles rauf und runter aufgeführt: http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1
Benedikt K. schrieb: > Kann mir mal jemand erklären, warum hier alle die Spalten > multiplexen > wollen ? > Das ist doch Schwachsinn, denn so ist jede LED nur 1/25 der Zeit an ! > Mehr als 1/16 Mux ist nur mit speziellen LEDs möglich, denn der > Spitzenstrom wird dann schon extrem. Selbst bei 1/16 ist der > Spitzenstrom schon unangenehm hoch. 1/8 sollte dagegen kein Problem > sein. > In diesem Fall sind es sogar nur 1/5. Die Zeilen werden der Reihe nach > eingeschaltet, und dann bekommen die Spalten einen Strom. Genau, du hast es verstanden! Denn, wenn man die Ports reduzieren kann durch einen(2 oder mehr Zeilendecoder-ICs - davon gibts ne ganze Menge verschiedener Chips am Markt, die erstens die Zeilen und zweitens die Spaltentreiber reduzieren), hätte er genau das, was erwünscht ist. Und der Strom hält sich damit auch in Grenzen, wenn alle Elemente der NAzeige leuchten... Spaltentreiber-ICs wie den ULN 2803 oder ähnlich eingesetzte, haben mehrere Vorteile, denn die Treiben LEDs pro Ausgang bis zu 500mA (Umgerechnet in LEDs also mindestens pro Ausgang bis zu 100 Stück- Ohne Transistoren, Ohne viele Leitungen.) Nun, um ein Beispiel zu nennen: Fertig-Anzeige-LED-Displays mit 2 Zeilen a 40 Segmenten gibts bei Sanders, Reichelt, mouser, Conrad, Pollin ect. Noch günstiger gibts sowas als Fertig-Displays im stromsparenden OLED-Format! Nuja, dies vielleicht noch als Anmerkung dazu.. Letzteres würd ich sogar (weils auch einfacher zu programmieren geht) nutzen.. Wenns denn aber wirklich LED-Anzeigen sein sollen - je nach Wortlängen-Anzeige 2 bis 4 ULN 2803 oder änliche als Maskentreiber beschaltet - Eingangseitig sind die ja TTL-Pegel-kompatible!!), reduziert den Aufwand der Anzeige erheblich.
>Ich würde BC327 bzw. BC337 nehmen. Die vertragen mehr Strom. Wie sieht es mit einem BD137 aus, dieser würde 1,5A vertragen. >Nein, es reicht weder der schwache Trabnsistor, noch der Ansteuerstrom auf dem Out-Port des Atmega. Aus diesem Grund will ich Transistoren verwenden. >Nimm P-Kanal Logic Level MOSFETs wie IRF7328, da reiche 4 Stück und sie hätten Reserven. Wie kommst du auf 4 Stück ? >Also... >ich hab schon Mutliplex Lauflicht und Statisches Lauflicht gemacht. >Bei geringer LED Anzahl geht das mit dem Multiplexen gut. >Aber wie schon oben geschrieben, wenn es um mehr als 10 Spalten geht >...Finger weg. Dann statisch. Ich wollte Zeilenweise multiplexen, und dies wären dann nur 8 Zeilen. Für die Spalten wollte ich die 8 Stück 75HC595 verwenden. Da wäre ein Ausgang nur mit max einer LED belastet, ausser durch einen Programm-Fehler wären mehr als nur eine Zeile auf High geschalten. >Falschrum, 2,56A Wie kommst du auf diesen Wert ? >Nun, um ein Beispiel zu nennen: Fertig-Anzeige-LED-Displays mit 2 Zeilen >à 40 Segmenten gibts bei Sanders, Reichelt, mouser, Conrad, Pollin ect. Etwas selbst zu bauen ist viel interessanter und lehrreich.
:
Bearbeitet durch User
Mathias B. schrieb: >>Aber wie schon oben geschrieben, wenn es um mehr als 10 Spalten geht >>...Finger weg. Dann statisch. > Ich wollte Zeilenweise multiplexen, und dies wären dann nur 8 Zeilen. Richtig! Thomas muss einfach noch lernen, wie man richtig multiplext.
Im Prinzip müsste es etwa das gleiche sein, wie bei diesem Cube, es werden auch 512 LEDs angesteuert. https://channel9.msdn.com/coding4fun/articles/Netduino-Controlled-LED-Cube Die verwenden als Zeilentransistor den TIP122, der ist etwas stärker als nur ein BC-Typ. Nur ist dieser ein Darlington, und der BD137 nur ein gewöhnlich bipolarer. Dem BD137 hätte ich auf Lager, kann ich diesen trotzdem verwenden, oder brauche ich der Verstärkung des Darlington ?
Hallo, es gibt fürs Multiplexen fertige ICs mit Treibern drin und so: MAX7219. Ich hab die in meiner Uhr verwendet, steuert man über SPI an. Siehe hier: https://www.youtube.com/watch?v=dVLfzm9piLw https://www.youtube.com/watch?v=WJEo7s-o4Kw Einer kann 8x8 ansteuern, Helligkeit ist in 16 Stufen einstellbar, IC kostet so 2 Euro oder so beim Chinamann. Gruß Thomas
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.