Forum: Mikrocontroller und Digitale Elektronik Schaltung für LED-Matrix


von Timo H. (x1jmp)


Angehängte Dateien:

Lesenswert?

Ich habe vor mir eine "kleine" 8×24-LED-Matrix mit selbst erstelltem 
Schaltplan zu bauen, um dabei auch Eagle besser kennenzulernen.

Da dies meine erste erstellte Schaltung überhaupt ist, würde ich gerne 
von euch wissen, ob das funktionieren kann oder ob ich noch etwas 
Grundlegendes falsch gemacht habe.

Außerdem habe ich noch ein paar zusätzliche Fragen.

1. Die Widerstände für die LEDs sind so berechnet, dass ich die Matrix 
mit einem einfachen 1A-Netzteil mit 9V betreiben kann. Pro LED soll ein 
Pulsstrom von 120mA fließen, durch jede LED fließen dann 
durchschnittlich 5mA. Sind Standard-LEDs dabei ausreichend hell? Oder 
soll ich mir lieber ein neues Netzteil kaufen, was bis zu 4A liefert?

2. Ist es sinnvoll, wie in der Schaltung zwei Stromkreise zu haben, 
einen 5V für den AVR und einen mit höherer Spannung für die LEDs, damit 
ich über die Spannung die LEDs später heller machen kann und den 7805 
nicht so sehr auslaste?

3. Ich würde die Matrix auch gerne wahlweise nur über den USB-Anschluss 
betreiben und ein Netzteil als "Verstärker" dazuschalten können. Lässt 
sich die Schaltung mit geringem Aufwand dazu erweitern? Die Den +-Pol 
vom USB-Anschluss einfach mit der Versorgungsspannung der Schaltung zu 
verbinden, halte ich für keine gute Idee, wenn ich später ein Netzteil 
mit z. B. 12V dazuschalte, außerdem wäre der 7805 dann ja noch im Weg.

von Harald (Gast)


Lesenswert?

Hallo Timo,
Du machst den gleichen Fehler, den ich dank dieses Forums auch schon 
vorher für mich erkennen musste. Du musst die Zeilen multiplexen, nicht 
die Spalten. Dann hast Du nur noch ein 1:8 Tastverhältnis für die LEDs, 
außerdem verläuft das Timing viel relaxter. D.h. Du schiebst die gesamte 
Zeile in die Schieberegister und aktivierst nur einen Zeilen-Ausgang! 
Während die Zeile gelatcht ist kannst Du im Hintergrund schon die 
nächste Zeile einschieben usw.

In deiner Hardware musst Du dann die Vorwiderstände in die 24 Spalten 
verlagern und natürlich anpassen. Glaube mir, mit 120mA Spitzenstrom 
durch die LEDs hättest du vermutlich nicht lange Freude. LEDs sterben 
auch an kurzen Spitzen schnell.

von Timo H. (x1jmp)


Lesenswert?

Hallo Harald,
ich habe vor, die Matrix zusätzlich mit PWM zu betrieben und habe 
deshalb jeweils eine Reihe an den AVR gehangen, damit ich jede einzelne 
LED mit weniger aufwand ausschalten kann.
Denn um eine einzelne LED abzuschalten, müsste ich sonst die komplette 
Zeile per SPI rausschieben und verliere dabei Rechenzeit und damit 
mögliche PWM-Stufen. So ist zumindest meine Vorstellung.

Und um 120mA habe ich mir keine Sorgen gemacht, da ich im Artikel zur 
LED-Matrix gelesen habe, dass bis zu 320mA möglich sind.

von Harald (Gast)


Lesenswert?

Wenn Du PWM machen möchtest musst Du dafür überhaupt keine Rechenzeit 
opfern. Einfach alle Enable-Leitungen der Schiebereg. (Pin 13) an einen 
Hardware-PWM Ausgang hängen, bei AVR glaube ich OC1A. Und schon ergibt 
sich ein schönes PWM mit unglaublich vielen Abstufungen.

von Reinhard R. (reirawb)


Lesenswert?

Hallo Timo,

> 1. Die Widerstände für die LEDs sind so berechnet, dass ich die Matrix
> mit einem einfachen 1A-Netzteil mit 9V betreiben kann. Pro LED soll ein
> Pulsstrom von 120mA fließen, durch jede LED fließen dann
> durchschnittlich 5mA.

Bei Zeilenmultiplex fließt Durch die einzelne LED nicht durchschnittlich
5mA sondern mindestens 5mA und max. 120mA, je nach dem, wie viele du
gleichzeitig eingeschaltet hast in deiner Zeile. Wenn du das Glück hast,
das die LEDs diese Prozedur überleben, so hast du zumindest
unterschiedliche Helligkeiten, je nach Zeileninhalt.
Bei Spaltenmultiplex fließen immer 120mA durch jede LED, kann in
Verbindung mit entsprechend kurzen Impulszeiten funktionieren
(max. Strom lt. Datenblatt).

Meine Empfehlung: wie schon von Harald vorgeschlagen, bau die
Widerstände in die Spaltenleitungen und benutze einen Zeilenmultiplex.


> 2. Ist es sinnvoll, wie in der Schaltung zwei Stromkreise zu haben,
> einen 5V für den AVR und einen mit höherer Spannung für die LEDs, damit
> ich über die Spannung die LEDs später heller machen kann und den 7805
> nicht so sehr auslaste?

Höhere Spannung brauchst du eigentlich nicht, da die Helligkeit der
LEDs über den Strom gesteuert wird, die Flußspannung bleibt dabei
relativ konstant.
Kleinerer Vorwiderstand = hellere LED.
Aber bitte dringend die maximalen Ströme im Datenblatt beachten,
vor allem im Impulsbetrieb.

Gruß Reinhard

von Matthias L. (Gast)


Lesenswert?

Was habt ihr nur aller mit dieser blöden Emitterschaltung?

Warum nehmt ihr nicht die Kollektorschaltung zur Ansteuerung der 
Zeilen/Spalten??

Das spart sogar noch den Basiswiderstand...

Und ich würde beides (Zeilen UND Spalten) über das Schieberegister 
laufen lassen. (also ein vierter 74hc595)

von Harald (Gast)


Lesenswert?

@Matthias:
Grundsätzlich würde ich auch ein 4. Schieberegister nehmen und dein 
Einwand mit der Kollektorschaltung ist auch OK, aber die ursprüngliche 
Fragestellung war doch die:

>würde ich gerne von euch wissen, ob das funktionieren kann oder ob ich noch etwas 
Grundlegendes falsch gemacht habe.

von Timo H. (x1jmp)


Lesenswert?

Harald wrote:
> Wenn Du PWM machen möchtest musst Du dafür überhaupt keine Rechenzeit
> opfern. Einfach alle Enable-Leitungen der Schiebereg. (Pin 13) an einen
> Hardware-PWM Ausgang hängen, bei AVR glaube ich OC1A. Und schon ergibt
> sich ein schönes PWM mit unglaublich vielen Abstufungen.
Das klingt für mich wie ein PWM für alle LEDs einer Reihe, mein Ziel ist 
PWM für jede einzelne LED, damit das Display wie eine Art 
Graustufendisplay nutzbar ist.
Und um möglichst viel Kontrolle über jede einzelne LED zu bekommen, habe 
ich mir gedacht, einen ganzen Port am AVR dafür zu benutzen.


Ich kenne mich mit Transistoren und den Schaltungen noch nicht gut aus, 
aber wie würde das mit der Kollektorschaltung aussehen? Muss ich dafür 
die Transistoren nicht vor die LEDs hängen?

Und lassen sich überhaupt mit 5V vom AVR die LEDs mit z. B. 12V 
schalten?

Reinhard,
ich will die Widerstände so groß haben, dass ein einfaches Netzteil mit 
1A die Matrix betreiben kann. Um die Matrix dann heller zu bekommen, 
finde ich es einfacher, die Spannung zu erhöhen, anstatt alle 
Vorwiderstände auszutauschen.

Hat noch jemand eine Idee, wie man die Schaltung so ändern könnte, dass 
sie auch nur mit der USB-Stromversorgung funktioniert?

von Harald (Gast)


Lesenswert?

>Und um möglichst viel Kontrolle über jede einzelne LED zu bekommen, habe
>ich mir gedacht, einen ganzen Port am AVR dafür zu benutzen.

Tja, dann musst Du es per SW realisieren oder ein AVR mit 8 echten PWM 
Ausgängen nehmen. Allerdings:
- Bei dieser kleinen Matrix würde ich mir nicht zu viel von der Wirkung 
der Graustufen versprechen.
- Die gesamte Helligkeits-Information (8 Byte pro Spalte!!) bekommst Du 
noch irgendwie programmtechnisch realisiert?
- Damit es wirklich flimmerfrei wird (bei "Graustufen" meiner Meinung 
absolut erforderlich) musst du erfahrungsgemäß auf ca. 70 Hz (o.ä.) 
Wiederholfrequenz gehen. Jede Spalte leuchtet dann noch 600 
Mikrosekunden. Wie viele Helligkeitsstufen möchtest Du denn machen? Der 
AVR schafft das, keine Frage. Allerdings muss die Spaltentreiberstufe 
dann schon einigermaßen optimiert sein  um das sauber abzubilden.

>Und lassen sich überhaupt mit 5V vom AVR die LEDs mit z. B. 12V
>schalten?

Dann nimm doch z.B. einen UDN2981, ich weiß aber nicht wie zackig der 
schalten kann.

Bau doch einen winzigen Teil der Matrix provisorisch auf (z.B. nur 1..8 
LEDs) , schreibe das komplette Programm und prüfe, wie Du mit dem 
Ergebnis zufrieden bist.

von Timo H. (x1jmp)


Angehängte Dateien:

Lesenswert?

Ich habe meinen Schaltungsentwurf mal überarbeitet und Controller und 
Display getrennt, damit ich die Steuerung auf einer kompakten Platine 
unterbringen kann, dafür habe ich gleich mal versucht ein Layout zu 
entwerfen.

Die Matrix soll jetzt mit Zeilenmultiplex betrieben werden.
Mein Ziel ist es, mit möglichst wenig Taktzyklen eine bestimmte LED 
ein-/ausschalten zu können, deshalb habe ich mir eine Schaltung mit 
FlipFlops statt Schieberegistern überlegt.


Für den Controller habe ich gleich versucht, eine Platine zu entwerfen.

Ich würde gerne nochmal von euch wissen, ob ihr glaubt, dass die 
Schaltung so funktioniert, wie ich es mir vorstelle und ob meine Platine 
in Ordnung ist (habe noch nie eine entworfen/geätzt und will unbedingt 
damit anfangen :) )

Gruß
Timo

von Toga (Gast)


Lesenswert?

Hi ...
Leute ich hab ma ne ganz simple Frage ich hab jetzt mein Elektroniker in 
Maschinen- und Antriebstechnik gemacht ich hab auch etwas Erfahrung mit 
Schaltungen aufbauen und den ganzen simplen Kram hab aber bei nem scheiß 
Betrieb gelernt wo man sich net wirklich um sowas gekümmert hat
Deshalb wo lernt man sowas ... oder wie?
 habt ihr irgendwelche tipps für mich mich hab net ma Ahnung was 
multiplex is usw

von Falk B. (falk)


Lesenswert?

@ Toga (Gast)

>Deshalb wo lernt man sowas ... oder wie?

In der Praxis. Auch viel im Internet. Learning by doing.

> habt ihr irgendwelche tipps für mich

http://www.mikrocontroller.net/articles/Spezial:Alle_Seiten

> mich hab net ma Ahnung was multiplex is usw

Multiplexen
LED-Matrix

MFG
Falk

von gast (Gast)


Lesenswert?


von Miro D. (intercop)


Lesenswert?

gibts noch mehr infos dazu?

von Andreas (Gast)


Lesenswert?

Hallo,

ich versuche gerade eine ähnlich Schaltung zu entwerfen.
Den 74AC11238 gibt es nicht mehr. Kann ich dafür auch einen 74AC138 
verwenden?

MFG

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.