MoodStrip

LED Streifen zur Musik Blinken lassen

Wisser: Skruppy, Wanda, Jan?
Mitwisser:

Status: working, in progress, documentation needed
Tags: elektro, software, AVR, LED, Musik, processing, C, Java, Arduino, reverse engineering

Einleitung

Vorlage

Komponenten

  • IDE/Framework: Processing (leider Java)
  • PulseAudio
  • ALDI 5m LED Schnur 27W laut Werbung (15W in echt)
  • Arduino

Installation

apt-get install openjdk-6-jre openjdk-6-jre-lib pavucontrol

Auf der Processing Webseite die „LINUX“ Version runterladen und entpacken.

Um PulseAudio support in Processing zu haben, müssen jetzt files aus den oben installierten System Paketen in den entpackten Prozessing Ordner kopiert werden.

cp  /usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar      ./processing-<versions nummer>/java/lib/ext/
cp  /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libpulse-java.so   ./processing-<versions nummer>/java/lib/i386/

Konfiguration

Mit pavucontrol den „Monitor“ Kanal der gewünschen Audio Sink als Source für das Programm einstellen.

Umsetzung

Aufbau der PCB

Ein Mikrocontroller ohne Aufdruck empfängt IR signale und steuert per PWM die LEDs. Er hat vermutlich eine Frequenz von 8Mhz. Es sind noch andere, für das Ziel uninteresante Komponenten auf der Platine. Für jeden der drei Farbkanäle gibt es die Folgende Ansteuerungsschaltung.

(Der Circuit Simulator Queltext zum importieren http://pastebin.com/emEJ5TZF)

An der Angegebene stelle wurde die Verbindung zwischen Mikrocontroller und der LED Steuerschaltung aufgetrennt und beide Seiten (jeweils aller drei Kanäle) an eine Buchsenleiste ausgeführt. An ihr kann man nun entweder eigene Steuersignale einspeisen, die orginal Signale Auswerten oder mit Brücken den Normalbetrieb herstellen.

Orginal Ansteuerung

  • 12V an den Streifen
  • R: 0,78A G: 0,78A B: 0,64A (im einzelbetrieb einer Farbe, 100% duty-cycle)
  • Größter beobachteter Gesamtsprom: 1,23A (ggf. falsch gemessen, da gepulst)
  • Größte beobachtete Gesamtleistung: 15W (ggf. falsch gemessen, da gepulst)
  • 7,8mV Fallen am MOS-FET ab

Werden alle Farben mit 100% duty-cycle gleichzeitig betrieben (also schlich alles mit dauerstrom an), so ergibt sich ein verbrauch von 26W. Das entspricht fast der Werbung. Allerdings ist mit dem mitgelieferten controller diese ansteuerung nicht möglich. Da sobald eine weitere farbe ins spiel kommt keine farbe mit 100% duty-cycle leuft. D.h. für einen kurzen moment (zu begin der periode) können 26W vom netzteil gefordert werden, jedoch wird das licht nie eine helligkeit von 26W haben. Wie gut meine messungen sind weis ich nicht, da ich nicht weis wie gut das messgerät mit gepulsten strömen umgehen kann, auf jedenfall hatt die anzeige nicht geflackert.

Die PWM Frequenz ist 438Hz (die Periodendauer 2,282ms). Der duty-cycle bei 100% rot/grün/blau ist in den Helligkeitsstufen:
100%; 88,2%; 78,4%; 59%; 49,2%; 39,48%; 29,76%; 20%; 10,3%

Neue ansteuerung

Zur ansteuerung der MoodStrips und diverser anderer (RGB)-LED sachen soll eine schmale billige PCB erstellt werden. Um sie selber machen zu können wäre es praktisch wenn sie ohne bohrungen für z.B. vias auskommt. D.h. SMD.

mC

Um RGB LEDs an zu steuern brauchen wir einen mC mit mindestens 3 16 bit OCR.

Definition Chips OCs Preis Bemerkung
iocanxx.h AT90CAN32
AT90CAN64
AT90CAN128
6 9,39 Preis und Link für AT90CAN32 Farnell Produkt Seite
iom1284p.h ATmega1284P 4 8,43 Farnell Such Ergebnisse
iom128.h ATmega128 6 16,57 Farnell Such Ergebnisse
iom128rfa1.h ATmega128RFA1 12 10,66 Nur als QNF bei Farnell Farnell Such Ergebnisse
iom162.h ATmega162 4 5,34 Auch mit Beinchen Farnell Such Ergebnisse
iom16u2.h ATmega16U2 3 4,16 Farnell Produkt Seite
iom16u4.h ATmega16U4 6 5,43 Farnell Produkt Seite
iom32u2.h ATmega32U2 3 4,91 Farnell Produkt Seite
iom32u4.h ATmega32U4 6 6,14 Farnell Such Ergebnisse
iom32u6.h ATmega32U6 6 Nicht gefunden, aber sicher teurer als ATmega32U4, als mehr als 6,14
iom64.h ATmega64 6 12,37 Farnell Such Ergebnisse
iom8u2.h ATmega8U2 3 3,71 Farnell Such Ergebnisse
iomxx0_1.h ATmega640
Atmega1280
ATmega1281
ATmega2560
ATmega2561
12 9,50 Preis und Link für ATmega640 Farnell Such Ergebnisse
iousbxx2.h AT90USB82
AT90USB162
3 2,85 Preis und Link für AT90USB162 bei Reichelt, 2,85€ und Link für AT90USB162 bei Farnell, AT90USB82 nur als QNF bei Farnell Farnell Such Ergebnisse Reichelt Produkt Seite
iousbxx6_7.h AT90USB646
AT90USB647
AT90USB1286
AT90USB1287
6 9,50 Preis und Link vom biligsten AT90USB646 Farnell Such Ergebnisse

Die Preise sind jeweils für 10+ Mengen. QNF ist „unlötbar“. Farnell ist nur zum vergleich da der fast alles hat, aber die Preise exkl. MwSt sind.

Der gewinner ist der AT 90USB162 TQ. Für USB muss die Versorgungsspannung zwischen 3.0V und 5.5V liegen. Ab 4.5V kann die Frequenz bis zu 16MHz betragen. Eine externe clock ist Notwendig [s. S. 184].

Transistor

Allgemein

Es werden transistoren für folgende Anwendungen benötigt.

12V 200mA 2,4W 1/4 MoodStrip
12V 800mA 9,6W 1/1 MoodStrip
24V 500mA 12,0W Weiße LED
5V 160mA 0,8W CPU-Meter
24V 800mA 12,0W Max Werte

Somit müsste das PCB

  • Footprints für alle Anwendungen haben
  • Ein multi footprint, wo mehrere bauformen drauf pasen
  • für jede Anwendung mit der selben Bauform bestückt werden
  • für jede Anwendung mit dem selben Transistor bestückt werden

Es wäre gut wenn der Spannungsabfall bei durchgeschaltenem transistor nicht so bipolar groß wäre.

Mögliche Transistoren:

Name Art $I_\text{max}$ [A] $U_\text{max}$ [V] Spannungsabfall [V] $t_\text{on+off}$ [ns] Preis [€]
Zetex FMMT 624 TA Bipolar 1 125 0,02 160 0,26
IRLML 2803 MOSFET ? 20 ? 12,9 0,16

Implementierung

Es wird der IRLML 2803 verwendet (0,16€; Datenblatt.

Ist eine Treiberschaltung nötig?

Wie groß sollte der Gate Strom sein (also der Serien Wiederstand)?

Ist ein pull-down nötig?

RS485

Für den Physikalischen Teil der Kommunikation soll RS485 verwendet werden. USB kann nicht verwendet werden, das es Physikalisch nur eine Punkt zu Punkt Verbindung möglich ist, die maximale Kabellänge 5m beträgt und kein Broadkast möglich ist (Datenrate oder Latenz wird zu groß)

Allgemein

Es besitzt folgende Haupt Features:

Eine praktische Implementierungs guideline.

Implementierung

Es soll der ADM 485 JR von Analog Devices verwendet werden (1,25€; Datenblatt)

Sollte A/B nicht angeschlossen sein (floating) so ist der Ausgang high. Dennoch pull-up/down an A/B wie hier 1, 2, 3 und 4. Jedoch nicht in der Implementierungs guideline. Sowie eine für differenzielle Signalübertragung

Wiederstand in Serie wie bei der 1 und 4 von vorhin? Jedoch nicht in der Implementierungs guideline.

Enable für receiver und transmiter könnten zusammengeschlossen werden, da einer Invertiert ist. Der Vorteil wäre das das routing etwas leichter würde. Sind sie getrent ist der Vorteil, das gehört werden kann was auf der Leitung los ist (CSMA). Ggf. könnte der Empfangsteil auch permanent aktiviert sein (was würde das für Probleme verursachen?).

Eine Zener Diode SMD ZD 13 verhindert das das RS485 Modul durch Überspannung auf der Leitung zerstört wird (0,06€; Datenblatt). Ist das Nötig, das das Modul eigentlich auch was von ESD Schutz sagt?

Spannungsregelung

Da 12V für die Lampen anliegen, und 5V für die Logik benötigt werden (mit 5V kann die interne Oszylator des mC 16MHz haben) wird ein µA 78L05 SMD verwendet (0,15€; Datenblatt von TI, ST und ON).

Alle drei Datenblätter schlagen einen 330nF Kondensator am Eingang und einen 100nF am Ausgang vor.

PCB

Kosten

Name Anzahl Einzelpreis
µA 78L05 SMD 1 0,15€
SMD ZD 13 2 0,06€
ADM 485 JR 1 1,25 €
IRLML 2803 3 0,16€
AT90USB162 1 2,85€
4,47€

Software

Eine möglichkeit wäre es die LEDs mit einer Ambilight funktion durch http://code.google.com/p/boblight/ von einer projectM musik visualisierung ansteuern zu lassen. (juhuuuu!…sagt wanda :-) )

Ergebnis

AWESOME *blink* *blink* *blink* … jetzt kann ich endlich wieder wie zu den guten alten ACAB Zeiten mit dem Epilepsi Faktor Arbeiten.

CPU auslastung von 100% nerft. Mit hörem nice wert läst sich aber wunderbar paralel arbeiten (auch wenn der PC viel heiße luft produziert).

Kein flackern oder ruckeln der LED. Ersteres war mit einer Frequenz von 100Hz nerfig. Nachdem es ca. verfünffacht wurde ist es OK. Es muss jedoch nochmal überprüft werden wie groß die schaltverluste sind. Das ruckeln war mit einer Baudrate von 9600 sichtbar (ca. 137Hz bei Farb updates). Mit doppelter baudrate und somit frequenz fält das nicht mehr auf.

Eine Gamma Korektur hat Große auswirkungen!

Dubstep8-Bit-Musik ist perfekt für die Visualisierung mit dem Akuellen Programm (welches noch viel Raum für verbesserungen hat)

Beispiel: Moodstrip mit Arduino/ATmega328P

projects/moodstrip.txt · Zuletzt geändert: 2012/12/30 17:52 von wanda