Fahrtregler vorwärts mit 89C2051

Fahrtregler 89c2051 V3.0 im Gehäuse Fahrtregler 89c2051 V3.0 Bestückt


Angefangen habe ich die Fahrtreglerentwicklung mit den 8051 kompatiblen Controllern 89C2051, da ich mit der Software vertraut war. Nachteil ist eindeutig, dass kein eEprom enthalten ist, und damit der Fahrtregler per Sourcecode an die Fernsteuerung angepasst werden muss. Wird immer die gleiche Fernsteuerung verwendet, ist das aber wiederum nicht unbedingt ein Nachteil und verkürzt die Softwareentwicklung ungemein ;-)
Das Layout ist auf einen möglichst kleinen Fahrtregler ausgelegt. Aus diesem Grund sind die passiven Bauteile überwiegend in SMD ausgeführt. Es sollte also schon einige Erfahrung beim Umgang mit SMD Bauteilen vorhanden sein. Der fertige Fahrtregler passt in ein 50*30mm großes Kunststoffgehäuse (z.B. Best.Nr. 505050 bei Conrad ). Leider wird dadurch der Bestückungsplan für die SMD Bauteile etwas unübersichtlich, zusammen mit dem Schaltplan dürfte das ausfindigmachen der Bauteile aber kein Problem sein.

Schaltplan

Schaltplan 89C2051 Version 3.0
 

Schaltungsbeschreibung

Da die Interrupteigenschaften des 89C2051 etwas "rudimentär" ausfallen, habe ich für die Servoimpulsmessung über die beiden Inverter Tr1 und Tr2 beide Interrupts /INT0 und /INT1 benutzt. Durch diese Schaltung braucht die Software nicht auf das Impulsende zu "warten", sondern kann die Ausgangsimpulse dauernd erzeugen.
Rund um IC3 ist ein Rechteckgenerator aufgebaut, der den Takt für den Spannungsverdoppler mit den Dioden D1, D2, sowie dem Kondensator C9 erzeugt.
An C10 steht dann eine knapp doppelt so hohe Spannung zur Ansteuerung der FETs, insbesondere der BremsFET zur Verfügung. Die Widerstände R10 und R11 sorgen für eine Strombegrenzung und schützen IC3, die Z-Diode ZD1 begrenzt gegebenenfalls die Spannung auf max. 20Volt, da der FET Treiber und auch manche FETs nicht mehr Spannung vertragen. Bei 6 oder 7 Zelligen Akkus braucht diese Diode nicht bestückt zu werden.
Die so erzeugte "Hochspannung" wird über die FET Treiberstufe (MC4427) auf die Gates der FET geschaltet. Die Treiber haben den Vorteil, dass sie extrem schnell schalten, und die FETs beim ausschalten gewaltsam sperren. Die Software ist auf die nicht invertierenden Treiber MC4427 ausgelegt. Da der 89C2051 während des reset an den Ausgängen hochohmig wird, würden die Treiber in diesem Fall durchschalten und einen Kurzschluss verursachen. Deshalb werden die Widerstände R20 und R21 benötigt. Es gibt den Treiber auch in einer invertierenden Variante (MC4426), bei der R20/R21 nicht bestückt werden dürfen, da sie sonst einen Kurzschluss beim reset verursachen würden.
Vorgesehen ist noch ein Bremslichtanschluss. Über den Vorwiderstand R19 (eine Seite eingelötet, Kabel nach außen) wird der Strom bei Verwendung einer oder zwei LEDs eingestellt. Es können aber auch 6V Lämpchen angeschlossen werden. Der Transistor Tr3 schafft ca. 500mA Dauerstrom.

Achtung: Die Schaltung besitzt keinen BEC Ausgang für den Empfänger, also einen BEC Empfänger benutzen, oder eine separate BEC Schaltung vorsehen. Am Servoanschluss werden jedoch die 5V vom Empfänger überwacht, so dass beim ausschalten oder Ausfall der Empfängerspannung der Motor angehalten wird.
 

Schaltungs- und Bauteiletipps

Besondere Beachtung finden folgende Bauteile, da sie unter Umständen maßgeblich Einfluss auf die Funktion oder Fehlfunktionen nehmen. Die geschilderten Einflüsse hängen aber auch sehr stark von der Akkuspannung und dem eingebauten Motor ab. Generell kann gesagt werden, dass bei Standartmotoren mit weniger Problemen zu rechnen ist, als z.B. bei Tuningmotoren mit 15 und weniger Windungen. Mit höherer Akkuspannung wird wiederum die Impulserzeugung und Spannungsregelung problemloser.

R7: Dieser Vorwiderstand entkoppelt die Spannungsversorgung vor den negativen Impulsen, die durch die von Motor erzeugte Gegenspannung entstehen.
Falls der Regler, insbesondere bei leerer werdendem Akku (= hoherer Innenwiderstand des Akkus) häufiger aussetzt kann man versuchsweise eine Induktivität einsetzen. Diese gleicht die negativen Spannungsspitzen teilweise wieder aus. (SMD Induktivität z.B. JCI 2012 0,68yH, Reichelt)

ZD1:  Begrenzt die "Hochspannung" auf max. 20V, da der FET Treiber und die meisten FETs nicht mehr vertragen. Bei Versorgungsspannungen > 9V erforderlich.

R20, R21: Bei nicht invertierenden FET Treibern (MC4427 ->Nessel ) erforderlich. Bei Ansteuerung mit invertierenden Treibern dürfen sie nicht bestückt werden, außerdem muss natürlich die Software geändert werden.

R1-R3: Bestimmen Maßgeblich die Flankensteilheit der FET Ansteuerung. Wird der Wert verringert, schalten die FETs schneller und produzieren dadurch weniger Verlustleistung. Allerdings erhöht sich dadurch auch die Störspannung auf der Versorgungsspannung, was zum "hängenbleiben" des Prozessors und sonstigen Fehlfunktionen führen kann. Bei mir gab es bei kleinen Werten (< 1K) Störungen bei einem 40Mhz AM Empfänger, während ein anderer 40Mhz FM Empfänger dann immer noch einwandfrei funktionierte. Wenn unerklärliche "Phänomene" auftreten kann es nicht schaden den Wert testweise zu erhöhen.

R4, R5: Bestimmen das Einschalten der BremsFET. Hier sollten kleinere Widerstandswerte eingesetzt werden, damit ev. auftretende Storimpulse über den FET Treiber sicher abgeleitet werden.

FET:
Als FETs zur eigentlichen Motoransteuerung sind prinzipiell alle Standart FET mit der entsprechenden Strombelastbarkeit geeignet. Entscheidend für die Leistung ist aber auch der RDSon Widerstand bei durchgesteuerten FET. Für die Bremse sind diese Standart FETs allerdings nicht bei 6 oder 7 Zellen Akkus geeignet, da die Ansteuerspannung dafür etwas gering ausfällt. Für die Bremse sind 5V FETs zu empfehlen. Ich habe dafür überall den Typ IRL3803 vorgesehen. Diese FETs sind sehr Leistungsfähig und haben einen geringen Restwiderstand. (Bezugsquelle z.B.Fa. Nessel, dort gibt es z.B. auch eine Übersicht über die Leistungsfähigkeit verschiedener Typen).

MOS-FET Treiber:
Sind etwas schwer zu beschaffen, eine gute und recht preiswerte Quelle ist ebenfalls, wie auch für die meisten FETs die Fa. Nessel. Auch die Servokabel, sowie die dicken Silikonkabel und Goldstecker usw. sind dort erhältlich. Alle anderen Bauteile sind z.B. bei Reichelt zu bekommen.

Platine:
Durch die hohen Ströme im Bereich des Leistungsteiles ist natürlich die Gefahr des Durchbrennens der Leiterbahn bei ungenügender Breite gegeben. Verzinnen hilft, zumindest beim ableiten der Wärme, besser ist es eventuell eine Leiterplatine mit doppelt dicker Kupferbeschichtung zu verwenden (z.B. von Bungard, Conrad Best.# 529729). Die benötigten Löcher für die FETs "fräse" ich an den Seite etwas breiter, so dass der FET ganz bis zum Gehäuse in die Platine gesteckt werden kann. Wenn man jetzt die Anschlüsse nicht zu kurz abschneidet kann man diese auf der Lötseite umbiegen und ebenfalls als Leiter mitbenutzen. Nachteil: die FETs sind danach nur noch schwer wieder auszulöten.

Noch ein paar Worte zur Motorentstörung:
Sie sollte auf keinen Fall vernachlässigt werden, da sie Ursache für viele Probleme und unerklärliche "Aussetzer" des Fahrtreglers sein kann. Wichtigstes Bauteil ist die Schottky Diode z.B. 2SB550. Diese Diode leitet die Spannungsimpulse des Motors ab, die beim abschalten der Ansteuerimpulse auftreten, und entgegen der Versorgungsspannung gepolt sind. (auf die Einbaurichtung achten).
VR1: Ist ein Spannungsabhängiger Widerstand, der zusätzlichen Schutz vor Spannungsspitzen gibt, wird eigentlich nur bei vorwärts/rückwärts Reglern benötigt, da dort keine Diode eingebaut werden kann.
Cx: Kondensatoren die mit dem Motorgehäuse verbunden sind.
 

Softwarebeschreibung

Das Prinzip der Software ist schnell erklärt: es wird eine Zeit (die des Servosignales) gemessen und mit den eingestellten Werten für "neutral" sowie Vollgas und voll-Bremse verglichen. Liegt der Wert dazwischen, wird aus einer zugeordneten Tabelle ein an das Modell und den Motor angepasster Wert gelesen, der die Impulslänge des Motorsignales bestimmt. Ein Wert von 0 entspricht also keinem Puls, ein Wert von FFh Vollgas. Die Frequenz dieses Motorsignales ist derzeit bei meinen Reglern ca. 4Khz, um ein feinfühliges Regeln zu ermöglichen. Bei ersten Versuchen hatte ich Frequenzen von unter 1 Khz eingestellt, was subjektiv auch keinen großen Unterschied machte. Vielleicht teste ich mal zwei identische Regler mit unterschiedlichen Frequenzen... Realisiert habe ich diese beiden Timer (Servo-, und Motoransteuerungsimpulslänge) mittels Interrupts.

Einziger derzeitiger Schwachpunkt für den, der mit Assemblerprogrammierung nichts am Hut hat,  ist die Einstellung des Reglers auf das Servosignal. Relativ leicht geht das beim Nullpunkt, da dieser auf den meisten Fernsteuerungen gleich sein sollte und notfalls an der Fernsteuerung angepasst werden kann. Dieser Wert (Nullval) kann normalerweise beibehalten werden. Angepasst werden müssen normalerweise nur die beiden Endwerte. Bei den einfacheren Fernsteuerungen, die keine Einstellung des Servosignales erlauben, dürfte dieser Wert so um die 34 Hex betragen (MinVal und MaxVal). Gute Dienste beim Ermitteln des Wertes liefert mein  mobiler Servosignaltester der die gleiche Routine zum messen des Servosignales benutzt. Bei meiner Graupner XR6 kann ich dieses Signal auf ca. 125% verlängern, was einem Wert von 40HEX entspricht. Die Interruptroutine (INT0 und INT1) legt den ermittelten Wert in der Speicherzelle "K2Val" ab. Mit diesem Wert als Index wird die entsprechende Speicherstelle in den Tabellen adressiert, und der dort eingetragene Wert wird als Wert für die Motoransteuerung benutzt.

Hier liegt nun der eigentliche Vorteil dieses Reglers:
Abhängig vom verwendeten Motor, der Übersetzung und dem gewünschten Fahrverhalten des Fahrzeuges können die Werte unter Beibehaltung des ganzen Regleweges der Fernsteuerung genutzt werden. Insbesondere kann durch "Spreizung" des Mittelbereiches ein feinfühligeres Steuern des Modells ermöglicht werden. Falls z.B. ein langsameres Modell gewünscht wird, bleibt trotzdem der gesamte Regelweg erhalten.
 

Download

Den Assembler Source habe ich derzeit nur in einer Version für TASM Assembler, da diese Fahrtreglerversion schon etwas älter ist, und von mir nicht mehr weiterentwickelt wird. Wer ihn trotzdem für eigene Zwecke verwenden möchte: Fahrtregler2051_SourceV30.zip
Zum Ausprobieren habe ich auch ein Intel Hex File mit den Fahrtreglerwerten (MaxVal= 34h, Minval =34h) bereitgestellt, für alle die nur mal schnell einen Test machen wollen.  

 
 
 

Letzte Aktualisierung dieser Seite: 26.08.2001


Diese Seite ist Teil eines Framesets. Kein Inhalsverzeichnis? Mit Home gelangen Sie zum Index.