Rainbow Crash: Difference between revisions

From chaoswiki
Jump to navigation Jump to search
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div><div style="float:left;z-index:-100;">__TOC__</div><div style="position:relative; left:-51px; pointer-events:none;">[[File:Rainbow crash clyvore small.png]]</div><div style="clear:both;"></div></div>

== Inspiration ==
== Inspiration ==


Line 6: Line 8:


== Ziel ==
== Ziel ==

Farbige Zimmerbeleuchtung!

Leider sind die Fertigprodukte (LED-Birnen) aus China recht minderwertig. Also warum nicht selbst bauen?

So wird auch wesentlich mehr Leuchtleistung möglich.

== LED-Quellen ==


CREE-LEDs sind immer noch recht teuer. Bei DigiKey gibt es welche auf Stern in RGB für 11$/Stück (7 bei Abhname in grösseren Chargen).
CREE-LEDs sind immer noch recht teuer. Bei DigiKey gibt es welche auf Stern in RGB für 11$/Stück (7 bei Abhname in grösseren Chargen).
Line 12: Line 22:


Treiberschaltungen und Fernbedienungen kann man ebenfalls zum Sparpreis aus China bestellen, z.B. aus LED-Spots von DealExtreme.
Treiberschaltungen und Fernbedienungen kann man ebenfalls zum Sparpreis aus China bestellen, z.B. aus LED-Spots von DealExtreme.

Leider sind die Fertigprodukte (LED-Birnen) aus China recht Minderwertig. Also warum nicht selbst bauen?


== Reverse Engineering Fernbedienung ==
== Reverse Engineering Fernbedienung ==


Analyse der Fernbedienng von DealExtreme 12V RGB LED Spot mit dem Logik-Analyzer war relativ einfach, Vergleich mit existierenden Protokollen hat ergeben dass NEC IR Codes verwendet wurden. Offenbar aber mit anderem Clock als üblich. Siehe [http://wiki.altium.com/display/ADOH/NEC+Infrared+Transmission+Protocol NEC-Protokoll].
Analyse der Fernbedienng von DealExtreme 12V RGB LED Spot mit dem Logik-Analyzer war relativ einfach, Vergleich mit existierenden Protokollen hat ergeben dass NEC IR Codes verwendet wurden. Das Blank-Signal ist etwas kürzer, 480&mu;s statt 567&mu;s, unterm Strich stimmt das Timing aber ziemlich genau mit der Spezifikation überein. Siehe [http://wiki.altium.com/display/ADOH/NEC+Infrared+Transmission+Protocol NEC-Protokoll].


== Atmel Plätten ==
== Atmel Plätten ==


Wie so viele andere Bastler habe ich bei meinen ATtiny13 die falschen Fuse-Bits geflasht... Anstatt in die lfuse landeten sie in der hfuse. Nun funktioniert der ISP-Port nicht mehr, weil die RESET-Leitung als GPIO-Pin konfiguriert ist. Zum entbricken ist ein HVSP-Programmer nötig, welcher leider nicht zur Verfügung steht. In Anbetracht der Tatsache dass in Zukunft Andere vielleicht den gleichen Fehler machen werden bzw. dass in einer Schaltung einmal der RESET-Pin für andere Zwecke verwendet werden soll, haben wir uns einen HVSP-Fuse-Bit-Flasher besorgt. Sobald er eingetroffen ist, geht es weiter.
Wie so viele andere Bastler habe ich bei meinen ATtiny13 die falschen Fuse-Bits geflasht... Anstatt in der lfuse landeten sie in der hfuse. Nun funktioniert der ISP-Port nicht mehr, weil die RESET-Leitung als GPIO-Pin konfiguriert ist. Zum entbricken ist ein HVSP-Programmer nötig - welcher aber leider (noch) nicht zur Verfügung steht. In Anbetracht der Tatsache dass in Zukunft Andere vielleicht den gleichen Fehler machen werden bzw. dass in einer Schaltung einmal der RESET-Pin für andere Zwecke verwendet werden soll, haben wir uns einen HVSP-Fuse-Bit-Flasher besorgt. Sobald er eingetroffen ist, geht es weiter.


Das HVSP-Protokoll ist in den Datenblättern der jeweiligen Mikrocontroller dokumentiert, aber leider nicht kompatibel zum ISP-Protokoll. Ein ISP-Programmer mit Steuertransistor für die nötigen 12V auf der Reset-Leitung reicht also leider nicht. Hier gibts noch ein bisschen mehr Info dazu: [http://www.mikrocontroller.net/articles/AVR_Fuses].
Das HVSP-Protokoll ist in den Datenblättern der jeweiligen Mikrocontroller dokumentiert, aber leider nicht kompatibel zum ISP-Protokoll. Ein ISP-Programmer mit Steuertransistor für die nötigen 12V auf der Reset-Leitung reicht also leider nicht. Hier gibts noch ein bisschen mehr Info dazu: [http://www.mikrocontroller.net/articles/AVR_Fuses].


Hier sind einige Projekte/Produkte zum Wiederherstellen der Fuse-Bits: [http://www.simpleavr.com/avr/hvsp-fuse-resetter] [http://mightyohm.com/blog/products/hv-rescue-shield-2-x/] [http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/?lang=en]
Hier sind einige Projekte/Produkte zum Wiederherstellen der Fuse-Bits: [http://www.simpleavr.com/avr/hvsp-fuse-resetter] [http://mightyohm.com/blog/products/hv-rescue-shield-2-x/] [http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/?lang=en]

''Update:'' Zurücksetzen der Fuse-Bits hat geklappt. CKDIV8 ist nun auf 1, d.h. der ATtiny13 läuft mit der vollen Taktrate. Nun gehts weiter mit dem Projekt.

== IR-Decoder ==

Was brauchen wir:

* einen IR-Empfänger AGC, Trägerfilter und Demodulator (CIR verwendet einen 38-42kHz-Träger)
* einen auf 0.1ms genauen Zähler
* einen Interrupt-Handler der auf Flanken vom optischen Modul reagiert
* eine State-Machine
* einen Event-Handler der etwas mit den Tastencodes anfangen kann

Das Modul zum dekodieren der IR-Codes funktioniert nun. Code folgt später. Zusammen mit dem PWM-Code hat es sogar im nur 1KB grossen Speicher vom ATtiny13 Platz.

== DX-Fernbedienung = Müll ==

Leider tut unsere DealExtreme-Fernbedienung nicht mehr so wirklich. Zuletzt hat sie innert Kürze mehrere Batterien (CR2025) leer gefressen, nun sendet sie gar nichts mehr.

Das RC-5-Protokoll ist bei Fernbedienungen noch etwas gebräuchlicher als NEC. Als nächstes heisst es also ein Decoder-Modul für RC-5 zu bauen. Laut [http://en.wikipedia.org/wiki/RC-5] ist das ein Manchester-kodiertes 14-Bit-Signal. Der Code könnte also einfacher als für NEC ausfallen.

== Neues Design ==

Nach verschiedenen Experimenten, auch thermischen (die Guangmai-LEDs halten einiges aus), geht das Design eines ersten Prototypen für die Elektronik nun in die 4. Runde. Es hat sich herausgestellt, dass 4 LEDs bei weitem nicht ausreichen, um ein ganzes Zimmer farbig zu beleuchten. Durch den Einsatz eines starken Diffusors geht ausserdem weiteres Licht verloren. Eine Step-Down-Schaltung für 8 LEDs in Serie erweist sich aber als problematisch, da die Eingangsspannung ziemlich hoch sein muss. Dadurch gestaltet sich die Auswahl der Komponenten als schwierig.

Diese Version der Regelschaltung arbeitet nun mit Step-Up-Technik, die Eingangsspannung muss daher tiefer liegen als die Ausgangsspannung. Das bedeutet, dass sich bei 12V mindestens 6 LEDs in Serie befinden müssen, da sonst die roten LEDs zu hohe Spannungen und dadurch Ströme abbekommen. Der LED-Strom wird dann nur noch durch den Shunt-Widerstand zur Strommessung begrenzt.

Die Schaltung ist jedoch so ausgelegt, dass bei niedrigerer Last auch mit niedrigerer Eingangsspannung gearbeitet werden kann. Dazu muss jedoch u.U. der Spannungsregler für die Logikschaltkreise (5V) überbrückt oder durch einen für kleinere Spannung ersetzt werden. Alternativ kann auch direkt ein 3.3V-Regler verwendet werden. Beim Betrieb mit 5V ist auf korrekte Dimensionierung der Leitungen und Leiterbahnen zu achten, der Eingangsstrom kann bis zu 7A betragen falls 8 LEDs in Serie betrieben werden.

Ein erster Prototyp mit dem neuen Design ist nun fertig gestellt. Die Platine ist gleichzeitig auch ein Prototyp, wir haben spezielle kupferbeschichtete Platinenfolie mit dem Layout bedrucht, geätzt und dann auf eine normale Platine aufgeklebt. Die Rückseite bildet nun die Masse, Durchkontaktierungen wurden mit dünnem Kupferdraht realisiert.

Die Step-Up-Schaltung arbeitet einwandfrei. Die roten LEDs fangen bereits bei ca. 7V an zu leuchten, wenn auch nur schwach. 4-LED-Betrieb ist also nur mit 5V Eingangsspannung zu empfehlen. Bei der Ansteuerung der Step-Up-Regler gibts es noch einige Probleme, temporär wird PWM verwendet. Bei korrektem Timing sollten sich diese mit einem proprietären 1-Wire-Protokoll steuern lassen. Pro Farbe sind dann 32 Helligkeitsstufen möglich (RGB555).

Dateien: [[File:Controlsu-license.txt|Lizenz]] [[File:Controlsu-layout.pdf|Platinenlayout]] [[File:Controlsu-schema.pdf|Schaltung]] [[File:Controlsu-place.pdf|Bestückung]] [[File:Controlsu-bom.txt|Bauteileliste]]

Quellcode zur Firmware und Eagle-Dateien gibt es auf [https://github.com/onitake/rbcrash Github].

Latest revision as of 00:04, 16 December 2012

Rainbow crash clyvore small.png

Inspiration

Blinkenlights sind toll. Noch toller sind farbige Blinkenlights. Siehe auch AllColoursAreBeautiful und Moodlamp.

Und mit einem coolen Namen ist das ganze nochmal 20% cooler!

Ziel

Farbige Zimmerbeleuchtung!

Leider sind die Fertigprodukte (LED-Birnen) aus China recht minderwertig. Also warum nicht selbst bauen?

So wird auch wesentlich mehr Leuchtleistung möglich.

LED-Quellen

CREE-LEDs sind immer noch recht teuer. Bei DigiKey gibt es welche auf Stern in RGB für 11$/Stück (7 bei Abhname in grösseren Chargen).

Chinesische LEDs kosten wesentlich weniger. Gleichwertige kriegt man bei Ali Express schon ab 170$ für 100 Stück.

Treiberschaltungen und Fernbedienungen kann man ebenfalls zum Sparpreis aus China bestellen, z.B. aus LED-Spots von DealExtreme.

Reverse Engineering Fernbedienung

Analyse der Fernbedienng von DealExtreme 12V RGB LED Spot mit dem Logik-Analyzer war relativ einfach, Vergleich mit existierenden Protokollen hat ergeben dass NEC IR Codes verwendet wurden. Das Blank-Signal ist etwas kürzer, 480μs statt 567μs, unterm Strich stimmt das Timing aber ziemlich genau mit der Spezifikation überein. Siehe NEC-Protokoll.

Atmel Plätten

Wie so viele andere Bastler habe ich bei meinen ATtiny13 die falschen Fuse-Bits geflasht... Anstatt in der lfuse landeten sie in der hfuse. Nun funktioniert der ISP-Port nicht mehr, weil die RESET-Leitung als GPIO-Pin konfiguriert ist. Zum entbricken ist ein HVSP-Programmer nötig - welcher aber leider (noch) nicht zur Verfügung steht. In Anbetracht der Tatsache dass in Zukunft Andere vielleicht den gleichen Fehler machen werden bzw. dass in einer Schaltung einmal der RESET-Pin für andere Zwecke verwendet werden soll, haben wir uns einen HVSP-Fuse-Bit-Flasher besorgt. Sobald er eingetroffen ist, geht es weiter.

Das HVSP-Protokoll ist in den Datenblättern der jeweiligen Mikrocontroller dokumentiert, aber leider nicht kompatibel zum ISP-Protokoll. Ein ISP-Programmer mit Steuertransistor für die nötigen 12V auf der Reset-Leitung reicht also leider nicht. Hier gibts noch ein bisschen mehr Info dazu: [1].

Hier sind einige Projekte/Produkte zum Wiederherstellen der Fuse-Bits: [2] [3] [4]

Update: Zurücksetzen der Fuse-Bits hat geklappt. CKDIV8 ist nun auf 1, d.h. der ATtiny13 läuft mit der vollen Taktrate. Nun gehts weiter mit dem Projekt.

IR-Decoder

Was brauchen wir:

  • einen IR-Empfänger AGC, Trägerfilter und Demodulator (CIR verwendet einen 38-42kHz-Träger)
  • einen auf 0.1ms genauen Zähler
  • einen Interrupt-Handler der auf Flanken vom optischen Modul reagiert
  • eine State-Machine
  • einen Event-Handler der etwas mit den Tastencodes anfangen kann

Das Modul zum dekodieren der IR-Codes funktioniert nun. Code folgt später. Zusammen mit dem PWM-Code hat es sogar im nur 1KB grossen Speicher vom ATtiny13 Platz.

DX-Fernbedienung = Müll

Leider tut unsere DealExtreme-Fernbedienung nicht mehr so wirklich. Zuletzt hat sie innert Kürze mehrere Batterien (CR2025) leer gefressen, nun sendet sie gar nichts mehr.

Das RC-5-Protokoll ist bei Fernbedienungen noch etwas gebräuchlicher als NEC. Als nächstes heisst es also ein Decoder-Modul für RC-5 zu bauen. Laut [5] ist das ein Manchester-kodiertes 14-Bit-Signal. Der Code könnte also einfacher als für NEC ausfallen.

Neues Design

Nach verschiedenen Experimenten, auch thermischen (die Guangmai-LEDs halten einiges aus), geht das Design eines ersten Prototypen für die Elektronik nun in die 4. Runde. Es hat sich herausgestellt, dass 4 LEDs bei weitem nicht ausreichen, um ein ganzes Zimmer farbig zu beleuchten. Durch den Einsatz eines starken Diffusors geht ausserdem weiteres Licht verloren. Eine Step-Down-Schaltung für 8 LEDs in Serie erweist sich aber als problematisch, da die Eingangsspannung ziemlich hoch sein muss. Dadurch gestaltet sich die Auswahl der Komponenten als schwierig.

Diese Version der Regelschaltung arbeitet nun mit Step-Up-Technik, die Eingangsspannung muss daher tiefer liegen als die Ausgangsspannung. Das bedeutet, dass sich bei 12V mindestens 6 LEDs in Serie befinden müssen, da sonst die roten LEDs zu hohe Spannungen und dadurch Ströme abbekommen. Der LED-Strom wird dann nur noch durch den Shunt-Widerstand zur Strommessung begrenzt.

Die Schaltung ist jedoch so ausgelegt, dass bei niedrigerer Last auch mit niedrigerer Eingangsspannung gearbeitet werden kann. Dazu muss jedoch u.U. der Spannungsregler für die Logikschaltkreise (5V) überbrückt oder durch einen für kleinere Spannung ersetzt werden. Alternativ kann auch direkt ein 3.3V-Regler verwendet werden. Beim Betrieb mit 5V ist auf korrekte Dimensionierung der Leitungen und Leiterbahnen zu achten, der Eingangsstrom kann bis zu 7A betragen falls 8 LEDs in Serie betrieben werden.

Ein erster Prototyp mit dem neuen Design ist nun fertig gestellt. Die Platine ist gleichzeitig auch ein Prototyp, wir haben spezielle kupferbeschichtete Platinenfolie mit dem Layout bedrucht, geätzt und dann auf eine normale Platine aufgeklebt. Die Rückseite bildet nun die Masse, Durchkontaktierungen wurden mit dünnem Kupferdraht realisiert.

Die Step-Up-Schaltung arbeitet einwandfrei. Die roten LEDs fangen bereits bei ca. 7V an zu leuchten, wenn auch nur schwach. 4-LED-Betrieb ist also nur mit 5V Eingangsspannung zu empfehlen. Bei der Ansteuerung der Step-Up-Regler gibts es noch einige Probleme, temporär wird PWM verwendet. Bei korrektem Timing sollten sich diese mit einem proprietären 1-Wire-Protokoll steuern lassen. Pro Farbe sind dann 32 Helligkeitsstufen möglich (RGB555).

Dateien: File:Controlsu-license.txt File:Controlsu-layout.pdf File:Controlsu-schema.pdf File:Controlsu-place.pdf File:Controlsu-bom.txt

Quellcode zur Firmware und Eagle-Dateien gibt es auf Github.