Hexapode - Elektronik |
![]() |
Geschrieben von: Malte | ||
Donnerstag, den 18. März 2010 um 23:29 Uhr | ||
Konzeption | Wie bereits beschrieben, war es ein grundlegender Aspekt der Gesamtkonzeption des Hexapoden, die Steuerungselektronik sinnvoll zu modularisieren. Im Ergebnis verfügt nun jedes der sechs Beine über eine eigene Controllerplatine, die jeweils für die Sensorik und Motorik des ihr zugehörigen Beines zuständig ist. Die sechs Controllerplatinen kommunizieren mit einer hierarchisch übergeordneten zentralen Steuereinheit. Der entscheidende funktionelle Aspekt dieser Modularisierung besteht darin, dass jedes Bein für sich die Gelenkstellungen berechnen kann, aus der eine bestimmte Fußposition resultiert. Somit kann die zentrale Steuerung jedem Bein mitteilen, welche Position relativ zur Mitte des Roboters der entsprechende Fuß einnehmen soll, der Controller berechnet dann die dafür nötigen Gelenkstellungen, und stellt sie, sofern sie mechanisch möglich sind, ein. Da jeder der drei Freiheitsgrade eines Beines von jeweils einem Servomotor gebildet wird, besteht eine wichitge Aufgabe jedes Beincontrollers darin, die Ansteuerungssignale für seine drei Servomotoren zu generieren. Die Servos werden über ein sog. pulsweitenmoduliertes (PWM) Signal angesteuert, bei dem die Pulsweite die Stellung des Servos definiert. Die Servos verfügen ihrerseits über eine interne Regelungselektronik, die versucht, die tatsächlichen Servostellungen mit denen durch das PWM-Signal vorgegebenen in Übereinstimmung zu bringen. Sie sorgen also autonom dafür, dass sie trotz von außen einwirkender Störgrößen, namentlich der mechanische Belastung des Beines, die ihnen vorgegebene Stellung aufrechterhalten. Wenn man biologische Prinzipien im Auge behalten möchte, kann man hier durchaus eine gewisse Parallele zu Muskeleigenreflexen (http://de.wikipedia.org/wiki/Eigenreflex) herstellen, die in analoger Weise der Aufrechterhaltung eines motorischen Zustandes entgegen äußerer Störungen dienen. Abgesehen von seinen motorischen Aufgaben, verfügt jeder Beincontroller zusätzlich über zwei sensorische Funktionen. Zum einen werden ständig die über die drei Servos fließenden Ströme registriert. Natürlich besteht zwischen der mechanischen Belastung eines Servos und seiner Stromaufnahme ein regulärer Zusammenhang, der genutzt werden kann, um über die Stromaufnahme auf die mechanische Belastung zurückzuschließen. Die zweite erhobene sensorische Größe ist der Andruck des Fußes auf den Untergrund. Diese Messung erfolgt über einen speziellen resistiven Drucksensor, der in den Fuß integriert ist (siehe mechanischer Aufbau). Schaltung des Beincontrollers | Die folgende Abbildung zeigt den Schaltplan eines Beincontrollers. Es ist wenig originelles an dem Aufbau. Im Zentrum steht ein Atmel Mikrocontroller (µC) vom Typ AVR Mega32.
Weiterhin sieht die Schaltung noch die Möglichkeit vor, die Servos von der Spannungsversorgung zu trennen, etwa wenn aus irgendwelchen unvorhergesehenen Gründen (z. B. einer mechanischen Blockade des Beines) der Servostrom zu stark ansteigt. Dazu verwende ich den N-Kanal-MOSFET IRF7413, der bedarfsweise die gemeinsame Masse der Servos wegschaltet. Für diesen logic-level-MOSFET reicht die 5V-Logik des AVR aus, um ihn als Schalter einsetzen zu können. Um den Gatestrom zu begrenzen, befindet sich nur der 100 Ω Widerstand R6 an dem steuernden PB.0 des µC. Ansonsten verfügt die Controllerplatine noch über die vier Status LEDs D1 bis D4, die über einen Vorwiderstand direkt von Controller-Ports angesteuert werden.
Entwurf der Beincontroller-Platine | Da ich mich dafür entschieden habe, den Mega32 als Controller zu verwenden, war es unausweichlich, die Schaltung in SMD aufzubauen. In der PDIP Version ist der M32 doch ziemlich groß, sodass der Beincontroller damit nicht mehr sonderlich kompakt aufzubauen gewesen wäre. Das Platinenlayout habe ich mit Target gemacht, die nächsten zwei Bilder geben einen Eindruck vom Ergebnis. Herstellung der Beincontroller-Platine | Ein Bekannter war so freundlich, die Platinen für mich ätzen. Abgesehen von einigen nicht hunderprozentig exakt gebohrten Löchern (was per Hand aber auch wirklich kein Spass ist), ist die Qualität der Platinen völlig akzeptabel. Ein Nachteil der angewendeten einfachen (und damit preiswerten) Herstellungsmethode ist aber, dass damit keine Durchkontaktierungen zwischen Ober- und Unterseite der Platine möglich sind. Um diese musste ich mich also im Nachhinein kümmern. Natürlich ist das grundsätzlich kein Problem, in diesem Falle war es das aber schon. Tatsächlich musste ich nämlich eine ganze Reihe Durchkontaktierungen unter dem µC vorsehen. Da dieser nun sehr falch, laut Datenblatt mit nur 1.2 mm Abstand auf der Platine aufliegt, war es nicht möglich, so vorzugehen, wie man es im Allgemeinen tun würde, nämlich einfach einen Draht durch das Kontaktloch zu stecken und diesen oben und unten zu verlöten. Die Löstelle baut in diesem Falle viel zu starkt auf, sodass der µC darüber nichtmehr flach auf der Platine aufliegen könnte. Die nächsten Bilder zeigen, wie ich dieses Problem in den Griff bekommen habe.
Bestückung der Beincontroller-Platinen | Das folgende Bild zeigt eine fertig bestückte Beincontrollerplatine. Ich habe zwar bereits hin und wieder SMD-Bauteile verarbeitet, tatsächlich aber bisher nie in größerem Umfang als bei diesem Projekt. Ich war anfänglich etwas skeptisch, ob alles reibungslos klappen wird. Im Nachhinein kann ich nur jedem von zuviel Respekt vorm SMD-Löten abraten, es ist wirklich nicht schwer! Wenn man etwas "allgemeine Löterfahrung" mitbringt, ist das auch bei TQFP Bauformen wie dem hier verwendeten Mega32 mit 0.8 mm Beinchenabstand kein großes Problem. Für mich war der entscheidende Trick, Entlötlitze zu verwenden, so wie hier beschrieben. Man geht so vor, dass man das Bauteil mit einem konventionellen - natürlich schon möglichst feinen - Lötkolben verlötet. Wenn man dabei Brücken zwischen Anschlussbeinchen oder anderen Bauteilen erzeugt, was je nach Beinchenabstand unweigerlich passieren wird, nimmt man nachträglich das überflüssige Zinn mit der Entlötlitze wieder weg. Dazu legt man diese auf die zu bereinigende Stelle und erhitze sie dort mit dem Lötkolben. Die Litze saugt dann das überflüssige Zinn weg. Nach wenigen Versuchen bekommt man ein Gefühl für die Methode und kann sie dann gezielt und erfolgreich einsetzen.
Tags: |
||
Zuletzt aktualisiert am Montag, den 27. August 2012 um 17:23 Uhr |