Schon oft habe ich mir überlegt, ob sich eine Servosteuerung nicht auch analog umsetzen ließe. Ursprünglich wollte ich damit Zeit und Kosten sparen, doch mittlerweile gibt es so günstige Arduinos, dass die analoge Lösung einen Mehraufwand darstellt. Andererseits reizt mich die Herausforderung.
Nach einigen Experimenten habe ich nun eine funktionierende Servosteuerung. Sie ist unkompliziert in der Handhabung und die Servobewegung ist ruckfrei. Lediglich gegen das Zucken der Servos beim Einschalten muss ich noch etwas unternehmen.
Prinzip der Servo-Ansteuerung
Ein Servo ist ein Motor, der eine vorgegebene Position anfährt. Herkömmlichen Motoren, z.B. den Weichenantrieben von Conrad, gibt man dagegen durch die Höhe der Betriebsspannung eine Geschwindigkeit vor und über ihre Polarität eine Richtung.
Das Servosignal ist eine periodische Rechteckspannung, die zwischen 5V und 0V wechselt. Die Frequenz liegt innerhalb einer breiten Streuung um 50 Hz herum. Die Information über die gewünschte Lage steckt allein in der Pulsweite, also beispielsweise 1 ms für den linken und 2 ms für den rechten Anschlag.
Langsame, vorbildnahe Bewegungen erzielt man, indem man den Servo in vielen kleinen Zwischenschritten seine Position ändern lässt. Andernfalls springt der Servo von einer Lage in die andere. Analoge Servosteuerungen, die nur die Endlagen vorgeben, gibt es bereits, z.B. hier ein Schaltplan von Walter Völklein.
Langsame, vorbildnahe Bewegungen erzielt man, indem man den Servo in vielen kleinen Zwischenschritten seine Position ändern lässt. Andernfalls springt der Servo von einer Lage in die andere. Analoge Servosteuerungen, die nur die Endlagen vorgeben, gibt es bereits, z.B. hier ein Schaltplan von Walter Völklein.
Die Vorsteuerung
Für meine Servos möchte ich eine langsame Bewegung. Wie bei den einfacheren Varianten schalte ich mit einem Kippschalter zwischen zwei Potis um. (Es ließen sich prinzipiell auch mehrpolige Schalter verwenden, beispielsweise zur Herzstückpolarisierung.) Die an den Potis abgegriffene Spannung gibt die Servoposition vor.
Potis zum Einstellen der Endlage |
Natürlich muss der Schaltvorgang irgendwie verschliffen werden. Das geht mit einem analogen Filter ganz gut. Aber es ist nicht damit getan, einfach einen Kondensator an den den Schalter zu hängen. Die entstehenden Spannungsverläufe würden niemals realistisch wirken. Der Servo würde mit einem Ruck loslegen und sich dann ganz langsam der Endlage annähern.
blau: Eingangssignal grün: mit RC-Tiefpass gefiltertes Signal |
Überhaupt sollte unser Filter ja nicht nur den Sprung in der Position vermeiden. Die erste Ableitung der Position ist die Geschwindigkeit, die zweite ist die Beschleunigung und die dritte ist der Ruck. Ein Filter, das diese drei Ableitungen beschränkt, erzeugt eine glatte Bewegung, die auch für die Mechanik sehr schonend ist. (Vorausgesetzt, der Servo setzt die Bewegung auch so um. Gerade Fallers Microservo 180 726 ruckelt leider bei langsamen Bewegungen.)
Es ist ein Filter höherer Ordnung nötig. Der Kondensator im obigen Beispiel wäre nur ein Filter 1. Ordnung, da er nur einen Energiespeicher enthält. Und je höher die Ordnung, desto komplexer wird die Berechnung, denn nun gilt es, zwischen verschiedenen Charakteristiken zu wählen. Dabei macht die Dimensionierung der Bauelemente den Unterschied. Verbreitete Filtertypen sind zum Beispiel das Butterworth-, das Bessel- und das Tschebyscheff-Filter.
Antworten verschiedener Filter 4. Ordnung auf Sprünge der Eingangsspannung grün: Bessel, rot: Butterworth, türkis: Tschebyscheff (3dB Grenzwelligkeit) |
Schon aus der Grafik lässt sich entnehmen, dass der Bessel-Tiefpass genau das gewünschte Verhalten zeigt: Mit ihm läuft der Servo sanft an und erreicht zügig sowie ohne Überschwingen seine Endlage.
Zur Charakterisierung eines Filters gehört auch seine Grenzfrequenz. Tiefe Frequenzen lässt ein Tiefpass nahezu ungehindert durch oder verstärkt sie gar. Hohe Frequenzen schwächt er hingegen ab. Man erkennt das daran, dass die steilen Flanken des Signals abgeflacht werden. Bei der Grenzfrequenz ist die Signalamplitude auf den Faktor 0,7071 vermindert.
Ich wählte eine Grenzfrequenz von 0,25 Hz. Bei einer höheren Frequenz würde sich der Servo schneller bewegen. Theoretisch ließe sich so ein Filter mit Spulen und Kondensatoren aufbauen, praktisch werden aber die Spule so groß, dass sie quasi nicht zu realisieren sind. Mit einem Sallen-Key-Tiefpass geht es aber ganz leicht. Dieser besteht nur aus Operationsverstärkern, Kondensatoren und Widerständen.
Sallen-Key-Tiefpass. Um einen Widerstand am Eingang einzusparen, wurden die Potis sehr hochohmig gewählt. |
Ein solches Filter erzeugt also aus dem springenden Eingangssignal den gewünschten Signalverlauf. Die Formeln zu seiner Berechnung findet man auf Umnis Homepage, oder man schlägt sie im Tietze-Schenk nach. Letzterer enthält die Koeffizienten für Filter bis zur zehnten Ordnung. Nach der vierten Ordnung ändert sich allerdings nicht mehr viel. Nur die Signallaufzeit wird länger und das Überschwingen geringfügig reduziert.
Pulserzeugung und Einschaltverzögerung
Die Frequenz von etwa 50 Hz erzeugt ein leicht modifizierter Dreieck-Rechteck-Generator, der schon aus Teil 3 meiner Operationsverstärker-Serie bekannt ist. Da der nichtinvertierende Eingang des Integrierers (IC4B) nicht auf 2,5 V liegt, sondern auf ca. 0,9 V, ist das Dreiecksignal verzerrt: Es gibt nun eine steile sinkende Flanke und eine flache steigende Flanke. Die Pulsdauer des Rechtecksignals ist aus dem gleichen Grund stark verkürzt.
Sägezahngenerator auf Basis eines Dreieck-Rechteck-Generators |
Mit zwei Komparatoren, die das Rechtecksignal bei Bedarf kurzschließen, wird nun das eigentliche Steuersignal erzeugt. Der eine (IC3B) vergleicht stets das Ausgangssignal (POS) des Sallen-Key-Filters mit dem Dreiecksignal und stellt so die korrekte Pulsdauer her: Je höher POS, desto kürzer der Impuls. Da POS mit einem vergleichweise steilflankigen Signal verglichen wird, ist die Steuerung unempfindlich gegen Rauschen.
Der zweite Komparator vergleicht die Spannung an einem RC-Glied mit der Hälfte der Betriebsspannung. Unmittelbar nach dem Einschalten der Betriebsspannung ist C4 noch entladen und alle Servoimpulse werden unterdrückt. Erst nach etwa 3,2 s werden Steuerimpulse gesendet. So wird vermieden, dass der Servo unzulässige Bewegungen macht, ehe das Sallen-Key-Filter sich nach dem Einschalten eingeschwungen hat.
Komparatoren, um das pulsweitenmodulierte Signal aus den amplitudenkontinuierlichen Signalen zu erzeugen |
Selbstverständlich wird der Servo, falls im spannungslosen Zustand der Schalter betätigt wurde, seine neue Position mit einem Ruck anfahren. Daher sollte man die Finger vom Schalter lassen, solange die Servosteuerung nicht eingeschaltet ist.
Video
Download
Kompletter Schaltplan der Servosteuerung |
Im Downloadbereich findet man die Eagle-Datei mit Schaltplan und Platinenlayout.
Ausblick
Mich reizt es, weitere Varianten der analogen Servosteuerung auszuprobieren. Natürlich muss ich zunächst einmal das Zucken des Servos beim Einschalten eliminieren. Dann will ich noch weitere Filter ausprobieren. Beispielsweise ließe sich mit einem Tschebyscheff-Tiefpass das Nachwippen einer Schranke darstellen. Mit speziellen Mehrfach-Potis sind sogar Filter möglich, deren Grenzfrequenz und Charakteristik sich stufenlos verstellen lassen.
Verwandte Artikel
Der Operationsverstärker, Teil 1
Der Operationsverstärker, Teil 2
Der Operationsverstärker, Teil 3
Keine Kommentare:
Kommentar veröffentlichen