© by Tom Fuchs
Fuchs Toms Homepage
Prolog Auf   dieser   Seite   gibt   es   viel   zu   lesen.   Ich   gebe   zu,   sogar   sehr   viel.   Es   ist   die   Geschichte   meines Roboter-Projektes.    Das    Projekt    betreibe    ich    schon    seit    1987,    also    schon    über    ein    viertel Jahrhundert.   Das   dies   so   lange   wird   hätte   ich   zu   Beginn   nicht   gedacht.      Auf   Grund   von   neuen Ideen   aber   auch   wegen   des   technischen   Fortschrittes   und   aus   der   Lebenssituation   heraus   kam diese   Zeit   zustande.   Aber   es   gibt   halt   immer   was   zu   schrauben.   Es   ist   halt   “Eine   unendliche Geschichte”.
T oms Ro boter P rojekt
Im Juli 2000 Tatsächlich, es sind schon 13 Jahre vergangen seit dem ich 1987 Anfing. Zu dieser Zeit war der C128 - Nachfolger des VC64 - schon durch die Amiga-Reihe abgelöst. Mein Elektroniktechniker - Studium hatte ich erfolgreich hinter mir und so blieb viel Zeit selbst gestellte elektronische und programmiertechnische Aufgaben und Ideen zu verwirklichen. Dies waren z.B. 8 Kanal Messgerät, Lichtorgel, Sounddigitalisierung, Temperaturmessung usw. zum einen und Videokassettenverwaltung, Haushaltsbuch, Kassenbuch und Programme für obige Gerätschaften zum anderen. Programmiert wurde zuerst in BASIC und dann in Pascal. Richtig Spannend  wurde es, als ich auf die Idee kam, mal ein Gerät zu bauen, das beweglich ist. Ein Gerät mit Motoren sollte es sein, die irgendwas bewegen. Der erste Gedanke war natürlich  ein Fahrzeug mit Rädern die per Elektromotoren angetrieben werden. Da ich damals schon bestrebt war, meine Hobbys Computer und Elektronik unter einen Hut zu bekommen, musste dieses Fahrzeug natürlich durch ein Computerprogramm gesteuert werden. Ich besaß ein Amiga2000 in dem bereits eine serielle Schnittstelle integriert war. Für mein Vorhaben ideal. Also ging es los. Das Ergebnis war eine rechteckige Sperrholzplatte, angetrieben durch zwei an der Seite angebrachten Schrittmotoren. Die Elektronik bestand zum einen aus der Ansteuerplatine der Schrittmotoren und zum anderen aus Lochrasterplatinen (rechts), auf denen die serielle Empfangsschaltung und diverse Treiberbausteine untergebracht waren. Alles befand sich auf der Holzplatte. Die Steuerbefehle kamen über eine serielle Verbindung per Kabel zur RS232 - Schnittstelle des Amigas. Gesteuert wurde über die Tastatur.   Als 1988 meine Tochter geboren wurde waren lange Spaziergänge und viel frische Luft angesagt. Für die Weiterentwicklung meines "Fahrzeuges" hatte ich immer weniger Zeit. Die Entwicklung kam ins stocken und schlief dann für ein paar Jahre ein. Trotz der langen Zeit die vergangen war verlor ich mein Projekt nicht aus dem Hinterkopf. Irgendwann - PC’s mit der CPU 386er DX40 waren HiTech Maschinen - kramte ich die Holzplatte wieder aus und begann neuen Ideen an meinem "Fahrzeug" zu verwirklichen. Es sollte nun eine Kommunikation aufgebaut werden, die es dem Fahrzeug erlaubte, den Zustand von Schalter  zwecks Hinderniserkennung zu übertragen. Überwachung der Akkuspannung und der Motorströme sowie eine Überwachung der Datenübertragung sollten realisiert werden. Das Programm sollte nicht nur all diese Informationen verarbeiten und entsprechende Befehle an das Fahrzeug senden, sondern auch die Informationen anzeigen. Als 1990 mein Sohn geboren wurde waren wieder lange Spaziergänge und viel frische Luft angesagt. Trotz alle dem  hatte ich die Zeit um für mein Steuerprogramm eine grafische Benutzeroberfläche, kurz GUI genannt zu programmieren. Da ich weiter den Amiga2000 als Steuercomputer benutzen wollte musste ich mich nun mit “Intuition” und “Gadgets” beschäftigen, eine weitere Herausforderung. Wurden meine Amigaprogramme doch bis her alle per Tastatur gesteuert, was die Programmierung sehr vereinfachte. Also las ich mich ein in die Programmierung der grafischen Benutzeroberfläche “Intuition” des Amigas, vergleichbar mit Windows bei den PCs. Die eine oder andere Nacht wurde sehr lang. Nachdem des öfteren diverses Kleinmaterial wie Maus oder Bleistift durch die Lüfte flog, ich der Verzweiflung nahe war, machten diese Gadgets irgendwann das was ich wollte. Alle Probleme, sowohl programmiertechnisch als auch später elektronisch wurden gelöst. Es entstand eine Programm mit ansehnliche Programmoberfläche gemäß "Intuition". Die Informationen, die aus der jetzt modular aufgebauten Elektronik des Fahrzeuges geliefert wurden und die Befehle zum Fahrzeug wurden jetzt an Hand von Textmeldungen, aufleuchtenden Rechtecken und Buttons angezeigt (Bildschirmfoto rechts und unten). Serielles Empfangs - und Sendemodul, Akkuspannung - und Stromüberwachung sowie Schnittstellenüberwachung wurden auf  Lochrasterplatinen (Bilder oben) zusammen gelötet. Jedes Modul hatte die Größe einer halben Europakarte und alle waren auf eine Busplatine aufgesteckt. Während der Fahrzeugbewegung war auf dem Bildschirm richtig was los. Die Datenübertragung klappte und es fuhr tatsächlich alleine. Das hatte schon irgendwas von einem Roboter ... und schon war der Name geboren: TRoP, Toms Roboter- Projekt. Ohne  die "Nabelschnur", über die die Informationen ausgetauscht wurden, würde sich der Aktionsradius von TRoP natürlich vergrößern. Die Nabelschnur musste also verschwinden und eine andere Datenübertragung musste gefunden werden. Nach mehreren Versuchen mit Infrarot und Ultraschall, die alle in die Hose gingen, verlor ich die Motivation und mein Projekt verschwand wieder in der Ecke. Manchmal kramte ich TRoP doch noch aus, um das Steuerprogramm zu optimieren und um die Programmoberfläche zu ändern (Bild unten). Auch dies war irgendwann getan und so lag TRoP irgendwo in einem Pappkarton und verstaubte. PC’s - mittlerweile hatte ich einen 486er DX2/66 - programmierte ich nun in “Turbo Pascal für Windows”. Ich machte Bekanntschaft mit Compuserve und AOL und ging online. 14400 Baud per Telefonmodem war HiSpeed. Das Internet kam ins Gerede und ich vergas tatsächlich TRoP. Der Amiga wurde ab und an nur noch von meinen Kindern als Flipperspiel benutzt. Irgedwann stand auch dieser in der Ecke und verstaubte. Auch mein Interesse an der Elektronik verschwand. Ich war Vater, ganz im interesse meiner Frau ;-) Monate und Jahre vergingen. Durch das Internet machte ich dann die Bekanntschaft mit den kleinen “Käfern”, den Mikrocontrollern. Nachdem ich mehr und mehr über diese kleinen "Wunderdinger" in Erfahrung brachte wurde mein Interesse an der Elektronik wieder geweckt. Ich besorgte mir Bücher und verstand, das man mit diesen kleinen Dingern die tollsten Sachen bauen konnte. Früher brauchte man aufwendige Elektronik. Heute baut man einen Mikrocontroller ein, etwas Elektronik drum herum und programmiert die Funktionalität. AD-Wandler mit 8 Kanälen, serielle Schnittstelle, Timer, Interruptsteuerung und jede menge Ein - und Ausgänge on Board. Elektronikerherz, was willst du mehr. Es ging wieder los. Projekt Nummer 1 mit einem SAB80C535 war die Temperaturmessung der Zentralheizung in meinem Haus, die heute noch in Betrieb ist.  Datenübertragung zum PC durfte natürlich nicht fehlen. Speicherung und Messwertedarstellung an Hand meines in Turbo Pascal programmierten “Messwerte-Gukk-Programms” war natürlich Pflicht. Nachdem dies fertig war hatte ich genügend Erfahrung gesammelt um zu Wissen, das meine damaligen Probleme mit der Intelligenz von  TRoP auf TRoP  gelöst waren. Ja es war sogar möglich auf kleinstem Raum noch mehr Funktionalität einzubauen. TRoP war wieder auferstanden und ich machte mich an die Planung eines "richtigen" Roboters. Er sollte Hindernisse erkennen und sie umfahren. Mit Armen und Köpfen die sich bewegen. Ich war wieder begeistert. Sofort wurde benöltigtes Werkzeug gekauft, denn ich wollte alles selber bauen. Nichts mehr aus Holz sondern aus Aluprofilen und Aluplatten. Ich besorgte mir ein kleines 19" Rack inkl. Busplatine für die Elektronik die wie früher auch wieder modular aufgebaut werden sollte. Die Verwendung des IIC-Buses trieb die Evolution von TRoP noch einmal gut voran. Die Vielfalt dieser IIC-Bausteine und ihre einfache Handhabung in der Programmierung sind für ein solches Projekt ideal. Zudem gibt es Unmengen von Datenblättern und Application Notes im Internet. Zu jedem IIC- Baustein gibt es ein mehrseitiges Datenblatt. Abgesehen von der Kontrollerplatine und den Ultraschallsensoren, baute ich alles selber, sowohl Mechanik als auch Elektronik. Es entstand ein 70 cm hoher Blechkasten mit oszillierendem Kopf. Tastenfeld zur Eingabe von Kommandos, LED-Display zwecks Ausgabe und jede Menge LEDs die blinkten. Er sah toll aus (Bild rechts). Im Oktober 2009 Trotz der vergangenen Monate und Jahren ging die Entwicklung von TRoP weiter. Von dem viereckigen Blechkasten mit oszillierendem Kopf ist nichts mehrt übrig. Als erste Weiterentwicklung und somit eine große Verbesserung der Beweglichkeit bekam TRoP einen Kettenantrieb. Obwohl die Kette mit all ihren Rollen, Kettenräder und Getriebemotoren eine relativ hohe finanzielle Investition war, hat es sich gelohnt. TRoP besitzt nun einen kräftigen Antrieb mit dem er sowohl im Haus als auch im Garten gut voran kommt. Probleme auf der Antriebsseite gab es keine mehr. Die einfache Blechplatte auf der vorher die Motoren, Getriebe und Antriebsachsen befestigt waren wurde durch eine U-Wanne aus 4mm Aluminiumblech ersetzt, an deren Schenkel außen die Rollen und Kettenräder für die Kette befestigt sind. Innen liegend Akku, Getriebemotoren und Motorsteuerplatine. Mit diesem Aufbau hatte TRoP einen tiefen Schwerpunkt und somit sehr guten "Stand". Probleme gab es keine mehr. Also Zeit um neue Ideen zu verwirklichen. TRoPs oszillierender Kopf sollte wie ein Lift aus der Versenkung hoch fahren und dann seine oszillierende Bewegung starten. Die Steuerung des Kopfes, nun etwas Umfangreicher, wurde aus dem SAB80C535 in ein CControl Unit2  verlagert. Also, 80C535 für Motoransteuerung, Akku - und Motorstromüberwachung, Radimpulsüberwachung und PC-Kommunikation; CControl für das Hoch und Runter fahren des Kopfes, für die oszillierende Bewegung per Servo und für das Steuern des Ultraschallsonar per IIC- Bus. Ohne Kommunikation läuft nichts. Beide sollten sich über eine 4Bit-Schnittstelle seriell Austauschen. Die CControl wurde zum Master erhoben. Sie empfängt vom  Slave 80C535 Informationen über Akku, Motorstrom und Radimpulse. Aus diesen Messwerten und den Ergebnissen der Umgebung durch das Sonar ergeben sich die Befehle zur Steuerung der Motoren die an den Slave gesendet werden. Programmiertechnisch gab es keine größeren Probleme. Beide CPUs sprachen mit einander und tauschten sich aus. Am Laptop konnte man die Messwerte und diverse Statusbits beobachten. Auch die Elektronik funktionierte einwandfrei. Wenn da nur nicht die Mechanik wäre, meine schwache Seite. Sieht zwar gut aus, wenn der Kopf sich aus der Versenkung hebt und sich dann hin und her bewegt, aber nur wenn er beim hochfahren nicht hängen bleibt. Die Mechanik des Liftes und des Kopfes war nicht optimal Sie musste noch mal durchdacht werden. Da aber mittlerweile wieder einige Monate vergangen waren - von Intels erstem DualCore-Pentium wurde berichtet - und TRoP ja auch irgendwann mal durch den Garten fahren soll wurde der Kopf mit samt seinem Lift einfach entsorgt. Das Ultraschallsonar wurde auf den Servo montiert, der wiederum in TRoPs Front eingebaut wurde. Jetzt oszillierte nur das Sonar und das war einfacher und brachte das selbe Ergebnis der Hinderniserkennung. Tage und Wochen vergingen wieder und TRoP war mechanisch und programmiertechnisch wieder im Gleichklang mit meinen Vorstellungen. Die Aufgaben wurden auf zwei Controller verteilt. CControl steuert jetzt nicht nur den Servo und den Ultraschallsonar über den IIC-Bus sondern auch die beiden Getriebemotoren über zwei Umpolrelais. Der 80C535 übernahm nur noch Überwachungsfunktionen, Messwerterfassung und die PC-Kommunikation. Die ganze "KI" befand sich zu dieser Zeit also im CControl So richtig rund lief es aber nicht. Es zeigten sich Probleme mit der Elektronik oder aber auch mit der CControl. Ab und Zu rührte sich der Servo bzw. der IIC-Bus nach einem Reset der CControl nicht. Nach mehrmaligen Warmstart oder Spannungsreset kam er dann wieder in die Gänge. Es war einfach kein Fehler zu finden, weder in der Elektronik noch in der Software. Ich vermutete das bei gleichzeitigem Betrieb von IIC-Bus und Servo-Modus im Betriebssystem der CControl irgendwas durcheinander kommt. Aber wie gesagt, nur eine Vermutung. Des weiteren zeigte sich das der mechanische Aufbau von TRoP für eine ausgiebige Fehlersuche an der Elektronik sehr ungünstig war. Um an die Platinen, die sich immer noch in einem kleinen 19Zoll-Rack befanden heran zukommen musste TRoPs Elektronik und Teile der Mechanik auseinander gebaut werden. Das dauerte einfach zu Lange. TRoP musste  einfacher werden. Obwohl dies am Laptop super aussah, aber muss unbedingt die Akkuspannung sichtbar sein? Was bringt die Anzeige des Motorstromes und der Empfangsfeldstärke des Funkmodules? Für die Beweglichkeit von TRoP nichts. Also wurde alle Elektronik die in weiser Voraussicht eingebaut wurde wieder ausgebaut. IIC-Ausgabeeinheit, wurde nie benutzt. IIC-Messwerterfassung, klappte super aber eigentlich unnötig. Somit entfiel auch das 19Zoll-Rack. Zwei CPUs? Eine genügt. "Back to the roots" und CControl wurde entsorgt, klappte eh nicht richtig. TRoP wurde auf der ganzen Linie abgespeckt. Ein Programm auf einem 80C535 und die Elektronik auf das nötigste reduziert. So soll es sein. Und wiedermal wurde TRoP umgebaut. PCs konnte man jetzt schon mit DualCore-CPUs kaufen. CPUs mit 4 Kernen sind im Gespräch. TRoP ist fertig umgebaut. Sowohl mechanisch als auch elektronisch. Er sieht gut aus. Flach in der Höhe und breit in der Breite. Ja so bleibt er. Durch die Benutzung des IIC-Buses ließ ich mir Möglichkeiten der Erweiterungen in der Elektronik offen. Weitere Ultraschall-Module? Vielleicht noch ein Kompass? Mal sehen. Nun konnte ich mich so richtig in die Programmierung der "KI" stürzen. Bald wird er wohl im Garten erste Runden drehen, Bild oben. Im April 2012 T.Ro.P. lebt weiter, trotz der mittlerweile vergangenen Jahre. Dual Core CPUs sind Geschichte, Core 2 Duo ebenfalls. Von QuadCore spricht auch keiner mehr, Aktuelle Desktop- CPUs bei Intel sind i3, i5, und i7, bei AMD die FX-Reihe, der Phenom II, der Athlon II und die AMD-Fusion-APUs. CPU und GPU verschmelzen zu einem Chip (Die), Rechenleistung und Grafikleistung in einem Die optimiert. Windows XP ist Geschichte und stolperndes Windows Vista ebenfalls. Aktuelles Microsoft PC-Betriebssystem ist Windows7. Windows8 mit seinen Apps steht schon vor der Tür. Handys nennt man jetzt Smartphones. Das sind kleine handliche Computer, bei denen das Telefonieren fast zur Nebensache wird. Internetanschluss per DSL, VDSL und über Fernsehkabel, ja sogar per Satellit sind keine Zukunft mehr. Geschwindigkeiten bis zu 100 MBit (Fernsehkabel) sind möglich. Fernsehen per Internetanschluss am Flachbildschirm. Wer hätte das zur "Geburt" von TRoP gedacht. Aber so ist der Fortschritt halt. Ohne Rechenleistung, wenn auch sehr viel geringer als Smartphones geht bei TRoP nix. Der damals benutzte SAB80C535 genügte voll und ganz. Die Programmierumgebung, Konsolenprogramm unter DOS, war jedoch in die Jahre gekommen. Sie ist auf aktuellen Betriebssystemen nicht mehr lauffähig. Da musste was neues her, was aktuelles. Änderung der Programmierumgebung hieß in meinem Falle auch Änderung des Mikrocontrollers. Nach ausgiebiger Recherche fiel meine Auswahl auf Atmels ATMega32, ein gängiger Mikrocontroller, programmierbar auch in C. Ich investierte noch in einen C-Compiler und es konnte losgehen. Programmiert wird das Steuerprogramm ab sofort in C. Zu dem benutze ich für neuere Projekte (Heizungssteuerung) das kostenlose “AVR-Studio” von Atmel, da dies auch auf der 64Bit-Version von Windows7 läuft. Tagelang entwickelte ich ein neues Board für den ATMega32 (Bild links). Da EPROM und RAM bereits im ATMega integriert sind hatte ich auf der EURO-Platine reichlich Platz für Treiberbaustein, Funkmodul, Servo-Ansteuerung und die zwei Umpolrelais für die Motoren. Dazu kam ein 2x16-Zeilen LCD-Display zur Anzeige der Akku-Spannung und diverser Fehler- und Statusmeldungen am IIC-Bus. Richtig Spannend wurde es dann bei dem Schreiben des neuen Programmes. “Learning by doing” war angesagt, sowohl bei der C-Syntax als auch bei dem Umgang mit der Programmierumgebung. Aber alles verlief bestens. Obwohl, die eine oder andere Fehlermeldung des Compilers brachte mich schon zur Verzweiflung. Aber zum Glück gibt es ja das Internet mit seinem riesigen Wissen. Alle Fehler wurden gefunden und natürlich behoben. Programmiert wird der ATMega mit TRoPs Steuerprogramm über den USB- Programmer direkt in der Schaltung per SPI-Schnittstelle. Welch eine Vereinfachung. Im Bild links die Steuerplatine und Stromversorgung. Die schwere Blechabdeckung wurde durch eine leichtere Hartpapierplatte ersetzt. Auch die Motoren wurden wegen des Haltewinkels ersetzt. Bessere mechanische Befestigung wurde durch schwächere Motoren erkauft :-(. Da ist wohl noch etwas an Überlegungen fällig. Der Ultraschall-Sensor fehlt noch mit entsprechender Softwareänderung und natürlich ein ansehnliches Gehäuse. Es gibt halt immer was zu Schrauben an dem Teil, denn es ist halt ... ... meine unendliche Geschichte.
… meine unendliche Geschichte