PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Viele RGB LEDs per PWM Steuern?



dremler
10.07.2009, 20:06
Hallo...


ich möchte einige RGB LEDs per PWM steuern.

Einzelne sind ja kein Problem. Nur wie mache ich das, wenn ich viele LEDs habe? Also sagen wir mal 30 Stück.

Wenn ich 3er Gruppen mache brauche ich je Strang 3 PWM bei 10 Strängen.

Ist das mit einem ATmega128 noch zu bewerkstelligen? (Bascom) oder wird das schon knapp? Wie mache ich das, wenn ich jede LED einzeln ansteuern wollen würde? dann bräuchte ich ja 90 einzelne PWM Kanäle...das is ja wohl etwas zuviel des guten...

irendwelche tipps?

Thomas$
10.07.2009, 20:26
multiplex heißt das zauberwort. bei 30 nimmst du 3 pwm ports und 10 normale oder 6 pwm und 5 normale je nach dem. die hellig keit nimmt ab man muss also treiber dazwischen schalten
mfg thomas

dremler
10.07.2009, 20:41
achso ja...nur dachte ich das bei multiplexen die gesamthelligkeit leidet?
also wenn ich 10 stränge immer durchschalte dann leuchten sie ja nicht mehr 100% sondern das auge nimmt sie ja dunkler war?!

nimmt man dann zum dimmen immernoch pwm oder macht man das über die dauer des "weiterschaltens" beim multiplexen

Thomas$
10.07.2009, 20:55
wenn du stufenlos dimmen willst ist pwm noch sinvoll. wenn du di anschaltperiode einer led verlängerst ohne pwm wird die aus zeit aller anderen leds auchveringert. darum treiber damit mehrpower drüber geht dafür kurze einschalt zeit. bei programm fehler können dan aber paar led kaputt gehen oder orange leuchten

dremler
10.07.2009, 21:03
mehr power verhindere ich ja durch vorwiderstände eines stranges.. (bzw einer einzel led) da sollte auch im fehlerfall (eine led bzw strang dauerhaft an) keine verluste da sein...

es geht halt nur drum alles stufenlos zu dimmen...sodass ich auch mal einen farbverlauf darstellen kann etc...

Thomas$
10.07.2009, 21:14
kannst ja erstmal so machen das du per pwm nach + schaltest r g b und den rest an normale ports nach gnd. man hat nur noch ein 1/10 der leistung.

dremler
10.07.2009, 21:20
ja und das will ich verhindern weil ich ja eine deckenbeleuchtung damit machen möchte...

ich möchte aber auch ungern mehrere kleine avrs einsetzen...

Thomas$
10.07.2009, 21:23
das kannst du ja über treiber bausteine regeln bzw widerstände. und wenn du die sache dann noch so machen willst das du das licht über pc regeln kannst wirds mit dem timing noch llustiger wen dann beim übertragen der daten die leds ausgehen.

michiE
10.07.2009, 21:56
Ich würde einfach ein R2R-Netzwerk vorschlagen ...
siehe *beigooglegruschdl*
DA :
http://de.wikipedia.org/wiki/R2R-Netzwerk

das ganze am avr und schon tut das teil :)
wenn du das ganze mit schieberegistern machst reicht sogar n ganz kleiner controler dafür.

brauchst eben pro bit pro farbe einen pin am µc oder an nem schieberegister ... ich würd 3 8-bit schieberegister an 3 pins von nem mega8 hängen , max232 ran und gut is :)

lg
michi

dremler
10.07.2009, 22:03
würde aber dennoch die totzeiten nicht verhindern oder? also beim multiplexen?

und ohne multiplexen kann ich doch nicht für jeden strang einen R2R Wandler nehmen...bei 10 Strängen währen das bei einem 8 bit Wandler schon 80 Ports?!

Thomas$
10.07.2009, 22:09
oder man macht halt 10 mal softwar pwm glaub da war die grenze von bascom und die farbe an normale pins da wäre ein helligkeits nicht so groß. aber 30 (oder 90 =30 *3)leds ist das nicht von der leistung bissel viel für nen atmel? willst du 30 normlae oder 30 rgb leds? bei 20mA pro led
1,8A bei 30 rgb leds?

dremler
10.07.2009, 22:18
naja den strom kann man ja verstärken mit nem transistor.......das ist ja kein problem...

aber ich müsste ja dann die gleiche anzahl von transistoren steuern....

3 pro strang *10 =30 pwm signale....da komm ich nich drumrum...

Besserwessi
10.07.2009, 22:58
Wenn man so multiplext, das bis zu 10 LEDs gleichzeitig an sind, ist der Verlust an Helligkeit, bzw. das Risiko durch einen Softwarefehler nicht so sehr groß. Der Mega128 hätte ja sogar genug pins um 30 LEDs unabhängig zu steuern.

Eine Andere realistische Möglichkeit ist es die LEDs per Porterweiterung anzusteuern. Allerdings wird BASCOM da wohl nicht mehr ausreichen um 30 Kanal PWM zu erzeugen. Es gibt auch fertige ICs die ein paar LEDs incl. Helligkeitsregelung ansteuern können.

michiE
10.07.2009, 23:24
@dremler : dann eben r2r ohne multiplexing direk an den pins von nem controller ...
gibt gerade genug die 3*8 pins für solche spielchen zur verfügung hätten... und du hättest keinen stress mit pwm und auch keinen mit der leistung , wenn dein netzwerk nur groß genug ist und du eben nicht die spannung vom controller nimmst sondern über transistoren direkt von deiner 5v versorgungsleitung holst.

dremler
11.07.2009, 13:12
@Besserwessi

wie meinst du das? Sinn des multiplexen ist doc, das man nacheinander jede led durchschaltet. meinst du ich soll 10er Stränge machen oder wie?

hm kannst du mir solche ics nennen ? wie werden die angesprochen? i2c oder ähnliches?

@michiE

ich verstehe dich immernoch nicht? ich brauche für ein R2R netzwerk mehrre Pins, sagen wir mal 8. damit kann ich einen ausgan erzeugen der sich regeln lässt....

auf die schnelle geguckt hat man bei nem ATMEGA128 6 Bänke......also A-F

damit könnte ich 6 unabhängige "Analoge" Signale erzeugen.....ich müsste also immernoch multiplexen.....pro rgb led brauche ich 3 signale....ich kann also zeitgleich 2 leds steuern....dann müsste ich immernoch multiplexen...

bei 10 strängen würde die helligkeit zwar nur noch 1/5 betragen statt 1/10 aber iwie immernoch nicht das optimale...:(

Besserwessi
11.07.2009, 14:53
Beim Multiplexen hat man die LEDs schon nacheinander, aber nicht immer nur eine zur Zeit, sondern immer einen Teil der LEDS zur Zeit. Für die Anordnung aht man dann noch einige Möglichkeiten zur Wahl. Für die Wenigsten Pins für 30 LEDs wäre es gemultiplext so das jeweisl 6 LEDs gleichzeitig leuchten können, und das dann in 5 Gruppen nacheinander. Wenn man 3 Gruppen zu je 10 LEDs wählt, können 10 LEDs gelichzeitig leuchten. Für die Ansetuerung einfacher wären eventuel auch 4 Gruppen mit bis zu 8 LEDs. Für RGB LEDs hat man da allerdings ein kleines Problem: die Farben brauchen unterschiedlich viel Spannung bzw. verschiedene Vorwiderstände. Da die LEDs die nacheinander an der selben Leitung leuchten den selben Widerstand teilen, wäre es besser wenn die Zahl der LEDs die gleichzeitig Leuchten können durch 3 Teilbar wäre.

Wenn da nicht die Einschränkung auf BASCOM wäre würde ich vorschlagen ein Matrix 6x5, so wie für minimale Pin Zahl und dann Software PWM. Software PWM kann hier ja recht langsam sein und sollte daher keine großes problem sein. Software PWM von BASCOM selber, geht nicht gut, da das ja nicht mit dem Umschalten der LED Gruppen syncron ist.

ICs zur direkten ansteuerung von LEDs sind z.B: MAX6966.

dremler
11.07.2009, 17:11
aber ich sehe da immernoch das problem wenn ich jede led nacheinander ansteuer ergibt sich doch ein helligkeitsverlust oder?

gibts die ics nicht auch allgemein? denn die widerstände sind schon bestückt...

michiE
14.07.2009, 11:20
ich dachte du wolltest alle rgb-leds gleich ansteuern ...
aber wenn du jede einzeln ansteuern willst dann solltest du vll drüber nachdenken nen $sauschnellen controller zu nehmen (arm,z.b. at91sam7 vll???) und den über schieberegister mit entsprechend hoher taktrate anzusteuern ...
55 MHz should be enough for everyone ... in dem fall zumindest ... wenn du n schieberegister findest des schnell genug ist...