Hallo ich bau gerade an einem LED multiplex-display auf avr basis. momentan überlege ich 8x14 (würde ein mega8 genügen) oder ob ich größer mache. wieviele zeilen habt ihr bis jetzt flickerfrei gemultiplext? meint ihr 16 oder 24 gehen auch? 1/24stel der zeit ist schon ganz schön eng..
Hi bei 1:24 mußt du reichlich Strom durch die LED schicken um einigermaßen helle Anzeigen zu bekommen. 1:16 hab ich schon gemacht und würde das als ziemliches Maximum ansehen. Matthias
Mit flickerfrei hat das nichts zu tun, flickerfrei kriegst Du auch ein Tastverhältnis 1:100 hin. Es ist nur eine Frage der Helligkeit und der Spitzenströme. Tastverhältnis 1:8 sollte noch einfach zu beherrschen sein, darüber hinaus sollte man high-efficiency-LEDs nehmen. Zu mehr als 1:16 würde ich aber auch nicht raten. Peter
okay, danke das hilft mir weiter. dann werde ich wohl bei maximal 8 bleiben...
>darüber hinaus sollte man high-efficiency-LEDs Aber vorsicht ! Nicht bei allen LEDs ist die Helligkeit proportional dem Strom ! Bei hyper red LEDs tritt quasi eine Sättigung ein: Egal ob 50mA oder 100mA, die Helligkeit bleibt gleich. Ansonsten kann ich die Werte nur bestätigen: 1/8 ist kein Problem, 1/16 sollte man schon genauer planen, berechnen und ausmessen. Da reichen dann eventuell 5V schon nichtmehr aus, da LEDs etwa 10-30Ohm Innenwiderstand haben. Bei 150mA Strom kommen also nochmal 1,5-4,5V zusätzlich zur normalen LED Spannung dazu !
okay also bei 1/8tel kann ich ganz normal mit 20mA fahren...
Wenn du die LEDs bei 1/8 mit 20mA betreibst, hast du einen mittleren Strom von 2,5mA. Für Low Current LEDs OK, ansonsten sollten es etwa 50-100mA sein.
Ich habe kürzlich beim großen "C" ein paar Tüten gelbe Standard-0815-LEDs gekauft und damit eine 12x8 Matrix zusammengezimmert mit einem ULN2803 als Spaltentreiber (47Ohm-Widerstände in Reihe!) und PNP-Transistoren (BC558C) als Spaltentreiber. Das Ansteuerprinzip habe ich von folgender Schaltung übernommen: http://batronix.com/elektronik/bauanleitungen/timer-modul.shtml Als Controller werkelt bei mir ein ATmega8515. Wenn man nur eine Helligkeitstufe nimmt (LED an oder aus) ist 16x16 kein Problem denke ich. Wenn man ein paar Graustufen möchte wird es etwas schwieriger. Wenn du höher auflösende LED-Arrays bauen willst, solltest du auf einen 75HCT575 (pro Zeile!) nehmen, also quasi einen Puffer für jede Zeile (der Stromverbrauch steigt dramatisch!) So das war mein Senf dazu... Gruß Mario
ja ich habe 8 zeilen, die ich durch nen uln puffere, für die spalten such ich noch nen passenden ic. sonst werdens wohl auch transistoren.. Ist nur ne kleine bastelei zum zeitvertreib..
so werde ich es auch aufbauen. such noch nach geeignetem puffer ic für die spalten.. (habe den uln in der zeile)
Ich hatte ja oben schon geschrieben -> 74HCT575, meinte aber den 74HCT595. Google mal nach 74HCT595, das ist ein "8-bit serial-in, serial or parallel-out shift register with output latch" laut Philips (http://www.semiconductors.philips.com/pip/74HC595N.html). Der wäre am geeignetsten als Spaltenpuffer, dann bist du beim Timing völlig frei. Denk aber bitte an den anorm höheren Stromverbrauch, da im "worst case" alle LEDs statisch an sein können. Gruß Mario
stimmt dann ist der uln nicht standhaft genug mit ,5A der sollte bei 14x75 mindestens nen Ampere abkönnen. werdens dann wohl doch transistoren weden... ich will kein schieberegister verwenden, obwohl n latch wirklich viel arbeit sparen kann.. mmhh aber da der controller eh nix andres machen soll als zu multiplexen kann ich mir den mehraufwand eigentlich sparen.
Mit einem Latch sparst du wirklich viel Arbeit, außerdem ist es die einzige Möglichkeit, höher Auflösende LED-Matrizen aufzubauen. Das ist dann nix anderes als ein "Aktiv-Display". Deine Bildwiederholrate ist dann nur durch die Leistungsfähigkeit des µC (und die Grenzfrequenz des Latches -> beim 74HCT595 ca. 25Mhz) begrenzt und nicht durch den Spitzenstrom durch die Diode. Es ist auf jeden Fall die bessere Methode, brauchst nur ein paar dicke Transistoren (oder FETs) für die Zeilensteuerung. Ich habe vor in nächsterer Zeit mal ein großes Display aus Spaß an der Freude zu bauen, guck mal unter http://wiki.blinkenarea.org/bin/view/Blinkenarea/BlinkenProjects, da findest du einige lustige Sachen... Gruß Mario
ist es nicht gleich ob ich nen port am controller nen wert zuweise, oder den wert seriell ausgebe?? bin gerade an die grenze meiner target-light version gestoßen mir fehlen ca 50 pins. wie ärgerlich.
wie hoch ist der maximalstrom durch den 595? da er die spalten steuert sollte er den strom der led schon tragen können, bei 15mA*8 immerhin 120mA (1/8tel der zeit) pro ausgang das ist verdammt viel, oder?
An den Ausgängen des Latches kommt natürlich noch ein Treiber (z.B. ULN2803 oder Transistoren), aber mit Low-Current-LEDs (2mA pro LED)sollte es auch klappen. Als "Bastellösung" auf jedenfall erstmal praktikabel.
kennst du nen treiber, der nicht nach gnd schaltet, sondern nach +ub?
Bei nur einer Helligkeitsstufe kann man locker 24 Zeilen nehmen, ohne das etwas flackert oder flimmert und der AVR hat noch genug CPU-Power übrig. Hier mal ein Bild von einer von mir gebauten 48x7er LED-Matrix. Hier bedient je ein ATTiny2313 36LEDs. Die 8 ATTinies werden von einem Mega162 mit Daten versorgt. Materialkosten insgesamt (incl. LEDs) waren so um die 120. Als Spaltentreiber sind BC857er verwendet worden, ULNs im SOIC Gehäuse dienen als Zeilentreiber (6 Zeilen à 7 LEDs). Bei Interesse kann ich mal die Schaltpläne und GCC-Sources posten.
@mario: mache es nun mit 3x 595er (2xspalte, 1xzeile) da kann ich dann einfach serielle daten von woher auch immer daten auf das board schieben und mich freuen... wenn du interesse hast kannst dich ja mal melden
@andreas @andreas: poste bitte mal die Schaltung. @sebastian: Es gibt sicher auch Treiber die +ub schalten, mir fällt nur grad keiner ein, ich würde aber PNP-Transistoren nehmen. Poste doch mal den Schaltplan wenn du den fertig hast. Die 595 machen nur Sinn, wenn du pro Zeile einen spendierst, da du ja den Zustand der gesamten Zeile zwischenspeichern kannst. Ansonsten brauchst du nicht zwischenspeichern, oder hab ich einen Denkfehler? So kannst du nacheinander die Zustände für alle Zeilen in die entsprechenden Puffer schreiben und dann bleibt die Zeile so lange aktiv bis du neue Werte reingeschrieben hast, so hast du ein quasistatisches Display. Der letzte Zustand bleibt immer an bis ein Neuer anliegt Gruß Mario
Der zum ULN2803 "komplementäre" Baustein ist der UDN2981. Nur haben die Dinger leider einiges mehr an Restspannung als ein BC558.
Wie willst du denn den schaltplan haben? Ich arbeite mit target. Also schieberegister habe ich weggenommen. Hab nen M32 reingebaut. die zeilen mach ich mit bc807-16, spalten mit dem uln2803... das layout ist auch schon fast fertig. habs zweiseitig angefangen. wenn das morgen fertig ist dann stell ichs mal rein...
Den ULN2003 vor den Basiswiderständen der PNP-Transistoren kannst du weglassen. Vorwiderstand und dann direkt an den Port geht, der Transistor arbeitet ja als Verstärker und belastet den Controller-Ausgang nicht. Ich würde auch statt dem ULN2003 an den Kathoden den ULN2803 nehmen (invertierend!), das macht sich mit der Programmierung besser (1 = "ON"). Die 100Ohm-Widerstände würde ich etwas kleiner machen (so 47Ohm). Schaltplan als PNG oder PDF oder irgendein Bildformat wäre gut. Gruß Mario
so hatte ich es auch zuerst, wenn du aber 14 leds pro zeile hast wird ein uln schnell an die grenze der leistung gehen bei 47Ohm hast du fastn ampere das geschalten werden will. deshalb die leds verpolen, und den uln als spaltentreiber nehmen.
Ahso, aber vor den PNP-Transistoren würde ich trotzdem keinen extra Treiber machen, du willst ja nicht die Basis des Transistors treiben. Ich habe wie gesagt eine 12x8 Matrix so aufgebaut es funktioniert prima (8 Spalten -> ULN2803, 12 Zeilen -> PNP-Transistor).
sag mal, du hattest doch vorgeschlagen, mit schieberegistern im prinzip die zustände der zeilen zu "puffern" warum nehmen wir nicht ein bisschen SRAM, nen Controller und benutzen den SRAM als zwischenspeicher? bei 24x8 könntest du dann mit zwei oder drei latches arbeiten. Der controller steuer die latches, die adressierung des SRAM und die seriell -> parallelwandlung (dann könnte man per rs232 ne animation etc in den sram schieben)
Das wäre dann ein Aktivdisplay mit Videospeicher, so wird es ja auch überlicherweise gemacht. Du brauchst aber trotzdem die extra Puffer (74HCT574 tut es auch) pro Zeile für den aktuellen Zustand, sonst bräuchtest du einen Controller mit seeeeeeeeeeeeehr vielen Portleitungen. Nochmal zur Idee: Jede ZEILE zeigt so lange den alten Zustand (im Puffer gespeichert) bis ein neuer Wert in den Puffer geschrieben wurde. Das Prinzip unterscheidet sich grundsätzlich von den vorher diskutierten, wo ja jede Zeile nur 1/(Anzahl der Zeilen) pro Zeiteinheit an war. Bei der "neuen Idee" ist jede Zeile quasi immer an. Wenn ich etwas Zeit habe, male ich das mal auf. Eine programmierbare Logic á la FPGA oder CPLD wäre auch nicht schlecht für sowas...
nee, ich will das schon noch multiplexen, aber halt die prozessorlast so niedrig wie möglich halten. Hab mir meine gedanken gemacht und finde mit dem sram ganz schön übertrieben. habe jetzt 3x595 damit ich nicht soviele protpins verbrate... Drauf kommt ein m8 oder vielleicht auch kleiner. Die haben ja genug ram um eins zwei bilder zu speichern... Der prozessor macht dann nix anderes als multiplexing. man kann dann evtl noch nen character generator mit einbauen. das ist dann aber an zweiter stelle. welche pins des 595 benötigen wir? habe die drei so angeordet das prozessor -> serin(zeile) -> serout -> serin(spalte) etc. clock, /OE, reset sind auch verbunden (miteinander) benötige ich RCLK?
Mal doch mal bitte auf wie du das meinst, sonst reden wir vielleicht aneinander vorbei. Was meinst du mit RCLK? Ich benutze das Philips-Datenblatt für den 74HCT595. Dabei gibt es 2 Clocks, einen zum shiften der Registerwerte und einen zum übernehmen der Werte in das Latch. Die brachst du natürlich alle beide. Du kannst auch ein Display bauen, wo alle 595'er hintereinanderhängen, das spart haufenweise Pins.
Habs mir in der mittagspause nochmal durch den Kopf gehen lassen. Also folgendes Setup werde ich verwenden: 3x HC373 latch 1x 62256 SRAM 1x I2C EEPROM 1x MegaAVR zum verwalten in dem kleinen eeprom können kurze animationen etc gespeichert werden (später vielleicht ne SD-Card?), welche über die serielle schnittstelle des AVR reingeschoben werden können. der SRAM macht das was er soll - als arbeitsspeicher dienen - in ihm will ich die einzelbilder ablegen.. die latches werden benutzt, da ich ja nur 8 bit vom SRAM bekomme - also werden im sram für ein komplettes bild 16bytes in anspruch genommen. Wenn also nichts vom rechner oder von sonst woher kommt kommt das bild aus dem sram. - mit hilfe von nem timer lasse ich dann einfach zeile für zeile durchzählen.
Das ist prinzipiell ne gute Idee, welche Auflösung soll dein Display nochmal haben? Mach doch mal ne Skizze bitte. Das Auslesen zu entkoppeln ist eine gute Idee, du mußt nur aufpassen, das dein SRAM schnell genug ist. Normalerweise wird so etwas mit einem Dual-Port-SRAM gemacht, in eine Seite wird reingeschrieben und aus der anderen die ganze Zeit ausgelesen. Du hast ja auch Schreib-und Lesezyklen, während der SRAM beschrieben wird kannst du nichts reinschreiben. Ich denke aber bei deiner Auflösung wird es gehen.
also ich plane 16spalten x 8zeilen mehr geht erstmal nicht weil mein layout programm nur maximal 700pins unterstützt...
Also 16x8 = 128 LEDs. Du müßtest für jede Zeile 2 74HCT595 spendieren, also insgesamt 16 x 74HCT595. Jetzt bist du bei der Ansteuerung völlig frei, du kannst alle seriell hintereinander schalten und Zeilenweise parallel ansteuern wie du willst.
Wenn des einfach haben willst, nimm einfach das Schaltprinzip von Batronix, welches ich weiter oben mal gepostet habe. Das geht auf jeden Fall bei 8 Zeilen, dann brauchst du keine Puffer usw.. Einfach ein ULN2803 (oder ULN2003) für die Kathoden (Spalten) und PNP-Transistoren für die Anoden (Zeilen).
Hier mein schaltplan. ist noch ned ganz fertiisch. der controller fehlt noch. und der sram muss mit den latches verbunden werden.
Sieht erstmal gut aus. Aber warum möchtest du die Spaltenzustände speichern, wenn du die sowieso multiplext? Puffern macht nur Sinn, wenn du einen Latch für jede Spalte hast. Du springst doch immer sofort zu nächsten Zeile, da brauchst du den Puffer nicht. Ansonsten ist es ok. Sag mir bitte wenn ich einen Denkfehler habe, aber dein Programm läuft doch dann wie folgt ab: 1. Zustand für Zeile 1 an ULN2803 legen 2. Zeile 1 aktivieren 3. warte ein bischen... 4. Zeile 1 deaktivieren 5. Zustand für Zeile 2 an ULN2803 legen 6. Zeile 2 aktivieren 7. warte ein bischen... 8. Zeile 2 deaktivieren 9. usw...
Hier mal ein video von meiner funktionierenden 15x8 matrix. Habe fertige bausteine dafür genommen, sorry für die schlechte qualität des videos. Das flackern kommt irgendwie vom video, das sieht man normal nicht. Verwendeter controller ist ein Mega128+XRAM ansteuerung der HC595 ist komplett in software gemacht, dadurch ist man nicht an irgendwelche pins gebunden. Ich verwende den XRAM für das scrolling, wenn mal mehr text angezeigt werden soll. Das scrolling sind keine einzelbilder, sondern einfach ein langes Bild mit der ganzen schrift, welches im RAM liegt und dann immer wieder komplett m eins versetzt ausgegeben wird. Ein character generator ist auch schon drin. er soll später mehrere fonts beinhaltenunktionen wie invers etc. Als nächstes will ich ein paar mehr bausteune hintereinander hängen, mit 3 buchstaben auf einmal sieht das ganz schön mühsam aus...
Ich sehe nur: Videodaten können nicht wiedergegeben werden. Es wurde kein geeignetes Dekomprimierungsprogramm gefunden. (Fehler=80040255) Peter
Nur um meinen Senf dazuzugeben: Bild von einem LED-Array Zeilentreiber, den ich mal auf Streifenraster zusammengelötet hab. (Ist etwas unscharf, die Handy-Kamera mag wohl keine Nahaufnahmen) IC ist ein 74HC238 (3->8 Binär dekoder), Transistoren sind TIP120. Braucht nur drei Eingangssignale. Zur Sicherheit ist noch eine kleine Schaltung dabei die den chip-enable ausschaltet wenn ein paar msec keine Änderung auf dem 0er Bit war, damit beim uC absturz nicht gleich eine ganze LED-Zeile durchbrennt. /Ernst
braucht du divx6 um anzuschauen. zieh dir am besten auf www.mplayer-hq.hu den player den nehm ich der spielt fast alles habe bei mit 3x595 treiberstufe mit irgendwelchen pnp transistoren - die ich nich rumliegen hatte zum testen erstmal okay), die werden nicht warm habe den strom mit 220ohm glaub ich begrenzt. müsste ich nachher mal schauen, dass ganze ist schon ne weile her als ich damit angefangen habe das zu löten. hatte zwischendurch keine zeit... das ganze sisplay hat abgesehen vom strom nur 4 anschlüsse, clock, reset, data, rclock.
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.