[cmsms_row data_padding_bottom=“0″ data_padding_top=“20″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/1″][cmsms_heading type=“h1″ font_weight=“200″ font_style=“italic“ text_align=“center“ target=“self“ custom_colors=“true“ color=“#279ed6″ margin_top=“0″ margin_bottom=“20″ animation=“fadeIn“ animation_delay=“200″]Wie schon an anderer Stelle erwähnt, entspricht die Tamiya LED Unit nicht ganz meinen Vorstellungen. Sei dies nun aus finanzieller und funktionaler Betrachtungsweise. Ich entschloss mich was kleines schnuckeliges, auf der Basis des ATMEL ATTiny13, einem kleinen 8-Bit Mikrokontroller, selbst zu zaubern…[/cmsms_heading][cmsms_text animation=“fadeIn“ animation_delay=“400″]
Ehrlicherweise muss ich zugeben, dass ich noch nie mit einem ATMEL gearbeitet hatte und entsprechend fehlte mir die Infrastruktur um die Mikrocontroller programmieren zu können. Also beschaffte ich mir zuerst einmal den Multiprogrammer mySmartUSB MK2 USB-Programmer, ein Breadboard, einige Kabel, Widerstände und LEDs und einen Satz ATTiny13. Und nun? Gute Frage…
Zuerst mal musste eine IDE (Integrated Development Environment) her. Nach einigen Recherchen entschied ich mich für ATMEL Studio 6, welches frei zu beziehen ist und eine C/C++ resp. Assembler Umgebung, zugeschnitten auf die ATMEL Controller, zur Verfügung stellt.
[/cmsms_text][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“20″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/4″][cmsms_image align=“center“ caption=“Quellcode in AVR Studio 6″ link=“http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_avrstudio6.jpg“ lightbox=“true“ animation_delay=“0″]1384|http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_avrstudio6.jpg|full[/cmsms_image][/cmsms_column][cmsms_column data_width=“3/4″][cmsms_text animation_delay=“0″]
Eine Anleitung wie man den mySmartUSB MK2 in das ATMEL Studio integriert, ist auf der MyAVR Seite zu finden (siehe http://www.myavr.info/download/produkte/myavr_boards-gemeinsame-dokus/bsp_myAVR-Produkte-mit-AVR-Studio-5-6_de_en.pdf).
Ich muss zugeben, dass ich die erste Stunde ziemlich Mühe hatte mich in C resp C++ einzudenken, sind es doch schon gut 10 Jahre her, als ich die Sprache das letzte Mal für ein grösseres Projekt benutzte. Aber nach einiger Einarbeitungszeit, ging relativ locker von der Hand und die ersten Erfolge stellten sich ein.
[/cmsms_text][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“0″ data_padding_top=“20″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/1″][cmsms_heading type=“h2″ font_weight=“400″ font_style=“normal“ text_align=“default“ target=“self“ margin_top=“0″ margin_bottom=“20″ animation=“fadeIn“ animation_delay=“200″]Die Anforderungen und erste Schritte[/cmsms_heading][cmsms_text animation_delay=“0″]
Die Anforderungen an die zu entwickelnde LED Unit sind eigentlich schnell erklärt
- Die LED Einheit soll in den Modi „Nur Bremslicht“, „Brems- und Abblendlicht“ und „Brems-, Fern- und Abblendlicht“, via 3-Kanal, umgeschaltet werden können.
- Das Bremslicht sollte so realistisch wie möglich sein und nicht dauernd leuchten, wenn das Auto rückwärts fährt.
- Spannungsversorgung wird über den 5V BEC des ATOM-3 Receivers sicher gestellt
- Zudem sollen einige Betriebsdaten im EEPROM gespeichert werden (Letzter Betriebsmodus, Min-/Max-/Durchschnittswerte des 1- und 3- Kanals, etc)
[/cmsms_text][cmsms_heading type=“h2″ font_weight=“400″ font_style=“normal“ text_align=“default“ target=“self“ margin_top=“0″ margin_bottom=“20″ animation_delay=“0″]Auslesen der RC-Kanäle[/cmsms_heading][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“20″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“2/3″][cmsms_text animation=“fadeIn“ animation_delay=“400″]
Das Auslesen der Kanäle gestaltete sich schwieriger als Gedacht bzw. als erhofft. Die wenigen Beispiele für ähnliche Funktionen mit dem ATTiny13 funktionierten bei mir nicht zuverlässig, zumindest nicht in der Genauigkeit wie ich es benötigte, und die anderen Beispiele waren für andere Mikrocontroller ausgelegt.
Die Schwierigkeit besteht darin, dass das PWM (Pulse Width Modulation) Signal des Receivers ausgewertet werden muss, wobei ein solches HIGH-Signal zwischen 900us und 2100us dauern kann. Die gesamte Signaldauer beträgt 20ms.
Nach einigen dutzend Versuchen, einigen Nächten mit kaum mehr als 2-3 Stunden Schlaf, entschied ich mich die Routine komplett selber zu schreiben. Dabei wird die Zeit, mittels eines inkrementierten Wertes, gemessen, welche ein HIGH-Signal am entsprechenden PIN anliegt. Die Messung startet automatisch, sobald ein HIGH Signal festgestellt wird. Sicherheitshalber wird die Messung zwei Mal wiederholt, um sicher zu stellen, dass die Messung nicht mitten im HIGH-Signal anliegt.
Da es sich nicht um eine zeitkritische Funktion handelt, spielt es keine Rolle, wenn die LED mit etwas „Verspätung“ schaltet, insofern ist eine zweite Messung des Kanals ohne negative Auswerkung der Schaltung durchgeführt werden.
Im Beispiel rechts (Bild) werden die Werte zudem in den EEPROM geschrieben, damit ich diese später auslesen kann.
[/cmsms_text][/cmsms_column][cmsms_column data_width=“1/3″][cmsms_image align=“center“ caption=“Funktion zum auslesen der RC Kanäle bzw. der ermittelten PWM Werte“ link=“http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_code.jpg“ lightbox=“true“ animation=“fadeIn“ animation_delay=“600″]1385|http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_code.jpg|full[/cmsms_image][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“0″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/1″][cmsms_heading type=“h2″ font_weight=“400″ font_style=“normal“ text_align=“default“ target=“self“ margin_top=“0″ margin_bottom=“20″ animation=“fadeIn“ animation_delay=“200″]Erstellen der Schaltung[/cmsms_heading][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“20″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/3″][cmsms_image align=“center“ caption=“Das Freeware Program KiCAD mit Schema und Platinen-Layout Funktion.“ link=“http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_kicad.jpg“ lightbox=“true“ animation=“fadeIn“ animation_delay=“600″]1386|http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2016/01/BLOG_kicad.jpg|full[/cmsms_image][/cmsms_column][cmsms_column data_width=“2/3″][cmsms_text animation=“fadeIn“ animation_delay=“400″]
Selbstverständlich sollte die Schaltung am Ende nicht wirr zusammen gelötet und gebastelt werden, sondern auf einer geätzten Platine, ihren Platz finden. Auch hier war wiederum etwas Nachforschung angesagt, da es viele Tools gibt, mit denen man Leiterplatten designen kann, aber diese sind teilweise kostenpflichtig oder hatten sonstige Unzulänglichkeiten. Nach etwas suchen und experimentieren, wurde ich auf die freie Software KiCAD fündig.
Nebst dem Erstellen bzw. zeichnen des Schemas, kann mit der Software auch das Design der Leiterplatten gemacht werden und das ganze kann sogar noch als 3D Bild angeschaut werden. Dass das gesamte Projekt auch in KiCAD als ein Projekt, mit Bauteillisten, etc abgehandelt werden kann, war ein weitere Pluspunkt.
Die Zeit für die Einarbeitung ist, verglichen mit anderen ähnlichen Tools die ich gefunden habe, ganz in Ordnung. Ich brauchte einige Anläufe, bis ich verstanden hatte, wie der interne Ablauf von KiCAD ist und auf was ich achten muss. Einige der frei verfügbaren Tutorials helfen hier aber ungemein weiter und erleichtern die Einarbeitungszeit.
[/cmsms_text][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“0″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/1″][cmsms_heading type=“h2″ font_weight=“400″ font_style=“normal“ text_align=“default“ target=“self“ margin_top=“0″ margin_bottom=“20″ animation_delay=“0″]Herstellung der Prototypen[/cmsms_heading][cmsms_text animation_delay=“0″]
Nach einigen weiteren Stunden im Netz, auf der Suche nach einem bezahlbaren Dienstleister für die Leiterplatten-Herstellung, wurde ich bei Conrad Deutschland fündig.
Ich entschied mich für eine grüne Stoplackierung und 20 produzierten Platinen, was mich schliesslich ca. 170.- EURO kostete, wobei der Preisunterschied von einer zu 20 Platinen selbst weniger als 30 Euro ausmachte.
Nachdem ich die Platinen bestückt hatte, überzog ich diese komplett mit Plasti DIP, um die Schaltung vor Wasser und Schmutz zu schützen.
Anmerk: Der Service von Conrad scheint (Stand Sept 2017) nicht mehr verfügbar (zumindest nicht unter der mir bekannten Adresse). Wer auf der Suche nach einem Hersteller für Kleinserien ist, sollte einmal bei https://www.multi-circuit-boards.eu vorbeischauen. Ich selbst habe den Service nie ausprobiert, aber die Preise scheinen mir auf den ersten Blick anständig.
[/cmsms_text][cmsms_heading type=“h2″ font_weight=“400″ font_style=“normal“ text_align=“default“ target=“self“ margin_top=“0″ margin_bottom=“20″ animation=“fadeIn“ animation_delay=“200″]Fazit[/cmsms_heading][/cmsms_column][/cmsms_row][cmsms_row data_padding_bottom=“100″ data_padding_top=“0″ data_color=“default“ data_width=“boxed“][cmsms_column data_width=“1/3″][cmsms_image align=“center“ caption=“LED Unit 1.0 eingebaut (links oberhalb des ATOM Receivers) mit den Verbindungskabeln (rot/schwarz) zu den LED Lichtern“ link=“http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2013/07/BLOG_LEDunitinuse.jpg“ lightbox=“true“ animation=“fadeIn“ animation_delay=“600″]1390|http://www.roger-zueger.ch/WPBlog/wp-content/uploads/2013/07/BLOG_LEDunitinuse.jpg|full[/cmsms_image][/cmsms_column][cmsms_column data_width=“2/3″][cmsms_text animation=“fadeIn“ animation_delay=“400″]
Wie für einen Prototypen üblich funktionierte nicht alles direkt von Beginn weg. So musste ich feststellen, dass sich die Schaltung leicht anders verhielt als meine Versuchsschaltung. Nach einigen Versuchen konnte diesem Phänomen mit einem Ausgleichskondensator zwischen Vcc und GND Abhilfe geschaffen werden.
Natürlich möchte ich auch nicht unerwähnt lassen, dass ich im Layout des Boards die falsche Grösse des ATTiny13 verwendet hatte und mein SMD Mikrokontroller nur nach biegen der Anschlussbeine anlöten konnte
Die Identifikation der korrekten Gehäuse in KiCAD bedarf an einiger Erfahrung und wenn die Bauteile schon vor Ort sind, sollte man das Platinen-Layout mittels 1:1 Ausdruck verifizieren.
Wie stabil und zuverlässig die Schaltung funktioniert, muss sich noch zeigen. Nach dem Einbau in meinen Ferrari 288 GTO und den ersten ca. 1.5 Stunden reine Fahrzeit, kann ich noch keine Ausfälle oder ungewollte Verhaltensweisen feststellen.
[/cmsms_text][/cmsms_column][/cmsms_row]