Verweise

Schaltplan
Firmware
Java Klasse für Lejos

Servo Controller

Der Servo Controller ermöglicht das Ansteuern von bis zu 10 Modellbau-Servos über einen I2C Bus. Man kann damit auch handelsübliche Motortreiber (ESC) und andere Aktuatoren ansteuern.

Foto

Sie brauchen einen billigen AVR Mikrocontroller (ATtiny2313 oder ATtiny26), ein paar Kleinteile drumherum und ein ISP Programmiergerät, um die Firmware in den Mikrocontroller laden zu können.

Der Chip wird so per I2C Bus angesprochen:

Die Daten-Bytes liegen normalerweise im Bereich 62 bis 125. Damit bestimmen Sie die Position, in die der Servo fahren soll. Der Wert 94 bewegt den Servo in die Mitte. Der Wert 0 schaltet das Signal aus, dann geht der betroffene Servo in Standby Betrieb.

Der Servo Controller ist für eine Versorgungsspannung von 3,3 - 5,5 Volt vorgesehen. Die Servos werden mit einer separaten Batterie (4,8-6V) versorgt. Die LED blinkt beim Einschalten einmal kurz auf. Danach blitzt sie jedesmal, wenn der Controller über den I2C Bus angesprochen wird.

Pinbelegung Servo Motoren

Modellbau Servos haben je nach Hersteller eine unterschiedliche Pinbelegung. Üblicherweise sind die Anschlußkabel farbig gekennzeichnet:

Hinweise zur Anwendung mit Lego Mindstorms

Der Servo Controller wird vom Lego NXT Computer mit Strom versorgt. Die Motoren müssen Sie aber mit einer separaten Batterie versorgen. Die Pull-Up Widerstände an SCL und SDA müssen 82k Ohm haben! Wenn Sie mehrere Servo Controller parallel an einen Sensorport anschließen, dann dürfen diese Widerstände jeweils nur einmal and SCL und SDA existieren.

Da passende Stecker für den NXT Computer schwer zu bekommen sind, empfehle ich, ein originales Anschlusskabel zu zerschneiden. Man kann diese Kabel problemlos als Ersatzteil in Legos Online Shop bestellen. Pinbelegung:

Die beiden nicht verwendeten Leitungen können verwendet werden, um einen analogen Sensor anzuschließen. Im obigen Foto habe ich dort einen lichtempfindlichen Widerstand angeschlossen. Der Sensorport kann also gleichzeitig für einen analogen Sensor und einen (oder mehrere) Servocontroller verwendet werden.

Lejos und BricxCC unterstützen den Servo Controller über ihre generische I2C Schnittstelle. Im Kasten oben rechts finden Sie eine passende Klasse für Lejos. Bei BricxCC funktioniert es nach dem gleichen Prinzip. Für die grafische Programmierumgebung NXT-G von Lego habe ich leider keinen geeigneten Block gefunden.

Servo Hacking

Unter Servo-Hacking versteht man den Umbau eines gewöhnlichen Servos, so daß er sich endlos drehen kann. Ein so umgebauter Servo Motor eignet sich zum Beispiel für den Antrieb eines fahrbaren Roboters. Man kann diese Motoren vorwärts und rückwärts laufen lassen, mit einstellbarer Geschwindigkeit.

Nach dem Öffnen des Gehäuses kann man die Zahnräder entnehmen:
Foto des geöffneten Servos

Ein Zahnrad ist mit einer Nase ausgestattet, die den Drehbereich auf etwa 180° beschränkt. Diese Nase schneiden Sie mit einem scharfen Messer oder mit einer Feile ab. Das folgende Foto zeigt das Zahnrad mit abgeschnittener Nase:
Foto der abgeschnittenen Nase

Das Potentiometer ist (in zusammen gebautem Zustand) mit dem Zahnrad verbunden. Trennen Sie diese mechanische Verbindung, indem Sie das Potentiometer näher zur Platine biegen. Drehen Sie die Achse des Potentiometers auf mittlere Position!
Foto der abgeschnittenen Nase

Falls dazu nicht genug Platz vorhanden ist, kürzen Sie die Achse des Potentiometers mit einer feinen Säge oder tauschen Sie das Potentiometer durch ein kleines Trimmpoti aus oder ersetzen Sie es durch zwei Festwiderstände.

Wenn man nun den Servo mit dem Wert für "mitte" oder mit dem Wert 0 (für Standby) ansteuert, dreht er sich nicht. Bei größeren Werten dreht sich der Motor vorwärts, bei kleineren Werten dreht er sich rückwärts. Je weiter der Wert von der "mitte" entfernt ist, umso schneller dreht sich Motor. Welcher Zahlenwert genau der "mitte" entspricht, müssen Sie experimentiell herausfinden. Das ist bei jedem Servo etwas anders und hängt außerdem von der Einstellung des Potentiometers ab.