Jump to content

LED Ansteuerung


Recommended Posts

Hallo zusammen,

 

ich will euch auch mal mein Projekt vorstellen, da es sowohl besondere Anforderungen an die Hardware als auch an die Software hat.

 

Erstmal eine kleine Übersicht:

 

Ich wollte mir ins Wohnzimmer meiner neuen Wohnung eine LED Beleuchtung einbauen.

Da mir aber die kommerziell erhältlichen Dimmer nicht gefallen und größtenteils für meine Stromstärken nicht geeignet waren, wollte ich mir eine Ansteuerung selber bauen.

Ich habe mich für einen Streifen mit RGB LEDs und zusätzlichen warmweißen LEDs entschieden, da diese ein schöneres Weiß bieten als die reinen RGB Streifen.

Dadurch habe ich erst einmal 4 Kanäle, die ich dimmen will:

- Rot

- Grün

- Blau

- Warmweiß

 

Da ich zusätzlich eine extra Beleuchtung für den Esstisch eingeplant habe, kommt noch ein weiterer Kanal dazu, womit wir insgesamt bei 5 Kanälen wären.

Jeder Kanal soll einzeln gedimmt werden, was sich mit einer Pulsweitenmodulation sehr gut bewerkstelligen lässt.

Das geht mit einem Servo Brick, welches aber nicht genug Strom verkraftet, um die LEDs treiben zu können und so dient es nur zur PWM Erzeugung.

Als "Leistungsendstufe" verwende ich Low Side Switches (LSS).

 

Um die LSS zu schonen und die LED Streifen auch wirklich auszuschalten habe ich noch für jeden Kanal ein Dual Relay Bricklet eingebaut.

Dieses schaltet die LEDs in die Zuständen AN, GEDIMMT und AUS, wobei nur der gedimmte Eingang von den LSS kommt.

 

Zudem sollen die warmweißen LEDs und die Esstischbeleuchtung nicht nur per PC einschaltbar sein, sondern auch per Lichtschalter an der Wand.

Dafür nehme ich ein IO4 Bricklet, welches ich dann an den Lichtschalter anschließen werde. Im Moment wird das ganze durch Kippschalter realisiert.

Außerdem sollte das Licht aber nicht einfach nur plump eingeschaltet werden, sonder schön an- und wieder ausgedimmt, sowie die Relais geschaltet.

Da dies ohne das Zutun eines PCs geschehen sollte, musste ich die Servo Brick Firmware modifizieren. Mehr dazu später.

 

An Hardware benötigt das Ganze folgende TinkerForge HW:

- Step Down Power Supply

- Master Brick

- Servo Brick

- 5 Dual Relay Bricklets

- IO4 Bricklet

 

Sowie zusätzliche HW:

- 5 Toshiba Low Side Switchs TPD1045F

- Platine

- 5 Servo Kabel Verlängerungen

- Mehrere Meter Kabel

- Mehrere Meter LED+WW Steifen

- 2 Schalter

- 12 Volt Schaltnetzteil

- 10 Reihenklemmen für Hutschiene

 

Das ganze sieht da mal so aus. Einmal abstrakt:

 

index.php?action=dlattach;topic=710.0;attach=598;image

 

R sind die Relais im Dual Relay Bricklet.

Sowie mit richtiger Hardware:

 

index.php?action=dlattach;topic=710.0;attach=600;image

 

Im Hintergrund erkennt man noch die Platine auf die ich die LSS gelötet habe. Die Reihenklemmen dienen lediglich zur Spannungsversorgung, da an mehreren Stellen 12 V bzw. GND benötigt werden.

 

Soweit zur Hardware, kommen wir zur Software.

 

Zur Ansteuerung habe ich mir ein kleines objektorientiertes Java Programm geschrieben, mit dem ich die Helligkeit der einzelnen Kanäle einstellen kann.

Auf dem ersten Reiter kann man die Helligkeiten jedes Kanals von Hand einstellen.

 

index.php?action=dlattach;topic=710.0;attach=602;image

 

Im Hintergrund arbeitet ein State-Machine mit Listenern, die die Relais einschaltet bzw. ausschaltet wenn das Licht komplett gedimmt wurde.

Auf dem zweiten Reiter habe ich eine andere Farbdarstellung für die RGB LEDs gewählt und kann dort die Farben einfacher ändern.

 

index.php?action=dlattach;topic=710.0;attach=604;image

 

Sogesehen nichts neues. Weitere Reiter sind angedacht, um weitere Funktionen wie Blinken oder Farbverläufe zu erzeugen.

 

Damit das Ganze auch ohne Host und auch nach einem Reset direkt funktioniert, musste die Firmware des Servo Bricks angepasst werden.

Also habe ich meine alte Linux VM ausgegraben, mit die Compiler-Umgebung installiert und angefangen in der Firmware rumzuspielen.

Dabei habe ich andere Standardwerte für die Servo Kanäle 1-5 (Frequenz, Min/Max Winkel, Geschwindigkeit, ...) gesetzt sowie die Kanäle auch aktiviert.

 

Für die warmweißen LEDs und die Tischbeleuchtung fange ich die Positionswerte von der GUI ab und speichere diese zwischen, damit in abhängigkeit von der Schalterstellung entweder auf den Vorgabewert oder auf 0 gedimmt werden kann.

Dafür wurde die Tick Task erweitert, welche jede Millisekunde ausgeführt wird und normalerweise für die Positionsänderung verwendet wird.

Per modulo-Opteration prüfe ich nun alle 100 ms ob ein Schalter geschalten wurde und wenn ja wird ein Zustandsübergang eingeleitet von einem der drei Zustände eingeleitet:

- Aus (Relais aus, Position = 0)

> Schalter AN

- An (Relais an, Position > 0)

> Schalter AUS

- Ausgeschalten (Relais an, Position = 0 wird angefahren)

> Position 0 erreicht

- Aus

 

Nach dem die Firmware nun funzt kann ich mein Licht einschalten. Den gesamten Aufbau habe ich inzwischen schon mal kurz getestet und ich hoffe mal, dass im Langzeitbetrieb nicht zuviel abraucht ;-)

 

Zu guter letzt nochmals vielen Dank an Olaf und Bastian für ihre Unterstützung.

LEDs.png.7c3a8e446d67c52f76ce20a8210d22be.png

aufbau.png.b9994fa7340371b93cf907904224af19.png

steuerung_1.png.2bc1ed864cae8f219b222f57d28824c6.png

steuerung_2.png.47685bf613efd5f1dc79d1ab8efa96b4.png

Link to comment
Share on other sites

Gefällt mir gut, hast du auch schön ausführlich beschrieben. Versteck dich schnell sonst kommt der Fabian und bittet dich es ins Wiki zu stellen :D

 

Ne Spaß, ist wirklich toll und würde das Wiki sicherlich bereichern. Ich würde auch gerne Bilder sehen wie du es am Ende verbaust, vielleicht kriege ich da noch eine gute Idee mit auf den Weg wie man sowas am geschicktesten versteckt ohne es in Beton zu gießen ^^ (Beton ist auch nicht so gut zur Revision geeignet)

Link to comment
Share on other sites

Ich würde auch gerne Bilder sehen wie du es am Ende verbaust, vielleicht kriege ich da noch eine gute Idee mit auf den Weg wie man sowas am geschicktesten versteckt ohne es in Beton zu gießen ^^ (Beton ist auch nicht so gut zur Revision geeignet)

 

Ich bin auch noch am überlegen, wie ich das ganze verstecke. Vermutlich wird es ein leeres PC Gehäuse oder ähnliches werden, in dem dann Bricks, Netzteil, Hutschiene und Platine reinkommen.

Link to comment
Share on other sites

  • 1 month later...

Laut "Schaltplan" - und auch im Text nicht erwähnt - nutzt du keine Widerstände um den Strom an den LEDs zu begrenzen.

Ist das richtig? Wenn ja solltest du das noch korrigieren. Sonst rauchen dir irgendwann die LEDs ab.

 

Welche LEDs verwendest du genau?

 

Ich überlege ähnliches zu bauen. Allerdings glaube ich momentan, dass ich da mit Arduino günstiger und flexibler wegkomme, da ein standard Bord schon 14 IO und davon 6 PWM Ausgänge mitbringt.

Link to comment
Share on other sites

Laut "Schaltplan" - und auch im Text nicht erwähnt - nutzt du keine Widerstände um den Strom an den LEDs zu begrenzen.

Ist das richtig?

Ja, aber das sind LED-Stripes die für den Einsatz an 12 V ausgelegt sind und die Widerstände schon mitbringen.

 

http://www.led-konzept.de/epages/61333995.sf/de_DE/?ObjectPath=/Shops/61333995/Products/10890/SubProducts/10892

Link to comment
Share on other sites

  • 2 months later...

Also ich bin auch nicht der Feinelektroniker, ich meine aber:

Der DC Brick hat eine variable Ausgangsspannung und stellt den benötigten Strom zur Verfügung, also das Regelelement ist die Spannung.

 

Eine LED leuchtet ab einer gewissen Spannung, drunter läuft nix und darüber bringt auch nicht viel (ausser Wärme - die abgeführt werden muss). Die Leuchtkraft wird über den Strom gesteuert - je mehr, desto heller. Auch in Grenzen versteht sich.

 

Der PWM-Ausgang schaltet eine definierte Spannung schnell ein und aus, regelt damit also den Strom der fließen kann.....

 

Ich hoffe das ganze zwar laienhaft, aber korrekt und verständlich formuliert zu haben.

Link to comment
Share on other sites

  • 4 weeks later...

So hier kommen mal ein paar Bilder.

 

Den Lichtschalter habe ich von der 230V Versorgung abgeklemmt und diese isoliert. Anschließend habe ich die Leitungen zum IO4-Bricklet angeschlossen und im Kabelkanal versteckt.

 

index.php?action=dlattach;topic=710.0;attach=858

 

Das weiße Licht ist bereits auf 25 % so hell, dass es sich als angenehme Hintergrundbeleuchtung für PC/Fernseher eignet.

Die drei anderen Farben geben ebenfalls kräftiges Licht ab wenn gewünscht.

index.php?action=dlattach;topic=710.0;attach=860

index.php?action=dlattach;topic=710.0;attach=862

index.php?action=dlattach;topic=710.0;attach=864

 

Durch die Anbringung an der Decke mit Leuchtrichtung nach unten wird die Wand auch als Leuchtfläche verwendet und auch der Boden hell genug ausgeleuchtet, ohne das man als Betrachter geblendet wird.

schalter.jpg.be1d48ba24569c3e74a6be9296ec3a9f.jpg

rot100.jpg.02c992fec68126f6463026579a23534f.jpg

gruen100.jpg.bd8b1fb15dcc04bda97bef23e64a74e4.jpg

blau100.jpg.ae2ef6bbcbefd175689475bbc497ae04.jpg

Link to comment
Share on other sites

  • 2 months later...

Hi,

 

Ich habe vor etwas ähnliches aufzuziehen. Mein Ziel ist es 14 im Raum verteilte LED Streifen (Jeweils ca 50cm lang -> 200mA bei 12V) zu betreiben. Ich möchte sie jeden für sich dimmen können.

Meine Überlegung war dazu 2 Servo Bricklets zu nehmen (um die LEDs anzusteuern) und den ganzen Stapel mit einem Step-Down-Power Supply mit Strom zu versorgen. Dieser würde dann mit einem 12V 8A Netzteil mit Strom versorgt werden.

Was die LED-Streifen angeht wird der Stromverbrauch bei 2,8A liegen, das sollte also kein Problem sein.

 

Was mir wirklich noch Kopfzerbrechen bereitet ist ob die LED-Streifen mit 9V (Was ja die Maximale Ausgangsspannung bei den Servo Bricklets ist) Leuchten!

Könnte ich mit den Servo-Bricklets auch wirklich die LED-Streifen dimmen??

 

Link to comment
Share on other sites

Was mir wirklich noch Kopfzerbrechen bereitet ist ob die LED-Streifen mit 9V (Was ja die Maximale Ausgangsspannung bei den Servo Bricklets ist) Leuchten!

Könnte ich mit den Servo-Bricklets auch wirklich die LED-Streifen dimmen??

Ich würde dir nicht empfehlen die LED Streifen direkt an den Servo Brick zu hängen. Bei 9V sollten die LEDs zwar leuchten, aber trotzdem sehr rotstichig sein. Investier lieber ein paar € in LowSide-Switches und löte dir das ähnlich zu meinem Aufbau zusammen. Da deine LowSide-Switches nur 200 mA können müssen, sollte es ein großes Angebot geben (Ich habe meine für 10 A ausgelegt).

Link to comment
Share on other sites

Dazu hab ich auch eine Frage: Kann ich statt dem LSS auch einen Transistor nehmen? Wenn ja, welchen? Ich möchte eine einzelne, dreifarbige LED ansteuern, über 3 Servo Kanäle natürlich. Die LED benötigt max 3x20mA bei 2/4/4 V.

Wie würde die Schaltung aussehen (bzogen auf GND), wenn der Stack und die LED über zwei verschiedene Stromquellen versorgt werden?

Link to comment
Share on other sites

Dazu hab ich auch eine Frage: Kann ich statt dem LSS auch einen Transistor nehmen?

Ein LowSide-Switch besteht ja aus Transistoren. Bei einem Transistor hast du halt das Problem, dass du die Ladung am Gate wieder wegbekommen musst. Dies kann der LSS durch seinen Schaltungsaufbau deutlich schneller und eignet sich somit besser für PWM.

 

Da du ja nu einzelne LED dimmen willst, könntest du diese vermutlich (fast) direkt an das ServoBrick anschließen. Muss halt bloß dir n paar Vorwiderstände besorgen, damit aus den 5V deine gewünschten Spannungen werden.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...