Forum: Mikrocontroller und Digitale Elektronik viele led's mit einem Atmel ansteuern


von sucker (Gast)


Lesenswert?

Hallo,
Für mein Schulprojekt muss ich 40 und evtl. mehr Rgb Led's ansteuern
können. Und da habe ich gleich an eine Art Matrix gedacht, diese kommt
aber für mich nicht in frage, da ich jede led einzeln ansteuern können
muss, und sobald da mehr als zwei led's leuchten würden, würden andere
unerwünschte led's mitleuchten.. deswegen frage ich hier einmal, welche
anderen Möglichkeiten ich sonst noch hätte?
Evtl. andere Controller oder so.. die ich mit einem Bus mit dem Atmel
verbinden kann, da habe ich nämlich so einen Chip aus einem alten
LCD-Display.... da schickt man eine Zahl hin, und dann wird an einem,
der zahl entsprechendem Pin, spannung angelegt...
Auf jeden Fall wäre ich für Vorschläge sehr dankbar.

Thx in advance

von Karl heinz B. (heinzi)


Lesenswert?

Schieberegister

von sucker (Gast)


Lesenswert?

hallo, kann ich damit auch mehrer Led's gleichzeitig leuchten lassen?
dh. wirklich nicht hintereinander, sondern wirklich zur gleichen zeit?

von Berti (Gast)


Lesenswert?

wo liegt das problem bei einer Matrix? macht doch ein LC Diplay genau
das gleiche Prinzip!

von sucker (Gast)


Lesenswert?

ja, aber da wird doch led nach led eingeschaltet.. halt nur ganz schnell
hintereinader..
Bei einer Matrix ist es nämlich so, dass wenn ich zwei bestimmte Led's
leuchten lasse, dann leuchtet eine 3 unerwünschte automatisch auch mit,
und das darf bei meinem projekt nicht passieren..ich muss mehrer oder
gar alle leds gleichzeitig zur gleichen zeit leuchten lassen, und zwar
wirklich zur gleichen zeit..

von Karl heinz B. (heinzi)


Lesenswert?

Yep.
Ein Schieberegister must Du Dir wie Deine Ports vorstellen.
Nur kannst Du nicht jeden Pin 'direkt' erreichen.
Du taktest die Ausgabedaten durch. Bei jedem Takt wird
die komplette Belegung um eins weitergeschoben.

Ist so wie bei der Feuerwehr in den alten Tagen.
Die Maenner bilden eine Kette. Dem ersten drueckst
du einen gefuellten oder nicht gefuellten Eimer in die
Hand. Wenn Du ihm den naechsten Eimer gibt, dan gibt er zuerst
seinen an seinen Nachbarn weiter (der ebenfalls seinen an seinen
Nachbarn weitergibt, etc.). D.h. wenn du 40 Maenner hast
und dem ersten insgesamt 40 Eimer gegeben hast, dann hat jeder
einen. Auf Kommando drehen dann alle ihre Eimer um, und je nachdem
in welcher Reihenfolge du die gefuellten Eimer beim ersten Mann
eingespeist hast, entsteht am Boden ein tolles Muster aus
Wasserflecken.

So aehnlich halt, nur mit IC's :-)

von Karl heinz B. (heinzi)


Lesenswert?

Oh. Ich vergass.
Das weiterschieben geht in einem Schieberegister natuerlich
ohne dass man es an den Ausgaengen sieht.
Die Ausgaenge behalten ihren alten Zustand bis der Befehl
zur Uebernahme aus der Schiebekette kommt.

von Ithamar G. (antimon)


Lesenswert?

@sucker (toller Name übrigens :P):

Klar kannst du mehrere gleichzeitig leuchten lassen... und das
prinzipiell sogar beliebig weit kaskadierbar...

Such dir mal ein Datenblatt von nem Schieberegister, das Prinzip sollte
dir (hoffentlich) klar sein. Du schiebst deine Daten erst rein, und wenn
alle eingetroffen sind übernimmst du die parallel an den Ausgang, das
HC595 kann das beispielsweise...

von sucker (Gast)


Lesenswert?

kann mir da jemand ein beispiel dafür geben? bin auf der FOS und weis
noch nicht was ein schieberegister ist und wie das funktionier..
Aber wenn das geht, dann wäre das natürlich sehr sehr gut für mich
geeignet..

danke für die info!

von Matthias Beitz (Gast)


Lesenswert?

Du kannst das auch in einer Matrix machen. Dafür brauchst du dann 5x8
Ports pro Farbe. Du musst das dann Zeilenweise Ansteuern und das
schneller wie das Auge sehen kann also mit sagen wir mal 50Hz. Dann
kannst du auch Belibig LEDs ein und Ausschalten ich hab das irgendwann
mal mit einer 8x8 Matrix gemacht.

von sucker (Gast)


Lesenswert?

das geht leider nicht:( weil ich vor habe etwas ähliches wie eine
litfassäule zu machen, da habe ich eine Spalte leds (20 Leds
untereinander) und diese Spalte wird dann 360° gedreht bei einer hohen
umbrehungszahl.
und deswegen müssen alle led's auch gleichzeitig, ohne geringe
verzögerung an und ausgehen, da sonst das bild verziehen würde wenn ich
die leds von oben nach unten leuchten lassen würde..

von bluppmator (Gast)


Lesenswert?

(Gibts eigentl. nen Schieberegister dessen 8 Ausgänge ich mit 20mA
belasten kann, allerdings bei allen Ports gleichzeitig ?)

von sucker (Gast)


Lesenswert?

nimm halt einen transistor bei jedem ausgang ..

von bluppmator (Gast)


Lesenswert?

..genau die Dinger wollte ich mir dadurch sparen ;D

von Berti (Gast)


Lesenswert?

und ein ULN?

von Philipp B. (philipp_burch)


Lesenswert?

@sucker:
Wie wär's denn mit mehreren µCs? Wenn du 120 IOs brauchst, dann
könntest du ja z.B. 3 ATmega64 (Einen pro Farbe z.B.) verwenden, die
haben je 53 IOs. Und dann über irgendeine Schnittstelle die Komm
regeln. Kostet aber ordentlich Geld nehm' ich mal an.

von Sssssss (Gast)


Lesenswert?

Hi!

Ah ne Propeller Clock ;)
Bei meiner hängt an jedem Atmel Pin eine led die 15mA zieht.
Insgesamt ein wenig ausserhalb der Spezifikationen, aber
die Atmels sind ja sehr robust. ;D

Guck dir zb mal die ispf propellerclock an:
http://www.ispf.de/modules.php?name=News&file=article&sid=2
http://www.ispf.de/files/propellerclock/decoder_sch.gif
Dort werden 2 ULN2003 verwendet.

Sonst nimm halt kleine mosfets in sot23 Bauform (smd).

Oder such mal hier im Forum nach "propeller" dort findest du einige
Anregungen ;)

von Schoaschi (Gast)


Lesenswert?

Oder wie wärs mit einem IO-Expander?! Gibt welche mit 28Ausgängen die
direkt LEDs treiben können. Davon nimmst du halt 2.Angesteuert werden
diese entweder über I²C oder SPI.

Aber eine Matrix würde doch auch gehen.
Ich steuer damit 64 Leds.. naja ok sagen wir 32, da immer 2 in serie
sind... an :-)

von Christof Rieger (Gast)


Lesenswert?

Sollen die virtuellen Lichtpunkte auch noch in der Helligkeit variert
werden können ? (mehr als 8 Farben)

von TobyTetzi (Gast)


Lesenswert?

Hallo,

ich habe seiner Zeit HC595 Schieberegister verwendet.
Diese leuchteten so lange im alten muster, bis die neuen Daten
"durchgeschoben" waren, und dann vom Storage Register ins
Anzeigeregister "geschoben" wurden.
Als MC nutzte ich einen Mega8, denn der hat eine Hardware SPI.
So habe ich im Hintergrund die Daten in die HC`s geschoben,
während der AVR mit der Umdrehungsgeschwindigkeit und der
Spaltenzeitberechnung zu tun hatte.

Es gibt VHC595, die können pro Ausgang 20mAh treiben.
Das spart die Transistoren, bzw. das ULN.

Gruß Toby

von AntonWert (Gast)


Lesenswert?

Wie geht das mit dem SPI? kann ich das direkt mir dem Schieberegister
verbinden?

von TobyTetzi (Gast)


Lesenswert?

Hi,

suche mal unter "HC595" hier im Forum.
Du hast am AVR eine Datenleitung (MOSI), darüber gehen die Daten,
eine Taktleitung (SCK),
eine Enableleitung (Portpin von AVR, EN an HC595),
und dann noch Plus und Minus.

Also 5 Leitungen vom AVR zum Schiberegister.

Dann schreibst Du einfach 8 Bit ins SPI Register,
Enable Leitung einmal High/Low, und die Daten vom Storageregister
(Speicher der HC595) ins Anzeigeregister zu kopieren,
und die Ausgänge der HCs zeigen dein Bitmuster an, bis du neue Daten
ins HC schiebst.

Die Beschaltung findest du auch hier, schau mal unter "Hagens"
Schaltplan, der hat einwandfrei funktioniert.

Gruß Toby

von sucker (Gast)


Lesenswert?

Hallo, danke für euere tollen Beiträge.
Ich denke ich nehme ein Schieberegister, matrix geht wirklich nicht..
aber das mit dem IO-expander hört sich auch gut an..

Habe da einen chip da, der hat 60 anschlüsse oder so, und bestitzt 7
pin  bus leitung.. über die man eine zahl übertragen kann, sodass dann
derjenige pin auf High geht.. Ist einer aus einem alten LCD display.

thx

von olda (Gast)


Lesenswert?

sowas nennt sich multiplexer wenn ich mich nicht irre. mit sowas kannst
du aber nur einen aus den 60 leds ansteuern.

von sucker (Gast)


Lesenswert?

oh, na dann ist das nichts für micht. Dann nimm ich mal das
Schieberegister.
ich denke ich mache das so, dass ich 3 µcpus nehme (für jede Farbe
eine) und dann jeweils 5 Schieberegister anschließe.
ich muss ja dann jeweils für jede Farbe 40 bits hintereinander an die
Schieberegister ausgeben, wie lange (wie schnell) dauert das, bis alle
40 bits ausgegeben wurden, sodass alle Leds leuchten?
Gibt es auch Schieberegister die mehr als 8 bit haben?
16Bit zb?



danke

von TobyTetzi (Gast)


Lesenswert?

Hallo,

beim Mega kannst du mit 1/2 des MCU Taktes die SPI Schnittstelle
nuten.
Ich hatte mit 4 Schieberegistern, 8 MHz MCU Takt, 720 Spalten pro
Umdrehung keine Probleme.

Probier es einfach mal aus.

Wie teilst Du den 3 Prozessoren mit, bzw. den 2 Anderen, was sie machen
sollen?
Ich hatte mal eine Idee, einen als Master laufen zu lassen,
der die Bilder hat.
Die anderen 2 als Slave, die nur die Leds treiben.

Gruß Toby

von Jürgen Schuhmacher (Gast)


Lesenswert?

Guckst Du hier:

http://home.arcor.de/juergen.schuhmacher/eaglesevensegboard.html

Geht auch für normale LEDS!

von rainer (Gast)


Lesenswert?

^Hallo, mache grad auch sowas ähnliches.
Ich benutze da einen I2C LED Treiber, der kann je Modul 16Led's
treiben "PCA9532". Den gibt es als Dimmer und als Blinker.
Des weiteren kann man die PWM (Helligkeit) pro LED einstellen. Perfekt
also für RGB ansteuerung. Mit 3 Bausteinen (1Baustein pro Farbe) davon
kannst du das gesamte Farbspektrum abbilden

von sucker (Gast)


Lesenswert?

Hey, das mit dem PCA9532 gefällt mir, kann ich da auch alle 16led's
gleichzeitig leuchten lassen?
Und da hätte ich gleich noch eine frage, nämlich: Wozu sind Latches
gut? Was ich rausbekommen habe ist: es sind transparente flip-flops,
wobei ich weis, dass filp-flops als speicher verwendet werden... Wozu
kann man diese Latches denn bei Schieberegistern verwenden, welchen
Zweck haben die?

danke

von Jürgen Schuhmacher (Gast)


Lesenswert?

Die Latches speichern die einmal eingeschriebene Information - siehe
Funktion des AdressLatchs  bei kombinieren AdressDatenbussen.

Die Latches HIER werden mit einem einzigen Datenbus parallel
beschrieben, aber nur eins per chip select aktiviert. Damit leuchten
die LEDS dauerhauft, während die auf dies Weise angesprochenen
LED-Maxtrix-Systeme immer blinken und hohe update-Raten benötigen.

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.