mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED-Matrix Pong


Autor: Fabian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich weiß, es gibt hier sehr viele Artikel zu diesem Thema und ich habe 
sie Alle gelesen.

Ich möchte eine 16x16 LED-Matrix bauen mit ultrahellen blauen LEDs (d.h. 
3,5V Flussspannung) und habe zwei Spannungen (5V und 12V) zur Verfügung.

Im Anhang habe ich einen Schaltplan angehängt und möchte einfach wissen, 
ob ich grobe Fehler gemacht habe und dies so funktionieren würde.

Oder ob ihr Vebesserungsvorschläge habt. Zur Schaltung:

Links ist der USBasp von fischl zu sehen, der dann fest mit dem ATMega32 
verbunden sein soll.

Frage: Da ich den SPI bereits für die Schieberegister nutze, bin ich den 
AVR Hardware Design Considerations gefolgt und habe die SPI Leitungen 
vom Programmer zu den Registern über Widerstände "abgeschirmt".

http://www.atmel.com/dyn/resources/prod_documents/... auf Seite 
5

Würde dies so funktionieren?

Der Mega32 dann steuert eine selbstgebaute 16x16 LED-Matrix im 
Spaltenmultiplex 16:1. Die Zeilentreiber sind UDN2981, da hier bei 
Spaltenmultiplex ja immer nur eine LED pro Treiberstufe zu versorgen 
ist.
Der Pulsstrom für die LEDs ist hier auf 100mA eingestellt mittels  eines 
68 Ohm Vorwiderstands bei 12V Betriebsspannung für die Zeilentreiber.
Dabei wurde ein Spannungsabfall an den Treibern und FETS von 2V 
einkalkuliert. Als Schieberegister wurden die 74HC595 verwendet, wobei 
hier 2 davon kaskadiert wurden.

Der Spaltenmultiplex ist realisiert über einen 74HC161 einen synchronen 
4Bit Binärzähler, der seine "Zahl" ausgibt an den 74HC4514 einen nicht 
invertierenden Demultiplexer 4-16. Am Enable des Demux hängt ein 
Inverter, damit, wenn der Pin noch auf Low steht auch wirklich keine 
Spalte ausgewählt ist. (denn im Datenblatt ist ein High am Enableeingang 
zum Low setzen der 16 Ausgänge gefordert)

Die Verwendung des 74HC4514 soll gewährleisten, dass wirklich auch immer 
nur eine Spalte auf Masse gezogen ist, sodass die Zeilentreiber nicht 
zerstört werden.

Jeder Kanal des Demux steuert dann einen n-Channel Logic Level MOSFET 
(IRLD024). So braucht man immer nur ein Taktpuls erzeugen, um die 
nächste Spalte auf Masse zu schalten.

Problem 1:

Da der IRLD024 ein LL-MOSFET ist, schaltet der ja schon bei TTL High 
Pegel voll durch.=>

Sperrt dieser auch wirklich bei einem Low Pegel vom Demux ?
(Im Datenblatt sind 1,35V Max für Low angegeben.)

Problem 2:

Kann ich die Ausgänge von HCMOS ICs direkt an Eingänge eines 
entsprechenden, anderen ICs hängen?

Bei den FETs ist jeweils ein 100k Widerstand von Gate zu Masse (Source) 
eingeplant, um das Gate wieder entladen zu können. Bei vielen 
Schaltungen habe ich gesehen, dass dieser fehlt.

Problem 3: Ist dieser evtl. zu groß?

Vorstellbar ist, dass es ab einer bestimmten Frequenz problematisch 
werden könnte und sich das Gate nicht schnell genug wieder entladen 
kann. Ließe sich evtl. berechnen. (man kennt ja die e-Funktion, Spannung 
am Kondensator)

Problem 4: Da oft nicht verwendet (siehe oben), kann ich den 
Gatewiderstand weglassen?


Vielen vielen Dank für die Geduld beim Lesen des Texts.
Ich wäre für Hinweise dankbar und Verbesserungen dankbar.

Einen schönen Abend noch.

Fabian

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade...Der Titel hätte wohl aussagekräftiger sein müssen...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Fabian (Gast)

>      schaltplanmatrix.png
>      196,6 KB, 13 Downloads

Du solltest die Auflösung beim Export am besten auf 1000dpi stellen, dan 
kann soger ein Blinder deinen Schaltplan lesen . . .

>Im Anhang habe ich einen Schaltplan angehängt und möchte einfach wissen,
>ob ich grobe Fehler gemacht habe und dies so funktionieren würde.

Nein. Dein UDN schlcukt ca. 1,5V, bleiben nur noch ~3,5V 
Ausgangsspannung. Zu wenig für blaue 3,3V LEDs und den Vorwiderstand.

>Der Mega32 dann steuert eine selbstgebaute 16x16 LED-Matrix im
>Spaltenmultiplex 16:1.

Sollte man auf 2x 8:1 verändern, 16:1 macht schon arg hohe Pulsströme. 
Ausserdem mögen die blauen LEDs das sowieso nicht besonders.

>Der Pulsstrom für die LEDs ist hier auf 100mA eingestellt mittels  eines
>68 Ohm Vorwiderstands bei 12V Betriebsspannung für die Zeilentreiber.

Nöö, deine Zeilentreiber hängen an 5V.

>Dabei wurde ein Spannungsabfall an den Treibern und FETS von 2V
>einkalkuliert.

Das passt.

>Der Spaltenmultiplex ist realisiert über einen 74HC161 einen synchronen
>4Bit Binärzähler, der seine "Zahl" ausgibt

Wozu? Das kann der AVR direkt.

>Die Verwendung des 74HC4514 soll gewährleisten, dass wirklich auch immer
>nur eine Spalte auf Masse gezogen ist, sodass die Zeilentreiber nicht
>zerstört werden.

Das kann man auch sauber programmieren, ohne extra IC.

>Sperrt dieser auch wirklich bei einem Low Pegel vom Demux ?

Ja.

>(Im Datenblatt sind 1,35V Max für Low angegeben.)

Man nimmt heute sowieso nur noch HC oder HCT Typen.

>Kann ich die Ausgänge von HCMOS ICs direkt an Eingänge eines
>entsprechenden, anderen ICs hängen?

Ja.

>Bei den FETs ist jeweils ein 100k Widerstand von Gate zu Masse (Source)
>eingeplant, um das Gate wieder entladen zu können.

Das ist ein Pull-Down, der den FET sicher sperren soll, wenn der 
ansteuernde Pin vom uC im Reset als Eingang geschaltet ist.

>Problem 3: Ist dieser evtl. zu groß?

Nein.

>Vorstellbar ist, dass es ab einer bestimmten Frequenz problematisch
>werden könnte und sich das Gate nicht schnell genug wieder entladen
>kann.

Das macht der ansteuernde IC selber.

>Problem 4: Da oft nicht verwendet (siehe oben), kann ich den
>Gatewiderstand weglassen?

Hier schon, da der V1 keine Tristateausgänge hat.

>Ich wäre für Hinweise dankbar und Verbesserungen dankbar.

Siehe LED-Matrix

MFG
Falk

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk
Ok...zugegeben war beim Export die Auflösung etwas groß...

Die ULN2981 sollen an 12V hängen, habe ich da evtl. falsch 
eingezeichnet.
Dann ist der Spannungsabfall ja nicht weiter schlimm.

Über den Pulsstrom habe ich mir ebenfalls Gedanken gemacht. Blöd ist 
nur, dass ich die LEDs bei Ebay ersteigert habe und der Händler keine 
Angaben dazu machen kann und er auch keinen Hersteller angibt.

Um die LEDs nicht zu gefährden und in Anbetracht der Tatsache, dass ich 
keinerlei Angabe zum Pulsstrom habe, werde ich wohl deinem Rat folgen.

Vielen Dank nochmal für deine Mühe.

Fabian

Autor: Markus M. (adrock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

möchte noch kurz etwas zum Thema "blaue LEDs und Muliplexing" sagen:

Habe mir für eine 12x12 Matrix auch relativ günstige blaue diffuse LEDs 
geholt. Nach meiner Erfahrung ist das Multiplexing mit 1:16 tatsächlich 
zu wenig. Da wird Dir eine Menge Helligkeit verlorengehen und das kannst 
Du auch mit den hohen Impulsströmen nicht ausgleichen.

Habe deswegen meine Matrix von 12x12 auf 6x24 Ansteuerung geändert, dass 
muss man dann eben in der Software ausgleichen.

Ciao...
Markus

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus

Danke für den Hinweis.

Nun in meinem Fall sind es superhelle blaue LEDs mit 24000mcd. Habe ein 
wenig herumgespielt und getestet und festgestellt, dass sie auch noch 
bei 5mA Dauerstrom noch sehr hell leuchten.

Denke mal, dass ich das Ganze "offen" gestalte, sodass man das 
Verhältnis noch in SW ändern kann.

Vielen Dank nochmal.

Gruß

Fabian

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Fabian (Gast)

>Denke mal, dass ich das Ganze "offen" gestalte, sodass man das
>Verhältnis noch in SW ändern kann.

Geht nicht, denn dann musst du deine Hardware ändern.

MFG
Falk

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei Verwendung von nochmals 2 Schieberegistern für die Spalten 
sollte das doch möglich sein...

Dann wird eben nur 10000000:10000000 gesendet und dann jeweils nach 7 
CLKs wiederholt. So hätte ich dann ein 8:1 Spaltenmultiplex, da jeweils 
2 Spalten gleichzeitig aktiv wären.

Sende ich 10000000:00000000 und warte 15 CLKs und wiederhole, hätte ich 
doch dann den alten 16:1 Spaltenmultiplex. Oder?

So müsste es doch möglich sein, das Ganze "offen" zu gestalten?

Gruß

Fabian

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zusatz zu oben:

Natürlich dürfen dann die Zeilentreiber nicht überfordert sein.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fabian (Gast)

>So müsste es doch möglich sein, das Ganze "offen" zu gestalten?

Ja.

Aber vergiss den externen Zähler und auch deinen 16:1 MUX. Denn der hat 
u.a. das Problem, dass IMMER ein Ausgang aktiv ist. Wenn du deinen AVR 
progammierst, und das dauert eineige Dutzend Sekunden, verglühen die 
LEDs dieser Spalte. Nimm statt dessen zwei 74HC138, das sind 8:1 MUXe 
mit Enable Eingang.

MFG
Falk

Autor: Lazlo Panaflex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ich vorhin drüber gestolpert. Vielleicht interessiert es dich ja: 
http://separaterealities.com/projects/acceled_pong/

Gruß

Autor: Fabian W. (fabwil10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So...hab mich mal kurzerhand angemeldet.

Vielen Dank Falk für die Bestätigung. Natürlich würde ich dann den 
Zähler und den 16:1 Mux weglassen.

> Aber vergiss den externen Zähler und auch deinen 16:1 MUX. Denn der hat
> u.a. das Problem, dass IMMER ein Ausgang aktiv ist. Wenn du deinen AVR
> progammierst, und das dauert eineige Dutzend Sekunden, verglühen die
> LEDs dieser Spalte.

Um dieses Problem zu entgehen, hatte ich ja einen Inverter an den EN 
gehängt.

siehe:

>(denn im Datenblatt ist ein High am Enableeingang des 74HC4514
> zum Low setzen der 16 Ausgänge gefordert)

Ich werde dann mal einen aktualisierten Schaltplan in angemessener 
Auflösung hochladen. Könnte für Andere hilfreich sein.

Eine allerletze Frage: Weiß Jemand zufällig, ob die Ausgänge vom 74HC595 
Tristated sind? (bezieht sich darauf, da dann ja wieder die Pull-Down 
Widerstand an den MOSFETs nötig sind)

@Lazlo

Eine schöne Sache. Allerdings soll das hier in ein Gehäuse fest 
eingebaut werden (in ein Computergehäuse) und da wäre ein 
Beschleunigungssensor wenig hilfreich. ;-) Es sei denn man will 
Bodybuilding betreiben...

Gruß

Fabian

Autor: Fabian W. (fabwil10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich den obigen Beitrag nicht editieren konnte.

Nachtrag:

Der 74HC138 ist doch invertierend. Wir wollen doch aber das Gegenteil. 
Dann doch eher der 74HC238, wenn ich richtig sehe...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Fabian W. (fabwil10)

>> progammierst, und das dauert eineige Dutzend Sekunden, verglühen die
>> LEDs dieser Spalte.

>Um dieses Problem zu entgehen, hatte ich ja einen Inverter an den EN
>gehängt.

Ahhhh, gar nicht gesehen. Der Pin ist aber auch nicht beschriftet!
Der Inverter ist unnötig und für das Problem wirkungslos. Man muss einen 
Pull-Up oder Pull-Down Widerstand verwenden, welcher die MUX 
deaktiviert, wenn der AVR programmiert wird.

>Ich werde dann mal einen aktualisierten Schaltplan in angemessener
>Auflösung hochladen. Könnte für Andere hilfreich sein.

Wäre von Vorteil.

>Eine allerletze Frage: Weiß Jemand zufällig, ob die Ausgänge vom 74HC595
>Tristated sind?

Das Datenblatt?

MFG
Falk

Autor: Fabian W. (fabwil10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ahhhh, gar nicht gesehen. Der Pin ist aber auch nicht beschriftet!
> Der Inverter ist unnötig und für das Problem wirkungslos. Man muss einen
> Pull-Up oder Pull-Down Widerstand verwenden, welcher die MUX
> deaktiviert, wenn der AVR programmiert wird.

Ups. Vielen Dank für den Hinweis. Habe nicht an die Möglicgkeit gedacht, 
dass die AVR Pins beim Programmieren ja tristated sind...

Das hätte wahrscheinlich ne böse Überraschung gegeben.

btw:
Wenn ich die Enable Leitungen dann mit Pull-down beschalte, muss ich 
mich dann eigentlich noch um die SPI Leitungen kümmern, die ja vom AVR 
an den Programmer und an die Register gehen?

(siehe AVR Design Considerations)
http://www.atmel.com/dyn/resources/prod_documents/...
auf Seite 5

>In case other devices than
>the AVR is connected to the ISP lines the programmer must be protected >from any
>device, other than the AVR, that may try to drive the lines. This is >specially 
important
>with the SPI bus, as it is similar to the ISP interface. Applying series 
>resistors on the
>SPI lines, as depicted in Figure 4-2, is the easiest way of doing this

Grüße

Fabian

Autor: Markus M. (adrock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nochetwas zum Thema Helligkeit:

Am besten Du baust einmal eine kleine Versuchsschaltung auf, wo Du eine 
LED mal mit 1:16 Tastverhältnis bei der geplanten PWM Rate und dem 
entsprechenden Vorwiderstand ansteuerst. Da kannst Du dann ja sehen, ob 
die Helligkeit Deinen Ansprüchen genügt, bevor Du die Schaltung komplett 
baust.

Ciao...
Markus

Autor: Fabian W. (fabwil10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hatte ich auch vor gehabt;-)

Wäre auch etwas nervig wenn sich herausstellt, dass man nur deswegen 
nichts sieht, weil die LED entweder durchgebrannt sind oder zuwenig 
Strom bei dem geplanten Dutycycle bekommen...

Gruße

Fabian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.