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 6V Batterie oder mit 4-5 Akkus versorgt. Die LED blinkt beim Einschalten einmal kurz auf. Danach blitzt sie jedesmal, wenn der Controller über den I2C Bus angesprochen wird.
Der Servo Controller wird vom Lego NXT Computer mit Strom versorgt. Die Motoren müssen Sie aber mit einer separaten 6V Batterie (oder 4-5 Akkus) versorgen. Die Pull-Up Widerstände an SCL und SDA müssen 82k Ohm haben!
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 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 ein Beispielprogramm für Lejos. Bei BricxCC funktioniert es nach dem gleichen Prinzip. Für die grafische Programmierumgebung von Lego habe ich leider keinen geeigneten Block gefunden.
Nach dem Öffnen des Gehäuses kann man die Zahnräder entnehmen:
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:
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!
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.