mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Außen-RGB-LED-Kette mit Arduino steuern?


Autor: Stefan W. (metawops)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Liebe Mitstreiter!

Ja, ich habe vorher im Forum gesucht und ja, es gibt viele Menschen, die 
LEDs oder LED Ketten auf verschiedenste Weisen ans Laufen bekommen 
wollen.
Aber jedes Setup ist anders und für meinen konkreten Fall habe ich 
nichts direkt passendes gefunden. Und mein Elektronik-Wissen reicht auch 
leider nicht aus, um andere Fälle abstrahieren und auf meinen Fall 
anwenden zu können.
Daher gestattet mir, dass ich mein Problem/Setup hier schildere.

Wir haben zwei RGB LED Ketten für den Außenbereich. Jede war 
ursprünglich 5m lang und enthielt jeweils 150 RGB LEDs (de facto also 
450 LEDs, da je 150 rot, grün, blau).
Die Ketten wurden auf unterschiedliche Weise gekürzt, so dass sie jetzt 
weniger RGB LEDs enthalten. Eine der beiden (auf die konzentrieren wir 
uns mal) nur noch 87 RGB LEDs (anders ausgedrückt: 87 rote, 87 grüne und 
87 blaue, von denen aber natürlich immer drei in einem SMD Gehäuse 
stecken).

Es handelt sich dabei übrigens um diese Teile hier: 
http://www.amazon.de/Yorbay-wasserdicht-Lichterkette-Lichtschlauch-Fernbedienung/dp/B0092KLUR6/

Die LEDs sind also nicht einzeln ansteuerbar, sondern nur alle roten, 
alle grünen oder alle blaue und Kombinationen daraus in jeweils 
unterschiedlicher Helligkeit. Zwischen dem mitgelieferten 12V Netzteil 
und dem eigentlichen Strip hängt ein Zwischenstück, welches u.a. eine IR 
Empfangsdiode für die IR Fernbedienung enthält. Über diese kann man dann 
verschiedene, fest vorgegebene Konstantfarben oder auch animierte 
Farbwechsel einstellen. Auch die Geschwindigkeit dieser Wechsel kann man 
ändern. Sprich: in dem (vergossenem) Zwischenstück ist offenbar eine 
kleiner Mikroprozessor und eine Elektronik, die das managen.

Problem: die Reichweite der IR Fernbedienung ist natürlich beschränkt. 
Ich möchte das ganze bequem vom Smartphone oder Computer per Web-App 
steuern.
Lösung: ein Arduino mit einem WiFi Shield kommt zum Einsatz. Auf dem 
Arduino läuft ein Mini-Webserver, der Steuerbefehle vom Web-Browser 
(Client) annimmt. Dazu gibt es viel im Netz nachzulesen und auch 
teilweise fertige Sketches. Nicht das Problem.

Problem: mir fehlt das Elektronik-Wissen, wie ich die Arduino Ausgänge 
dazu nutzen kann, hier die Helligkeit der drei Farbkanäle zu steuern. 
Die rein digitalen Arduino Ausgänge kann man nur zwischen 0V und 5V 
schalten. (Ein reines An-/Aus-Schalten pro Farbe würde mir erstmal 
reichen, aber später soll dann schon "gedimmt" werden können pro Farbe).
Die "analogen" Ausgänge sind keine solchen, sondern können ja nur 
Pulsweitenmodulation. Ich vermute mal, dass man die nicht (direkt) 
nutzen kann?! Außerdem kann so ein Arduino Ausgang ja nur wenige 
Milliampere (40mA) schalten. Wenn ich mein Labornetzteil auf 12V 
einstelle und die abgeschnittenen LED-Ketten-Reste daran anschließe (63 
RGB LEDs), messe ich pro Farbkanal ca. 420/350/370mA (grün/rot/blau), 
wenn alle drei gleichzeitig an sind, also "maximal" hell, werden ca. 
950mA Strom gezogen (laut Netzteil-Anzeige).

Der Strip hat vier Anschlüsse, einmal +12V und dann je einen für jede 
Farbe. Um die nun einzeln schalten zu können, müsste man ja "nur" einen 
(elektronischen) Schalter je Farbkanal zwischen Masse des 12V Netzteils 
und Kontakt der jeweiligen Farbe am Strip einbauen. Also einen 
Transistor? Das sähe also etwa so aus wie im angehängten Bild.

Aber kann man denn einfach so +5V= und +12V= Stromkreise "mischen"? Was 
muss man bzgl. der Ströme beachten? Und die Berechnung des 
Basis-Widerstands ist ja wohl auch eine Wissenschaft für sich? Und 
außerdem wäre das erstmal nur eine Lösung für das An-/Aus-Schalten, 
nicht das Dimmen. :-/

Aber dieser Schaltplan-Entwurf ist sicher falsch, weil ich eben die 
Elektronik-Kenntnisse da (noch) nicht habe. Kann mir jemand erläutern, 
wie ich das ans Laufen bekomme? Wie gesagt: Ziellösung ist, die 
Helligkeit jeder Grundfarbe von 0 bis max durch den Arduino steuern zu 
können. Ich habe etwas von "Konstantstromquelle" gehört/gelesen, aber 
mir ist nicht klar, wie das hier einzusetzen wäre und warum (will ja bei 
jedem Projekt auch was lernen). Man bräuchte ein Bauteil / einen IC, der 
als Eingang so ein PWM Signal des Arduino annehmen und am Ausgang einen 
Strom geeignet für diese LED-Kette zur Verfügung stellen kann. Gibt es 
sowas?

Tausend Dank für jeden sachdienlichen Hinweis! :-)
Stefan.

P.S.: Die LEDs sind hier ja nicht einzeln adressierbar. Gibt es da eine 
geschickte Elektronik (Multiplexing?), wie das dennoch geht? Oder 
braucht's dafür wirklich andere LED Ketten?

Autor: Icke ®. (49636b65)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Vom Prinzip her geht das schon so, aber nur wennn jede LED auf dem 
Stripe eigene Vorwiderstände zur Strombegrenzung besitzt. Ansonsten 
müßten diese noch zwischen Kollektor und Stripe eingefügt und passend 
berechnet werden. Alternativ jeden Farbkanal über eine separate 
Konstantstromquelle versorgen.
Der Basiswiderstand ist bei dieser Anwendung unkritisch. Er muß nur 
klein genug sein, damit der Transistor voll durchsteuert und groß genug, 
damit dessen zulässiger Basisstrom und der zulässige Ausgangsstrom des 
Portpins nicht überschritten werden.

Stefan Wolfrum schrieb:
> Aber kann man denn einfach so +5V= und +12V= Stromkreise "mischen"?

Ja, das ist hier kein Problem, da die 12V nicht zum Controller gelangen, 
sondern nur am Transistor anliegen.

Stefan Wolfrum schrieb:
> Die LEDs sind hier ja nicht einzeln adressierbar. Gibt es da eine
> geschickte Elektronik (Multiplexing?), wie das dennoch geht?

Du kannst mittels Software-PWM eine Farbmischung erreichen, bzw. jeden 
Kanal in der Helligkeit steuern. Ansteuerung einzelner LEDs ist nicht 
möglich. Dazu bräuchte man andere Stripes, z.B. auf Basis der WS2812, 
und eine komplett andere Ansteuerung.

: Bearbeitet durch User
Autor: Stefan W. (metawops)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also, das sieht schon so aus, dass hier für jede RGB LED im Strip ein 
Vorwiderstand ist. Siehe angehängtes Foto.
Dann werde ich das mal so probieren.
Wenn noch jemand einen Tipp hat, wie man das stufenlose Dimmen pro 
Farbkanal hinbekommen kann, wäre das super! :-)

Vielen Dank aber schonmal an Icke für die nette Antwort! :-)

Autor: Oliver R. (orb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise haben die Streifen je einen Vorwiderstand pro Farbe für 3 
LEDs, dazu passen auch die Werte auf dem Bild.
Die Schaltung ist grundsätzlich passend, ich würde aber einen kleinen 
LL-Mosfet als Schalttransistor nehmen, IRLU024 oder ähnlich.
Bei Deinen gemessenen 400mA muß ein normaler Transistor schon etwas 
schwitzen.

Zum Dimmen kommt eigendlich nur PWM in frage.

Autor: Jürgen S. (jurs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Wolfrum schrieb:
> Problem: die Reichweite der IR Fernbedienung ist natürlich beschränkt.
> Ich möchte das ganze bequem vom Smartphone oder Computer per Web-App
> steuern.
> Lösung: ein Arduino mit einem WiFi Shield kommt zum Einsatz. Auf dem
> Arduino läuft ein Mini-Webserver, der Steuerbefehle vom Web-Browser
> (Client) annimmt. Dazu gibt es viel im Netz nachzulesen und auch
> teilweise fertige Sketches. Nicht das Problem.
>
> Problem: mir fehlt das Elektronik-Wissen, wie ich die Arduino Ausgänge
> dazu nutzen kann, hier die Helligkeit der drei Farbkanäle zu steuern.

Soweit ich Dich verstehe, hat Deine Lichterkette bereits eine 
Fernbedienung (mangelhafter Reichweite) und Du möchtest eigentlich nur 
die Reichweite der Fernbedienung erhöhen.

Mein Ansatz wäre in dem Fall, die Codes der vorhandenen IR-Fernbedienung 
auszulesen und einen Arduino dazu zu bringen, diese 
IR-Fernbedienungscodes selbst senden zu können. Keine Änderungen an der 
Elektrik der Lichterkette. Nur Änderungen an Übertragung der 
IR-Fernbedienungssignale.

Der steuernde Arduino wird in der Nähe der Lichterkette vor dem 
IR-Sensor platziert und hat selbst eine IR-Sendediode, die dann aus 
kurzer Entfernung das Signal zum IR-Empfänger an die Lichterkette 
sendet.

Du stellst quasi nur die Fernbedienung um: Statt dass die Fernbedienung 
ihre IR-Codes direkt zur Lichterkette sendet, sendest Du über LAN 
Steuerbefehle an einen entfernten Arduino, der dann in unmittelbarer 
Nähe erst die IR-Impulse erzeugt und an die Lichterkette sendet.

Autor: Andreas W. (geier99)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hallo Stefan,

Stefan Wolfrum schrieb:
> Aber jedes Setup ist anders und für meinen konkreten Fall habe ich
> nichts direkt passendes gefunden. Und mein Elektronik-Wissen reicht auch
> leider nicht aus, um andere Fälle abstrahieren und auf meinen Fall
> anwenden zu können.

Und mit dem hier:
http://www.obersomer.com/furios-power/index.php?option=com_content&view=article&id=90&Itemid=75

damit kannst Du nichts anfangen?

Hier siehst Du, wie Du die Ansteuerung der Stripes machen kannst und die 
Software für die PWM-Steuerung ist auch dabei, müsstest Du halt für 
Deine Verhältnisse anpassen.


> Problem: mir fehlt das Elektronik-Wissen, wie ich die Arduino Ausgänge
> dazu nutzen kann, hier die Helligkeit der drei Farbkanäle zu steuern.

s.o. :-)

> können. Ich habe etwas von "Konstantstromquelle" gehört/gelesen, aber
> mir ist nicht klar, wie das hier einzusetzen wäre und warum (will ja bei
> jedem Projekt auch was lernen)

brauchst Du hier nicht.

> Tausend Dank für jeden sachdienlichen Hinweis! :-)

... mal sehen, ob es einer war :-)

Gruß
  Andi

: Bearbeitet durch User
Autor: Stefan W. (metawops)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
>
> Soweit ich Dich verstehe, hat Deine Lichterkette bereits eine
> Fernbedienung (mangelhafter Reichweite) und Du möchtest eigentlich nur
> die Reichweite der Fernbedienung erhöhen.

Jein, s.u. ;-)

> Mein Ansatz wäre in dem Fall, die Codes der vorhandenen IR-Fernbedienung
> auszulesen und einen Arduino dazu zu bringen, diese
> IR-Fernbedienungscodes selbst senden zu können. Keine Änderungen an der
> Elektrik der Lichterkette. Nur Änderungen an Übertragung der
> IR-Fernbedienungssignale.
>
> Der steuernde Arduino wird in der Nähe der Lichterkette vor dem
> IR-Sensor platziert und hat selbst eine IR-Sendediode, die dann aus
> kurzer Entfernung das Signal zum IR-Empfänger an die Lichterkette
> sendet.
>
> Du stellst quasi nur die Fernbedienung um: Statt dass die Fernbedienung
> ihre IR-Codes direkt zur Lichterkette sendet, sendest Du über LAN
> Steuerbefehle an einen entfernten Arduino, der dann in unmittelbarer
> Nähe erst die IR-Impulse erzeugt und an die Lichterkette sendet.

Die Idee hatte ich auch zunächst und hatte auch schon angefangen, die 
Fernbedienung reverse zu engineeren (tolles Deutsch!). Die "übliche" 
38kHz Trägerfrequenz mit dem Oszilloskop ermittelt und mit dem Bus Pirat 
und der OLS Logic Sniffer Software versucht, die Kommandos zu 
entziffern.
Dann dachte ich: was, wenn mir die Programme, die die Ferbedienung 
anbietet mal nicht mehr ausreichen? Wenn ich nicht nur die dort fix 
vorgegebenen Konstantfarben einstellen will oder mal ein anderes 
Farbwechselprogramm haben will? Das wäre dann nicht möglich. Daher habe 
ich mich entschieden, die Steuerung selbst in die Hand zu nehmen. Ich 
möchte dann auch viel Arbeit in die Web App stecken, da ich erreichen 
will, dass Nutzer der Web App (Familienmitglieder, Freunde, Besuch etc.) 
die Möglichkeit haben, eigene "Programme" (Farbwechsel-Animationen etc.) 
zusammenzustellen.
Kurz, ich denke, so habe ich einfach mehr Freiheiten. :-)

Autor: Stefan W. (metawops)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver R. schrieb:
> Üblicherweise haben die Streifen je einen Vorwiderstand pro Farbe für 3
> LEDs, dazu passen auch die Werte auf dem Bild.
> Die Schaltung ist grundsätzlich passend, ich würde aber einen kleinen
> LL-Mosfet als Schalttransistor nehmen, IRLU024 oder ähnlich.
> Bei Deinen gemessenen 400mA muß ein normaler Transistor schon etwas
> schwitzen.

Oha! Mosfet ... Hm. Damit kenne ich mich gar nicht aus. Da heißen die 
Anschlüsse ja gar nicht Basis, Emitter und Kollektor -- kann man den 
trotzdem genauso im Schaltplan benutzen wie einen Transistor? Was 
entspricht dann der Basis, was dem Emitter, was dem Kollektor?

>
> Zum Dimmen kommt eigendlich nur PWM in frage.

Hmja, aber mit der gleichen Schaltung? Ich dachte, so ein Transistor ist 
in dieser Weise nur ein Schalter?! Also ein oder aus. Aber nicht von 0 
bis 5V zwischen Kollektor und Emitter, wenn an der Basis 0 bis x Volt 
anliegen? Und noch dazu eine gepulste Spannung?

Autor: Stefan W. (metawops)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,
das ist ein super Tipp, dieser Link! Das werde ich mal in Ruhe studieren 
und sehen, was ich davon benutzen kann bzw. wie ich das auf meinen ja 
sehr ähnlichen Fall übertragen kann!
Vielen Dank!! :-)

Autor: Andreas W. (geier99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Wolfrum schrieb:
> Vielen Dank!! :-)

Bitteschön :-)

und falls die Software für die 2.Variante brauchst, sag mir bitte 
Bescheid, dann beeile ich mich etwas mit dem "Online" stellen :-)

Autor: Oliver R. (orb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Wolfrum schrieb:
>> Hmja, aber mit der gleichen Schaltung? Ich dachte, so ein Transistor ist
> in dieser Weise nur ein Schalter?! Also ein oder aus.

Das ist genau der Trick an PWM bei LEDs. Die Spannung wird so schnell an 
und aus geschaltet daß es dem Auge wie ein konstantes Leuchten vorkommt. 
Das Verhältnis zwischen Ein- und Ausschaltzeit entspricht der 
wahrgenommenen Helligkeit.

Autor: Stefan W. (metawops)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kurze Rückmeldung für diejenigen, die dieser Thread interessiert und die 
vielleicht mal eine ähnliche Frage haben: das klappt mit genau dem 
theoretisch entworfenen Schaltplan, den ich im initialen Beitrag 
angehangen habe auch in der Praxis ganz prima! :)

Als NPN Transistoren hatte ich hier in der Grabbelkiste die Auswahl 
zwischen den Typen BC546, BC547B, BC548A und BC337-40. Habe mich für 
letzteren entscheiden, nachdem ich im Datenblatt irgendwas von 50V und 
800mA Kollektorstrom gelesen hatte. Keine Ahnung, ob das die zu 
beachtenden Werte sind, aber klang irgendwie gut. Mir scheint, ich 
betreibe Elektronik auch ein bisschen aus dem Bauch heraus, pragmatisch. 
;-) Noch ist mir nichts abgeraucht ...

Als Basiswiderstand hatte ich gerade 470 Ohm Widerstände zur Hand. 
Scheint zu passen. Wenn hier jemand noch ein bisschen Theorie zum Lernen 
beisteuern könnte, würde mich das aber auch freuen. Schließlich habe ich 
keine Ahnung, ob das vielleicht viel zu wenig ist.

Mit dem Thermosensor meines Multimeters bin ich mal an die Transistoren 
gegangen -- da wird nichts wärmer als Raumtemperatur.

Und ganz wie Oliver R. gesagt hat: sogar das Ansteuern der Basis der 
Transistoren über einen PWM Output des Arduino funktioniert und sorgt 
dafür, dass die jeweilige LED Farbe dimmbar ist! Faszinierend! Hätte ich 
nicht gedacht. Aber wenn man sich's überlegt ... logisch. Das sind dann 
halt alles sehr schnelle Schaltimpulse mit unterschiedlichen +Duty und 
-Duty Zyklen.

Nachdem die Hardware Seite nun geklärt ist, werde ich mich der Software 
Seite widmen und mal das Ethernet Shield (warum ist das Arduino WiFi 
Shield so teuer??) auf den Arduino schnallen und die Ethernet Library 
studieren. Ich schau dann mal, wie weit ich mit Deiner Software V1 
komme, Andreas W.! :-)

Autor: Jürgen S. (jurs)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Stefan Wolfrum schrieb:
> Nachdem die Hardware Seite nun geklärt ist, werde ich mich der Software
> Seite widmen und mal das Ethernet Shield (warum ist das Arduino WiFi
> Shield so teuer??) auf den Arduino schnallen und die Ethernet Library
> studieren. Ich schau dann mal, wie weit ich mit Deiner Software V1
> komme, Andreas W.! :-)

Das Arduino WiFi Shield ist total überteuert.

Falls es nicht auf Baugröße ankommt: Es gibt diverse "WLAN Pocket 
Router", die man als WLAN-Client konfigurieren kann, um damit alle 
Geräte ins WLAN zu bringen, die nur eine LAN-Buchse haben.

In einem WLAN kannst Du dann den Pocket Router neben den Arduino mit 
Ehternet-Shield stellen, beide mit einem kurzen LAN-Kabel verbinden, und 
für die WLAN-Verbindung dieser Kombination zu Deinem DSL-WLAN-Homerouter 
läuft dann über Funk. Geeignetes Gerät z.B.:
http://www.amazon.de/TP-Link-TL-WR710N-Wireless-Repeater-Wandmontage/dp/B00CS2M7OU/

Autor: Stefan W. (metawops)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, das ist ja mal sehr cool! Vielen Dank, Jürgen, für diesen Tipp!!
So werd' ich's machen! Gerät ist quasi schon bestellt (war schonmal 
drüber gestolpert, wusste damals aber noch nicht, wo ich das mal 
brauchen könnte und hatte es wieder vergessen).
Klasse!! :-)

Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bin gerade dabei mich mit einem ähnlichen Projekt zu beschäftigen. 
Allerdings ist mir das Dimmen immernoch ein wenig unklar.
Die Helligkeit der Basisfarben über PWM zu regulieren, sollte kein 
Problem sein. Doch sobald ich irgendeine Mischfarbe habe (beispielsweise 
lila) und diese mittels PWM dimmen will, ergibt sich eine neue 
Mischfarbe.
Gibt es da wieder einen Tipp, wie ich dieses Problem lösen könnte?
Der Link von Andreas funktioniert leider nicht mehr..

Viele Grüße!

Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bin gerade dabei mich mit einem ähnlichen Projekt zu beschäftigen. 
Allerdings ist mir das Dimmen immernoch ein wenig unklar.
Die Helligkeit der Basisfarben über PWM zu regulieren, sollte kein 
Problem sein. Doch sobald ich irgendeine Mischfarbe habe (beispielsweise 
lila) und diese mittels PWM dimmen will, ergibt sich eine neue 
Mischfarbe.
Gibt es da wieder einen Tipp, wie ich dieses Problem lösen könnte?
Der Link von Andreas funktioniert leider nicht mehr..

Viele Grüße!

Autor: Marc V. (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DCcd schrieb:
> Problem sein. Doch sobald ich irgendeine Mischfarbe habe (beispielsweise
> lila) und diese mittels PWM dimmen will, ergibt sich eine neue
> Mischfarbe.
> Gibt es da wieder einen Tipp, wie ich dieses Problem lösen könnte?

 Das Verhältnis der Farben zueinander rausfinden (ausrechnen), danach
 jede Farbe dementsprechenden dimmen.
 Wenn z.B. R=150, G=50, B=100, dann kannst du in maximal 50 Schritten
 dimmen und zwar R -= 3, G -= 1, B -=2.
 Ist extrem vereinfacht, aber im Prinzip ist das alles.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc Vesely schrieb:
> Wenn z.B. R=150, G=50, B=100, dann kannst du in maximal 50 Schritten
>  dimmen und zwar R -= 3, G -= 1, B -=2.

Und wie willst du mit dem sich damit ergebenden Verlauf vom 
Tastverhältnis vernünftig dimmen?

Erst hast du kaum wahrnehmbare Helligkeitsabnahmen und dann werden die 
Intensitätssprünge von einem Zeitschritt zum nächsten immer größer.

Autor: Jürgen S. (jurs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Marc Vesely schrieb:
>> Wenn z.B. R=150, G=50, B=100, dann kannst du in maximal 50 Schritten
>>  dimmen und zwar R -= 3, G -= 1, B -=2.
>
> Und wie willst du mit dem sich damit ergebenden Verlauf vom
> Tastverhältnis vernünftig dimmen?
>
> Erst hast du kaum wahrnehmbare Helligkeitsabnahmen und dann werden die
> Intensitätssprünge von einem Zeitschritt zum nächsten immer größer.

Entzerren ließe sich die Dim-Problematik wahrscheinlich dadurch, dass 
man statt 8-Bit PWM mit 256 Stufen beispielsweise 12-Bit PWM mit 4096 
Stufen verwendet. PWM-Controller für I2C mit 12-Bit PWM existieren:
http://www.nxp.com/documents/data_sheet/PCA9685.pdf

Die generelle Problematik von Farbverfälschungen, insbesondere ganz 
unten am Regelbereich, blieben natürlich trotzdem bestehen. Denn wenn 
man selbst bei 12-Bit PWM runterregelt von
RGB(4000,2000,1000)
auf
RGB(4,2,1)
würde man beim weiteren Runterdimmen zwangsläufig dazu kommen, dass ein 
Farbanteil komplett verschwindet, bevor die Helligkeit ganz auf 0 
runtergedimmt ist.

Bei 12-Bit PWM passiert das allerdings erst auf deutlich niedrigerem 
Dim-Level als bei 8-Bit PWM.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> Bei 12-Bit PWM passiert das allerdings erst auf deutlich niedrigerem
> Dim-Level als bei 8-Bit PWM.

Das Problem bei dem vorgeschlagenen Dim-Ablauf ist primäer nicht die 
Bit-Tiefe, sondern die konstante Stufenhöhe. Für vernünftiges Dimmen 
muss der Quotionen der Helligkeiten zwischen aufeinander folgenden 
Schritten konstant sein, nicht die Differenz.

Das Problem am unteren Ende besteht unabhängig davon und ist bei 12 Bit 
natürlich entschärft, wie auch der Dim-Ablauf dann gleichmäßiger wird.

Autor: Gregor O. (zappes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei 12-Bit-PWM habe ich ganz gute Erfahrungen damit gemacht, dass ich 
nur 64 Werte (0-63) für die Helligkeit verwende und als PWM-Wert dann 
immer Wert*Wert setze, also beispielsweise PWM-Wert 16 für 
Helligkeitsstufe 4. Perfekt ist das nicht, aber es sieht weit besser 
aus, als wenn man einfach nur lineare Werte verwendet.

: Bearbeitet durch User
Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und vielen Dank für die Antworten.
Nach einer kleinen Diskussionsrunde mit einem Freund, ist er zur Idee 
gekommen, die PWM nicht linear sondern logarithmisch zu reduzieren. 
Erscheint mir im ersten Moment logisch, da die Wahrnehmung des Auges 
ebenfalls logarithmisch funktioniert.
Bin mal gespannt ob es klappt.

Viele Grüße!

Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok ich habs eben mal auf die schnelle mit einem logarithmischen Poti 
ausprobiert und der Ansatz ist nicht schlecht. Die Farbe wird 
tatsächlich dunkler, zumindest bis sich die erste LED bei 0 ausschaltet.
Ist aber doch nicht wirklich was ich benötige. Im Prinzip sollen die 
Leds ja nur an Leuchtintensität verlieren und nicht vom Farbwert dunkler 
werden. Kann man nicht irgendwie bei gleichbleibender PWM den Strom 
reduzieren? Sollte das nicht den Dimm-Effekt erzeugen?
Ich habe mich erst vor 2 Tagen angefangen mich mit Arduino zu 
beschäftigt und auch nicht im Handbuch nachgeschaut. Daher die Frage 
einfach mal vorab: kann man den Strom der einzelnen Ausgänge regulieren?

Autor: Axelr. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst von RGB in den anderen Farbraum umrechnen.
Dazu gibt es hier einen Artikel.

Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh okay. Ist doch aufwändiger als ich dachte. Im Prinzip in HSV 
konvertieren, dort bei gleichbleibender Farbe die Helligkeit ändern und 
wieder zurück konvertieren? Das dann für alle 3 Leds.
Vielen Dank für den Hinweis!

Autor: DCcd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mich zwar jetzt eine Weile mit dem Konvertieren rumgeplagt aber es 
funktioniert einwandfrei! Hab einfach die Formeln aus dem 
Wikipedia-Artikel zum HSV Farbraum verwendet.

Im Prinzip definiere ich aktuelle mit 3 Potis den Farbwert, die 
Sättigung und die Helligkeit. Daraus wird dann anhand der "Formeln" 
(traue mich gar nicht das bisschen so zu nennen) wieder ein RGB-Wert, 
der letztendlich an die LED weitergegeben wird. Und somit klappt auch 
das Dimmen ohne Probleme. Die Farbe verändert nicht mehr den Farbton, 
sondern verliert einfach nur an Leuchtkraft.

Später soll das alles mal über eine App oder wahrscheinlich einem 
Webserver passieren. Mal schauen ob ich alles so hinbekomme wie ich es 
mir vorstelle.

Vielen Dank nochmal an Axelr für den Hinweis. Manchmal kann ein so 
kurzer Beitrag doch extrem hilfreich sein.

Gruß

Autor: Axelr. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh - da staune ich ja, Dankeschön. Bringen doch sonst meine "kurzen 
Beiträge" meist nichts als Ärger ...  :)
Viel Spaß weiterhin am gemeinsamen Hobby#
Axelr.

Autor: fried chycken (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns etwas mehr out-of-the-box sein darf: es gibt im 
online-Auktionshaus 12v-Dimmer (3kanal) speziell für Led-strips für 
unter 20Euro. die werden mit dmx angesteuert, dass ist ein Bussystem aus 
der Bühnentechnik mit 512 Kanälen. baut man sich ein Netzwerk Interface 
für dmx mittels arduino, kann man mittels bestehender Software(evtl. per 
artnet) auch von mobilen Geräten über LAN theoretisch Bis zu 512 Farben 
oder 170 rgb-Strips oder auch einzelne Leds im ganzen Haus steuern.

Autor: Gregor O. (zappes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und natürlich kann man es auch einfach selber bauen ... Habe gerade 
sowas mit einem ATtiny4313 fertig gebastelt. :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.