Follower

Foto 1Die Funktion von Follower soll ganz einfach sein – Gegenständen folgen!

Nachdem ich mit einem Dagu Compund Eye etwas rumgespielt habe, musste ich damit natürlich auch einen Roboter ausstatten. Ich  konnte leider kein Pan-Tilt-Modul finden, das meinen Vorstellungen entspricht. Um meine Vorräte aus der Bastlerkiste etwas aufzubrauchen, habe ich mir ein Pololu Sumo Chassis geschnappt und ein Pan-Titl-Modul mit SketchUp entworfen. Die blauen Teile für das Pan-Tilt-Modul habe ich mit meinem 3D-Drucker gedruckt (PLA).

Foto 3

Die entsprechenden STL-Files sind auf www.youmagine.com zu finden

Die Teile sind für die HS-311 Servos von HiTec ausgelegt. Ich mag diese Servos, weil sie von ziemlich guter Qualität sind und nicht so viel Strom verbrauchen.

Da in den Pololu Chassis nur 4 Batterien reinpassen und ich meine Roboter nach Möglichkeit mit Akkus versorge, habe ich als Spannungsregler, einen Step-Up/Step-Down Schaltregler S7V7F5 von Pololu genommen.

Als Controller kommt ein Klon von Arduino Pro Mini (Version 16MHz / 5V)

Der Motortreiber ist ein DRV8835 von Pololu.

Die Elektronik habe ich auf einer Lochrasterplatine miteinander “verheiratet”.

Hier ist noch ein Blockdiagramm, wie ich das miteinander verbunden habe.

Blockdiagramm_Follower

Um mir den Aufbau etwas zu erleichtern und anderen eine kleine Vorlage zum Nachbauen zur Verfügung zu stellen, habe ich mir mal auf die Schnelle ein Schaltplan gezeichnet.

Die Versorgungsspannung führt zuerst auf die Platine des Motortreibers. Warum? Auf dem Motortreiber ist eine Schaltung mit Verpolungsschutz, und man kann es für die gesamte Schaltung verwenden. Nach dem Motortreiber wird die Spannung auf 5V geregelt.

Die Vcc Pins der Servos habe ich auch auf Vin gelegt, da sie bis zu 6V aushalten. Pro Servo wird ein Digital-Pin verwendet. Für den Motortreiber werden 4 digitale Pins benötigt. Zwei Pins um die beiden Kanäle ein- und auszuschalten und zwei für die Drehrichtung der Motoren. Um diesen Modus zu aktivieren, wird der Pin “MODE” auf HIGH (5V) gezogen.

Für den Compund Eye werden 4 analoge und ein digitaler Pin benötigt. Die analogen (Eingänge) um die Signale einzulesen und digital (Ausgang) um den Sensor ein-/auszuschalten.

Follower_Schaltplan

 

Um die ganzen kleinen Platinchen miteinander zu verbinden, habe ich eine kleine Lochrasterplatine und Silberdraht verwendet.

Foto 2

Programmierung.

Die Profi-Programmierer, die heute einen schlechten Tag hatten, sollten hier aufhören zu lesen  🙂

Wie ich den Sensor ansteuere und die Werte aufbereite, habe ich in dem oben erwähnten Artikel schon gezeigt.

Das Gesamte Programm ist eine “State Machine”, d.h. die Befehle werden der Reihe nach ausgeführt, ohne dass irgendwelche Interrupts dazwischen funken.

Es werden zuerst die Werte der 4 Fototransistoren eingelesen und je nachdem auf welcher Seite die maximale Einstrahlung gemessen wird, wird auch der Kopf mit Hilfe von zwei Servos ausgerichtet. Obwohl der  Pan-Servo seine Anschläge bei 0° und 180° hat, habe ich diese im Code etwas angepasst. Das Chassis beginnt bei 115° und 75° zu rotieren. Es sieht einfach besser aus, als wenn man den Servo bis 180° oder 0° drehen lassen würde.

Beim Hoch-Runter-Servo (Tilt) musste ich die Anschläge in der Software einschränken, da für die Bewegung nach unten, der Pan-Servo im Weg steht.

Wenn die Hand bzw. ein Objekt zu nah an dem Sensor ist, fährt der Roboter zurück. Wenn das zu weit entfernt ist, fährt er vorwärts. Wenn das Objekt komplett fehlt, bleibt der Roboter stehen und “zickt etwas rum” – der Kopf wird ganz nach Links-Oben gedreht  😉 Dieses zickige Verhalten habe ich ihm nicht beigebracht. Es liegt einfach an Signal-Toleranzen. Man könnnte das zwar im Code mit ein paar Tricks beseitigen, ich lasse ihn aber seinen Charakter haben  😀

 

Hier noch ein kleines Video, vom Follower im Einsatz 🙂

2 Gedanken zu „Follower

  1. Hallo, ich finde deine Seite sehr gut struckturiert und die Projekte hervorragend erklärt. 🙂 und werde es versuchen , diesen Roboter nach zu bauen.
    Danke.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Bitte löse folgende Rechenaufgabe * Time limit is exhausted. Please reload CAPTCHA.