thinkJDs Blog WhooHoo es blinkt!!!

26Mai/11Off

MoodPxl v1.0 das vorläufige Projektende

Da bin ich wieder!

Alles abgeschlossen, geTeXt, gedruckt, gebunden, optimiert, präsentiert, bewertet,  aus, vorbei! Endlich wieder Zeit für mein Blog und ein paar spannende zukünftige Projekte (ich hab da schon so einiges auf Lager).

Sagt Hallo zu MoodPxl v1.0:

Demnächst werde ich euch dann mit den technischen Details bombardieren.

thinkJD

 

26Mai/11Off

MoodPxl facts Teil 1

"Bomb the facts bitch!"

Dieser Aufforderung komme ich gerne nach! Hier also ein paar Fakten über die technische Umsetzung von MoodPxl:

Die Hardware ist nicht all zu spannend und besteht hauptsächlich aus:

Die Komponenten werden dann fachgerecht zusammengefrickelt um schnell mit dem spassigen Teil des Projekts zu beginnen, der Firmware. Diese hat folgende Aufgaben  zu erfüllen:

  • Erzeugen der PWM, in diesem Fall vier Kanäle mit je 10bit Auflösung.
  • Kommunikation mit dem Funkmodul RFM12.
  • Temperaturmessung und Steuerung des Lüfters.
  • Gammakorrektur für jeden Farbkanal.
  • Ein Fader für schöne Farbübergänge in variabler Zeit.
  • Ne kleine Scriptengine um mehrere Befehle nacheinander ausführen zu können.
  • Ein bissel rechnen um HSV-Farbwerte in RGB umzurechnen.

Erstes Problem, die Gammakorrektur:

Die PWM-Au?ösung von 10bit entspricht theoretisch 1024 Helligkeitsstufen. Nach den ersten Versuchen die Stufen von 0 bis 1024 zu durchlaufen, fällt auf, dass die Helligkeit anfänglich sehr stark zunimmt und später nur noch leicht steigt. Der Grund liegt in der Kennlinie des Auges. Das Helligkeitsemp?ndenist so ausgelegt, dass wir bei sehr wenig Helligkeit (Straßenbeleuchtung) und bei extrem großer Helligkeit (Sommertag) gut sehen können, es ist also nicht linear. Um dem Auge einen linearen Farbverlauf vorzugaukeln, muss die Helligkeit angepasst werden. Dazu berechnet man für jeden Helligkeitswert den entsprechenden Korrekturwert. Am Ende erhält man die folgende Kennlinie:

 

Von der ehemaligen 10 bit Auflösung bleiben so noch 8 bit übrig. Die Werte sind alle vorberechnet und in einer Tabelle im Programm abgelegt. Das belegt etwas mehr Speicher, spart aber teure Rechenzeit.

Zweites Problem, das Funkprotokoll:

Daten via Funk zu übertragen ist nicht unbedingt trivial, vor allem dann nicht, wenn man versucht das widerspenstige RFM12 Funkmodul mit einem völlig anderen Funkchip (CC1100 von TI) zum Kommunizieren zu überreden. Von dem grundsätzlichen Problem wie der Frequenzauswahl und so weiter mal abgesehen, benötigt man vor ein stabiles Funkprotokoll.

Auf der folgenden Grafik könnt ihr sehen, wie ein MoodPxl Datenpaket aufgebaut ist. Es entspricht weitestgehend dem Funkprotokoll der RFM12 Lib von Das Labor. Die Lib selbst war für meine Zwecke unbrauchbar, daher habe ich das Protokoll noch einmal selbst implementiert.

  • Die blau markierten Felder werden, richtige Kon?guration vorausgesetzt, vomFunkchip CC1100 automatisch generiert.
  • Die Präambel 0xAAAA entspricht einer Abfolge von 16 High/Low Über-gängen. Sie wird gesendet, um dem Empfänger das Synchronisieren auf den Takt zu ermöglichen.
  • Das Syncpattern 0x2DD4 ist von dem Funkmodul RFM12 fest vorgegeben. Wenn dieses Datenwort empfangen wird, beginnt das Modul damit,die folgenden Daten in den Empfangspu?er zu schreiben. Dieser ist so konfiguriert, dass er beim Empfang von acht bit ein Interrupt auslöst. In der Interruproutine wird geprüft ob es sich um einen Empfangsinterrupt handelt (das Funkmodul unterstützt noch einige mehr) und falls ja, wird das Byte abgeholt.
  • Das Längenbyte gibt die Paketlänge ab dieser Position an. Da es keinSchlusszeichen gibt, dient es dem Empfänger, um das Ende der Übertragung zu erkennen.
  • Das Adressbyte des Masters ist immer 0x00, die Bytes 0x01 bis 0xFE kön-nen für die Slaves verwendet werden. Der Adresse 0xFF ist die Broadcastadresse. Mit ihr können alle Slaves in der Reichweite gleichzeitig adressiert werden.
  • Nach dem Header (Länge und Adresse) folgt eine Checksumme. Wenn die Checksumme nicht stimmt oder der Slave nicht adressiert ist, wird der Empfang ab hier eingestellt. Die Checksumme selbst ist eine einfache Längsparität, also eine XOR-Verknüpfung der Datenfelder mit 0xFF.
  • Die Nutzdaten, hier kommen die Befehle und deren Parameter rein. Es ist übrigens nicht empfehlenswert mehr als 30 Byte über die Luftschnittstelle zu verschicken. Das Funkmodul kommt sonst irgendwann aus dem Tritt.
  • Das letzte Byte der Übertragung ist eine CRC Prüfsumme über das komplette Paket.

Für den Anfang sollten das genug Fakten sein. Wollt ihr mehr wissen? Dann Schreibt mir einen Kommentar :-)

thinkJD

 

18Feb/11Off

Projekt MoodPixel Teil 3 es kommt Licht ins Dunkel

Wie ihr sicher bemerkt habt, ist es hier sehr ruhig geworden. Das hat keineswegs mit mangelnder Lust zu tun, mir fehlt einfach die Zeit. Ich habe im Moment beruflich und privat sehr viel um die Ohren. Dazu rückt der Abgabetermin für mein Abschlussprojekt immer näher!

Ich habe immer noch nicht so richtig realisiert, dass ich nur noch neun Schulabende vor mir habe, dann ist es erledigt. Ich weiß schon gar nicht mehr was ich nach den Vier Jahren Abendschule alles mit meiner neu gewonnenen Freizeit anstellen soll. Vielleicht mache ich noch irgendeine andere Fortbildung, suche mir einen Nebenjob oder übernehme die Weltherrschaft ... wir werden sehen.

Jetzt hat erst einmal mein Abschlussprojekt Priorität. Es sind nur noch zwei Monate Zeit und ich liege etwas hinter meinem Zeitplan. So wie es ausschaut, wird wohl ein gutes Stück von meinem Jahresurlaub dafür geopfert werden. Aber ganz so schlecht schaut es jetzt auch wieder nicht aus, ein paar Fortschritte konnte ich schon verzeichnen.

Die LEDs haben jetzt einen ordentlichen Rahmen aus Polyoxymethylen (in der Fachsprache auch Plastik genannt ;-) ). Dieser ist mit Löchern, welche in Verbindung mit dem Lüfter im inneren für frischen Wind sorgen sollen, versehen. Ob das so funktioniert wie ich mir das vorstelle, kann ich noch nicht genau sagen.

Die Treiber sitzen jetzt so nah wie möglich an dem LED-Modul. Da die Treiber nicht gerade unerhebliche Lasten sehr hochfrequent schalten, kommt es sonst zu allerlei lustigen Effekten. Ground-Bounce ist da nur das geringste Problem. Die etwas schlechter gewordene Kühlung nehme ich dabei in Kauf. Um einen drohenden Hitzetod rechtzeitig zu erkennen, habe ich dem Leistungsteil noch einen Temperatursensor spendiert. Das sorgt später auch für einen höheren WAF, Stichwort Lüfterregelung. Den Sensor hatte ich eh schon lange auf dem Schirm, es handelt sich dabei um einen Maxim DS18B20. Warum ich mich gerade für diesen entschieden habe und was ihn so sexy macht, erzähle ich euch ich in einem anderen Artikel :-)

Der schon angesprochene Lüfter befindet sich direkt unter dem Kopf. Ich hätte NIE gedacht, dass so ein kleiner Lüfter (30mm) soooo teuer sein kann! Das Loch an der Seite ist zur Durchführung der Kabel vom LED-Kopf gedacht. Wenn das Gehäuse geschlossen ist, ist er auch auf voller Drehzahl fast nicht mehr zu hören.

Die Steuerplatine musste wesentlich kompakter werden. Meine SMD-Pläne habe ich wieder über Bord geworfen, das ist zeitlich einfach nicht mehr drin. Das blaue Teil ist ein step down converter von Murata, die wahrscheinlich eleganteste Möglichkeit von den 28V LED-Spannung 5V für den Mikrocontroller zu generieren. Er ist mit 2A belastbar und hat einen Wirkungsgrad von über 98%. Leider ist auch dieses Bauteil nicht gerade günstig aber was tut man nicht alles für den Umweltschutz. Die Kondensatoren auf der rechten Seite sollen den Regelkreis des Spannungswandlers am schwingen hindern. Außerdem puffern sie Lastspitzen ab. Sie sind noch ein wenig schwach dimensioniert. Mal schauen was ich noch in der Baustelkiste habe.
Anfangs war ich noch sehr begeistert von dem Fädeldraht (das rote auf dem Bild), mittlerweile hat sich das aber etwas gelegt. Zum einen wird die Verdrahtung unübersichtlich und hässlich, zum anderen muss man ewig an den Lötstellen herum brutzeln, was sich erstens negativ auf die Bauteile auswirkt und zweitens unschöne Lötstellen hinterlässt. Für den Prototyp bleibt das erst mal so, später will ich das anders haben.

Mit der anderen Seite bin ich noch nicht fertig geworden. Man kann die Transistoren sehen, welche hoffentlich verhindern, dass mit die LED noch einmal abraucht. Das geht langsam in die Ersparnisse :-) Hier fehlen noch das Funkmodul die RTC (Echtzeituhr) und der Controller für den Touchsensor. Die Transistoren hätten durchaus auch kleiner sein können.

Zusammen flutscht das jetzt wunderbar in die Röhre. Auf Steckverbindungen habe ich absichtlich verzichtet. Das Innenleben soll so stabil wie möglich sein, lose Teile machen sich in einem Metallgehäuse nicht so gut. Die Kanten werden noch mit Moosgummi beklebt, das alles sicher sitzt und nicht verrutscht.

Ich bin recht zuversichtlich, dass ich diese Woche noch dazu komme, die Funkstrecke aufzubauen. Zur not mit tatkräftiger Unterstützung von diesem tollen Logic-Analyzer. Es handelt sich dabei um einen "Saleae Logic". Mal abgesehen von dem tollen Design, bringt er noch viele andere tolle Features mit. Da währe zum Beispiel: Software für Windows, Mac und Linux, ein ausgezeichneter Support und ein fairer Preis. Dazu werde ich aber noch einen eigenen Artikel veröffentlichen.

thinkJD

6Dez/10Off

Projekt MoodPixel Teil 2

Teil 1 könnt ihr hier lesen.

Es ist mir ja fast schon peinlich, aber ich habe schon wieder einen LED-Treiber geschrottet. Die Dinger sind empfindlicher als gedacht. Bis der Neue (mal wieder) da ist, habe mich ein wenig mit der Ansteuerung und dem Gehäuse beschäftigt.

Nach Langem hin und her, messen, gucken, zeichnen und drehen lassen ist es jetzt so weit fertig.

Die Zwischenstücke aus Edelstahl werden am ende noch auf die richtige Größe abgedreht. Da ich zum aktuellen Zeitpunkt noch nicht weiß, wie viel Platz ich benötige, wird das zum Schluss erledigt. (Genau wie der Boden)

Das Gehäuse ist komplett steckbar, so kann ich die Lampe bei der Präsentation zerlegen und wieder zusammenbauen ohne Werkzeug verwenden zu müssen. Der Lüfter ist auch weiter ins Innere gewandert. Ich hoffe, dass ich so die Geräuschentwicklung weiter eindämmen kann. Wir werden sehen ob sich das bewährt.

Aktuell habe ich noch drei große Probleme zu lösen.

  1. Die Kommunikation.
    Ich benutze verschiedene Funkmodule, den CC1100 von TI und den RFM12 von Hope. Ich glaube das wird noch spaßig, da die beiden nicht so ohne Weiteres bereit sind miteinander zu sprechen.
  2. Der kapazitive Näherungsschalter.
    Am oberen Stahlring wird man die Lampe per Berührung einschalten können. Ich mache mir Sorgen, dass das nicht so funktioniert wie ich mir das vorstelle. Schließlich habe ich noch ein Funkmodul und die LED-Treiber in der Nähe, gerade die Treiber schalten bis zu 800mA sehr hochfrequent. Das und die Tatsache, dass die Flanken recht steil sind, wird wohl für einegen HF-Müll im inneren sorgen.
  3. Die Antenne.
    Das Gehäuse besteht überwiegend aus Metall. Ich bin mir noch nicht sicher, wo ich die Antenne am besten unterbringe,  ohne sie zu stark zu dämpfen.

Das Programm tut auch schon etwas, leider kann ich das mangels Treiber nicht zeigen. Vielleicht nächstes mal.

thinkJD