PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RGB-Leiste möglichst günstig dimmen



Cysign
02.10.2014, 12:36
Hallo beisammen,

ich hab vor ner Weile mal n Reststück RGB-LED-Leiste geschenkt bekommen, das ich jetzt endlich mal verbastelt habe.
Die leiste hat ne gemeinsame Spannungsversorgung, aber die Kathoden der 3 Farben werden getrennt angesteuert.

Die Eckdaten sind:

Alle LEDs an:
maximale Helligkeit: 12V 0,46A = 5,52 Watt
minimale Helligkeit: 7,5V 0,07A = 0,525Watt Watt

Nut Rot:
12V 0,18A = 2,16W
7,5V 0,08A = 0,6W

Nur Blau:
12V 0,15A = 1,8W
7,5V 0,08A = 0,6W

Nur Grün:
12V 0,17A = 2,04W
7,5V 0,01A = 0,075W


Ich möchte diese nun mit einem Netzteil versorgen, allerdings noch in den einzelnen Farben regelbar und in der Gesamthelligkeit regelbar machen.
Ein Mikrokontroller (pwm) scheint mir hierfür etwas überfrachtet zu sein, weshalb ich nun überlege, ob ich einen LM317 pro Kanal nutze, oder einfach bei entsprechender Dimensionierung Potis. Was macht denn mehr Sinn? Ich vermute mal, dass Potis bei der Leistung schon einiges kosten werden... Allerdings müsste ich die LM317 ja vermutlich noch mit nem Kühlkörper verbinden, was sich dann alles derbe in die Länge zieht.

White_Fox
02.10.2014, 13:35
Dimmen über den Vorwidestand (Poti und im Prinzip auch LM317) kannst du knicken. Das ist ekelhaft nicht-linear und auch technisch gesehen eine absolute Krüppellösung.

Frage: Haben die LEDs auf der Leiste schon einen Vorwiderstand? Dann ist eine PWM per µC eigentlich gar nicht so verkehrt, ein kleiner Tiny reicht dafür ja. Ansonsten kann ein NE555 das auch.

Cysign
02.10.2014, 14:01
Es muss nicht Linear sein. Eigentlich möchte ich nur einmal die Helligkeit einstellen und bei Bedarf ggf. nachregeln können. Dass es nicht linear ist, seh ich ja schon Anhand meines Lebornetzteils. 12V = eher blaustich, 8V eher grünlich, 7,5V eher gelb. Mit Potis könnte ich halt schnell und unkompliziert nach dem Dimmen die Farbe nachjustieren ;)
Einen µC halte ich an der Stelle irgendwie für oversized. Ich möchte das im Idealfall nie wieder verstellen. Aber man weiß ja nie...ob man grade in ner roten, grünen oder blauen Phase steckt ;)
Prinzipiell hätte ich auch nen weißen LED-Streifen nehmen können, aber da ich keine andere Verwendung für nen simplen RGB-Streifen habe und den mal endlich verbauen wollte, hab ich halt den genommen ;)

White_Fox
02.10.2014, 14:16
Naja, als alleinige Beleuchtung kannst du RGB-Streifen eh vergessen. Du kriegst zwar allerhand tolle Farben hin-als Stimmungslicht super, aber ein dauerhaft erträgliches Weiß nie und nimmer.

Und Dimmung über PWM ist schon nicht-linear genug, eine Steuerung über den Vorwiderstand verschlimmert das Ganze aber noch. Vor allem erzeugst du aber elendig viel Verlustwärme.

Cysign
02.10.2014, 14:34
Soll ja auch keine richtige Beleuchtung sein. Dazu hab ich da ne Neonröhre. Aber wenn ich dann mal nen Film schaue oder am Rechner arbeite oder spiele, is mir das Licht der Röhre zu hell. Und ganz ohne Licht mag ichs dann halt auch nicht.
Aber jetzt haste mich soweit, dass ich nen Arduino nehme :D
Ich denke, ich soltle mal nen Drehencoder verbauen. Das hab ich schon länger vor. Dazu4 Transistoren (ja, ne weiße LED-Leiste hab ich jetzt auch noch dazu gebastelt) und vllt. ne Mikrokapsel oder n Piezoelement. Jetzt kribbelts mich in den Fingern, das ganze auch vom Sound steuern zu lassen :D
Ich wusste genau, dass es, sobald ich nenµC anpeile, aufwändiger wird...

Aus 'Punktrasterplatine, Hohlbuchse, Netzteil, 4 Potis' wird jetzt also 'Gehäuse, Drehencoder, 3 Transistoren, 4 LEDs, Hohlbuchse, Netzteil, Arduino' ;)
Mal schauen, wie viel Zeit dafür jetzt wieder drauf geht...

Hast du denn ne Empfehlung für ne Libary bzgl. der PWM? Alternativ kann ich natürlich auch die PWM-Pins des Arduinos nutzen. Aber ich würde mich gerne mal an Software-PWM rantasten^^

White_Fox
02.10.2014, 15:15
Ne...allzumal ich AVRs in ASM programmiere. ;)

Aber wenn du willst kann ich dir ne Anregung zukommen lassen, selbst in Assembler sind das insgesamt vielleicht 10 Zeilen Code. Also sehr überschaubar.

In ASM könnte man das so machen:



Rrot - Vorgabewert für Rot
Rgrün - Vorgabewert für Grün
Rblau - Vorgabewert für Blau
Rcnt - Zählregister für PWM

Prot - Pin für rote LED
Pgrün - Pin für grüne LED
Pblau - Pin für blaue LED

Programmstart:
Rrot=0
Rgrün=0
Rblau=0

Prot=0
Pgrün=0
Pblau=0

Timer initialisieren und aktivieren
Irgendwie einen Vorgabewert in die Zählregister Rrot, Rgrün und Rblau schreiben
...
...
...

Timerinterrupt-Schleife:
Rrot << Rcnt?
Wenn nicht, Prot=1

Rgrün << Rcnt?
Wenn nicht, Pgrün=1

Rblau << Rcnt?
Wenn nicht, Pblau=1

Rcnt ==0?
Wenn ja, dann Prot=0, Pgrün=0 und Pblau=0
Ende der Interrupt-Schleife

Cysign
02.10.2014, 15:24
Hmmm...ne, ich glaub, in Assembler wird mir das Ganze dann zu unübersichtlich :D
Da bleib ich lieber bei C/C++ ;)

White_Fox
02.10.2014, 15:31
Naja, ich denke in C kannst du das genauso programmieren. ;)

Cysign
02.10.2014, 15:36
Ah, Code nachträglich reingeschmuggelt, soeiner bist du ;)
Durch die Idee mit dem Feature der Soundsteuerung könnte es aber etwas komplizierter werden. Ich schau mal, was drauß wird.

Cysign
03.10.2014, 15:05
Da ich mir ja nun noch in den Kopf gesetzt habe, den RGB-Streifen vom Sound abhängig zu machen, bin ich grade bei der Recherche auf den MSGEQ7 gestoßen, ein IC, der ein Audiosignal in 7 Frequezbereiche splittet und als Multiplexersignal übermittelt. Alelrdings hab ich nur überteuerte, deutsche Lieferanten dafür gefunden, weshalb ich grade überlege, ob es Sinn macht, selbst ne kleine Schaltung zu basteln, bei der ich mit jeweils zwei Potis Frequenzbereich und Verstärkung einstellen kann von einem Signal, das ich per Mikrofonkapsel oder Piezoelement am Gehäuse des Arduinos aufnehme.

Hat jemadn zufällig alternative Vorschläge zum MSGEQ7? Oder noch ne andere Idee, wie ich jegliches Audiosignal per Piezo/Mikro in RGBW umwandeln kann?

White_Fox
03.10.2014, 19:34
Direkt mit nem Kabel abnehmen, evt. verstärken und drei Bandpässe (Drehkondensator oder Drehpoti nehmen zum einstellen) hinterklemmen und mit nem OPV dann dem Käfer einen logischen Pegel servieren. Es könnte auch ein analoger Pegel sein, den der Käfer dann einfach nur stumpf am ADW ausliest-das kannst du direkt als Vorgabewert für deine Dimmung nehmen.

Meine Herren, dafür dass das "nur" ein Dimmer werden sollte...da hab ich ja was losgetreten.

Cysign
03.10.2014, 22:46
Abnehmen mit Kabel wird schwierig, da ich verschiedene Audioquellen nutze. Bluetooth-Audioempfänger an nem 5.1 Teufel-System als Stereoquelle, Asus Xonar analog 5.1 am Teufelsystem für Surround und dazu noch n paar Monitorlautsprecher über n Phonic Helixboard. Deshalb müsste es schon über n Mikro oder n Piezoelement gehen ;)

Würde folgendes Sinn ergeben:

-Mikrofon / Piezoelement zur Soundaufnahme
-OP-Amp zum Verstärken des Signals, Poti aus dem gehäuse rausgeführt zum Einstellen der Empfinglichkeit
-3-4x Bandpass für weiß/rot/grün/blau
-nach dem Bandpass Potis, um die 3-4 Bandpasssignale auf einen gemeinsamen Pegel zu dämpfen (also grob anzupassen)
-3-4 Ausgangssignale, welche an 3-4 Analog-Pins des Arduinos hängen, aber mit einer 5V Diode den AtMega schützen

Ich möchte am liebsten keinen Poti aus dem Gehäuse rausführen, weil da einfach verdammt wenig Platz im Gehäuse ist. Aber um einen werde ich wohl nicht rumkommen - es sei denn, ich nehme nen digitalen Poti und steuere den über den Drehencoder, der am Gehäuse schon verbaut ist ;)

Ich mach mich dann mal auf die Suche nach nem guten Link bzgl. der Potis/Kondensatoren, die ich für einen 3-4Bandpassfilter benötige. Hab nämlich noch keinen Dunst, in welcher Größenordnung die spielen...

Cysign
04.10.2014, 05:00
So, die LED-Strips werden schonmal vom Arduino gesteuert: https://www.youtube.com/watch?v=kzEa_LOCCvI&feature=youtu.be

Wie man sieht, ist oben (über dem Kleinteilesortiment) dann doch noch ne weiße Leiste dazu gekommen. Und da wo die ist, sitzt auch ne Neonröhre, wenn ich 'normales' Licht benötige.

Jetzt gehts dann ans Eingemachte, die 4 Bandpässe müssen auf die Platine - und da ist verdammt wenig Platz...
Und dann muss ich das Ganze noch irgendwie smart programmieren. Der Drehencoder soll den Arduino als Interrupt ansteuern, daher habe ich einen der beiden Drehencoderpins auf Pin2 und den Drehencodertaster auf Pin3 gelegt (siehe http://playground.arduino.cc/Code/Interrupts).
Ich hab mir 2-3 kleine Programmideen ausgedacht, die werd ich aber erst umsetzen, sobald die Soundauswertung funktioniert - wozu ich mich da jetzt erstmal einlesen muss.

White_Fox
04.10.2014, 15:55
Dein Bastelkeller gefällt mir. So einen hätte ich auch gerne.


-Mikrofon / Piezoelement zur Soundaufnahme
-OP-Amp zum Verstärken des Signals, Poti aus dem gehäuse rausgeführt zum Einstellen der Empfinglichkeit
-3-4x Bandpass für weiß/rot/grün/blau
-nach dem Bandpass Potis, um die 3-4 Bandpasssignale auf einen gemeinsamen Pegel zu dämpfen (also grob anzupassen)
-3-4 Ausgangssignale, welche an 3-4 Analog-Pins des Arduinos hängen, aber mit einer 5V Diode den AtMega schützen

Den Sound mit einem Mikrofon aufzunehmen würde auch gehen. Je nachdem welchen Frequenzbereich zu haben willst würde eine Verstärkung über einen Transistor vermutlich bessere Ergebnisse bringen da OPVs mit höheren Frequenzen ihre Probleme kriegen und dem Signal nicht mehr folgen können (Stichwort Slewrate). Wenn du aber nur das Wummern des Basses haben willst sollte es mit einem OPV gehen.

Ich muß an dieser Stelle auch gestehen dass sich meine praktischen Erfahrungen mit analoger Elektronik recht bescheiden ausnimmt.

Die Potis waren ein Vorschlag von mir, damit du dem Arduino verschiedene Pegel in verschiedenen Frequenzbereichen servieren kannst. Bei mehrern Frequenzkanälen (Höhen, Mitten, Tiefen) wohlgemerkt. Es würde auch ganz ohne externes Poti gehen, ein paar kleine interne Drehwiderstände wirst du aber schon brauchen für Pegelanpassung, Offsetspannungsunterdrückung, Ruhestromkompensation, usw..

Cysign
04.10.2014, 16:09
Nur ein Transistor zur Verstätkung ist vielleicht gar keine so schlechte Idee. Denn dann könnte ich die Verstärkung auch mittels PWM regulieren. Solange keinn der 4 Signale einen Peak-Wert (1023) erreicht, soll der Transistor langsam mehr Spannung/Strom bekommen und mehr verstärken. Wenn ein Peak erreicht wird, wird jedoch langsam die Verstärkung runtergefahren. So könnte ich mir den Poti zur Anpassung des Pegels sparen^^

Nur das Mit der Diode zum Schutz des Pins bereitet mir noch sorgen. Ich frage mich halt, ob ich z.B. bei 5V noch ne Auslösung am Pin bekomme, oder der Pegal über die Diode in Sperrrichtung abfällt, da sie ja für 5V ausgelegt ist. Vielleicht sollte ich da sicherheitshalber auch auf 4,5V runter gehen, damit ich auf keinen Fall den Arduino beschädige. Was natürlich die Frage aufwirft, wie ich jetzt ne Diode finde, die 4,5V sperrt...

White_Fox
04.10.2014, 16:23
Leg doch lieber den analogen Verstärker so aus, dass er dir maximal 5V liefert. Stichwort Differenzverstärker (OPV)


Nur ein Transistor zur Verstätkung ist vielleicht gar keine so schlechte Idee. Denn dann könnte ich die Verstärkung auch mittels PWM regulieren.
Ich habe keine Ahnung wie du das meinst, aber mir klingt das eher nach Problem. Du mußt dann das PWM-Signal gut wieder rausfiltern damit es auf deiner Signalleitung nicht zu sehr hervorsticht, ganz weg kriegst du den Dreck eh nie wieder. Auch wenn das Signal nicht für eine akustische Wiedergabe genutzt wird-ich würde mir da lieber was anderes einfallen lassen. Wenn du eh schonmal dabei bist, alles schick und technisch auf höchstem Niveau zu realisieren, könnte ein richtiger DAW zum Einsatz kommen. Dem kannst du ein digitales Signal geben das analoge Ergebnis wird bestimmt besser aussehen.

Cysign
04.10.2014, 17:24
Bei einem richtigen DAW seh ich eher das Problem mit der Rechenleistung des µC. Da ich ne Software-PWM realisieren möchte, wird dafür schon einiges draufgehen, vermute ich.

Differenzverstärker muss ich jetzt erstmal googeln ;)

White_Fox
04.10.2014, 18:05
Wieso...einen digitalen Wert an den DAW rausschieben-was soll das denn an Rechenleistung kosten? Das ist vom Rechenaufwand her genauso einfach wie Hardware-PWM.

Cysign
04.10.2014, 18:10
Hmmm....vielleicht doch ein digitales Poti, was die Verstärkung bestimmt? Damit hab ich noch nichts zu tun gehabt. Weißt du zufällig, ob die ein 'schmutziges' Signal weiterreichen?

Das mit dem Rechenaufwand war darauf bezogen, das digitale Signal des DAW dann auszuwerten ;)
Wenn ich die Analogeingänge des Arduinos nehme, würde ich einfach deren Peakwert auslesen, den dann in einen Helligkeitswert transformieren und via PWM das ganze ausfaden lassen, also einfach den Wert reduzieren bis die Farbe aus ist.
Wenn nun ein neuer, größerer Peakwert eingeht, würde ich den runterfadenden Wert einfach überschreiben, der Vorgang des runterrechnens würde dabei einfach weiterlaufen.
Wenn ich nun jedoch das digitale Signal noch in 3 Bereiche splitten muss, diese dann nach Lautstärke auswerte...da könnte ich mir vorstellen, dass es hinterher an die Rechengeschwindigkeit geht.

White_Fox
04.10.2014, 19:39
Hä...du wertest ganz sicher kein digitales Signal eines DAWs aus. In den DAW schiebst du das digitale Signal rein und der macht ein analoges Signal daraus. Ich hielt das für besser als das PWM-Gefrickel. Was du beschreibst ist ein ADW-den hat der AVR ja bereits, da brauchst du keinen extra IC.

Rechenaufwand...bei drei Kanälen? Etwas vergleichen und mit den Werten allenfalls noch etwas rumeiern, die meiste Zeit wird der AVR Däumchen drehen. Die ADWs des AVRs beanspruchen für ihre eigentliche Arbeit keine Rechenzeit, erst wenn sie abgefragt werden bzw. einen Interrupt reinballern hat der eigentliche Rechenkern mit den ADWs mal was zu tun, ansonsten arbeiten die recht eigenständig soweit ich weiß. Genauso wie die Timer.

Cysign
04.10.2014, 19:55
Oh, stimmt, falschrum gedacht. DAW, nicht ADW ;)
Aber wo soll der zum Einsatz kommen?

White_Fox
04.10.2014, 20:08
Um den Verstärker nach dem Mikrofon einzupegeln. Wo du PWM vorgeschlagen hast.

Cysign
04.10.2014, 20:49
Ah, jetzt steig ich dahinter.
Also mit dem DAC dann den Basisstrom des Transistors bereitstellen. Klingt clever, klasse Idee.

- - - Aktualisiert - - -

Wobei es dann ja vielleicht auch SInn macht, das Signal nach den Bandpassfiltern anzugleichen. Hmmm...ich glaub, ich werd noch einiges überlegen müssen, bevor ich loslöten kann ;)

White_Fox
05.10.2014, 12:36
Nee...wieso angleichen? Nutz die Differenzen doch um Effekte zu generieren. Macht weniger Hardwareaufwand, und mehr Möglichkeiten. :)

Ja, der Vorgang Überlegung sollte definitiv abgeschlossen sein bevor der Lötkolben angeheizt wird. :p
Ich kenne das zwar auch, dass einem nach Konstruktionsschluss noch was einfällt...aber diese Stellen werden auch meistens der Schandfleck der ganzen Baustelle.

Cysign
08.10.2014, 02:16
Du sagst es, du sagst es. Ich bin immer noch nicht wirklich weiter, hatte aber auch genug anderes zu tun die letzten Tage.
Vielleicht komm ich am Donenrstag dazu, mir Gedanken zu machen.

Prinzipiell gehe ich aber davon aus, dass ein Angleichen des Pegels nötig sein wird. Grade bei starken Lautstärkedifferenzen (nachts Nachbarn nicht stören, eher Zimmerlautstärke, tageüber will man dann auch mal aufdrehen) denke ich, dass sonst die Mitten am meißten zur Geltung kommen. Wenn ich den DAC verbaue und auf Softwareseite anpasse, bin ich flexibel, bzw. falls es nicht nötig ist, könnte ich auch einen festen Wert einstellen ;)

Hast du zufällig ne Empfehlung für nen günstigen mehrkanaligen DAC? Ich glaub, sowas hab ich bisher noch in keiner meiner Kramkisten drin...