Elektronik / Robotik

Meine Roboterexperimente ink. Platinenherstellung

Ursprünglich stammt das alles hier von meiner alten Homepage aus 2005 🙂 Da ich aber nun meine eigene Domain habe, kann ich das ja mal hierher packen.

Der Controller für 20 Servos, in mühevoller Handarbeit zusammengelötet

fotos heli und robot 004

… und hier die Rückseite, und ich möchte keine Kommentare zu meinen Lötkünsten hören!!

fotos heli und robot 005

Die Schaltung basiert auf dem SD20, einem vorprogrammierten PIC Microcontroller, der über i2c angesprochen wird, das sind die 3 dezent grauen Kabel links im Bild, die im Moment an einen 25poligen DSUB-Stecker gehen. Der schwarze Untergrund gehört übrigens zu meinem fahrbaren Untersatz, das Unterteil eines M1 Abrams Modellpanzers, 83cm lang. Der 8polige Sockel rechts ist für einen PICAXE 08M Microcontroller, der einen Teil der Sensorik übernehmen soll, nämlich einen Sharp GP2D12 IR Entfernungssensor und evtl. Ultraschallabstandssensor, ein modifizierter Bausatz von Conrad Elektronik. Die Mikrokontroller gibt es unter www.roboter-teile.de, da ist auch ein schönes Forum, wo einem wirklich schnell und kompetent geholfen wird. Mit dem oben erwähnten i2c Bus hatte ich zu kämpfen, sowas hat ein PC halt normalerweise höchstens irgendwo intern, zum Probieren ist das also schwierig. Als ‚Entwicklungsumgebung‘ benutze ich einen alten Laptop vom Typ IBM 370CS (486 @75 MHz, 20 MB Ram, 370MB HDD, 10″TFT, jawoll, TFT!, mit 640×480 Pixeln, Strom kriegt der über einen 12V 7AH Blei-Gel-Akku von Pollin, die Laufzeit beträgt so zwischen 5 und 8 Stunden). Der i2c Bus ist glücklicherweise sehr gut dokumentiert, ich hatte nur leichte Probleme durch meine nur rudimentär vorhandenen Elektronikkenntnisse, in dem Fall : wie funktioniert eigentlich so ein dusseliger Open Collector Ausgang? Es gibt diverse Anleitungen für unterschiedliche Adapter, entweder für den Parallelport oder den seriellen Port, aber die waren für mich zu umständlich, d.h. ich wollte nicht für einen 0,6 € chip 4,5 € Versand bei Reichelt bezahlen, also hab ich ein wenig rumprobiert und einfach folgendes gemacht : Beim Notebook habe ich im BIOS den Paralellport auf ‚bidirectional‘ gestellt, Windows 95 erkennt ihn als EPP. Dann habe ich mir zwei Pins ausgesucht, in dem Fall Pin 1 und Pin 14, die gehören beide zum Controllregister (hier steht mehr dazu), Pin1 ist bei mir die Taktleitung SCL (die gelbe Leitung auf dem Bild ganz oben), Pin 14 die Datenleitung SDA (die in blau). Über die beiden 4,7K Widerstände, die rechts am SD20 zu sehen sind, liegen die beiden Leitungen auf +5V, mehr ist da nicht beschaltet. Wenn ich nun einen Pin auf High schalte, hab ich quasi an beiden Enden +5V anliegen, schalte ich auf Low, werden die +5V über den 4,7K Widerstand auf Masse geschaltet, deswegen der Widerstand, sonst würde man einen schönen Kurzschluß erzeugen. Todesmutig hab ich das dann an das Notebook geklemmt und stellte fest : es funktioniert und es steigt kein Rauch auf. Dann hab ich angefangen, das i2c-Protokoll zu implementieren, und zwar in C++ mit dem Borland C++ 5.0 Compiler. Bei Gelegenheit werde ich hier auch den Quellcode einstellen. Spannenderweise funktioniert auch die Kommunikation zum PC hin, zumindest das ‚Acknowledge‘ vom SD20 wird erkannt.

Hier nochmal das Fahrgestell :

fotos 078

Links ist der Getriebeblock mit den zwei Motoren, mehr ist da auch nicht drin. Zum Vergleich : das Rechts ist mein 15″ Notebook, also jede Menge Platz. Um seine Umgebung besser zu ’sehen‘, habe ich mir folgendes ausgedacht : man nehme eine Webcam und einen Laserpointer, der parallel zur Bildachse abstrahlt und an- und ausschaltbar ist. Nun nehme man aufeinanderfolgend je ein Bild mit und eins ohne Laserpunkt auf, subtrahiere die Bilder voneinander und übrig bleibt (im großen und ganzen) der Laserpunkt, dessen Koordinaten man nun relativ leicht bestimmen kann, indem man den hellsten Punkt auf dem Ergebnisbild sucht. Durch den Abstand des Punktes von der Bildmitte läßt sich so die Entfernung ermitteln. Hierzu hab ich folgendes aus meiner Terracam USB und einem Laserpointermodul gebastelt :

fotos 076

Die Spannungsversorgung (3V – 4,5V, 20 mA) des Laserpointers habe ich völlig skrupellos direkt an einen Ausgang des Parallelports angeschlossen, geht wunderbar. Wie man sieht, ist der Laser auf einem Servo montiert, mit dem Hintergedanken, durch Schwenken des Lasers den Bereich vor dem Fahrzeug abzuscannen, das hab ich allerdings in meiner Software noch nicht implementiert. Auch hier werde ich später noch meine Sourcen veröffentlichen. Als ‚Gehirn‘ des Gerätes habe ich folgendes vorgesehen :

fotos heli und robot 009

Ein SBC (Singleboardcomputer), hat alles on Board, was man so braucht, einen Pentium 166MMX, 32MB RAM, VGA, IDE, 4x seriell, 1x parallel,2x USB,1xLAN, 1xPC104 und einen PCI Slot. Praktischerweise läuft das Teil mit 5V, bzw. bei mir direkt am 6V BleiGel-Akku. Da kommt dann eine 4GB 2,5″ HDD dran, und die Ansteuerung der Webcam wird deutlich einfacher. Evtl. kommt auch eine Video Capure Karte in den PCI-Slot, mit CCD-Kamera dran wegen der besseren Bildqualität und WLAN per USB.

to be continued…..

… und zwar hier :

Stand am 3.11.2005 : vorn im Fahrgestell ist nun ein per Servo um ca. 60° schwenkbarer Entfernungssensor (Sharp GP2D12) montiert, das Servo und der Sensor sind an einen PICAXE 08M angeschlossen, der den Bereich vor dem Fahrzeug ’scannt‘ und kontinuierlich Servoposition und Entfernung per serieller Schnittstelle übermittelt. Dazu passend habe ich meine Software auf Windows umgestellt, hier schonmal die I2C Klasse für Visual Studio 2003, funktioniert bestimmt auch mit VC6.

fotos 21.11.05 105fotos 21.11.05 104

Der oben genannte SBC ist aus dem Rennen, das Ding frisst Strom wie nix, mit dem 7AH Akku läuft der nur ca. eine Stunde, also benutze ich im Moment wieder das IBM Notebook, werde aber wohl später mal komplett auf Microcontroller umsteigen, da ich gerade Datenblätter zum Controller und CCD chip meiner Webcam gefunden habe!! Im Moment kämpfe ich grade mit einer sinnvollen Ansteuerung der beiden Fahrtregler für die beiden Ketten, im besonderen Kurven fahren und dabei beschleunigen/bremsen…..

später gibt’s noch ein paar neue Bilder und mehr Code.

21.11.2005 :

So, weiter gehts. Mittlerweile habe ich es geschafft, meine eigenen Platinen herzustellen.

fotos 21.11.05 106fotos 21.11.05 107

Servocontroller Version 2 (mit PicAxe 18X)

Das Layout erstelle ich mit Eagle, von dort wird es direkt mit einem Edding 140S entweder auf eine normale oder auf eine photobeschichtete Platine mit meinem Sekonic Plotter geplottet.

Anschließend wird die Platine belichtet und entwickelt, oder kommt gleich zum Ätzen.

So sieht das aus, wenn man den Edding nicht lange genug trocknen läßt. Wenn es dann doch geklappt hat, dann kommt ein kleines von mir geschriebenes Programm, welches aus Eagle exportierte Bohrdaten einliest und den Plotter relativ zum ersten Bohrloch positioniert.Dazu habe ich noch eine kleine Standbohrmaschine mit einem Servo und einem PicAxe 08M Mikrokontroller versehen, der über die serielle Schnittstelle gesteuert werden kann, und habe eine Platinenhalterung an der Stifthalterung des Plotters improvisiert.

fotos 21.11.05 108 fotos 21.11.05 109

Man lädt also die Bohrdaten, positioniert mit den Plottersteuerungstasten die Platine an dem ersten zu bohrenden Loch und der Rest passiert automatisch:

Anschließend muß die Platine nur noch bestückt werden. Hier noch ein paar Bilder vom Platinenbasteln :

fotos 21.11.05 113 fotos 21.11.05 112 fotos 21.11.05 111 fotos 21.11.05 110

22.11.2005 :

und hier ist der aktuelle Servocontroller V3, mit SD20 und PICAXE 18X, alle Anschlüsse nach außen geführt und in der Mitte ein Anschluß für den i2c Bus :

fotos 22.11.05 002 fotos 22.11.05 003

Ich habe nur deswegen die große Platine genommen, da mir die kleinen ausgegangen waren 🙂

Dafür sieht man schön 3 Entwicklungsschritte auf einmal : geätzt, gebohrt, bestückt. Der Jumper oben links dient dazu, die serielle Schnittstelle entweder mit dem Programmieranschluß oder einem normalen Eingang zu verbinden. Jetzt werde ich mal schauen, wieviel Software ich in den PICAXE kriege, mit seinen 2 KB, oder ca. 600 Zeilen Basic…

23.11.2005 :

Hier noch ein kleines Experiment, Konturplotten auf Photolack mit einer Nadel, mal schauen, wie das so wird, immerhin spart man sich auch hier den Entwickler, und das Ätzbad wird geschont.

fotos 23.11.05 001

26.09.2006

Endlich, es ist soweit, nach langer Pause habe ich die ersten Probefahrten machen können:

18.05.2007

So, nach laaanger Zeit und Zwangspause wegen Tumorentfernung und Strahlentherapie gibt es jetzt mal wieder aktuelles.
Mittlerweile habe ich komplett auf Atmel-Controller umgestellt, mal abgesehen von dem SD20, der ja ein PIC ist.
Als Hauptcontroller dient ein ATMega32, der über zwei Latches ein 32Kx8 SRAM anspricht (allerdings noch irgendwie fehlerhaft), es gibt den klassischen RS232-Anschluß mit MAX232 chip für die Pegelanpassung (wird an den 4Pin-Anschluß links unter dem Quarz angesteck) und einen i2c-Bus. Diesen hab ich mit lustigen Steckern zusammen mit +5V und Masse über meine Platine ‚gezogen‘, so daß ich nun kleine Erweiterungsplatinen wie z.B. den SD20 aufstecken kann. Auerdem ist gleich unten auf dem Board ein PCF8574P 8Bit i2c-Portexpander verbaut, mit dem ich ein 16×2-LCD anspreche(n will….).

boardSD20

Und hier das ganze zusammengesteckt :

Board mit SD20

Da ich als Chassis ja einen Modellpanzer besitze, soll der sich natürlich auch bewegen, dazu habe ich die Elektronik aus einem defekten Modellbauservo an den Turm angeschlossen, so daß dieser sich jetzt auch wie ein ganz normaler Servo positionieren läßt. Der beige Servo rechts im Bild schwenkt einen Sharp GP2D12 Distanzsensor, die Motoren werden über zwei Modellbaufahrtregler angesteuert.

Turm und Schwenker Testaufbau Mega32

Wenn ich das ganze wieder zusammengebaut habe, habe ich quasi den Stand vom September, nur mit dem Mega32 als Gehirn…. Leider ist mit meine Gameboycamera verschieden, die sollte eigentlich an einem ATTiny26 zusammen mit einem Linienlaser als besserer Distanzsensor dienen. Jetzt werde ich spaßeshalber versuchen, entweder meine Creative Webcam II Parallel oder meine QuickCam VC mal per Microcontroller anzusteuern, zum Glück sind diese beiden Modelle recht gut im Internet dokumentiert.

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload the CAPTCHA.