Forum: Mikrocontroller und Digitale Elektronik RGB-LED-Steuerung über PWM


von Armin W. (drumled)


Lesenswert?

Hey Leute,

ich möchte gerne etwa 240 SMD-LED`s (20mA, rot 2V, grün 3,2V, blau 3,2V) 
über PWM ansprechen. Die LED`s sind in 5 Gruppen, also jeweils 48, 
aufgeteilt. Das ganze würde ich gerne über ein Digitales Signal 
Triggern. (Signal kommt von Kondensatormikrophon - Verstärker - ADC)

Perfekt wäre es, wenn mir jemand sagen könnte, mit welchem µC ich es 
hinbekomme, dass die LED`s bei steigender Geschwindigkeit am Trigger ihr 
Farbe ändern (am besten von blau über grün zu rot)...

Ich bedanke mich schonmal im Vorraus :)

von xfr (Gast)


Lesenswert?

Armin W. schrieb:
> Perfekt wäre es, wenn mir jemand sagen könnte, mit welchem µC ich es
> hinbekomme, dass die LED`s bei steigender Geschwindigkeit am Trigger ihr
> Farbe ändern (am besten von blau über grün zu rot)...

Das ist kein Frage des Mikrocontrollers, sondern nur der Software. :)

Sollen die fünf Gruppen denn unterschiedliche Farben anzeigen oder 
reicht es, wenn alle 240 LEDs die gleiche Farbe haben?

Wenn es fünf unterschiedliche Farben sein sollen und Du es Dir einfach 
machen willst, kannst Du einen Mikrocontroller mit 15 
16-Bit-Timer-Compare-Registern nehmen. Ich habe hier z.B. einen 
ATxmega32A4, der genau das macht.

Wenn alle LEDs die gleiche Farben zeigen sollen, brauchst Du dagegen nur 
drei PWM-Ausgänge. Mit etwas mehr Aufwand kann man die PWM-Signale aber 
auch per Software erzeugen, dann tuts auch ein billigerer uC:
http://www.mikrocontroller.net/articles/Soft-PWM

von Armin W. (drumled)


Lesenswert?

Danke für die schnelle Antwort!

Die Gruppen sollten unterschiedliche Farben haben (hab vergessen zu 
erwähnen, dass die Gruppen jeweils unabhängig von einander leuchten 
sollen, sry)

Wenn ich den ATxmega32A4 verwende, kann ich dann auch über die Software 
auch andere Anzeigearten programmieren? Dass z.B. alle Gruppen mal nur 
auf ein Signal reagieren usw...

Danke! Das kommt dem Lebens-retter schon ziemlich nahe ;)

Zusatz: Sorry, hab schon wieder was vergessen... Jede Gruppe bekommt von 
einem anderen "Sensor" das Triggersignal...

von Johannes R. (jr17oo)


Lesenswert?

Für die Ansteuerung der LED-Gruppen würde ich auf einen externen 
Baustein mit 16 PWM-Kanälen zurückgreifen (denn du brauchst 15 Kanäle; 
jeweils R, G und B für 5 Gruppen). Spontan fallen mir da PCA9635 oder 
PCA9685 ein (mit FETs an den Ausgängen), weil ich damit schon gearbeitet 
habe.

Das hat den Vorteil, dass du einen relativ kleinen/einfachen 
Mikrocontroller verwenden kannst, z.B. einen ATmega statt des (meiner 
Ansicht nach für diesen Zweck überdimensionierten) ATxmegas. Der braucht 
dann nur I2C zum Ansteuern des PWM-Chips und 5 I/O- bzw. ADC-Ports für 
die Trigger. Der ganze Rest ist Software.

von Armin W. (drumled)


Lesenswert?

Johannes R. schrieb:
> Spontan fallen mir da PCA9635 oder
> PCA9685 ein (mit FETs an den Ausgängen), weil ich damit schon gearbeitet
> habe.

Danke!

Nur - die haben jeweils nur einen Clock-Eingang. Ich bräuchte allerdings 
5... Gibt es die auch kleiner, also jeweils mit 4 bzw 8 Ausgängen auf 
die LED's?

von Johannes R. (jr17oo)


Lesenswert?

Armin W. schrieb:
> Nur - die haben jeweils nur einen Clock-Eingang.
> Ich bräuchte allerdings 5...

Hm, wozu brauchst du fünf Clock-Eingänge? Beim PCA9685 kann die 
PWM-Frequenz z.B. im Bereich von 40 bis 1000 Hz eingestellt werden (ist 
für alle Kanäle identisch), das sollte für deine Anwendung genügen. Die 
EXTCLK-Funktion kannst du getrost ignorieren. Das Tastverhältnis (und 
damit die Helligkeit) kann für jeden Kanal separat festgelegt werden.
Die eigentliche Steuerung wird im Mikrocontroller implementiert, der die 
fünf Trigger-Eingänge auswertet und dann dem PCA9685 per I2C mitteilt, 
welche Kanäle heller oder dunkler leuchten sollen.

Armin W. schrieb:
> Gibt es die auch kleiner, also jeweils mit 4 bzw 8 Ausgängen auf
> die LED's?

Klar. Die kleinen Brüder des PCA9635 heißen glaube ich PCA9633 (4 
Kanäle) und PCA9634 (8 Kanäle). Die Auswahl an ICs für diesen Zweck ist 
riesig. Stöber einfach mal auf der Homepage von NXP, geeignete 
Suchbegriffe wären z.B. "I2C-bus LED driver" oder "I2C-bus LED 
controller".

von MaWin (Gast)


Lesenswert?

> bei steigender Geschwindigkeit am Trigger
> mal nur auf ein Signal reagieren

Was heisst das auf deutsch ?

> ATxmega32A4

Geil. Was macht der in seiner Freizait ? Filme auf dem LEDs abspielen ?
Schond er kleinste uC hätte keine Schweirigkeit, die 240 LEDs zu teuer, 
WENN er eine Glaskugel hätte um deine super-ungenaue Beschreibung des 
"Geräuaschs" verstehen zu können. Vermutlich weisst du selbst nicht, was 
du unter Signal und Geschwindigkeit verstehst, und erwartest daß alle 
anderen deine Gedanken lesen. Bloss sind deine gedanken schwammig und 
nebelig. Werd dir erst mal selbst klar, welcher algorithmisch 
bestimmbaren Mikrophosignale deinen Wunschvorstellungen entsprechen.

von Armin W. (drumled)


Lesenswert?

MaWin schrieb:
>> bei steigender Geschwindigkeit am Trigger
>> mal nur auf ein Signal reagieren
>
> Was heisst das auf deutsch ?


Steigende Geschwindigkeit am Trigger: Wenn der Trigger Signale bekommt, 
die in der Geschwindigkeit variiren. Mein Grundgedanke war, dass die 
LED`s ihre Farbe wechseln, wenn das Signal schneller wird und wieder 
ihre Farbe wechseln wenn es langsamer wird.

MaWin schrieb:
> "Geräuaschs" verstehen zu können. Vermutlich weisst du selbst nicht, was
> du unter Signal und Geschwindigkeit verstehst, und erwartest daß alle
> anderen deine Gedanken lesen. Bloss sind deine gedanken schwammig und
> nebelig. Werd dir erst mal selbst klar, welcher algorithmisch
> bestimmbaren Mikrophosignale deinen Wunschvorstellungen entsprechen.

Hört sich ein bisschen nach Wahrsagen an... Nein, klar formuliert: 
Analoge Signale (Schläge auf eine Trommel) werden vom 
Kondensatormikrophon aufgenommen, über einen ADC in ein Rechtecksignal 
gewandelt und dann Verstärkt. Je schneller ich auf die Trommel schlage, 
desto schneller wird das Signal (Frequenz). Ich hoffe so ist das 
verständlich?




Johannes R. schrieb:
> Hm, wozu brauchst du fünf Clock-Eingänge?

Wie oben genannt - Ich möchte verschiedene Trommeln (also das gesamte 
Drumset) über die LED`s visualisieren. Da das Drumset 5 Drums hat, die 
ich visualisieren will, brauche ich die 5 Eingänge...

Danke!

von Johannes R. (jr17oo)


Lesenswert?

Armin W. schrieb:
> Wie oben genannt - Ich möchte verschiedene Trommeln (also das gesamte
> Drumset) über die LED`s visualisieren. Da das Drumset 5 Drums hat, die
> ich visualisieren will, brauche ich die 5 Eingänge...

Nein, das hast du nicht richtig verstanden.
Zunächst einmal brauchst du einen Mikrocontroller (z.B. einen ATmega8, 
um nur mal einen Typ zu nennen). Der hat fünf Eingänge (sogar noch mehr, 
die brauchst du aber nicht), an die du deine fünf Trigger anschließt. 
Die Software, die dann auf dem ATmega läuft, wertet diese 
Triggereingänge aus und entscheided, welche LEDs heller oder dunkler 
werden sollen. Diese Information reicht sie per I2C an den PCA9685 
weiter, der sich um die Steuerung der jeweiligen Kanäle kümmert. 
Theoretisch könnte das ein entsprechend dimensionierter ATmega auch 
gleich selbst übernehmen (Stichwort Software-PWM im Beitrag von xfr), es 
ist aber sehr viel bequemer dafür einen separaten Chip einzusetzen.

von Armin W. (drumled)


Lesenswert?

Johannes R. schrieb:
> Die Software, die dann auf dem ATmega läuft, wertet diese
> Triggereingänge aus und entscheided, welche LEDs heller oder dunkler
> werden sollen. Diese Information reicht sie per I2C an den PCA9685
> weiter, der sich um die Steuerung der jeweiligen Kanäle kümmert.

Achso!
Du bist wohl meine Rettung und der einzige der versteht was ich sagen 
will. Nich mal ich weiß das :D

Da reicht dann von beidem jeweils einer, stimmt das?

Top sache, Dankeschön!

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.