Einfacher Impulsgenerator für RC-Fernsteuerung mit AT90S4433

Eigentlich betreibe ich keinen Modellbau. Daher bin ich auch nicht im Besitz einer Fernsteueranlage. Nun wurde ich aber gebeten, einige AVR-Programme für Fahrtregler, Fernschalter usw. zu schreiben. Um diese testen und debuggen zu können, benötigte ich aber eine Fernsteueranlage, zumindest ein Gerät, das mir die Kanalimpulse (wie von einem Fernsteuerempfänger) zur Verfügung stellt.

Ziel war also ein Impulsteil eines Fernsteuersenders, dass ein HF-Teil (falls vorhanden) tasten (ansteuern) kann, aber auch Servos, Fahrtregler, Schaltdecoder usw. direkt ansteuern kann um diese zu testen. Da zum Zeitpunkt der Entwicklung der Mega8 von ATMEL noch recht teuer war, kam ein AT90S4433 zum Einsatz, der mit einem 8MHz-Quarz betrieben wird. Dieser verfügt über 6 Analogeingänge, die von linearen Potentiometern angesteuert werden, die direkt an der Betriebsspannung (4,8V NC- oder NiMh-Akku) liegen. Da beim Auftraggeber der Programmierwünsche hauptsächlich 7-Kanal-Anlagen von Robbe zum Einsatz kommen, bekam meine Anlage auch 7 Kanäle. 6 echte Analogkanäle und ein Kanal, mit dem mittels zweier Taster oder eines Schalters mit drei Stellungen Schaltimpulse gegeben werden können.
Der Stromlaufplan der Schaltung (Potis nicht gezeichnet):

Die Platine wurde recht einfach gehalten, alle Bauteile wurden nach SMD-Manier ohne Bohrungen auf der Leiterseite bestückt. Die Leiterzüge wurden durch Fräsen vom Trennlinien erstellt. Die Anschlüsse wurden mit Präzisions-Buchsenleisten versehen, wodurch die Verdrahtung mit der Peripherie (Potis, Schalter, Servobuchsen am Gehäuse) durch einfaches Stecken von 0,5mm-Schaltdraht erfolgen kann.

Software:
Das Assemblerprogramm ist recht einfach gehalten und fragt der Reihe nach die Analogeingänge (und die Eingänge für den Digital gesteuerten Kanal) ab und generiert daraus den jeweiligen Kanalimpuls. Zum Tasten des Senders wird jeweils ein Impuls mit 0,5ms Breite generiert. Der Zyklenabstand beträgt 20ms, jeder Kanalimpuls in Neutralstellung 1,5ms. Das ganze Programm wird von einem Timer gesteuert, dessen ISR alle 10µs aufgerufen wird. Die Kanalimpulsbreite ist also im Raster von 10µs digitalisiert. Damit lassen sich die Werte gut handlen, erlaubte Kanalimpulsbreiten liegen zwischen 100 und 200 (als Zahlenwert gesehen) und passen somit wunderbar in den Wertevorrat eines Bytes.

Auf eine Trimmung der Neutralstellung der Kanäle wurde vorläufig verzichtet, wird vielleicht später mal nachgerüstet.

Hier ist das fertige Gerät mit Gehäuse zu sehen. Es dient nicht zum "Schaufahren" oder zum Wettkampf, sondern vorrangig zum Test von Komponenten. Es wurden nur 5 Servoimpulse herausgeführt, an einem Anschluss ist im Moment die Testplatine des Tiny12-Fahrtreglers angeschlossen.

Kanal 1 bis 4 wurden mit "Steuerknüppeln" angesteuert, Kanal 5 und 6 mit normalen Potentiometern, Kanal 7 mit dem Schiebeschalter (Mitte). Rechts ist der Batterieschalter und die LED zur Betriebsanzeige.