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 Modelle mit Kettenantrieb...
Es realisiert einen Modellbau-Fahrtregler für getrennte Antriebe links und rechts,
wie sie z.B. bei Kettenfahrzeugen (Raupe, Panzer) oder Baumaschinen (Mini-Radlader)
anzutreffen sind. Neben den Kanälen für Antrieb und Lenkung stehen zwei weitere
Kanäle für Schaltaufgaben zur Verfügung, die per Programmiertaste aktiviert
werden können.
Die Steuerung der beiden Antriebe erfolgt durch Antrieb und Lenkung, wobei der
Antriebskanal gleichsinnig auf beide Seiten wirkt, die Lenkung gegensinnig.
Somit ist auch das Wenden auf der Stelle möglich (falls die Mechanik das verträgt
und nicht durch Abwerfen der Ketten protestiert). Die "Griffigkeit" der Lenkung
gegenüber des Fahrwerks kann im Kopf der ASM-Datei eingestellt werden. Dabei sind
nur Werte möglich, die durch Division durch 1, 2, 4 oder 8 erreicht werden, also
100%, 50%, 25%, 12,5%.
Bei mittlerer Geschwindigkeit am Fahrknüppel wird durch Betätigen des Lenkknüppels
die eine Seite verzögert und die andere Seite beschleunigt. Wird beim Verzögern
der Nullpunkt unterschritten, kehrt sich die Antriebsrichtung um. Wird beim
Beschleunigen (rechnerisch) die maximale Geschwindigkeit überschritten, so wirkt
halt nur die maximale Geschwindigkeit.
Bei maximaler Geschwindigkeit am Fahrknüppel wirkt die Lenkung nur durch
Verzögerung des kurveninneren Antriebs. Der kurvenäußere Antrieb behält dabei "Vollgas".
Die Schaltung ist recht einfach. Herzstück ist ein ATMEL-AVR vom Typ AT90S2313. Seine Anschlusspins sind wie folgt belegt:
- Pin 01: /Reset (3k3 gegen +VCC)
- Pin 02: PD0 Kanalimpuls 1 Fahrwerk
- Pin 03: PD1 Kanalimpuls 2 Lenkung (anstatt Servo)
- Pin 04: Quarz 8MHz
- Pin 05: Quarz 8MHz
- Pin 06: PD2 Kanalimpuls 3 (2 Schalter)
- Pin 07: PD3 Kanalimpuls 4 (2 Schalter)
- Pin 08: PD4 Rückfahrlicht und PullDown-R gegen GND, Prog-Taste gegen +VCC
- Pin 09: PD5 Bremslicht (Prog-Dialog-LED) und Pulldown-R gegen GND
- Pin 10: GND
- Pin 11: PD6 PWM vorwärts für linke Brücke
- Pin 12: PB0 PWM rückwärts für linke Brücke
- PIN 13: PB1 PWM vorwärts für rechte Brücke
- Pin 14: PB2 PWM rückwärts für rechte Brücke
- Pin 15: PB3 Schaltausgang 3a
- Pin 16: PB4 Schaltausgang 3b
- Pin 17: PB5 Schaltausgang 4a
- Pin 18: PB6 Schaltausgang 4b
- Pin 19: PB7 Takt für Ladungspumpe für MOSFETs (50kHz)
- Pin 20: +VCC
Zum Test wurde die Testplatine genutzt, die für den Auto-Fahrtregler entwickelt wurde. Sie kann LEDs bzw. externe H-Brücken ansteuern. Das Schaltbild zeigt die Testplatinen-Schaltung. Da die ersten Versuche mit dem AT90S1200 erfolgten, wurde das Layout für diesen Typ erstellt. Der AT90S2313 hat aber identische Anschlussbelegung, weshalb das Layout nicht überarbeitet wurde. Es ist halt nur eine Testplatine, eine finale Fahrtreglerplatine ist noch nicht entwickelt.
Der Aufbau der Leistungsstufe zum Betreiben des Motors bleibt dem Anwender überlassen, es stehen für zwei H-Brücken je 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 2200 Hz.
|
|
Die Testplatine wurde für Oberflächenbestückung der gefrästen Platine konzipiert. Das erste Bild zeigt die Leiterzüge, das mittlere die zu fräsenden Trennlinien, das letzte die fertig aufgebaute Platine. Da es eine Testplatine zum Debuggen der Software ist, sind für alle Ausgänge (SMD-) LEDs vorgesehen. Eine finale Fahrtreglerplatine enthält stattdessen Leistungsstufen für Motoren und Schaltausgänge. 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:
- Es werden 4 Fernsteuerkanäle ausgewertet:
- Kanal 1, Fahrtkanal,
- Kanal 2, Lenkung (anstatt Lenkservo),
- Kanal 3, 2 Schaltkanäle,
- Kanal 4, 2 Schaltkanäle.
- Die Kanalimpulsbreite des Fahrkanals 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 von H-Brücke und Schaltausgängen (also alles) ausgeschaltet.
- Der Impulstelegrammabstand wird auf Fehler untersucht.
Als gut gelten Werte von 16ms bis 24ms.
- Treten 20 Fehler direkt hintereinander auf, so
wird die Ansteuerung aller Ausgänge abgeschaltet.
- Wird 64ms lang kein Fernsteuerimpuls empfangen (3 fehlende Impulse), so wird ein
Hardware-Reset (Watchdog) ausgelöst, was u.a. alle Ausgänge deaktiviert.
- Beim Einschalten (Reset) sind alle Ausgänge erstmal 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 Ausgänge 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 bei Einsatz eines Quarzes mit einer Frequenz von 8MHz.
- 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 8 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 der Anzahl der erreichten Fahrstufen abhängig ist:
Bei 100kHz Timer-Takt beträgt die PWM-Frequenz 100kHz geteilt durch die Anzahl der
Fahrstufen. In der Grundeinstellung sind das etwa 2200Hz.
- Die Anzahl der erreichbaren Fahrstufen resultiert aus der Differenz zwischen den Impulsbreiten von Neutralpunkt und Vollgas voraus, gerastert im 10µs-Raster.
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 aller 4 Kanalimpulse (Einstellung mit allen 4 Kanälen)
- Vollgas vorwärts (Einstellung mit Kanal 1)
- Lenkung links (Lenkrichtungsumkehr) (Einstellung mit Kanal 2)
- Schwellwert Schaltkanal 3 (Neutral deaktiviert) (Einstellung mit Kanal 3)
- Schwellwert Schaltkanal 4 (Neutral deaktiviert) (Einstellung mit Kanal 4)
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 9 benutzten Bytes
haben folgende Bedeutung, wobei der Wert 255 bedeutet, dass noch nichts gespeichert wurde:
Adr. | Bedeutung | Vorgabewert | aktiviert | deaktiviert |
01 | Neutralstellung Antrieb (Stop) | 255 (150) | - | - |
02 | Neutralstellung Lenkung (geradeaus) | 255 (150) | - | - |
03 | Neutralstellung Kanal 3 (Schaltkanal) | 255 (150) | - | - |
04 | Neutralstellung Kanal 4 (Schaltkanal) | 255 (150) | - | - |
05 | Anzahl Fahrstufen | 255 (45) | - | - |
06 | Flag Umkehr Fahrtrichtung | 255 (0) | 128 | 0 |
07 | Flag umkehr Lenkrichtung | 255 (0) | 64 | 0 |
08 | Schaltschwelle Schaltkanal 3 | 255 (0) | ca 30 | 0 |
09 | Schaltschwelle Schaltkanal 4 | 255 (0) | ca 30 | 0 |
Stellt man "Neutral" auf die eine Endstellung des Steuerknüppels und "Voll voraus" auf die andere, so hat man zwar 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 die schriftliche Einwilligung des Autors 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.
hannes@hanneslux.de