Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projects:moodstrip [2012/03/24 20:14] skruppy [Orginal Ansteuerung] |
projects:moodstrip [2012/12/30 17:52] (aktuell) wanda [Ergebnis] |
||
---|---|---|---|
Zeile 51: | Zeile 51: | ||
* Größter beobachteter Gesamtsprom: 1,23A (ggf. falsch gemessen, da gepulst) | * Größter beobachteter Gesamtsprom: 1,23A (ggf. falsch gemessen, da gepulst) | ||
* Größte beobachtete Gesamtleistung: 15W (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. | 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. | ||
Zeile 59: | Zeile 60: | ||
===== Neue ansteuerung ===== | ===== Neue ansteuerung ===== | ||
- | OK, als erstes hilft uns ein bash einzeiler um die passenen mC zu finden (Wir brauchen welche mit 16 bit timern die mindestens 3 OCR haben). | + | 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. |
- | <code bash> | + | |
- | ( find /usr/avr/include/avr -name 'io*.h' | while read file ; do grepf -P 'define.*OCR.*_SFR_(IO|MEM)16' $file | grepf -o 'OCR[A-Z0-9]*' | cut -c 4 | sort | uniq -c -w 1 | while read line ; do if [ $(echo $line | cut -d ' ' -f 1) -ge 3 ] ; then echo -en "${file:23:-2} \\tOCR${line:2} -- " ; echo $(grepf 'definitions for' $file | cut -d ' ' -f 6- ) ; fi ; done ; done ) | sort -n | + | ==== mC ==== |
- | </code> | + | Um RGB LEDs an zu steuern brauchen wir einen mC mit mindestens 3 16 bit OCR. |
- | und das Ergebniss: | + | |
- | <code> | + | ^ Definition ^ Chips ^ OCs ^ Preis ^ Bemerkung ^ |
- | canxx OCR1 -- AT90CAN32, AT90CAN64 and AT90CAN128 */ | + | | iocanxx.h | AT90CAN32 \\ AT90CAN64 \\ AT90CAN128 | 6 | 9,39 | Preis und Link für AT90CAN32 [[http://de.farnell.com/atmel/at90can32-16au/avr-can-mcu-32k-flash-smd-tqfp64/dp/1455066?Ntt=AT90CAN32|Farnell Produkt Seite]] | |
- | canxx OCR3 -- AT90CAN32, AT90CAN64 and AT90CAN128 */ | + | | iom1284p.h | ATmega1284P | 4 | 8,43 | [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=ATmega1284P&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=346981|Farnell Such Ergebnisse]] | |
- | m128 OCR1 -- | + | | iom128.h | ATmega128 | 6 | 16,57 | [[http://de.farnell.com/jsp/search/browse.jsp?N=2008+203063&Ntk=gensearch&Ntt=ATmega128&Ntx=mode+matchallpartial|Farnell Such Ergebnisse]] | |
- | m128 OCR3 -- | + | | iom128rfa1.h | ATmega128RFA1 | 12 | 10,66 | Nur als QNF bei Farnell [[http://de.farnell.com/jsp/search/browse.jsp?N=2008+203663&Ntk=gensearch&Ntt=ATmega128RFA1&Ntx=mode+matchallpartial|Farnell Such Ergebnisse]] | |
- | m128rfa1 OCR1 -- ATmega128RFA1 */ | + | | iom162.h | ATmega162 | 4 | 5,34 | Auch mit Beinchen [[http://de.farnell.com/jsp/search/browse.jsp?N=2008+203063&Ntk=gensearch&Ntt=ATmega162&Ntx=mode+matchallpartial|Farnell Such Ergebnisse]] | |
- | m128rfa1 OCR3 -- ATmega128RFA1 */ | + | | iom16u2.h | ATmega16U2 | 3 | 4,16 | [[http://de.farnell.com/atmel/atmega16u2-au/mcu-8bit-avr-16k-flash-32tqfp/dp/1841607?Ntt=ATMEGA16U2|Farnell Produkt Seite]] | |
- | m128rfa1 OCR4 -- ATmega128RFA1 */ | + | | iom16u4.h | ATmega16U4 | 6 | 5,43 | [[http://de.farnell.com/atmel/atmega16u4-au/mcu-8bit-avr-16k-flash-usb-44tqfp/dp/1748521?Ntt=ATMEGA16U4|Farnell Produkt Seite]] | |
- | m128rfa1 OCR5 -- ATmega128RFA1 */ | + | | iom32u2.h | ATmega32U2 | 3 | 4,91 | [[http://de.farnell.com/atmel/atmega32u2-au/mcu-8bit-avr-32k-flash-usb-32tqfp/dp/1748524?Ntt=ATMEGA32U2|Farnell Produkt Seite]] | |
- | m16m1 OCR0 -- ATmega16M1 */ | + | | iom32u4.h | ATmega32U4 | 6 | 6,14 | [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=ATMEGA32U4&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=345895|Farnell Such Ergebnisse]] | |
- | m16m1 OCR1 -- ATmega16M1 */ | + | | iom32u6.h | ATmega32U6 | 6 | | Nicht gefunden, aber sicher teurer als ATmega32U4, als mehr als 6,14 | |
- | m16m1 OCR2 -- ATmega16M1 */ | + | | iom64.h | ATmega64 | 6 | 12,37 | [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=ATmega64&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=346608|Farnell Such Ergebnisse]] | |
- | m16u2 OCR1 -- ATmega16U2 */ | + | | iom8u2.h | ATmega8U2 | 3 | 3,71 | [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=ATmega8U2&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=343713|Farnell Such Ergebnisse]] | |
- | m16u4 OCR1 -- ATmega16U4 */ | + | | iomxx0_1.h | ATmega640 \\ Atmega1280 \\ ATmega1281 \\ ATmega2560 \\ ATmega2561 | 12 | 9,50 | Preis und Link für ATmega640 [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=ATmega640&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=348075|Farnell Such Ergebnisse]] | |
- | m16u4 OCR3 -- ATmega16U4 */ | + | | 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 [[http://de.farnell.com/jsp/search/browse.jsp?N=2008+203063&Ntk=gensearch&Ntt=AT90USB162&Ntx=mode+matchallpartial|Farnell Such Ergebnisse]] [[http://www.reichelt.de/USB-CAN-BUS-Controller/AT-90USB162-TQ/3//index.html?ACTION=3&GROUPID=2946&ARTICLE=112440&SHOW=1&START=0&OFFSET=16&|Reichelt Produkt Seite]] | |
- | m3000 OCR1 -- M3000 from Intelligent Motion Systems . */ | + | | iousbxx6_7.h | AT90USB646 \\ AT90USB647 \\ AT90USB1286 \\ AT90USB1287 | 6 | 9,50 | Preis und Link vom biligsten AT90USB646 [[http://de.farnell.com/jsp/search/browse.jsp;jsessionid=Q1GXWPPLRDDXMCQLCIPJMMQ?N=0&Ntk=gensearch&Ntt=AT90USB646&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=348891|Farnell Such Ergebnisse]] | |
- | m32m1 OCR0 -- ATmega32M1 */ | + | |
- | m32m1 OCR1 -- ATmega32M1 */ | + | 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. |
- | m32m1 OCR2 -- ATmega32M1 */ | + | |
- | m32u2 OCR1 -- ATmega32U2 */ | + | 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]. |
- | m32u4 OCR1 -- ATmega32U4. */ | + | ==== Transistor ==== |
- | m32u4 OCR3 -- ATmega32U4. */ | + | === Allgemein ==== |
- | m32u6 OCR1 -- ATmega32U6 */ | + | Es werden transistoren für folgende Anwendungen benötigt. |
- | m32u6 OCR3 -- ATmega32U6 */ | + | | 12V | 200mA | 2,4W | 1/4 MoodStrip | |
- | m64m1 OCR0 -- ATmega64M1 */ | + | | 12V | 800mA | 9,6W | 1/1 MoodStrip | |
- | m64m1 OCR1 -- ATmega64M1 */ | + | | 24V | 500mA | 12,0W | Weiße LED | |
- | m64m1 OCR2 -- ATmega64M1 */ | + | | 5V | 160mA | 0,8W | CPU-Meter | |
- | m64 OCR1 -- | + | ^ 24V ^ 800mA ^ 12,0W ^ Max Werte ^ |
- | m64 OCR3 -- | + | |
- | m8u2 OCR1 -- ATmega8U2 */ | + | Somit müsste das PCB |
- | mxx0_1 OCR1 -- ATmega640, Atmega1280, ATmega1281, | + | * Footprints für alle Anwendungen haben |
- | mxx0_1 OCR3 -- ATmega640, Atmega1280, ATmega1281, | + | * Ein multi footprint, wo mehrere bauformen drauf pasen |
- | mxx0_1 OCR4 -- ATmega640, Atmega1280, ATmega1281, | + | * für jede Anwendung mit der selben Bauform bestückt werden |
- | mxx0_1 OCR5 -- ATmega640, Atmega1280, ATmega1281, | + | * für jede Anwendung mit dem selben Transistor bestückt werden |
- | tn2313 OCR1 -- ATtiny2313 */ | + | |
- | usbxx2 OCR1 -- AT90USB82 and AT90USB162. */ | + | Es wäre gut wenn der Spannungsabfall bei durchgeschaltenem transistor nicht so bipolar groß wäre. |
- | usbxx6_7 OCR1 -- AT90USB646, AT90USB647, AT90USB1286 | + | |
- | usbxx6_7 OCR3 -- AT90USB646, AT90USB647, AT90USB1286 | + | Mögliche Transistoren: |
- | 90pwm1 OCR0 -- AT90PWM1 device */ | + | ^ Name ^ Art ^ $I_\text{max}$ [A]^ $U_\text{max}$ [V]^ Spannungsabfall [V]^ $t_\text{on+off}$ [ns] ^ Preis [€]^ |
- | 90pwm1 OCR2 -- AT90PWM1 device */ | + | | [[http://www.reichelt.de/ZETEX-Transistoren/FMMT-624-TA/3//index.html?ACTION=3&GROUPID=2905&ARTICLE=68619&SHOW=1&START=0&OFFSET=16&|Zetex FMMT 624 TA]] | Bipolar | 1 | 125 | 0,02 | 160 | 0,26 | |
- | 90pwm216 OCR0 -- AT90PWM216 */ | + | | [[http://www.reichelt.de/IRL-IRFZ-Transistoren/IRLML-2803/3//index.html?ACTION=3&GROUPID=2896&ARTICLE=108738&SHOW=1&START=0&OFFSET=16&|IRLML 2803]] | MOSFET | ? | 20 | ? | 12,9 | 0,16 | |
- | 90pwm216 OCR1 -- AT90PWM216 */ | + | |
- | 90pwm216 OCR2 -- AT90PWM216 */ | + | ==== Implementierung ==== |
- | 90pwm2b OCR0 -- AT90PWM2B */ | + | Es wird der [[http://www.reichelt.de/IRL-IRFZ-Transistoren/IRLML-2803/3//index.html?ACTION=3&GROUPID=2896&ARTICLE=108738&SHOW=1&START=0&OFFSET=16&|IRLML 2803]] verwendet (0,16€; [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A100%252FIRLML2803PBF.pdf|Datenblatt]]. |
- | 90pwm2b OCR1 -- AT90PWM2B */ | + | |
- | 90pwm2b OCR2 -- AT90PWM2B */ | + | Ist eine Treiberschaltung nötig? |
- | 90pwm316 OCR0 -- AT90PWM316 */ | + | |
- | 90pwm316 OCR1 -- AT90PWM316 */ | + | Wie groß sollte der Gate Strom sein (also der Serien Wiederstand)? |
- | 90pwm316 OCR2 -- AT90PWM316 */ | + | |
- | 90pwm3b OCR0 -- AT90PWM3B */ | + | Ist ein pull-down nötig? |
- | 90pwm3b OCR1 -- AT90PWM3B */ | + | ==== RS485 ==== |
- | 90pwm3b OCR2 -- AT90PWM3B */ | + | Für den Physikalischen Teil der Kommunikation soll [[http://de.wikipedia.org/wiki/RS485|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ß) |
- | 90pwm81 OCR0 -- AT90PWM81 */ | + | |
- | 90pwm81 OCR2 -- AT90PWM81 */ | + | === Allgemein === |
- | 90pwmx OCR0 -- AT90PWM2(B) and AT90PWM3(B) */ | + | Es besitzt folgende Haupt Features: |
- | 90pwmx OCR1 -- AT90PWM2(B) and AT90PWM3(B) */ | + | * 1,2 km Kabel länge (sollte für den Anfang reichen xD) |
- | 90pwmx OCR2 -- AT90PWM2(B) and AT90PWM3(B) */ | + | * 32 unit loads können dran hängen (ein Treiber kann ein Bruchteil oder vielfaches einer unit load sein) |
- | </code> | + | * [[http://de.wikipedia.org/wiki/Duplex_(Nachrichtentechnik)|half-duplex]] |
+ | * [[http://de.wikipedia.org/wiki/Symmetrische_Signalübertragung|differenzielle/symetrische Übertragung]] | ||
+ | |||
+ | Eine praktische [[http://www.maxim-ic.com/app-notes/index.mvp/id/763|Implementierungs guideline]]. | ||
+ | |||
+ | |||
+ | === Implementierung === | ||
+ | Es soll der [[http://www.reichelt.de/ICs-ADC-ADXRS-/ADM-485-JR/3//index.html?ACTION=3&GROUPID=5458&ARTICLE=39304&SHOW=1&START=0&OFFSET=16&|ADM 485 JR]] von Analog Devices verwendet werden (1,25€; [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A200%252FADM485%2523AD.pdf|Datenblatt]]) | ||
+ | |||
+ | Sollte A/B nicht angeschlossen sein (floating) so ist der Ausgang //high//. Dennoch pull-up/down an A/B wie hier [[http://www.siongboon.com/projects/2006-03-06_serial_communication/#RS485%20Interfacing|1]], [[http://www.electro-tech-online.com/microcontrollers/93289-rs-485-pic.html|2]], [[http://en.wikipedia.org/wiki/RS485|3]] und [[http://www.softelectro.ru/rs485_en.html|4]]. Jedoch nicht in der Implementierungs guideline. Sowie eine für [[http://dangerousprototypes.com/2011/10/09/app-note-high-speed-usb-design-guidelines/|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 ([[http://de.wikipedia.org/wiki/Carrier_Sense_Multiple_Access|CSMA]]). Ggf. könnte der Empfangsteil auch permanent aktiviert sein (was würde das für Probleme verursachen?). | ||
+ | |||
+ | Eine [[http://de.wikipedia.org/wiki/Zener-Diode|Zener Diode]] [[http://www.reichelt.de/SMD-Z-Dioden-SOT23/SMD-ZD-13/3//index.html?ACTION=3&GROUPID=2996&ARTICLE=18894&SHOW=1&START=0&OFFSET=16&|SMD ZD 13]] verhindert das das RS485 Modul durch Überspannung auf der Leitung zerstört wird (0,06€; [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A900%252FSMD%2520ZD_Serie%2523fair.pdf|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 [[http://www.reichelt.de/ICs-A-A-/-A-78L05-SMD/3//index.html?ACTION=3&GROUPID=2908&ARTICLE=18968&SHOW=1&START=0&OFFSET=16&|µA 78L05 SMD]] verwendet (0,15€; Datenblatt von [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A200%252FDS_UA78L00.pdf|TI]], [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A200%252FDS_L78L00AB_AC_C.pdf|ST]] und [[http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A200%252FDS_MC78L00A_D.pdf|ON]]). | ||
+ | |||
+ | Alle drei Datenblätter schlagen einen 330nF Kondensator am Eingang und einen 100nF am Ausgang vor. | ||
+ | |||
+ | ===== PCB ===== | ||
+ | Infos zu [[http://sigcon.com/Pubs/news/7_02.htm|"Ground Problemen"]] | ||
+ | |||
+ | ==== Kosten ==== | ||
+ | ^ Name ^ Anzahl ^ Einzelpreis ^ | ||
+ | | [[http://www.reichelt.de/ICs-A-A-/-A-78L05-SMD/3//index.html?ACTION=3&GROUPID=2908&ARTICLE=18968&SHOW=1&START=0&OFFSET=16&|µA 78L05 SMD]] | 1 | 0,15€ | | ||
+ | | [[http://www.reichelt.de/SMD-Z-Dioden-SOT23/SMD-ZD-13/3//index.html?ACTION=3&GROUPID=2996&ARTICLE=18894&SHOW=1&START=0&OFFSET=16&|SMD ZD 13]] | 2 | 0,06€ | | ||
+ | | [[http://www.reichelt.de/ICs-ADC-ADXRS-/ADM-485-JR/3//index.html?ACTION=3&GROUPID=5458&ARTICLE=39304&SHOW=1&START=0&OFFSET=16&|ADM 485 JR]] | 1 | 1,25 € | | ||
+ | | [[http://www.reichelt.de/IRL-IRFZ-Transistoren/IRLML-2803/3//index.html?ACTION=3&GROUPID=2896&ARTICLE=108738&SHOW=1&START=0&OFFSET=16&|IRLML 2803]] | 3 | 0,16€ | | ||
+ | | [[http://www.reichelt.de/USB-CAN-BUS-Controller/AT-90USB162-TQ/3//index.html?ACTION=3&GROUPID=2946&ARTICLE=112440&SHOW=1&START=0&OFFSET=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 ===== | ===== Ergebnis ===== | ||
AWESOME *blink* *blink* *blink* ... jetzt kann ich endlich wieder wie zu den guten alten ACAB Zeiten mit dem Epilepsi Faktor Arbeiten. | AWESOME *blink* *blink* *blink* ... jetzt kann ich endlich wieder wie zu den guten alten ACAB Zeiten mit dem Epilepsi Faktor Arbeiten. | ||
Zeile 131: | Zeile 169: | ||
Eine Gamma Korektur hat Große auswirkungen! | Eine Gamma Korektur hat Große auswirkungen! | ||
- | Dubstep ist perfekt für die Visualisierung mit dem Akuellen Programm (welches noch viel Raum für verbesserungen hat) | + | <del>Dubstep</del>8-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 ===== |