Eigentlich betreibe ich keinen Modellbau. Ich wurde aber gebeten, einige Komponenten für Modellbau-Elektronik zu entwickeln bzw. die Programme für die dabei verwendeten AVR-Mikrocontroller zu schreiben. Eines dieser Projekte ist der:
Modellbau-Fahrtregler für Brückenbetrieb...
Die Schaltung ist recht einfach. Herzstück ist ein ATMEL-AVR vom Typ Tiny15L. Seine Anschlusspins sind wie folgt belegt:
- Pin 1: Widerstand 3k3 nach Pin 8 (Reset auf H.)
- Pin 2: Fahrtrichtung Rückwärts der H-Brücke (positive Impulse).
- Pin 3: Fahrtrichtung Vorwärts der H-Brücke (positive Impulse).
- Pin 4: GND.
- Pin 5: Ausgang Widerstand zu NPN-Transistor (gegen GND) für
Bremslicht. Falls kein Bremslicht benötigt wird, ist statt des Transistors eine LED gegen GND
zu schalten, diese wird zum Dialog während der Parameterprogrammierung gebraucht.
Zusätzlich ist ein Pull-Down-Widerstand von etwa 3k3 gegen Masse zu schalten,
damit der im AVR enthaltene hochohmige Pull-Up-Widerstand den Transistor bzw. die LED nicht
ansteuern kann.
- Pin 6: Ausgang Widerstand zu NPN-Transistor (gegen GND) für
Rückfahrlicht sowie Eingang für Programmiertaster, der gegen Betriebsspannung (Pin 8) des
Tiny12 zu schalten ist. Zusätzlich ist ein Pull-Down-Widerstand von etwa 3,3k gegen Masse zu
schalten.
- Pin 7: Eingang Kanalimpuls.
- Pin 8: Plus 5...5,5V
Zum Test wurde eine Testplatine angefertigt, die LEDs bzw. eine externe H-Brücke ansteuern kann. Das Schaltbild zeigt die Testplatinen-Schaltung.
Der Aufbau der Transistorbrücke bleibt dem Anwender überlassen, es steht ein PWM-Impulsausgang für Vorwärtsfahrt und ein PWM-Impulsausgang für Rückwärtsfahrt zur Verfügung. Die PWM-Impulse sind dabei positiv, die PWM-Frequenz beträgt etwa 400 bis 720 Hz.
|
|
Die Testplatine wurde für Oberflächenbestückung der gefrästen Platine konzipiert. Das linke Bild zeigt die Leiterzüge, das rechte die zu fräsenden Trennlinien.
|
Einige Bauteile standen als SMD zur Verfügung, andere wurden trotz bedrahteter Bauform auch auf die Oberfläche gelötet. Das ergibt einen soliden Aufbau, der an der Unterseite nicht isoliert werden muss, da dort weder Bauteile, noch Leiterzüge oder Lötstellen sind.
|
Software:
- Die Kanalimpulsbreite wird auf Fehler untersucht.
Als Fehler gelten Werte, bei denen das Tempo mindestend den doppelten Wert des
aktuellen Max-Tempos beträgt.
- Treten 20 (änderbar) Fehler direkt hintereinander
auf, so wird die Ansteuerung der H-Brücke (und damit der Motor) ausgeschaltet.
- Der Kanalimpulsabstand wird auf Fehler untersucht.
Als gut gelten Werte von 16ms bis 24ms.
- Treten 20 Fehler direkt hintereinander auf, so
wird die Ansteuerung der H-Brücke (Motor) abgeschaltet.
- Wird 64ms lang kein Fernsteuerimpuls empfangen (3 fehlende Impulse), so wird ein
Hardware-Reset (Watchdog) ausgelöst, was u.a. die Brücke deaktiviert.
- Beim Einschalten (Reset) ist die H-Brücke (Motor) deaktiviert.
- Wenn der Antrieb deaktiviert ist (Impulsbreitenfehler, Impulsabstandfehler,
Einschaltreset, Watchdogreset), müssen direkt hintereinander 20 Kanalimpulse mit Neutralwert
empfangen werden, danach wird die Ansteuerung der Brücke erst aktiviert.
- Somit "streikt" der Steller auch, wenn beim Einschalten oder "Widereintritt in den
Sendebereich" der Sender etwas Anderes als "Stop" sendet.
- Damit bei Empfangsstörungen keine abrupten Änderungen von Tempo oder
Richtung erfolgen (das mögen Motoren und Getriebe nicht), hat der Steller eine
Trägheit. So wird bei Wertänderung (Kanalimpulsbreite) nicht der neue Wert übernommen,
sondern der alte Wert um nur 1...3 Schritte (im Quelltext einstellbar) in
Richtung des neuen Wertes angenähert. Da dies bei jedem Kanalimpuls geschieht
(also alle 20ms), dauert der Nachlauf von einem Extremwert zum anderen etwa 0,7 bis 2
Sekunden.
- Der Steller hat eine Auflösung von 10µs. Das ergibt nach Abzug der Mittenspreizung
etwa 45 Fahrstufen je Richtung.
- Dies gilt aber nur, wenn der Tiny15 mit 1,6MHz arbeitet. Um dies zu gewährleisten, ist
dafür zu sorgen, dass der interne RC-Oszillator des Tiny15 ordentlich kalibriert wird.
- Dazu muss das ISP-Programm das Kalibrationsbyte aus dem zu verwendenden Tiny15 auslesen
und in den Low-Teil der letzten Flash-Zelle schreiben. Dies wird beim Reset vom Programm
eingelesen und in das Kalibrationsregister geschrieben. Bei werksneuen Tiny15 steht das
Kalibrationsbyte üblicherweise schon im H- und L-Byte der letzten Flasch-Zelle
- Bei Rückwärtsfahrt wird das Rückfahrlicht eingeschaltet, bei Stop oder Vorwärtsfahrt
wird es wieder ausgeschaltet. Dies ist während der Parameterprogrammierung deaktiviert, da
der verwendete I/O-Pin in dieser Zeit den Programmiertaster abfragt. Bei Betätigen des
Programmiertasters leuchtet aufgrund der Doppelnutzung des I/O-Pins 7 auch das Rückfahrlicht.
- Beim Wechsel von einer Fahrstellung zur Neutralstellung (Stop) wird für etwa 2 Sekunden
das Bremslicht eingeschaltet. Wird in dieser Zeit wieder Fahrt aufgenommen, so wird das
Bremslicht wieder ausgeschaltet. Während der Parameterprogrammierung ist diese Funktion
deaktiviert, das Bremslicht wird zum Dialog benötigt.
- Die PWM-Frequenz ist nicht fest definiert, da sie von mehreren Faktoren abhängig ist:
- Taktfrequenz des Oszillators (Kalibrierung)
- Anzahl der Fahrstufen
Bei 1,6MHz Prozessortakt beträgt die PWM-Frequenz 32kHz geteilt durch die Anzahl der
Fahrstufen. In der Grundeinstellung sind das etwas über 700Hz.
Parameterprogrammierung:
Da die Impulsbreiten verschiedener RC-Anlagen etwas unterschiedlich sind, bietet der Fahrtregler die Möglichkeit, an die Anlage angepasst zu werden. Dazu werden Parameter wie
Neutralpunkt, Vollgas und Fahrtrichtung als numerische Werte im EEPROM gespeichert.
- Grundsätzliches zur Parameterprogrammierung:
- Die Parameterprogrammierung wird aktiviert, indem während des Einschaltens die
Programmiertaste gedrückt gehalten wird. Die Programmier-LED (Bremslicht) geht an
(Dauerlicht) und signalisiert Programmierbereitschaft.
- Jeder Menüpunkt wird durch Blinken der Programmier-LED angezeigt. Dabei blinkt die LED
so oft hintereinander auf, wie es der Menüpunkt-Nummer entspricht, also einmal bei Punkt 1,
2 mal bei Punkt 2, dreimal bei Punkt 3.
(Das Menü dieses Fahrstellers hat nur 3 Punkte...)
- Durch Drücken der Programmiertaste gelangt man zum nächsten Menüpunkt. Dabei kommt es
darauf an, wann die Programmiertaste wieder losgelassen wird:
- während die LED aus ist: Werte werden verworfen...
- während die LED leuchtet: Werte werden gespeichert...
Die LED blinkt dabei im Rythmus 2,5s aus, 2,5s ein...
- Dies erfolgt so lange, bis alle Menüpunkte abgearbeitet sind
- Die Menüpunkte dieses Fahrstellers:
- Neutralstellung des Steuerknüppels, also die STOP-Position des Antriebs.
- Vollgas vorwärts, enthält gleich 3 Informationen:
- Diese Knüppelrichtung bedeutet bei weiteren Menüpunkten ja,
die Gegenrichtung bedeutet nein...
- Diese Fahrtrichtung entspricht vorwärts...
- Diese Abweichung von der Neutralstellung entspricht dem maximalen Tempo.
Da es beim Einstellen zum Wechsel der Fahrtrichtung kommen kann, was weder Motoren
noch Getriebe mögen, wird die Brückenansteuerung sicherheitshalber deaktiviert.
- Drehrichtungsumkehr des Antriebs, ja = Umkehr, nein = Normal.
Da es auch hier zum Wechsel der Fahrtrichtung kommen kann, wird die
Brückenansteuerung sicherheitshalber deaktiviert. Sie wird wieder aktiviert, indem der
Steuerknüppel in Neutralstellung gebracht wird.
Dabei wird jeder Menüpunkt durch die Anzahl der Blinkimpulse eindeutig identifiziert.
- Nach erfolgter Programmierung lassen sich die gespeicherten Werte mit einem
ISP-Programmiergerät und PC aus dem internen EEPROM auslesen. Die 4 benutzten Bytes
haben folgende Bedeutung, wobei der Wert 255 bedeutet, dass noch nichts gespeichert wurde:
- Adresse 0: Neutralstellung Steuerknüppel, etwa 150 ist normal...
- Adresse 1: Anzahl der Fahrstufen, etwa 45 ist normal...
- Adresse 2: Fahrtrichtungsumkehr (Motor und Rückfahrlicht), 0=nein, 128=ja...
- Adresse 3: Drehrichtungsumkehr (Motor), 0=nein, 64=ja...
Es lassen sich bisher also nur die Neutralstellung, das maximale Tempo vorwärts und die Polung
des Motors einstellen. Stellt man "Neutral" auf die eine Endstellung des Steuerknüppels und
"Voll voraus" auf die andere, so hat man feinere Fahrstufen, aber keinen Rückwärtsgang
und auch eine langsamere PWM-Frequenz.
Gibt man sinnlose Werte ein (z. B. beide gleich), so trägt man selbst die Schuld, wenn der Steller streikt. Durch erneute Programmierung sinnvoller Werte macht man ihn wieder
funktionsfähig...
Das Programm darf nicht ohne meine schriftliche Einwilligung kommerziell benutzt werden. Gegen Nutzung in Einzelstücken Marke Eigenbau habe ich nichts einzuwenden.
Die Benutzung geschieht auf eigene Gefahr. Es wird also keinerlei Haftung für Schäden
übernommen, die durch den Einsatz dieses Mikrocontroller-Programms entstehen könnten.
Inzwischen gab es auch einige Feedbacks, die zu Varianten des Programms geführt haben.
Einen Modellbauer hat das Pfeifen der PWM unterhalb der Ansprechschwelle seines Motors gestört, worauf eine Variante entstand, bei der die PWM bei einem Tempo unterhalb einer im Quelltext einstellbaren Konstante deaktiviert bleibt. Einzelheiten sind den Kommentaren des Quelltextes zu entnehmen.
Ein weiterer Modellbauer bat um eine niedrigere PWM-Frequenz, da er keine Glockenanker-Motoren verwendet. Daraufhin entstand die Variante mit drosselbarer PWM-Frequenz. Auch hier werden die Einzelheiten im Kommentar des Quelltextes erklärt.
Auf der Webseite von Reinhold Schmidt ist ein interessanter Artikel zu finden, in dem auf die Nutzung dieses Programms im 1:87-Modellbau hingewiesen wird. Dort wird auch eine Miniatur-Platine von 9 mal 10 mm Größe in SMD-Technologie zu diesem Fahrtregler vorgestellt. Ein Besuch lohnt sich.
hannes@hanneslux.de