Eigentlich betreibe ich keinen Modellbau. Doch ich wurde gebeten, einige im Modellbau benötigte Fernsteuer-Zusatzmodule mit AVR-Mikrocontrollern zu entwickeln, bzw. die Programme dafür zu schreiben.

Spannungs- und Impulsüberwachung für Modellbau mit Tiny15

Sinn und Zweck dieses Moduls ist die Überwachung der Akkuspannung und der Übertragungsqualität der Funkverbindung eines Modells mit Verbrennungsmotor. Es sollte folgende Merkmale haben:
  1. Speisung aus dem Empfängerakku mit 4,8V oder 6V.
  2. Überprüfung der Kanalimpulse und Anzeige der Anzahl der aufgetretenen Impulsfehler.
  3. Wertung des Impulsausfalls als mehrere Fehler.
  4. Anzeige des größten bisher aufgetretenen Spannungseinbruchs.
  5. Aktivieren einer "Not-Aus"-Schaltung über einen Thyristor, die den Antrieb auf mechanische Art stoppt.
  6. Anzeige der Fehler auch nach Auslösen des Not-Aus.
  7. Geringer Materialaufwand

Hardware

Die Schaltung wurde nach einem verbalen Vorschlag meinerseits von einem Freund erstellt, der auch den Bau der Hardware übernommen hat.
Der Tiny15L wird mit 3,3V betrieben, die vom Spannungsregler bereitgestellt werden. Diese 3,3V sind auch die Referenz für den ADC, der die per Z-Diode um 3V abgesenkte Akkuspannung misst. Der Kanalimpuls wird an den INT0-Eingang des Tiny15L gelegt, was die Messung der Impulsbreite und des Impulsabstandes erleichtert. Zur Anzeige der ermittelten Werte dienen die LEDs an Pin 5 und 6 des Tiny15L. An Pin 3 des Tiny15L wird der Thyristor angeschlossen.

Die Fotos zeigen die Platine, mit der die ersten Tests beim Entwickeln der Software gemacht wurden. Beim finalen Modul werden superhelle LEDs in verschiedenen Farben eingesetzt, die erst noch beschafft werden müssen. Es wurde bewusst ein Tiny15L im DIL-Gehäuse gewählt, um die ISP-Anschlüsse zu sparen. Zum Programmupdate wird die "Brennzange" verwendet, ein Adapter, den man von oben auf den IC aufsteckt. Somit braucht der DIL-AVR auch nicht mehr Platz als ein SMD-AVR mit zusätzlichem ISP-Anschluss.


Software

Das Programm im Tiny15 wurde in Assembler erstellt und erledigt folgende Aufgaben:

Die Benutzung (aus Sicht des Endanwenders)

Das Modul ist dem Lenkservo (Ruderservo) parallel zu schalten. Es benötigt also GND (Masse), Plus vom Akku und den Kanalimpuls. Das Modul ist so in das Modell einzubauen, dass die LEDs während des Betriebes vom Bediener gesehen werden können.

Einige Sekunden nach dem Einschalten wird das Modul "scharf" und beginnt mit der Überwachung von Akkuspannung, Impulsabstand und Impulsbreite. Zwei der LEDs blitzen nun im Abstand von etwa 6s einmal kurz auf. Dies signalisiert Betriebsbereitschaft und Null Fehler.

Steigt die Fehleranzahl der Impulsüberwachung, so blinkt die Impuls-LED mehrmals je Zyklus, und zwar einmal zur Anzeige der Betriebsbereitschaft und so oft, wie die Anzahl der Fehler beträgt. Fünfmaliges Blinken bedeutet also 4 Fehler.

Bricht die Akku-Spannung zusammen, so blinkt die Akku-LED mehrmals auf, einmal als Betriebsanzeige, gefolgt von dem "Grad des Spannungseinbruchs". Je öfter die Akku-LED blinkt, um so schlechter ist der Ladezustand des Akkus. Sollte sich der Akku wieder etwas erholen wird trotzdem sein schlechtester Zustand angezeigt.

Wird die zulässige Anzahl der Impulsfehler oder die zulässige Akku-Unterspannung erreicht, so wird der Not-Aus-Thyristor gezündet, der das Modell auf elektromechanischem Weg außer Betrieb setzt. Danach werden die Fehler weiterhin angezeigt, aber auch neue Fehler erfasst.

Das Modul kann für 4,8V-Akkus und für 6V-Akkus verwendet werden. Eine Spannung über 6,3V kann das Modul beschädigen.


Die Parametrierung (aus Sicht Desjenigen, der die Hardware baut und den AVR brennt)

Folgende Parameter lassen sich im Quelltext einstellen:

.equ scharf=5 Wartezeit vom Einschalten bis zum "scharf sein" in Sekunden (max 30). Diese Zeit ist erforderlich, damit die Fehler erst erfasst werden, wenn stabile Verhältnisse eingetreten sind.
.equ ibmin=70 Minimal erlaubte Impulsbreite in Schritten von 10µs. 70 entspricht also 0,7ms.
.equ ibmax=230 Maximal erlaubte Impulsbreite in Schritten von 10µs. 230 entspricht also 2,3ms.
.equ iamin=25 Minimal erlaubter Impulsabstand in Schritten von 0,64ms. 25 entspricht demnach 16ms.
.equ iamax=38 Maximal erlaubter Impulsabstand in Schritten von 0,64ms. 38 entspricht demnach 24,3ms.
.equ maxierr=12 Anzahl Impuls-Errors für Not-Aus. Nach Überschreiten dieser Fehleranzahl wird Not-Aus ausgelöst.
.equ maxuerr=8 Anzahl Unterspannungs-Errors für Not-Aus. Nach Überschreiten dieses Wertes wird NOT-Aus ausgelöst.
Das Programm geht davon aus, dass die Spannung am AVR 3,3V beträgt und die Messspannung am ADC-Eingang 3V weniger als die Akkuspannung beträgt. Dies ist auch bei den ersten drei Platinen der Fall. Sollte dies bei späteren Nachbauten aufgrund von Bauteiltoleranzen nicht der Fall sein, so ist die Tabelle am Ende des Quelltextes anzupassen.
Diese Tabelle enthält für jeden der 256 möglichen Spannungs-Messwerte den "Fehlerwert", der den Entladezustand darstellt.
Um zu ermitteln welche Tabellenposition welcher Akkuspannung entspricht, geht man so vor:


Dieses Programm unterliegt den allgemeinen Copyright-Regeln. Alle Rechte liegen beim Autor. Gewerbliche Nutzung des Programms bedarf einer schriftlichen Genehmigung des Autors. Nachbau dieses Schaltmoduls unter Nutzung dieses Programms für private Zwecke (Eigenbedarf) ist bei Einzelstücken erlaubt.

hannes@hanneslux.de