Forum: Mikrocontroller und Digitale Elektronik LED Multiplex erfahrungen - Maximale zeilen?


von Sebastian Heyn (Gast)


Lesenswert?

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..

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von peter dannegger (Gast)


Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

okay, danke das hilft mir weiter. dann werde ich wohl bei maximal 8
bleiben...

von Benedikt (Gast)


Lesenswert?

>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 !

von Sebastian Heyn (Gast)


Lesenswert?

okay also bei 1/8tel kann ich ganz normal mit 20mA fahren...

von Benedikt (Gast)


Lesenswert?

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.

von Mario Grafe (Gast)


Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

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..

von Sebastian Heyn (Gast)


Lesenswert?

so werde ich es auch aufbauen. such noch nach geeignetem puffer ic für
die spalten.. (habe den uln in der zeile)

von Mario Grafe (Gast)


Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

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.

von Mario Grafe (Gast)


Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

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?

von Mario Grafe (Gast)


Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

kennst du nen treiber, der nicht nach gnd schaltet, sondern nach +ub?

von Andreas Lang (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

@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

von Mario Grafe (Gast)


Lesenswert?

@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

von Dieter W. (dds5)


Lesenswert?

Der zum ULN2803 "komplementäre" Baustein ist der UDN2981.
Nur haben die Dinger leider einiges mehr an Restspannung als ein BC558.

von Sebastian Heyn (Gast)


Lesenswert?

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...

von Andreas Lang (Gast)


Angehängte Dateien:

Lesenswert?

et voilà.

von Mario Grafe (Gast)


Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

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.

von Mario Grafe (Gast)


Lesenswert?

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).

von Sebastian Heyn (Gast)


Lesenswert?

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)

von Mario Grafe (Gast)


Lesenswert?

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...

von Sebastian Heyn (Gast)


Lesenswert?

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?

von Mario Grafe (Gast)


Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

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.

von Mario Grafe (Gast)


Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

also ich plane 16spalten x 8zeilen mehr geht erstmal nicht weil mein
layout programm nur maximal 700pins unterstützt...

von Mario Grafe (Gast)


Lesenswert?

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.

von Mario Grafe (Gast)


Lesenswert?

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).

von Sebastian Heyn (Gast)


Angehängte Dateien:

Lesenswert?

Hier mein schaltplan. ist noch ned ganz fertiisch. der controller fehlt
noch. und der sram muss mit den latches verbunden werden.

von Mario Grafe (Gast)


Lesenswert?

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...

von Sebastian Heyn (Gast)


Angehängte Dateien:

Lesenswert?

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...

von peter dannegger (Gast)


Lesenswert?

Ich sehe nur:

Videodaten können nicht wiedergegeben werden. Es wurde kein geeignetes
Dekomprimierungsprogramm gefunden. (Fehler=80040255)


Peter

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

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

von Sebastian Heyn (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.