Noch ein Feuerwehr Fahrzeug. In meinem Fall ein Sondermodell mit 1000 Stk. Auflage: Das TLF der Feuerwehr Frechen. Es gab das Modell günstig bei ebay und ich wollte vor 1,5 Jahren mal was bauen, was wild blinkt... naja. Blinkt jetzt wild, hat aber länger gedauert als geplant.
Zum Umbau der Lenkung und des Fahrantriebs muss ich vermutlich nicht mehr viel schreiben. Ich muss auch gestehen, dass ich vom Umbau kaum Bilder gemacht haben. Es ist halt ein MB Actros mit Aufbau von Ziegler. Das 1.8g Servo ist stehend im Führerhaus eingebaut. Eine M705 1:90 Getriebe-Motor-Kombination von Sol-Expert sorgt für den Antrieb.
Bei den Arbeiten am Führerhaus ist mit das Gehäuse im Schriftzug "FEUERWEHR" gebrochen. Ärgerlich sowas und wieder mal die Erkenntnis möglichst zwei gleich zwei Modelle zu kaufen.
Ursprünglich hatte ich noch mit einem Soundmodul experimentiert. Das mit einem ATTiny modulierte Piezo-Gepiepe verschwand nach entsprechend negativem Feedback der Bastell-Gemeinschaft schnell wieder aus dem Versuchsaufbau. Die chinesisch nachgebauten „DasMikro“-Soundmodule sind allerdings irgendwo zwischen Shenzhen und Deutschland ertrunken und nie bei mir angekommen. Also, mein TLF bleibt ruhig... erstmal.
Den gewonnenen Platz im Aufbau füllt inzwischen ein 500mAh Lipo. Damit kann ich evtl. mit einer Ladung sogar bis nach Shenzhen fahren und mir die Soundmodule selber abholen!
Dem Original entsprechend sind vier 0402 LED als Blaulichter auf dem Dach und nochmal zwei als Blitzer im Kühlergrill verbaut. Wohl nicht ganz Original aber cool zum Spielen habe ich einen "Signal-Balken" am Heck angebracht. Hier sind vier einzeln ansteuerbare orangene LED der Baugröße 0402 platziert. Die Steuerung der Blaulichter und des Signal-Balkens erfolgt mit einem ATTiny84, den ich mit der Arduino-Umgebung programmiert habe. Ich weiß, dass es auch andere Möglichkeiten gibt einen ATTiny zu programmieren, aber ich bin bereits mit der Ardunio-Umgebung vertraut und wollte trotz Herausforderungen (siehe später) nicht umlernen.
Der ATTiny nimmt ein Steuersignal vom Deltang RX43D-1 entgegen. Das PWM-Signal wird interpretiert als "Vorwärts" oder "Rückwärts" durch die Programm-Zustände schalten. Insgesamt sind neun Zustände möglich: Alles aus, nur Blaulichter, Signal-Balken leuchtet permament, Signal-Balken Doppelblitz, Signal-Balken Doppelblitz wechselseitig, Signal-Balken Leuchten wechselseitig, Signal-Balken Indikation zum Spurwechsel nach rechts, gleiches auch nach links und ein „Achtung!“ Signal innen / außen. Die Blaulichter bleiben in allen Zuständen eingeschaltet.
Normalerweise würde man – wie ich lernen durfte - das Schaltsignal mit einem Pin Change Interrupt an einem der Pins auslesen. Dazu hatte ich auch schon Rat in einem anderen Thread erhalten. Nun – ich hab’s nicht hinbekommen. Vielleicht lag es daran, dass ich nicht den INT0 am Pin #5 verwendet habe… Nun war mein Chip aber auch schon mit den LED verkabelt und ich wollte da nicht mehr groß umbauen.
Also habe ich eine andere Lösung gefunden. Prinzipiell ist es möglich das PWM-Signal vom Deltang mit der Arduino-Funktion pulseIn() zu lesen. Problem ist dabei, dass es immer wieder Störsignal / Ausreißer gibt. Das ist zwar mit dem nachträglichen Einbau eines Pulldown-Widerstands (ganz wichtig!) besser geworden, aber so ganz weg waren die Störungen nicht und der Tiny hat "selbstständig" immer wieder zwischen den Programm-Zuständen umgeschaltet. Meine Lösung ist nun, dass ich nach Erhalt eines Schaltsignals 100 Loop-Durchläufe warte, ob das Signal dann immer noch besteht. Und wenn ja, dann nehme ich ein wirklich absichtliches Steuersignal an und schaltet in den nächsten Zustand. Damit entsteht eine Latenz von ca. 0,5 Sekunden (bei 1MHz Takt des Tiny) zwischen dem Umlegen des Schalters an der Fernbedienung und dem tatsächlichen Schalten. Für mich akzeptabel.
Für den geneigten Interessenten packe ich voller Demut den Arduino-Sketch in den Anhang zu diesem Post (siehe FeuerwehrTiny_saichino.txt) bzw. nachfolgend zum ausklappen. Ich weiß wohl, dass die Lösung nicht die elegantestes ist und die Angehörigen der BASCOM-Fraktion sich ggf. fragen werden: "Warum nur...?"
/* Feuerwehr MB Actros * Version 2 * ATTiny84 at 1 MHz * * Pin 0: Signal * Pin 1, 2, 3, 4: LED signalbar * Pin 5, 6, 7, 8: LED blinklights * Pin 9: LED frontflasher * * Program 0: o o o o | off blinklights | off frontflasher * Program 1: o o o o | ON blinklights | ON frontflasher * Program 2: x x x x | permanent | keep blinklights & frontflasher * Program 3: x x x x | double flasher | keep blinklights & frontflasher * Program 4: x x o o | o o x x | halfsided double flasher | keep blinklights & frontflasher * Program 5: x x o o | o o x x | halfsided lighter | keep blinklights & frontflasher * Program 6: x o o o | x x o o | x x x o | x x x x | guide to side 1 | keep blinklights & frontflasher * Program 7: o o o x | o o x x | o x x x | x x x x | guide to side 2 | keep blinklights & frontflasher * Program 8: x o o x | o x x o | outer-inner | keep blinklights & frontflasher * * !NOTE! Digital HIGH is LED off (?) */
int i; int pwmZero;
// variables for signalbar int prog = 0;
int signalbar_pause_quick = 50; int signalbar_duration_quick = 5; int signalbar_interval_quick = 10; int signalbar_duration_long = 100;
int countSignalbar = 0;
// variables for blinklights & frontflasher int BkBz_duration = 5; int BkBz_interval = 10;
int countBk1 = 0; int countBk2 = 0; int countBk3 = 0; int countBk4 = 0; int countBz = 0;
int pwmSignal = 0; int pwmSignalPin = 0; int countSignal = 0; int countSignalWait = 100; int signalLock = 0;
int Bk1_pause = 70; int Bk2_pause = 95; int Bk3_pause = 60; int Bk4_pause = 80; int Bz_pause = 100;
void setup() { pwmZero = pulseIn(pwmSignalPin, HIGH); // Read the pulse of input signal as ZERO POINT
pwmSignal = pulseIn(pwmSignalPin, HIGH); // Read the pulse of current input signal
if (pwmSignal < 1200) { // negativ triggering pwm signal if (countSignal >= countSignalWait && signalLock == 0) { // wait 100 loops and check for not already triggered switch until consider signal as real signalLock = 1; // enable signal lock countSignal = 0;
prog = prog - 1; if (prog < 0) prog = 8;
resetCounters(); } else { countSignal++; }
} else if (pwmSignal > 1600) { // positive triggering pwm signal if (countSignal >= countSignalWait && signalLock == 0) { // wait 100 loops and check for not already triggered switch until consider signal as real signalLock = 1; // enable signal lock countSignal = 0;
prog = prog + 1; if (prog > 8) prog = 0;
resetCounters(); } else { countSignal++; }
} else { // no triggering pwm signal if (countSignal >= countSignalWait) { // wait 100 loops until consider signal reset as real signalLock = 0; // reset signal lock countSignal = 0; } else { countSignal++; } }
Zum Projekt gehört für mich immer eine Zeichnung der Verkabelung. Dieser Plan erfährt natürlich während der Bauphase immer wieder Anpassungen. Das Hilft mir persönlich oft nicht den Überblick zu verlieren. Muss man nicht machen, gehört für mich aber zum Spaß dazu.
Während der Feiertage zum Jahreswechsel habe ich den Wohnzimmertisch in Beschlag genommen und hab meine kürzlich fertig gestellten Projekte versucht etwas in Szene zu setzen. Leider habe ich bisher kein eigenes Geländemodul und Messen sind ja aktuell noch in weiter Ferne...
Ich besitze allerdings einige Häuschen, die mein Großvater vor über 50 Jahren aus Holz gebaut hat. Diese boten sich als Kulisse mit einigen gedruckten Straßen direkt an. Dann habe ich ein bisschen mit den Tools von Adobe rumgespielt und habe Feuer gemacht. Zu sehen ist die Einsatzfahr des TLF der Feuerwehr Frechen auf YouTube: https://www.youtube.com/watch?v=HSvYgA9YqW0
Danke für die Aufmerksamkeit. Grüße aus dem Süden. Daniel
Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
FeuerwehrTiny_saichino.txt
tolles Fahrzeug mit schönen Lichtfunktionen, tolle Beschreibung und tolles Video, gefällt mir sehr gut. Schade, dass es mit dem Soundmodul nicht geklappt hat.
Wenn Sie hier auf Links zu eBay klicken und einen Kauf tätigen, kann dies dazu führen, dass diese Website eine Provision erhält.
Hallo Daniel,
ein sehr schönes Feuerwehrauto hast Du da "auf die Räder gestellt" und alles vorbildlich dokumentiert! ... bei diesen beeindruckenden Lichteffekten kann mein Mercedes-Benz Arocs ULF leider nicht "mithalten".
Ich flashe seit mehr als 10 Jahren die "herkömmlichen" DIP8 Tinys hin und wieder selbst und habe dafür einen seriellen Programmieradapter, der über entsprechende Chip-Fassungen verfügt. Nun gibt es manche Tinys ja nur noch als SMD-Bauteile (SO/SOI/ ...) und aus Platzgründen ist deren Verwendung ja auch durchaus sinnvoll. Nun meine Frage: Was für einen Programmieradapter verwendest Du bzw. was könne ich nehmen? Einfach Werbung: sowas hier?
Herzliche Grüße von Maik
Mit diesem Beitrag wurden folgende Inhalte verknüpft
Wenn Sie hier auf Links zu eBay klicken und einen Kauf tätigen, kann dies dazu führen, dass diese Website eine Provision erhält.
Hallo zusammen,
@nachtdieb: Danke für das Lob! Vielleicht mache ich einen neuen Anlauf, hab noch einen RTW, der auf Aktivität wartet... allerdings ist für mich noch die Frage ungeklärt, wie ich die Sounds von der DX9 aus aufrufen kann. Hab ich noch nicht verstanden...
@Maik_29413: Ja, so einen Adapter für die SMD Varianten der Chips habe ich auch. Die gibt es ja auch in unterschiedlicher Größe bzw. Anzahl von möglichen Pins. Ich habe Werbung: einen SOIC-16 Adpater erworben, weil ich in der Regel ATTiny84 (Bauform SOIC-14) verbaue. Es gibt noch sog. "Werbung: Testklammern", welche für die SOIC-8 Bauformen (z.B. ATTiny85) ausreichen. Je nach Vorliebe...
"Mein" TLF hat im Original sogar seitlich noch jeweils zwei Leuchtstoff-Röhren zur Beleuchtung des Einsatzorts. Dazu hätte ich noch diverse weiße LEDs aneinander setzen müssen. Die länglichen LED, die man so bekommt, leuchten leider nach Abdunkelung mittels Vorwiderstände nicht vollflächig, sondern zeigen ein Zentrum der Leuchtkraft. Den Aufwand habe ich mir dann doch gespart...
Herzliche Grüße, Daniel
Mit diesem Beitrag wurden folgende Inhalte verknüpft