Post!

Heute ist das Paket mit den Lichtschranken, einem Seriell-Adapter, ganz vielen Widerständen und zwei Batterieanschlusskabeln angekommen. Natürlich passt der Adapter nicht wie er soll, also muss ich den noch zurecht feilen. Dann kann ich Daten aus dem µC über ein Kabel an den Pc und zurück übertragen. Das brauche ich, um z.B. die Messwerte der Sensoren zu sehen. Als nächstes werde ich wohl die Schalltung für die Lichtschranken löten.IMG_1223

So viele Widerstände!

Genauer Plan der Drehzahlmessung

Die Lochscheibe für die Drehzahlmessung wird direkt zwischen Achsbefestigung und der Mutter, die das Rad hällt, eingeklemmt. Es bleibt genug Abstand zum Rad, um die Lichtschranke anzubringen. Sie wird auf einem Aludibondstreifen zusammen mit der Schalltung montiert. Dieser wird dann auf dem Roboter festgeklebt. Aus was ich jetzt die Lochscheibe herstelle, weiß ich noch nicht. Vielleicht reicht dicke Pappe da schon aus..IMG_1217

Gegen die Möglichkeit, die Messung mit hell-dunkell Scheibe und Fotodiode zu realisieren, habe ich mich entschieden, da ich bereits mit dem ASURO schlechte Erfahrung mit der  Methode gemacht habe. So ändern sich die Werte, wenn man z.B. in der Sonne oder im Schatten fährt. Das macht die Messung fehleranfällig.

Motorsteuerfunktion

Meine Library ist nun soweit, dass ich jeden einzelnen Motor ganz einfach einzeln ansteuern kann. Ich kann jetzt ganz leicht mit nur einer Zahl die Geschwindigkeit eines Motors verändern. Das kling nicht spektakulär, erleichtert das Programmieren aber enorm. Dieselbe Funktion, an die die Zahl übergeben wird, soll auch später die Autokorrektur der Motoren auf Grund der Drehzahlmessung vornehmen, so das ich nur noch den Befehl „geradeaus“ schreiben muss und die Funtion übernimmt den Rest. Allerdings hatt der Microcontroller Atmega32, den ich verwende, nur 4 PWM kanäle, über die sich PWM hardwareseitig realisieren läst. Wenn ich noch mehr Motoren brauche, muss ich ein PWM-Signal softwareseitig generieren.

Lego RCX und ASURO

Meinen erster Roboter war der Lego RCX. Er ist der Vorgänger des jetzigen NXT. Man baut ihn ganz normal wie Lego auf. Doch dann hat man die Möglichkeit, ihn am Computer über ein Lego eigenes Programm oder in C zu programmieren. Mit ihm kann man die Grundlagen der Robotik lernen. Dann habe ich aus der Schule den ASURO ausgeliehen bekommen. Der ASURO (Another Small and Unique Robot from Oberpfaffenhofen) wurde vom Deutschen Zentrum für Luft- und Raumfahrt (DLR) entwickelt. Ihn Programmiert man auch in C. Er verfügt über Berührungssenoren und Umdrehungsmesser.

IMG_1201

Links vorne der ASURO, dahinter der Lego RCX Roboter. Das Legorobotermodell ist von mir zum Scannen von Barcodes gebaut worden. Mit dem Lichtsensor vorne am Arm sollte er dann den Strichcode scannen. Das hatt aber nie so richtig funktioniert..

Fehler gefunden!

Endlich ist der Fehler in dem Motortreiber gefunden: ein kaputter Elko (Elektrolytkondensator) war die Fehlerquelle. Auserdem hatte die Spannungsverteilerplatine, die ich noch umgebaut hatte, einen Wackelkontakt, so das mal Spannung da war und mal nicht. Das hat die Fehlersuche sehr erschwert.

Aber jetzt kann ich endlich wieder richtig weiterbauen!

Kaputter Kondensator (?)

Nachdem ich heute die Stromversorgungsplatine mit Steckkontakten ausgerüstet habe, drehten sich die hinteren Räder nicht mehr. Vorne arbeiteten sie einwandfrei. Natürlich vermutete ich einen Zusammenhang mit der Stromversorgung. Nach gefühlten 5 Std. Testen konnte ich den aber ausschließen. Nach weiteren gefühlten 6 Std. (dabei waren es „nur“ 3) vermute ich einen kaputten Kondensator. Wie der kaputtgehen kann, ist mir allerdings schleierhaft. So kann man seinen Tag rumbringen..

Immerhin die Stromversorgungsprobleme vom Vortag sind behoben und der IC ist nicht beschädigt!

Motorbefestigung

Nun sind die Räder ganz fest! Nachdem ich die Schrauben an den Achsen befestigt hatte, waren nur noch die Motoren ein Problem, die sich (gerade beim Anfahren) in ihren Halterungen drehten. Das habe ich jetzt mit zwei Moosgummistreifen an den Motoren gelöst. Jetzt warte ich auf die Lichtschranken, die ich für die Drehzahlmessung verwenden möchte.

20130519-143737.jpg

Allerdings macht jetzt die Spannungsversorgungsplatine Probleme. Hier soll eigentlich nur der Strom an alle Komponenten verteilt werden. Jetzt haben aber manche Stecker einen Wackelkontakt, so das ich sie austauschen muss.

Library

Meine selbstgeschriebene Library nimmt langsam Form an. Diese hat den Sinn, bestimmte oft benutzte Funktionen, wie Geschwindigkeitsregelung oder Sensoransteuerung bereitzustellen. Dadurch hat der Programmierer weniger Arbeit, das Programm wird übersichtlicher und viel besser erweiterbar. So kann ich über diese Library einfach auf viele Funktion des Roboters zugreifen. Auch kann ich diese dann später um zukünftige Funktionen erweitern, so das ich dann z.B. darüber meinen Kameramast ansteuern kann.

Radbefestigung Next Level

Das Schlackern der Räder ist gelöst! Nachdem ich auf die Schrauben, die die Räder an der Motorachse befestigen, etwas Lack gepinselt habe, klebten sie am Gewinde fest. Jetzt muss ich nur noch kleine Gummimatten zwischen Kabelbinder und Motor klemmen, dann sind die Räder fest. Morgen werde ich wohl etwas Blech kaufen, um Lochscheiben für die Drehzahlmessung bauen zu können.

Drehzahlmessung

Um die Motoren des Roboters ideal anzusteuern, muss von allen die aktuelle Drehzahl bekannt sein, um so eine gleichmäßige Fahrweise des Roboters zu ermöglichen. Die Drehzahl werde ich dadurch ermitteln, dass ich auf jeder Achse eine Scheibe mit Löchern darin befestige. Dann kann ich mit einer kleinen Lichtschranke an jeder Achse die Impulse messen, während sich das Rad dreht. Aus dem Verhältnis von Impuls zu Zeit ergibt sich die Geschwindigkeit. Das reicht im Zusammenspiel mit dem Kompass aus, um den Robter exakt steuern zu können.

Bei meinen versuchen drehte der Roboter sich beim Anfahren immer ein wenig in eine Richtung. Das kann mit Sensoren dann autonom korrigiert werden.