Forum: Mikrocontroller und Digitale Elektronik RGB-LED / Matrix / Ansteuerung / AVR


von Markus -. (mrmccrash)


Angehängte Dateien:

Lesenswert?

Glück Auf!

Ich habe ein Problem:

13x SMD-RGB LEDs wollen angesteuert werden. Die LED haben jeweils eine 
gemeinsame Anode, mein erstes Design führt selbige je LED zum 
Controller, bei zusammengefassten R, G und B Anschlüssen. d.h. ich habe 
derzeit eine 3x13 Matrix. Anzeigen möchte ich wahlweise ein einfaches 
VU-Meter (nur grün/rot) und alternativ den Stellbereich eines Parameters 
(in Verbindung mit einem Drehencoder), in dem Fall also statisch 
rot/grün Anzeige mit Kennzeichnung Blau für den aktuellen Parameterwert.

Die LED sind handelsüblich (I=20mA; R 2,1V; G 3,8V; B 3,8V). Ansteuern 
wollte ich das ganze zuerst mit einem Mega16, wobei ich hier befürchte, 
dass dieser a) zu langsam wird, da: 13 x 3 x 200Hz PWM x 8 PWM Stufen -> 
62,4kHz benötigte Timerfrequenz und b) Energieprobleme bekommen wird, da 
ich aufgrund akuten Platzmangels keine externen Treiber einsetzen kann.

Ob ich PWM einsetzen werde ist noch offen, ich wollte mir hier noch eine 
Tür offen halten für weitere Ideen. Ohne PWM komme ich auf 7,8kHz, das 
könnte ich mit Soft-PWM auch noch auf einem Mega16 schaffen. Allerdings 
bekomme ich damit nicht meine LEDs angetrieben, da ich, um nicht mit 
1/13 Taktung jede LED einzeln pulsen zu müssen, immer eine Farbleitung 
(R, G, B) und sämtliche zu aktivierende LED einschalten möchte. Das 
würde jedoch im Worrst Case bedeuten, ich hätte 13x20mA an einem AVR-Pin 
hängen.

Wie stelle ich das dann am sinnvollsten an? Ich habe jetz schon mehrfach 
von dem TLC5922 gelesen, könnte der mir wieterhelfen, ohne dass ich mein 
ganzes Layout noch mal überarbeiten muss? Aufgrund der Anordnung der 
RGB-LED komme ich nicht wirklich gut ohne 2-Layer Platine an alle Pins 
ran, daher bleibt mir nur diese Art der Ansteuerung. Meine ursprüngliche 
Planung sah vor, dass ich eine einfache 1-Layer Platine mit den SMD-Leds 
sowie einem Drehencoder als Front habe, welche dann mit 3 Stiftleisten 
auf einer Trägerplatine steckt, die die ganze Ansteuerung beherbergt. 
Das Layout habe ich mal angehängt, damit man sich etwas darunter 
vorstellen kann. Die Platzbegrenzung kommt daher, dass die Platine in 
einem 19" Gehäuse, 1HE, als Bedienelement eingesetzt werden soll. (und 
möglicherweise nicht nur eine)

Ich bin für konstruktive Vorschläge offen!

Danke schon mal im Voraus.

_.-=: MFG :=-._

von Kai F. (kai-) Benutzerseite


Lesenswert?

Hallo,
mit einem TLC5922 ist das alles kein Problem, da würde auch schon ein 
Tiny13 reichen.
Mit einem Treiber kannst du genau 5 RGB LEDs ansteuern, allerdings weiß 
ich nicht ob ein TLC nicht eventuell ein overkill ist, weil du die LEDs 
ja wenn ich dich richtig verstanden habe entweder an oder aus haben 
willst und nichts dimmen willst.
Das ganze einseitig aufzubauen ist eine Herausforderung, die wohl nur 
sehr schwer machbar ist, aber mit wenigen Drahtbrücken würde das wohl 
funktionieren.
Ich kann dir morgen gerne noch mehr zu den TLCs und Alternativen 
schreiben, muss jetzt aber ins Bett --> morgen (bzw heute) Klausur

von Falk B. (falk)


Lesenswert?

@ Markus ---- (mrmccrash)

>Die LED sind handelsüblich (I=20mA; R 2,1V; G 3,8V; B 3,8V). Ansteuern
>wollte ich das ganze zuerst mit einem Mega16, wobei ich hier befürchte,
>dass dieser a) zu langsam wird, da: 13 x 3 x 200Hz PWM x 8 PWM Stufen ->

Warum 200 Hz? 100Hz reichen locker.
3x13=39 Kanäle direkt per Soft-PWM ohe Mutiplexen anzusteuern ist 
machbar, ich hab vor kurzem eine 20 Kanal-Variante mit einem Mega16 
aufgebaut, und der hatte nebenbei noch massig CPU-Zeit übrig. 39 Kanäle 
scheitert schlicht an mangelnden Pins ;-)

>62,4kHz benötigte Timerfrequenz und b) Energieprobleme bekommen wird, da
>ich aufgrund akuten Platzmangels keine externen Treiber einsetzen kann.

SMD.

>Tür offen halten für weitere Ideen. Ohne PWM komme ich auf 7,8kHz, das
>könnte ich mit Soft-PWM auch noch auf einem Mega16 schaffen. Allerdings

Sicher, 3x13 LEDs muxen ist kein Thema. Aber 1:13 ist schon recht viel, 
ich würde lieber 1:6 muxen, macht dann eine 6x7 Matrix.

>würde jedoch im Worrst Case bedeuten, ich hätte 13x20mA an einem AVR-Pin
>hängen.

Das kannst du getrost vergessen. Geht nicht.

>Wie stelle ich das dann am sinnvollsten an? Ich habe jetz schon mehrfach
>von dem TLC5922 gelesen, könnte der mir wieterhelfen, ohne dass ich mein
>ganzes Layout noch mal überarbeiten muss?

Der TLC5922 ist klein und leistungsstark. Sehr empfehlenswert. Wenn du 
deine LEDs nicht dimmen willst, reichen ein paar 74HC595, gibt es auch 
als SMD.

AVR-Tutorial: Schieberegister

MfG
Falk

von Markus -. (mrmccrash)


Lesenswert?

Glück Auf!

Der 74HC595 ist ideal für meine Ansprüche! Mit 2 davon kann ich das 
ganze Modul treiben. Wenn ich immer abwechselnd die Hälfte der LEDs 
ansteuere, dann brauche ich auch keine weiteren Transistoren, um das zu 
betreiben. Ich werde das mit 6 virtuellen "Seiten" realisieren (je 2x R, 
G, B), in die ich im RAM die Bildinformationen schreibe, die dann 
Timergesteuert und mit Hardware SPI in die Register geprügelt werden. 
Damit reicht jetzt auch ein Mega8 um das ganze zu betreiben (ADC + 
Encoder auswerten, I2C Kommunikation und LEDs via SPI Interface). Ich 
werde mich jetzt erst mal hinsetzen und das ganze als Prototyp 
zusammenbauen (evtl erst nach Ostern). Dann gibt es auch neue 
Informationen über den Stand der Dinge.

Danke soweit erstmal!

_.-=: 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.