Forum: Mikrocontroller und Digitale Elektronik AVR Mega8 LED-Matrix


von Christian P. (planteu)


Angehängte Dateien:

Lesenswert?

Einen schönen guten Tag erstmal an alle,

Ich habe mir in meiner Freizeit eine LED Matrix mit 16x7 LED aufgebaut 
mit einem AVR Mega8-P und als Schieberegister einen 74HCT154N. Die 
Verbindungen zu den LED's gehen über ein Kabel zu einer anderen Platine. 
Das  Projekt ist fertig aufgeaut, nur mein Problem ist jetzt die 
Programmierung.
Ich habe schon zahlreiche Seiten durchgestöbert, nur richtige 
Informationen oder ein Beispielprogramm leider nicht.
Und desshalb meine Frage: Könnte sich bitte jemand diese Schaltung 
ansehen und mir vielleicht ein kleines Beispielprog. schreiben fürs 
BASCOM-AVR Studio mit ein paar Komentaren das ich dies selbstständig 
weiterführen kann.
Oder vielleicht nen Link das ich mich dannach auskenne.

Bitte Danke schon mal im Vorraus.

mfg

Planteu

von Bastler (Gast)


Lesenswert?

Ein 74HCT154 ist kein Schieberegister, sondern ein 4 zu 16 Dekoder!

Nimm zwei 74xx595 !

von Markus F. (civicbcc)


Lesenswert?

meinst du

BASCOM AVR
oder
AVR STUDIO

bzw. basic, c oder assembler?

von Christian P. (planteu)


Lesenswert?

sorry, Bascom AVR, und ich versuchs mal in C. Ich habe jetzt gerade 
dieSchaltung an Spannung gelegt, die Spannung für den Mega8 beim Sockel 
stimmt 5,25V, nur das einzige Problem, wenn ich die LED's anschließe 
leuchten schon ein paar, ich glaub fast das das Kabel damit zu tun hat, 
den wenn ich am Kabel ziehe oder sonstige Bewegungen mache verändern 
sich die LED's die leuchten.
Und ich habe jezt leider nicht die Möglichkeit den 74HCT154N durch was 
andres auszutauschen.

Ich hoffe Ihr könnt mir weiterhelfen

mfg Planteu

von Bastler (Gast)


Lesenswert?

>>Und ich habe jezt leider nicht die Möglichkeit den 74HCT154N durch was
>>andres auszutauschen.

Das kann auch über die Ansteuerung (Software) gelöst werden.
Dabei musst du Spalten anstelle von Zeilen multiplexen.

PS: Nimm 5V nicht 5,25V

von Hannes L. (hannes)


Lesenswert?

> Das  Projekt ist fertig aufgeaut

Das ist nicht gut...

Denn damit wirst Du sehr unterschiedliche Pixel-Helligkeiten erreichen. 
Das Problem ist Folgendes:

Du hast 7 Zeilentreiber mit Transistoren, die Du gleichzeitig in 
verschiedenen Kombinationen schalten kannst. In den Zeilenleitungen 
sind keine Strombegrenzungswiderstände.

Du hast 16 Spaltenleitungen ohne Treibertransistoren, aber mit 
Strombegrenzungswiderständen, von denen aufgrund des 4-zu-16-Decoders 
immer nur eine Spalte aktiv sein kann.

Erstens kann der Spaltendecoder den Strom für bis zu 7 LEDs nicht 
aufbringen, zweitens bewirkt der Strombegrenzungswiderstand eine 
unterschiedliche Helligkeit, je nachdem, wieviele LEDs per Zeilentreiber 
eingeschaltet sind. Bei unterschiedlichen LEDs (Streuung der 
Flussspannungswerte) kann es sogar passieren, dass man einzelne LEDs 
nicht sieht.

Aufgrund der untauglichen Hardware ist es sinnfrei, Programmvorschläge 
zu machen.

Umbauvorschlag:
Setze in die 7 Zeilenleitungen nur Strombegrenzungswiderstände 
(Transistoren rausnehmen) und statte die Spaltenleitungen mit 16 
Treibertransistoren (z.B. 2 Stück ULN2803) aus. Im Programm machst Du 
dann Multiplexing. Du rufst also in regelmäßigen Zeitabständen (am 
besten per Timer synchronisiert, ist besser als WAIT xyz) eine Routine 
auf, die eine 0 in den Zeilenport schreibt, dann den Spaltenzähler 
erhöht, dann das (zur Spalte gehörende) neue Bitmuster an den Zeilenport 
ausgibt und dann zur Tagesordnung zurückkehrt, um andere triviale 
Aufgaben zu erledigen, wie z.B. das Bereitstellen der Anzeige-Bitmuster 
aus einem ASCII-Text und einem Zeichensatz (auch als Laufschrift 
machbar).

...

von Christian P. (planteu)


Lesenswert?

ja das mit die 5,25V und den schon leuchtenden LED'S ist schon geklärt. 
Mein Projektpartner hat die Transistoren falschrum reingelötet, jezt hab 
ich nur noch das Problem mit der Programierung.
Kann mir bitte jemand ein winziges Beispielprog. geben oder schreiben, 
nur zum testen, geradesoviel das ein paar LED's leuchten mehr nicht, auf 
den Rest komm ich dann wahrscheinlich von selbst, ich brauch ja nur 
einen Anfangspunkt.

mfg

von Hannes L. (hannes)


Lesenswert?

> Mein Projektpartner hat die Transistoren falschrum reingelötet, jezt hab
> ich nur noch das Problem mit der Programierung.

Falsch...

Deine Schaltung ist zwar geeignet, einzelne LEDs leuchten zu lassen, 
aber ein ordentliches Multiplexing der Spalten oder Zeilen ist damit 
nicht möglich. Siehe meinen obigen Beitrag.

...

von Christian P. (planteu)


Lesenswert?

naja, danke auf jeden fall für die schnelle Hilfe, vielleicht bekomm 
ichs ja noch hin, und auch wenn nur einzelne LED's leuchten, ich wills 
nur mal zum Programmieren schaffen.

von Hannes L. (hannes)


Lesenswert?

Christian Planteu wrote:
> naja, danke auf jeden fall für die schnelle Hilfe, vielleicht bekomm
> ichs ja noch hin, und auch wenn nur einzelne LED's leuchten, ich wills
> nur mal zum Programmieren schaffen.

Auch wenn es nicht wirklich Sinn macht, schalte Zeilenport und die 
verwendeten Bits des Spaltenports auf Ausgang (Einsen in die 
DDR-Register), lege die Nummer der Spalte, die ausgewählt werden soll, 
an den Spaltenport (PORT-Register) und das Bitmuster, welche LEDs der 
Spalte leuchten sollen, an den Zeilenport (PORT-Register).

Da ich im Browser den Text (und damit die Pinbezeichnungen) Deines 
Schaltplanes nicht lesen kann, aber keine Lust habe, mir jedes PNG-Bild 
herunterzuladen und mir die Platte zuzumüllen, kann ich jetzt keine 
genaueren Angaben zu den Portregisternamen machen.

Achja, schalte nicht zuviele LEDs einer Spalte auf einmal ein...

Und beginne das nächste Projekt mit einer besseren Planung... ;-)

...

von Hannes L. (hannes)


Lesenswert?

> (z.B. 2 Stück ULN2803)

Das war natürlich Quatsch, ich hatte nicht bedacht, dass der Decoder 
L-aktive Ausgänge hat. Also nehme ich alles zurück und behaupte das 
Gegenteil... (oder auch nicht...)

...

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.