Jump to content

LED-Raumbeleuchtung mit Tinkerforge steuern


Recommended Posts

Hallo,

 

mich treibt schon länger die Idee einer programmierbaren Lampe um, die über verschiedene Sensoren (Helligkeit, Bewegung, Uhrzeit...) und Bewegungsmuster gesteuert werden kann. Ähnliches gibt es schon massenweise fertig oder zum selber basteln mit kleinen, bunten LEDs zur Partybeleuchtung - was allerdings meist potthässlich aussieht. Ich möchte schöne Hochenergie-LEDs (warmweiß) betreiben, die die Glühbirnen oder Energiesparlampen ersetzen und darüber hinaus noch gesteuert werden können. Beispielsweise:

 

  • Mehrere Strahler im Raum, die heller oder dunkler werden, je nachdem wo sich jemand aufhällt oder je nachdem in welcher Richtung die Sonne steht
  • Eine Matrix aus X mal Y Leuchtfeldern (für den Anfang reicht 2x2 wenn es etwas größere Felder sind). Die Helligkeit könnte z.B. langsam (!) hin und her wandern.
     

 

Da ich mich bisher nicht so mit Elektronik auskenne, poste ich hier mal meine bisherigen Überlegungen mit Bitte um Kommentare und Korrekturen.

 

 

1. Lassen sich mit Tinkerforge LEDs zur Raumbeleuchtung betreiben?

 

1.1. Wieviel Strom kann Tinkerforge direkt liefern?

 

Die TinkerForge-Bauteile basieren auf einer Stromversorgung per USB, deshalb sind sie auf 5V ausgelegt (die USB-Spezifikation schreibt eine Spannung zwischen 4,65V und 5,25V vor, die am Ende eines USB-Kabels sogar auf 4,4V abfallen kann). Als Stromstäre sind allerdings bei USB nur 500mA zugesichert bzw. 900mA bei USB 3.0. USB-Netzteile können zusätzlich über die Datenleitung einen Lademodus zwischen 500mA und 1500mA aktivieren, ob das mit Tinkerforge zusammen funktioniert weiß ich nicht. Grundsätzlich ist mit dem Master Brick also nur eine maximale Leistung von bis zu 2,5W (5V x 0,5A) bzw. 4,5W (5V x 0,9A) möglich.

 

Der Step-Down Power Supply (http://www.tinkerforge.com/doc/Hardware/Power_Supplies/Step-Down.html) kann zusätzlich mit einer 6V-27V Stromquelle (Batterie, 12V-Netz, anderes Netzteil für Anschluss an Stromnetz) einen Stapel von Bricks bei konstant 5V mit maximal 3A versorgen, also maximal 15W.

 

P.S: Wenn es in Zukunft ein Ethernet-Brick gibt, ließe sich die Lampe theoretisch auch mit Power over Ethernet betreiben, im Wikipedia-Artikel zu PoE steht, das sind maximal 12,95W bei 48V. Ich vermute aber dass das Ethernet-Brick nur die USB-Maximalleistung abgreifen wird, außerdem hängen ja vielleicht noch andere Geräte am Ethernet, die auch Strom wollen.

 

1.2 Wieviel Licht ist damit möglich?

 

Über Die Lichtausbeute von Hochenergie-LEDs ist in den letzten Jahren stetig gestiegen, in der Praxis bekommt man schon LEDs mit einer Effizienz von über 100lm/W, allerdings sind das eher Idealwerte, die nur bei einer bestimmten Spannung und Stromstärke erzielt werden. In der Regel nimmt die Effizienz mit steigender Leuchtstärke ab. Die Auswahl der konkreten LED-Bauteile wird durch die maximale Spannung von 5V eingeschränkt. Hier eine Übersicht der maximal zu erwartenden Leuchtstärken:

 

40lm/W60lm/W80lm/W100lm/W
2,5W100lm150lm 200lm 250lm
4,5W180lm270lm 360lm 450lm
15W 600lm900lm1200lm1500lm

 

Bedenkt man, dass eine traditionelle 60W Glühbirne 720lm hell ist (100W Glühbirne: etwa 1450lm), dann ist schonmal klar, dass eine normale USB-Versorgung zu wenig Strom liefert. Mit dem "Step-Down Power Supply" wäre aber eine Raumbeleuchtung möglich, wobei die Kennzahlen der verwendeten LEDs genau beachtet werden sollten, um unangenehme Überraschungen zu vermeiden.

 

2. Wie lassen sich LEDs dimmen?

 

Grundsätzlich lassen sich LEDs auch über die Spannung dimmen, das hieße pro LED (bzw. Feld von zusammen geschalteten LEDs) ein Analog Out Bricklet (https://shop.tinkerforge.com/bricklets/analog-out-bricklet.html). Die Effizienz der LED ist allerding bei niedrigeren Spannungen besser und falsche Spannungen können die LED zerstören. Es wird deshalb empfohlen, für das Dimmen Pulsweitenmodulation (PWM) anzuwenden. Dabei wird die LED mehrmals in der Millisekunde kurz aus- bzw. angeschaltet, um die scheinbare Helligkeit zu verringern.

 

2.1 Wie lässt sich PWM mit Tinkerforge umsetzen?

 

Dies lässt sich möglicherweise mit den IO-Bricklets bewerkstelligen, die konstant 3,3V liefern. Ich habe aber noch keine genauen Angaben über die Taktfrequenz des Tinkerforge-Bus gefunden. Die Anzahl der Nachrichten, die per USB zwischen Computer und Bricklet übertragen werden können, hängt anscheinend von der USB-Geschwindigkeit am. Angeblich ist bislang zumindest 1kHz möglich, das sollte für einfache Anwendungen reichen. Es ist aber etwas unpraktisch, die Schaltsignale für PWM über USB zu schicken, besser wäre ein PWM-Bricklet, dem man nur die gewünschte Helligkeit (bzw. einen RGB-Wert für Farb-LEDs) übergibt. Die für PWM benötigten Chips gibt es sehr billig, kennt sich da jemand aus, der so ein Bricklet entwerfen könnte? Im Grunde wäre das ganze wie ein IO-Bricklet, nur das an den Ausgängen keine konstante Spannung sondern PWM-Signale anliegen, es sollte also nicht viel teurer als ein IO-Bricklet werden.

 

3. Bausatz für eine programmierbare Lampe

 

Es werden in jedem Fall benötigt:

 

  • 1 Master Brick
  • 1 Step-Down Power Supply
  • 1 Netzteil um Step-Down an Power Supply anzuschließen
  • Passende Hochenergie-LEDs plus Vorwiederstände, Kühlkörper und Gedöns (da muss ich mich erst einlesen, vielleicht kann das jemand anderes erklären)
  • Ein Raspberry Pi, um das ganze zu steuern (oder ein Arduino o.Ä. wenn Tinkerforge in Zukunft auch ohne PC läuft)
  • Bei Bedarf weitere Sensoren, wenn die Lampe auf die Äußere Umgebung reagieren soll
  • Möglichst das bisher nicht existierende PWM Brickelt, um die Programmierung zu vereinfachen

 

Ich denke Raspberry Pi ist die beste Lösung zur Steuerung, damit lässt sich die Lampe auch leicht ans Ethernet anschließen und z.B. über das Web steuern. Hat schon jemand Erfahrung mit der Kombination Tinkerforge & Raspberry Pi?

Link to comment
Share on other sites

Falls du Angst hast nicht genügend Strom zu bekommen gibt es ja auch noch eine Alternative:

 

ein Stack pro Lichtquelle

Du könntest eine Step-Down-Supply + Master pro Lichtquelle betreiben, dann hätte jede Quelle die volle Stromversorgung und müsste sie sich nicht mit den anderen teilen. Du brauchst dann aber auch noch eine Master-Extension (Kabellos oder mit Kabel) um die einzelnen Stacks zu verbinden. Ist aber zugegeben auch etwas teuer...

[edit: ich stelle gerade fest, dass du möglicherweise sogar schon so gerechnet hast...]

 

externer Dimmer?

Ich frage mich ob es möglich ist einen externen PWM-Dimmer mit Potenziometer zu nutzen. Die Idee wäre, dass man die Poti-Ansteuerung durch eine TF-Ansteuerung (Analog-Out???) ersetzt und TF dadurch nur die Regelung übernimmt, die Versorgungsspannung der LED aber nicht durch die TF-Teile bereitgestellt wird. Wenn das ginge wäre auch gleich das PWM-Problem erschlagen, allerdings fehlt mir hier das elektrotechnische Wissen...

 

Wegen dem PWM frage ich mich außerdem gerade, ob man dafür nicht auch das DC-Brick verwenden kann. Das können dir die TF-Leute bestimmt besser sagen, aber ich hätte gedacht, dass das DC-Brick nix anderes tut als ein Gleichstromgerät per PWM zu kontrollieren.

 

LG

Jan

Link to comment
Share on other sites

Ein Stack pro Lichtquelle wäre tatsächlich zu teuer, die maximal 15W des "Step-Down Power Supply" sollten für eine kleine Lampe reichen, sind aber vielleicht doch etwas wenig. Ggf. ist es stattdessen möglich, die Bricks, den Raspberry Pi und die LEDs über ein Netzteil zu versorgen, damit kommen auch LEDs für höhere Spannungen in Frage. Ohne PWM-Bricklet frage ich mich aber, ob dann Tinkerforge überhaupt noch die richtige Systemwahl ist oder nicht doch einfacher gleich alles direkt mit Arduino oder dem Raspberry Pi umgesetzt werden kann. Ich dachte nur, mit Tinkerforge ist es etwas einfacher, aber da ist zum einen die Begrenzung auf 5V/3A und bislang kein PWM-Bricklet.

 

@ThomasKl: Ideal wäre ein PWM-Bricklet, dass das Signal auch auf eine externe Stromquelle auflegen kann, d.h. Tinkerforge als Dimmer für handelsübliche LED-Lampen. Ich denke ein PWM-Bricklet, dass mindestens drei unabhängige Signale (für RGB) liefert und zwar wahlweise die eigene Stromversorgung (5V) oder eine extern angelegte Leitung, sollte noch mehr Interessenten finden. Damit ließe sich eine Handelsübliche LED-Lampe über ihr eigenes Netzteil versorgen und mit Tinkerforge über PWM Dimmen und bei RGB-Lampen die Farbe ändern. Wenn die API des PWM-Bricklet noch Funktionen mitliefert, die das Blinken und Faden noch einfacher machen, um so besser.

Link to comment
Share on other sites

Ich bin mir nicht sicher ob eine PWM Erzeugung für ein Bricklet nicht etwas zuviel verlangt ist. Zumal das Servobrick ja schon 7 separate PWM Signale erzeugt.

Man bräuchte nur eine kleine Erweiterung, die die Signale mit einer externen Spannung bzw der Leistungsleitung des Bricks verknüpft. Vielleicht gibt es so was ja schon.

 

Die Steuerung der Dioden geschieht ja dann per Software, da lässt sich bestimmt ein Satz Funktionen/Klassen schreiben, die einem alle Wünsche erfüllen.

Link to comment
Share on other sites

Irgendeine Art von LED Bricklet oder PWM Brick werden wir sicher mal machen. Wer aber schnell eine Lösung braucht, für den ist der Vorschlag von Thomas etwas. Einfach das Servo Brick nehmen und mit dem "Logik PWM Ausgang" über einen Transistor die Leistung schalten.

Link to comment
Share on other sites

Ok, dann würde ich entweder erstmal das Servo Brick nehmen oder doch lieber das ganze mit Arduino und PWM-Chips selber zusammenlöten. Wird zur Verwendung des Servo Brick (50€) zusätzlich noch ein Master Brick (30€) benötigt, es sind ja auf beiden ein ARM-Prozessor und eine USB-Schnittstelle? Falls die Lampe nicht dauernd am Ethernet hängt, wird ja auch noch ein Raspberry Pi benötigt, da summiert sich ggf. allein die Steuerung mit allem drum und dran auf 150€ :(

 

Unter http://electronics.stackexchange.com/questions/30737/transistors-and-pwm ist übrigens die Frage beantwortet, wie man Servo Brick und LED mit einem Transistor zusammenschaltet.

Link to comment
Share on other sites

Vielen Dank für den Link. Die Bricks funktionieren alle auch einzeln am PC, der Master ist nur nötig wenn sich mehrere Bricks eine USB Verbindung teilen sollen. Wenn du willst/kannst ist es auch möglich das Brick mit eigener Firmware auszustatten, dann brauchst du keinen PC, dieser low level Zugang ist im Moment aber noch nicht offiziell unterstützt.

Link to comment
Share on other sites

  • 2 months later...

Wenn Du mit dem Servobrick größere Lasten sprich Ströme ansteuern möchtest, würde ich Dir einen IC mit Darlington Array empfehlen.

Z.B. einen ULN2803. Dort sind gleich 8 elektronische Schalter integriert die bis zu 500mA gegen Masse treiben können und auf der Eingangsseite die CMOS/TTL Logikpegel akzeptieren.

Genaueres unter: http://www.mikrocontroller.net/articles/LED-Matrix

 

Link to comment
Share on other sites

  • 8 months later...

Hi,

also ich habe ein ähnliches Vorhaben. Dazu verwende ich ein IO-16 Bricklet welches ich an und ausschalte (PWM!). Das muss man halt programmieren, was aber machbar ist. Falls gewünscht poste ich das Programm hier!

An das IO-16 Bricklet kommen dann Transistoren (BC337, die verkraften bis zu 1A und 45V jeweils, das reicht für mich).

 

Diese Schaltung ist einfach zu realisieren und relativ preiswet. Ich möchte 14 LED Streifen einzeln steuern können, das wären dann 2 Servo-Bricks und das Teuer, ein IO-16 Bricklet ist wesentlich günstiger.

 

Zum Programm: Habe es in Python geschrieben. Wenn ich es direkt über den Interpreter laufen lasse sieht man die LED flackern. Wenn ich es allerdings erst kompiliere läuft es deutlich schneller und das flackern ist weg!

Zum kompilieren einfach im Terminal in den Ordner wechseln in dem das Programm liegt und dann folgendes:

 

pyton
>> import py_compile
>> py_compile.compile('meinmodul.py')

Link to comment
Share on other sites

  • 1 month later...

Hallo zusammen,

 

die Idee, LEDs zu dimmen scheint immer wieder hochzukommen.

In meinem Bauthread/Wiki findet ihr ein Beschreibung meines Aufbaus mit Servo Brick und LowSideSwitches. Wenn irgendwann mal die Ethernet Extension raus kommt, gibts auch mal den Code in aktueller TF-Version ;-)

 

Dazu verwende ich ein IO-16 Bricklet welches ich an und ausschalte (PWM!).

Anstatt das über den PC zu steuern, würde ich dir empfehlen, die Firmware des zugehörigen Bricks zu modifizieren und dir dort einen Software-Counter zu bauen. Das geht dann deutlich schneller, aber du müsstest dir noch einen Weg überlegen, wie du die Ansteuerungs-% an den Brick übermittelst. Erfordert etwas mehr Programmieraufwand, sollte aber auch ein besseres Ergebnis liefern.

 

Gruß

Hawk

Link to comment
Share on other sites

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...