RC Servomotoren kennt man aus dem Modellbau. Sie lassen sich meist um 180° Grad drehen. Damit kann man dann z.B. Klappen, Ruder und Lenkungen steuern.
Servos besitzen ein Anschlusskabel mit drei Adern. Zwei sind für die Stromversorgung und das dritte für die Steuerung. Das Signal auf der Steuerleitung wird ca. alle 20ms wiederholt. Es besteht aus einem High-Pegel zwischen 1 und 2ms. Wobei ein Signal von 1ms die Servo-Position von 0° und ein Signal von 2ms 180° bedeutet. Alle Abstufungen dazwischen ergeben die anderen Positionen, z.B. 1,5ms bedeuten dann 90°.

Auf einem Mikrocontroller könnte man nun leicht dieses Signal mit einem Timer generieren und es auf dem entsprechenden Timer-Pin (OC#) ausgeben lassen. Allerdings kann man dann nur so viele Servos steuern, wie man Timer auf dem µC zur Verfügung hat.
Darum habe ich mir ein Code geschrieben, bei dem ich mit nur einem Timer einen ganzen Port steuern kann. Beim Mega8 sind das auf dem PortC 6 Pins. Dabei schalte ich zunächst alle Pins für mindestens 1ms an. Dann werden Sie je nach Wert im s_array nacheinander wieder ausgeschalten.

Beim Testen der Software ist mir aufgefallen, dass die Servostellungen nicht mit meinen theoretischen Werten übereinstimmt. Ob das am Controller oder an den Servomotoren liegt, weiß ich nicht. Leider besitze ich kein Oszilloskop. Da muss mal halt ein wenig mit den Werten spielen.
Außerdem bekomme ich mit meinem 8MHz Quarz nur 40 Schritte zwischen 0° und 180°. Wem das nicht langt, kann ein schnelleres Quarz verwenden oder man verkürzt die Interrupt-Zeit mit dem On-Compare Timer.

Hier die Software:



Leave-Me-Alone Box / Sinnlos Maschine

Nun folgt wieder ein sinnvolles (!) Beispiel, was man mit der neu gelernten Theorie so alles basteln kann.

Von einem früheren Versuch des USBprogs hatte ich noch ein kleines Plastikgehäuse mit den Maßen 7 x 5 x 3cm übrig. Da passen die AAA Batterien quer gerade so rein. Somit war die Herausforderung geboren, mit dieser kleinen Kiste eine LMA-Box zu bauen.



Drei AAA Batterien ergeben 4,5V. Das passt perfekt für die Stromversorgung. Weiter geht's mit der Steuerung.

Viel Platz habe ich nicht, also muss die Steuerung sehr klein werden. Außerdem soll sie sich selber Abschalten können, damit sie nach getaner Arbeit keinerlei Strom verbraucht und die Batterien geschont werden.
Also bekommt das Board zunächst Strom über den Schalter. Die Diode beim Schaltereingang brauch ich, um den Status des Schalters abfragen zu können. Danach schaltet der Transistor den Strom durch und kann sich somit eben wieder selber abschalten.





Wer ein klein wenig Ahnung von Elektrik hat (oder zumindest mehr als ich), der erkennt sofort, dass die Transistorschaltung nicht funktionieren kann. Weil sich so der Transistor selber anschaltet und das geht nicht.
Ich habe noch einige Zeit lang mit verschiedenen Transistoren herum experimentiert, bis auch ich eingesehen habe, dass es wirklich nicht geht. Dann bin ich in den Keller gelaufen und hab mir ein kleines Relais geholt.



Das sieht jetzt so aus, als würde ein Tintenfisch mein Board aussaugen aber dafür funktioniert es! Und der Aufbau ist immer noch klein genug, um neben den Batterien in mein Gehäuse zu passen.



Nun zur Mechanik.
Einen passenden Arm habe ich an einer Kinderüberraschungsei-Figur gefunden. Den habe ich an eine Steuerscheibe vom Servo geklebt und zurecht gefräst. Ich hoffe die Harfe verzeiht mir.



Ich verwende zwei Servomotoren für meine LMA-Box. Einen für den Arm, den anderen für die Klappe. Das hat mehrere Vorteile. Zum einen muss so der Arm die Klappe nicht aufstoßen, was mechanische Beanspruchung und Verschleiß bedeutet. Zum anderen bleibt die Klappe auch wirklich geschlossen, wenn die Box nicht aktiv ist. So wird das Innenleben vor neugierigen Blicken geschützt.
Die Kabel der Servos habe ich bis auf wenige cm gekürzt, damit mir die Kabel nicht unnötig Platz wegnehmen.



Um Pins zu sparen, habe ich die ISP-Programmierpins auch gleich zur Ansteuerung der Servomotoren verwendet. Dieser ach so minimalistische Aufbau hat den großen Nachteil, dass ich für jeden Programmiervorgang alles ab- und wieder anstecken muss. Zum Feintuning und zur zeitlichen Abstimmung der Servos musste ich den Controller mindestens 10 mal programmieren.




Und hier endlich der fertige Aufbau mit kleinem Daumenkino.

Ach ja, der große Sinn der Maschine besteht darin, sich selber abzuschalten. Die Box möchte halt einfach in Ruhe gelassen werden!







letzte Änderung: 18.09.2011






Belichter

Ätzanlage

Netzteil

-----

ISP Programmer

Test-Boards

-----

7-Segment

DCF77

IR_BT

Servo & LMA-Box

LMA2 Quantec

LCD Interface

IR Alarm

Klingel Code