Andreas Harrenberg
Mikrocontroller » RoCa2011
RoCa2011 ist ein Microcontroller gesteuerter Lastarm (Roboterarm), der als gemeinsames Projekt des ComputerClub an der RWTH-Aachen e.V. (CCAC) und des Roboterclubs Aachen e.V. (RCA) angeboten wird. Grundlage ist ein kleines Microcontroller Board, welches von einem Mitglied des RCA entwickelt, und frei verfügbar gemacht wurde. Dieses Board ist mit einem ATMEL88(a) Prozessor und USB-Seriell-Wandler bestückt, welcher es erlaubt, über den Bootloader des Boards neue Programme einfach per Windowsprogramm in den Microcontroller zu übertragen, ohne dazu ein Programmiergerät zu benötigen.
Der Last- oder Roboterarm besteht aus einer sehr einfach gehaltenen Konstruktion aus Holzteilen und einfachen Servos, so wie sie im Modellbau eingesetzt werden.
Während einer einführenden Informationsveranstaltung konnte man Bausätze, sowohl für das Microcontrollerboard, als auch für die Mechanik, also den eigentlich Arm bestellen. In weiteren Veranstaltungen (das Projekt läuft aktuell noch) wurden bzw. werden Grundlagen der Programmierung vermittelt. Der Aufbau des Boards, immerhin müssen hier SMD-Bauteile und Bauteile mit einem Raster von 0.65mm (mit einem freien Abstand von 0.35mm) gelötet werden, fand auch in gemeinsamen Veranstaltungen statt. Aktuell sind bis auf wenige Ausnahmen alle Boards lauffähig zusammengelötet. Der Aufbau der Mechanik hat bisher noch nicht stattgefunden, und ist erst zu einem späteren Zeitpunkt geplant.
Fertig aufgebaute RoCa2011 Platine
Bedingt durch eine Urlaubsreise habe ich zwar 2 Veranstaltungen "verpasst", allerdings habe ich mich auch früher schon mal mit ATMEL Mikrocontrollern beschäftigt, sodaß dies nicht wirklich schlimm ist. Auch das (zweite) Board ist mittlerweile zusammengelötet und funktionsfähig, allerdings fehlt bei diesem Board noch ein MOSFET-Transistor und die Steckerleisten. Diese Teile werden dann in der kommenden Woche nachbestückt.
Als nächstes wird es dann an die zeitstabile Erzeugung eines Servo-Signals gehen, hier werden Timer- und Interrupt Routinen benötigt, fertig aufgebaut sollen ja 5 Servos "gleichzeitig" angesteuert werden.
2011-09-15
Während der Veranstaltung, die diesmal beim RCA stattfindet, werden die letzten Boards mit dem Bootloader geflasht und bei jedem wird sichergestellt das alle zum Kompilieren nötige Software sowie das Programm zum Übertragen des erzeugten HEX-Files per Bootloader installiert ist, und auch wirklich funktioniert. Anschließend werden noch einige Programmierbeispiele durchgesprochen die von der Organisatoren zur Verfügung gestellt wurden. Themen waren unter anderen: IO, Timer, Interrupts und serielle Kommunikation.
2011-10-05
Mittlerweile wurden die ersten Teile des Lastarms und die Servos an die Teilnehmer verteilt. Somit kann man schon die ersten beiden Servos auf der Grundplatte verbauen und mit den übrigen Servos "spielen". Hierzu hat Michael Schwingen ein kleines Demoprogramm geschrieben welches die 8 Servoausgänge des Boards anspricht. Dieses Programm habe ich zum Testen mal ein wenig erweitert um ein wenig mit den Servos arbeiten zu können. Dieses Programm kann man hier finden.
Aktuell entsteht gerade ein neues "ServoControl" Program, welches aber noch in einem sehr frühen Stadium ist, sobald es einen einsatzbereiten Status hat wird es auch hier erscheinen...
2011-10-10
Beim Debuggen mit aktivierter float-lib für printf habe ich mir reproduzierbar den Bootloader "zerschossen". Erste Vermutung war das durch die float-lib der Code zu groß wurde und der bootloader sich dadurch selber überschrieben hätte. Nachdem ich das am nächsten Abend noch mal (mit dem zweiten Board) ausprobiert habe, war klar das der Bootloader eine Fehlermeldung auswirft und sich nicht selber überschreibt wenn man ein zu großes Hexfile angibt. Michael Schwingen kam dann auf die entscheidende Idee doch noch mal die "Fuses" des AVR zu kontrollieren. Ein Board hatte er mir vorab aufgebaut, die Einstellungen für die Fuses hatte ich dort ausgelesen und in mein selber aufgebautes Board übernommen. Diese Einstellungen waren aber die Default-Einstellungen und passten nicht zum Bootloader. Dieshabe ich aber auf einer ersten Veranstaltungen direkt (für beide Boards) korrigiert, zumindest dachte ich, daß ich es für beide Boards gemacht habe. Eine Kontrolle ergab das in einem Board noch die falschen Werte für die Fuses eingestellt waren, daher konnte der Bootloader dort auch überschrieben werden...
Nachdem ich das dann korrigiert hatte, verhielt sich das Board dann auch wieder so erwartet.
2011-10-23
Nachdem in der Zwischenzeit schon die Arme des Lastarms verteilt worden waren, wurden jetzt auch die letzten mechanischen Teile für den Greifer ausgeteilt, d.h. die Mechanik ist damit komplett. Mein Lastarm ist mittlerweile auch zusammengebaut, allerdings reichen die Längen der Servoanschlüsse jetzt nicht mehr aus. Verlängerungen müssen noch im Club (CCAC oder RCA) gelötet werden. Hier muss noch irgendwie sichergestellt werden das sich die Kabel nicht in den Armen verheddern und dann evtl. abreißen.
Es wurde eine "mechanische Grund- oder Mittelstellung" vereinbart, in der der Lastarm stehen soll, wenn die Servos jeweils ein 1.5ms Signal erhalten. Dies soll sicherstellen das die Programme der Teilnehmer noch "halbwegs" untereinander kompatibel sind. Die Reihenfolge der Servos wurde aufsteigend von der rotierenden Basis (Servo 0) bis zum Greifer (Servo 4) festgelegt.
Auf der Veranstaltung habe ich noch einen allgemeinen Vortrag gehalten in dem ich u.A. auf Probleme mit Rechenzeit aufgrund von (überflüssiger) float-Berechnung hingewiesen habe. Meine selbstgeschriebene ISR war deutlich erweitert, benötigte dann aber ca. 150 us, was die Generierung des Impulses für den "nächsten" Servo gestört hat. Durch Optimierung bzw. Umstellung auf int-Berechnungen habe ich die Laufzeit der ISR jetzt zwar auf 28 us reduzieren können, ich denke jedoch, daß da noch mal ein komplettes Re-Design fällig ist.
Auf den nächsten beiden Veranstaltungen soll es dann noch jeweils einen Vorträg zur Positionsberechnung des Lastarms (Vorwärtskinematik) geben. Zuerst ein einfacher geometrischer Ansatz, im zweiten Vortrag dann die formale Berechnung über Koordinatentransformation und Denavit-Hartenberg Parameter/Konventionen.
Danach ist die Veranstaltungsserie dann erst einmal zu Ende, das Projekt geht dann in den "normalen" Clubbetrieb des RCA und CCAC über.
2011-11-08
Stärkere Servos - Ein "Reinfall"...
Da der Lastarm manchmal etwas Schwierigkeiten hat, sich aus der völlig gestreckten "Liegeposition" wieder zu erheben, hatte ich beschlossen, für die ersten beiden Servos stärkere Modelle zu verwenden. Kurz gesagt war dies leider ein Reinfall, Details dazu gibt es hier.