Home
Handbuch SandboxS 2 - Hagenberg Hexapod Robot Pages
Contents
1. QL Q a ee a Q 169 974 Wart test Bub en 170 975 usb tx ready ee euer nun 170 Q0 uat usb Mish uds uw t Rey e NEE dte 171 05 ei waka 9m eda dem Oo bo OE A ES 171 ECL Lucus eer Eae vor dex cR oe Wem dU RO Er ar ka 171 052 Sethedbnghiness o o rensa kx a k a a EU 172 2623 RC SELECTA og cy cg ooo ea RR 173 9954 BC SelbervoMOde esos oom e o en 173 9 8 5 SetGlobalServoMode 175 956 SetServoPwmDirect oo coc e ea ee RR XR d 176 087 RC GetServoCumentPwm 212 2222 or eS kg 3 177 988 RC SetServoPhiSpeed 22 2 178 9 89 RC SetServoPhiDirect 2 2 2 om mm nen 179 9 8 10 RC GetServoDeltasTOGo 181 9 8 11 RC GetServoCurrentDeltaPhi 182 9 8 12 RC_GetServoCurrentPhi 183 9 813 RC_SetServoRotation 185 9 8 14 _ 186 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 INHALTSVERZEICHNIS 9 9 8 15 RC SetServoAttributesTable 186 9 8 16 RC SetServoAttributesTable 186 9 8 17 RC SetGlobalServoAttributesTable 186 9 8 18 RC SetGlobalServoAttributesTable 18
2. R ckgabewert R ckgabewert Beschreibung Data Akkusspannung in mV Anmerkung Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden Beispiel Einschalten von AVR LED 1 sobald die Akkuspannung 5 5V 5 5V 5500mV unterschreitet int main uintl6_t Voltage 0 function that has to b xecuted in every appli cation to initialize the interface with the FPGA SL2 Init while 1 Voltage SL2 GetBatteryVoltage if Voltage lt 5500 SL2 AvrSetMsgLed SL2 MSG LED 1 SL2_MSG_LED_STATUS_ON return 0 9 4 12 SL2 ExtAvrGetAdcValue uintl16 t 512 ExtAvrGetAdcValue in uint8 t Number Beschreibung Misst die Spannung an einem ADC Pin des AVR Parameter Bedeutung Number Gibt den Index des ADC an an dem die Spannung gemessen werden soll Kann folgende Werte annehmen 512 EXT 2 am Erweiterungsstecker des AVR angeschlossen oder S L2 EXT 3 Messung der Akkuspannung R ckgabewert R ckgabewert Beschreibung Number 16 bit Wert des ADC aus dem der entsprechende Spannungswert berechnet werden kann SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 160 9 SOFTWARE FUNKTIONSBIBLIOTHEK Anmerkung w e Die von dieser Funktion zur ckgegebenen Werte sind keine Spannungen sondern lediglich Zah lenwerte die in einem bestimmten Verh ltnis zur messenden Spannung st
3. functions EE ILL AL ERS AL ELLE LATA GOAL stream I O wrapper functions anb int int int do all the initialization stuff here strm uart putc char c FIL strm uart_getc FILE xs strm usb putc char c FILE strm usb getc FIL void Init woid xs S re 5 turn turn uart putc c return 0 unsigned char uart getc uart usb putchar c return 0 unsigned char uart usb getchar SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 140 8 INVERSE KINEMATIK initialize sandboxs2 AVR SL2 Init i initialize robotics chip RC Init initialize usb uart usb init initialize uart uart init UART CALC BAUDRATE 38400 clear all LEDs RC SetLedClearAl1 activate stream I O gStrmUSB fdevopen strm usb putc strm usb getc gStrmUART fdevopen strm uart putc strm uart enable interrupts sei get keys state KeysState GetKeysState void uintl6 t i key is still pressed if SL2_AvrGetKey SL2 KEY 0 delay loop 2 0xfff return INCREMENT if SL2 AvrGetKey SL2 KEY 1 delay loop 2 0xfff return DECREMENT wait on key while SL2 AvrGetKey SL2 KEY 0 amp amp SL2 AvrGetKey SL2 KEY 1 delay loop 2 0xffff evaluate keys if SL2 AvrGetKey SL2 KEY 0 amp amp SL2 AvrGetKey SL2 KEY 1
4. 228 Layoutlop Layet u ercas s a ke Na ae eae age wa da 229 RS Layout gt 2 2 2 2224 4 a Ea d 230 C RC Empf ngerumbau zum Anschluss an die SandboxS 2 231 D Literaturverzeichnis 235 Index 235 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 11 1 berblick d Kn BR rra Abbildung 11 Die EEE t dis p SandboxS 2 Mur Me DIST LATE don AE UA Das Embedded System SandboxS 2 Abb 1 1 links ist eine frei kon gurierbare Steuerelektronik f r bis zu 24 Servoantriebe Bei der Entwicklung stand das Feld der Embedded Robotics als wichtigster Anwendungbereich im Vordergrund Als Anwendungsbeispiel seien die Hexapod Laufroboter Wilde 13 und Captain Ahab genannt die in Abbildung 1 2 zu sehen sind Das System sollte dar ber Abbildung 1 2 Zwei Hexapods vor ihrem Zuhause in Hagenberg Links Eine Wilde 13 Pal3 Rechts Die wesentlich gr ere Konstruktion Captian Ahab Bo20 hinaus auch f r Roboter verwendbar sein wie sie Abb 1 3 zeigt SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 12 1 BERBLICK Abbildung 1 3 Mittlere bis gro e Octapods stecken die obere Grenze des Einsatzspektrums der Sand boxS 2 ab Die Aufnahmen entstanden im Laboratorium von HSSE und bei einer Exkursion auf dem Versuchsfreigel nde in Hagenberg M hlkreis Die SandboxS 2 eignet sich ber die Robot
5. R ckgabewert Der R ckgabewert bestimmt ob der Punkt angefahren werden konnte oder nicht R ckgabewert Beschreibung IK FAILED Der Punkt kann nicht erreicht werden SUCCESSFUL Der Punkt wurde angefahren Anmerkung e Bevor diese Funktion verwendet werden kann m ssen SL2_Init RC_Init RC_Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel und Berechnet die Winkel f r den Punkt 138 80 0 im rotierten Coxa System dieser Punkt entspricht 159 0 0 im Coxa System und f hrt diesen an program entry point int main void uint8_t i 0 initialize all modules copy the linearisation table into the RoboticsChip RC_SetGlobalServoAttributesTable_P gTable activate all servos for i 0 i RC NUMBER OF SERVOS i RC SetServoPhiDirect i 1609 RC_SetGlobalServoMode RC_SERVO_MODE_PHI_DIRECT enable cordic interrupt RC_SetInterruptO RC_INTTERRUPT_MASK_CORDIC SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 208 9 SOFTWARE FUNKTIONSBIBLIOTHEK kinematics 138 80 0 calculate th IK_SetLegMovement invers 2 for return 0 9 9 5 IK GivensTransformation IK Point2d GivensTransformation in in IK KNEE _UP IK_Point2d Input Beschreibung uint8_t Leg F hrt die Givens Transformation
6. Bit 7 6 3 4 0 85 5 ImCord ImNeut 0x85F4 InvPpm NrOfChannels unsigned 3 downto 0 Tabelle 7 20 Register IrgMaskRcRxCtrl Alle Interrupt Mask Bits und InvPpm sind nach dem Einschal ten deaktiviert 0 die Anzahl der Kan le ist 2 Les und schreibbar Bit 11 ImCord Interrupt Mask Bit das die Ausl sung eines Interrupts INTO nach der Fertigstel lung eines Berchnungsauftrages des CORDIC Prozessors siehe Abschnitt 7 22 erlaubt Wert 1 oder untersagt Wert 0 Bit 10 ImNeut Interrupt Mask Bit das die Ausl sung eines Interrupts INTO beim Aktivieren der Servogrundstellung siehe Abschnitt 7 8 erlaubt Wert 1 oder untersagt Wert 0 Bit 9 ImPnk Interrupt Mask Bit das die Ausl sung eines Interrupts INTO beim Aktivieren der Paniktaste siehe Abschnitt 7 9 erlaubt Wert 1 oder untersagt Wert 0 Bit 8 ImPs2 Interrupt Mask Bit das die Ausl sung eines Interrupts INTO beim Eintreffen neuer Daten von der PS 2 Schnittstelle siehe Abschnitt 7 14 erlaubt Wert 1 oder untersagt Wert 0 Bit 5 ImRc Interrupt Mask Bit das die Ausl sung eines Interrupts INTO beim Eintreffen neuer Daten vom RC Empf nger erlaubt Wert 1 oder untersagt Wert 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 112 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Bit 4 InvPpm Die meisten Fernsteuersender und empf nger arbeiten mit sogenannten nichtinver tierten PPM Signalen Hier
7. Der Schaltkontakt zur Anzeige der Anwesenheit einer Karte schaltet die Hauptstromversorgung der SandboxS 2 ein siehe auch Abschnitt 3 4 Die Stellung des Schreibschutzschiebers der SD Karte l sst sich ber den zweiten Schaltkontakt vom AVR aus einlesen Selbstverst ndlich braucht die Be deutung dieses Schiebers sich nicht auf einen Schreibschutz f r die SD Karte festzulegen Ebensogut w re es beispielsweise denkbar von dessen Stellung das grunds tzliche Verhalten eines Roboters ab h ngig zu machen 5 2 0 1 Formatierung der SD Card unter Windows XP Die Formatierung der SD Card sollte nicht mit dem in Microsoft Windows integriertem Programm zum Formatieren von Secure Digital Karten erfolgen Karten die auf diese Art formatiert wurden sind nicht les und schreibbar weil das angelegte Dateisystem mit den Funktionen der Softwarebibliothek nicht voll kompatibel ist Um die Speicherkarte dennoch unter Windows zu formatieren muss wie folgt vorgegangen werden a Das auf der mitgelieferten CD be ndliche Programm Pfad SbxRemMedia starten Nun be ndet sich ein neues Icon SD Karte im Sytem Tray von Windows b Durch einen Rechtsklick auf dieses Icon wird ein Men ge ffnet in dem Format media aus gew hlt wird siehe Abb 5 5 GC Format media D Scan for media Update media 2 Select file 2 Recent files Auto update file gt Options Exit SandboxX Abbildung 5 5 Sys
8. WE EFE PEE EIE E EE global variables definitions WIN BEER TAA AAA pointers to I O stream structures FILE gStrmUSB NULL FILE gStrmUART NULL FARA P B ERE LAA ALL AML AAA TDA AAAI EB 7 PLLLRU LLARA BIER PPP PEPPER ILULA stream I O wrapper functions int strm uart putc char c FILE xs uart_putc c return 0 int strm uart getc FILE xs return unsigned char uart getc int strm usb putc char c FILE s uart usb putchar c return 0 int strm usb getc FILE s return unsigned char uart usb getchar do all the initialization stuff here void Init void initialize sandboxs2 AVR peripherals SL2_Init initialize robotics chip Initl initialize usb uart usb init initialize UART set baud rate to 38400 uart init UART_CALC_BAUDRATE 38400 activate stream I O gStrmUSB fdevopen strm usb putc strm usb gStrmUART fdevopen strm uart putc strm uart getc enable interrupts SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 40 2 ERSTE SCHRITTE sei program entry point int main void led number uint8_t led 0 initialize system Init set AVR status led and wait on key SL2
9. 205 954 setLegMiovement ou ocea a dx yos dogm 206 995 IK GivensTramsformdtion RE 208 i e 5 527 3 209 222229858564 u W G 8 209 9 10 2 fat cluster data store 210 9 109 Gelllustersize 12202225056 210 9 104 GeiBytesPersee u rou n oko ow Ro Bl 211 2103 tab search BE ca Seg ae een ie ERES 212 9 10 6 Tat read Je 22222225 hw a Re ee 4 lt gt 213 310 3 iat wite 214 9 11 Strukturen und benutzerde nierte Typdeklarationen 216 9 11 1 Robotics Chip reses ho moy aawa da wa 216 0112 Invetse Kinematik os na ca wa 9 km y W s s OX x Ro 217 A Schaltplan 219 B Platinenlayout 224 1 Platinenfoto ohne Best ckungsdruck 224 B 2 Platinenfoto ohne Best ckungsdruck 225 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 10 INHALTSVERZEICHNIS Platinenfoto mit Aufklebern 225 BA Platinenfoto mit Aufklebern und 226 B 5 Foto der Platinenunterseite 226 B 6 Best ckungsaufdruck 22 227 B 7 Aufkleber statt
10. Parameter Bedeutung ChannelNumber Nummer des Kanals der gelesen werden soll R ckgabewert R ckgabewert Beschreibung Data Von der Fernsteuerung gelesene Daten des angegebenen Kanals Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Zeigt die empfangenen Daten direkt auf den Servo LEDs 0 und 1 int main uint8 t Temp 0 uint16 t RxData 0 proxy function for whole initialization Init clear all LEDs RC SetLedClearAl11 RC SetRxControl RC RX NO INVERT 2 while 1 for Temp 0 Temp lt 2 RxData RC_GetRxData Temp if RxData 0 divide the number by 16 otherwise changes are not visible non linear RC SetLedBrightness Temp RxData gt gt 4 return 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 192 9 SOFTWARE FUNKTIONSBIBLIOTHEK 9 8 25 RC_GetGamePadButtons uintl6_t RC_GetGamePadButtons Beschreibung Liest den Status aller Tasten des Sony Playstation 2 Gamepads R ckgabewert R ckgabewert Beschreibung Buttons Am Gamepad gedr ckte Tasten Die Zuordnung zwischen Bits und Tasten entspricht jener in Abbildung 7 29 auf Seite 121 Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Deaktiviert Servo LED 0 wenn eine der Rich
11. time needed for movement 128 Steps 20 ms 2 56 sec while 1 return 0 9 8 9 RC_SetServoPhiDirect inline void RC_SetServoPhiDirect in uint8 t ServoNumber in uintl6_t Angle SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 180 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beschreibung Erm glicht die Bewegung eines Servos im PhiDirect Modus Der Modus ist in Abschnitt 7 7 auf Seite 102 erkl rt Parameter Bedeutung ServoNumber Nummer des Servos das bewegt werden soll Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich Angle Endwinkel der Bewegung im Bereich 0 4095 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e UmRC_SetServoPhiDirect verwenden zu k nnen muss der angegebene Servo zuvor in den Modus RC_SERVO_MODE_PHI_DIRECT geschalten werden T e Bevor diese Funktion verwendet werden kann m ssen SL2_Init undRC_Init aufge rufen werden Beispiel Die Positition von Servo 0 wird bei jedem Tastendruck von KEY 0 um 90 ver ndert int main proxy function for whole initialization Init clear all LEDs RC SetLedClearA11 RC SetServoMode 0 MODE PHI DIRECT 1 1 RC_SetServoPhiDirect 0 0 SL2 AvrWaitOnKey SL SL2 AvrWaitOnKey SL EY 0 SL2 KEY PRESSED EY 0 SL2 KEY NOT PRESSED 2_K 2_K SL2_SetS
12. Bits 7 bis 0 JoyR x Achse Dieses Register enth lt die momentane Auslenkung f r die x Achse des rechten Joysticks ausgedr ckt durch eine vorzeichenlose 8 Bit breite Zahl wobei 0x00 der Auslenkung nach ganz links und OxFF der Auslenkung nach ganz rechts entspricht SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 122 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 17 1 3 Register SonyPs2GamePadJoyL Dieses Register gibt die Stellung des linken Joysticks in der gleichen Weise wie schon beim Register SonyPs2GamePadJoyR f r den rechten Joystick beschrieben an Bit 7 6 5 4 5 2 0 87 7 JoyL y Achse unsigned 7 downto 0 0x87C6 JoyL x Achse unsigned 7 downto 0 Tabelle 7 31 Register SonyPs2GamePadJoyL Nur lesbar Bits 15 bis 8 JoyL y Achse Dieses Register enth lt die momentane Auslenkung f r die y Achse des linken Joysticks ausgedr ckt durch eine vorzeichenlose 8 Bit breite Zahl wobei 0x00 der Auslenkung nach ganz oben und OxFF der Auslenkung nach ganz unten entspricht Bits 7 bis 0 JoyL x Achse Dieses Register enth lt die momentane Auslenkung f r die x Achse des linken Joysticks ausgedr ckt durch eine vorzeichenlose 8 Bit breite Zahl wobei 0x00 der Auslenkung nach ganz links und OxFF der Auslenkung nach ganz rechts entspricht Das Interface f r das Playstation Gamepad verf gt nicht ber die M glichkeit neue Werte mittels eines Interrupt Flags anzuzeigen D
13. uint8 t X uint8 t Y RC GamePadJoystickData Um alle Informationen des Sony PlayStation 2 Gamepads lesen zu k nnen existiert die Struktur RC_GamePadData Darin sind zwei Strukturen vom Typ RC GamePadJoystickData f r die beiden Joysticks und eine 16 Bit Variable f r die Tasten enthalten Die Belegung welche Taste wel ches Bit in Buttons beeinflusst ndet sich in Abschnitt 7 16 auf Seite 115 typedef struct uint16_t Buttons RC_GamePadJoystickData JoystickLeft RC_GamePadJoystickData JoystickRight RC_GamePadData 9 11 2 Inverse Kinematik F r die Berechnung der inversen Kinematik ist ein dreidimensionales Koordinatensystem n tig aus dessen Koordinaten die Winkel f r die Servos berechnet werden typedef struct IK_Point3d intl6 t X SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 218 9 SOFTWARE FUNKTIONSBIBLIOTHEK inti6 t Y intl16 t 7 IK Point3d Weil die H henkoordinate bei der Drehung der einzelnen Koordinatensysteme in eine einheitliche Richtung nicht ver ndert wird existiert ein zus tzlicher Datentyp f r zweidimensionale Koordina ten typedef struct IK Point2d 16 t x zntt6 t y IK Point2Qg Die Winkel aller Servos f r ein Bein sind in einer Struktur abgelegt und zus tzlich mit einem Sta tusbyte Calculation versehen falls es sich um das Berechnungsergebnis der inversen Kinematik handelt typedef struct IK HexapodLegAngles intl6_t Phi0
14. 2 5 1 Projekt erstellen Ein neues Projekt muss erstellt werden Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 1 2 5 2 Programm schreiben Im soeben erstellten Projekt kann der Programmcode nun eingegeben werden 2 5 2 1 Programmspezifikation Das Programm bringt die LEDO zum Aufleuchten Einen kurzen Zeitpunkt sp ter erlischt LEDO und beginnt zu leuchten Dies wiederholt sich f r alle LEDs bis LED11 Danach wird wieder bei LEDO begonnen Gestartet wird das Lauflicht mit der Taste Key_Avr0 Zus tzlich wird ein Begr Bungstext ber die USB Schnittstelle ausgegeben 2 5 2 2 Quellcode Ke ke ke e ke e ok e ck ke ke ke Ke ke oe e oe e ck e ck e ck e ok e Ke Ke e oe e o e ce e c e ke ok e ke ke e ke oe e e e e e e e e e e e ke e e e Workfile 7 main e Author Christian Raschko Date 2007 08 20 Description main program Revision e 3 3 ok ke Ke o ke e ke ke oe e o e ok e c e ok e Ke e e oe e oe e oe e ck e ok e ce SK e oe e oe e ok e oe o e o e Ke ke SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 5 LAUFENDE LICHTER 39 EE E EE includes FIT WE PET EET FEE FENDER UI standard library includes tinclude lt stdio h gt AVR specific includes include lt avr interrupt h gt include util delay h hexapod library includes include SandboxS2 lib h include RoboticsChip h include uart h include uart usb lib nh
15. 7 19 Versionsnummer des Robotics Chips Die Versionsnummer des Robotics Chips ist als Nur Lese Register angelegt das per Software erfragt werden kann Die Version ist als vierstellige Dezimalzahl in ASCII Codierung also als String mit vier Zeichen verf gbar 7 19 0 5 Register VersionDigits32 Bit 0x87F9 ASCII Zeichen 1000er Stelle 0x87F8 ASCII Zeichen 100er Stelle Tabelle 7 33 Register VersionDigits32 1000er und 100er Stelle der Versionsnummer des Robotics Chips Nur lesbar 7 19 0 6 Register VersionDigits10 Bit 7 0x87FB ASCII Zeichen 10er Stelle Ox87FA ASCII Zeichen ler Stelle Tabelle 7 34 Register VersionDigits32 10er und ler Stelle der Versionsnummer des Robotics Chips Nur lesbar 7 20 Demo Mode Der Robotics Chip wird aus Gr nden des Kopierschutzes 10 bis 11 Minuten nach dem Einschalten deaktiviert Der deaktivierte Zustand wird durch Aufleuchten beider Message LED am FPGA Ms gFpga0 und MsgFpgal angezeigt Au erdem wird eine mittlere Lautst rke des Summers eingestellt 7 24 RAM Erweiterung Vom FPGA werden 2 kByte RAM der Wortbreite 8 Bit in den Adressbereich des AVRs eingeblendet Diese be nden sich im Adressbereich 0x9000 Ox97FF Dieses externe RAM kann als Erweiterung des internen RAMs verwendet werden wobei jedoch im Unterschied zu diesem pro RAM Zugriff drei Taktzyklen statt eines einzigen notwendig sind Das RAM wird nach dem Einschalten weitgehend mit dem Wert 0x
16. Adr unsigned 7 downto 0 Tabelle 7 16 Register DeltasToGo Dieses Register hat nur im Mode PhiSpeed eine Bedeutung Adr 0x8600 2ns ng ist die Servonummer 0 bis 23 Nur lesbar 7 7 1 Geschwindigkeitsabstimmung Der Ablauf der Servobewegungssequenzen verwendet die Pulszyklen der Servos als Zeiteinheit f r einen Winkelschritt Die Dauer dieser Pulszyklen ist f r alle Servos die gleiche Sie kann im Bereich von 18 37 bis 29 2 ms eingestellt werden Die Grundeinstellung nach dem Einschalten liegt bei 20 ms Durch Justieren dieser Zyklusdauer k nnen die Bewegungssequenzen auch im Nachhinein noch leicht in ihrer Ablaufgeschwindigkeit ver ndert werden beispielsweise um sie genau an das Tempo eines Musikst ckes anzupassen 7 7 1 1 Register TuneFine Mit diesem Register ist die Dauer des Servopulszyklus in Schritten von 0 50 us stimmbar Die Grund einstellung des Registers nach dem Einschalten erzeugt einen 20 ms langen Zyklus Der zugeh rige Registerwert ist 1619 0x0653 Der Wert 0x000 entspricht einer Verringerung um 0 8095 ms Der Wert OxOFFF entspricht einer Erh hung um 1 239 ms Da die Zyklusl nge von der Genauigkeit des Taktgebers auf der SandboxS 2 abh ngig ist wird eine Zykluszeit von exakt 20 ms im allgemeinen nicht mit dem Standardwert sondern bei einem leicht abweichenden Wert f r TuneFine erreicht Bit Ox85F7 unsigned 11 downto 8 0x85F6 unsigned 7 downto 0 Tabelle 7 17 Register TuneFine Wertebereich
17. PASS mit gr nem Punkt erkennbar Im rechts in Abb 6 8 gezeigten Fenster ist dies zu sehen Falls es zu Problemen kommt ist das Downloadkabel oder der Parallel Port die h u gste Ursache Ob das Kabel von ispVM System erkannt wird kann mit Men Options Cable and I O Port Setup gepr ft werden Es ffnet sich ein Fenster siehe Abb 6 9 in dem mittels des Buttons Auto SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 78 6 FPGA LATTICE XP LFXP3K 1 LSC ispYM System New Scan Configuration Setup FLASH Erase Progra N Abbildung 6 5 Die egScan Chain wurde von ispVM er kannt Der Baustein LFXP3C ist das FPGA auf der Sand boxS 2 Es ist der einzige Bau stein in der Scan Chain Device Information E NL 9 C hsserobchipv2 jed Abbildung 6 6 Hauptfenster von ispVM unmittelbar nach Start des Programmes Abbildung 6 7 Dialogfenster zum Eintra gen der Kon gurationsdatei und Infofenster als Reak tion auf das Schlie en des Dialogfensters SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 6 3 FPGA KONFIGURATION 79 Abbildung 6 8 Der Downloadvorgang dauert ca 20 bis 40 Sekunden und schlie t hoffentlich korrekt also mit dem RT Kennzeichen PASS ab Cable and 1 0 Port Setup x Lattice z Abbildung 6 9 Kabeltest in ispVM System SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2M
18. er sein Wird gegen diese Regel versto en kommt es zu internen berl ufen der Arithmetikeinheiten unde niertes Verhalten ist die Folge Um die gew nschte Drehrichtung des Servos einzustellen kann der Parameter Reverse im Register ModeIrqMask siehe Abschnitt 7 5 3 1 dienen In Kombination mit der Linearisierungstabelle ist es m glich praktisch aus jedem Modellbauservo ein Servo zu machen dass sich zum einen bei steigenden Winkelwerten in mathematisch positiver Drehrichtung bewegt also entgegen dem Uhrzeigersinn und dass zum anderen eine genaue und direkte Einstellung des gew nschten Winkels erlaubt Bit 7 6 5 4 3 2 1 0 1 unsigned 11 downto 8 Adr unsigned 7 downto 0 Tabelle 7 9 Register Phi2PwmTable 0 16 Adr 0x8000 0x40 Tableldx 2ns ng ist die Servonum mer 0 bis 23 TableIdx kann Werte zwischen 0 und 16 annehmen Der Initialisierungswert nach dem Einschalten ist unbestimmt Les und schreibbar Adr AVR Ende Wortzahl Beschreibung Power On Wert 0x8000 2ng Ox803F 32 Phi2PwmTable 0 Servo ng 51 0x8040 2ng 0x807F 32 Phi2PwmTable 1 Servo ng 362 0x8080 2n 5 Ox80BF 32 Phi2PwmTable 2 Servo ng 628 0x80C0 2ns Ox80FF 32 Phi2PwmTable 3 Servo ns 887 0x8100 2ng Ox813F 32 Phi2PwmTable 4 Servo ng 1158 0x8140 2ns 0x817F 32 Phi2PwmTable 5 Servo ns 1425 0x8180 2ng Ox81BF 32 Phi2PwmTable 6 Servo ns 1708 0x81CO0 2ng Ox8
19. proxy function for whole initialization Init for switch on servo LED 0 after 1008 Timer RC GetGlobalTimer if Timer gt 5000 RC_SetLedBrightness 0 255 return 0 9 8 37 RC SetlnterruptO void RC SetInterruptO uintl6 t Interrupts Beschreibung Schreibt die Interrupt Maske f r Interrupt 0 in den Robotics Chip Uber diese Funktion k nnen die Interrupts f r Paniktaste CORDIC aktiviert werden Parameter Bedeutung Interrupts Interrupt Maske von Interrupt 0 Die Interrupt Mask Bits nden sich in den in den Abschnitten 7 5 3 1 7 13 1 1 und 7 22 beschrieben R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 202 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beispiel Einschalten der Interrupts f r CORDIC und Paniktaste int main void uint8 t i 0 proxy function for whole initialization Init copy the linearisation table into the RoboticsChip RC SetGlobalServoAttributesTable gTable activate all servos for i20 i RC NUMBER OF SERVOS i RC_SetServoPhiDirect 1 1609 RC SetGlobalServoMode RC_SERVO_MODE_PHI_DIRECT enable cordic interrupt RC SetInterruptO0 RC INTTERRUPT MASK CORDIC RC INTTERRUPT MASK PANIC f
20. www atmel com dyn resources prod documents DOC1493 PDF zur Verf gung Die L sungsstrategie f r die ses Problem l sst sich aus Sicht der Software folgenderma en zusammenfassen To do a 16 bit write the high byte must be written before the low byte For a 16 bit read the low byte must be read before the high byte Bei einem 16 Bit Schreibzugriff wird also zuerst das h herwertige Byte das Byte mit der h heren Adresse geschrieben dann erst das niederwertige Byte also jenes mit der niedrigeren Adresse Um gekehrt wird bei einem Lesezugriff das niederwertige Byte jenes mit der niedrigeren Adresse vor dem h herwertigen Byte dem mit der h heren Adresse gelesen Zwischen den beiden Zugriffen auf Low Byte und High Byte darf keine Interrupt Verarbeitung erfol gen Im Zuge solcher Interrupt Routinen k nnte das tempor re Register zur Speicherung des High Byte ver ndert werden In Folge w rde beim Schreiben oder Lesen des Low Byte dieses ver nderte High Bytes bernommen werden Daher sollte vor Zugriffen auf 16 Bit breite Register das Interrupt Flag des Prozessors gesetzt werden um Interrupts g nzlich zu unterbinden Nachdem beide 8 Bit Zugriffe fertiggestellt sind k nnen Interrupts wieder freigegeben werden Das Low Byte steht an einer geraden Adresse A 0 hat den Wert 0 das zugeh rige High Byte be ndet sich an der folgenden Adresse die also stets ungerade ist A 0 1 Die meisten Parameterregister des HSSE Robo
21. 3690 54 399 3685 0 278 3709 40 387 3651 51 362 3690 51 362 3690 191 362 3690 119 279 3680 10 299 3673 11 314 3633 62 382 3662 76 396 3672 1 269 3673 560 3903 559 3866 628 3953 628 3953 628 3953 630 3961 564 3994 544 3951 660 39515 562 3973 643 3921 628 3953 628 3953 628 3953 545 3931 569 3948 Su 3903 661 3898 657 3944 533 3946 783 3903 828 3866 887 3953 887 3953 887 3953 887 3961 844 3994 824 3957 926 3951 843 3973 922 3921 887 3953 887 3953 887 3953 822 3931 843 3948 842 3903 944 3898 901 3944 797 3946 1082 1364 1653 1942 2242 3903 0 RC_SERVO_REVERSE_ON 1101 1377 1663 1962 2273 3866 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1159 1426 1708 1998 2305 3961 0 RC_SERVO_REVERSE_ON 1125 1406 1690 2000 2307 3994 0 RC_SERVO_REVERSE_ON 1094 1362 1657 1967 2291 3957 0 RC_SERVO_REVERSE_ON 1208 1449 1740 2026 2331 3951 0 RC_SERVO_REVERSE_ON 1131 1411 1722 2007 2313 3973 0 RC_SERVO_REVERSE_ON
22. Anmerkung e Es wird empfohlen statt dieser Funktion SL2_GetCurrent zu verwenden da SL2_GetCurrent bei niedrigen Str men eine h here Verst rkung verwendet und so mit genauere Ergebnisse liefert e Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden Beispiel Siehe Beispiel von 9 4 8 auf Seite 156 9 4 10 SL2 GetCurrentHighAmplification uintl16 t SL2 GetCurrentHighAmplification Beschreibung Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2 mit einer internen Ver st rkung von 200 und gibt diesen in mA zur ck Diese Verst rkung wird an den differentiellen ADC Eing ngen des AVR eingestellt R ckgabewert R ckgabewert Beschreibung Data Aktuell flie ender Strom in mA Anmerkung e Es wird empfohlen statt dieser Funktion SL2 GetCurrent zu verwenden da 512 GetCurrent bei hohen Str men eine niedrigere Verst rkung verwendet und da her keine berschreitung des Wertebereichs auftreten kann e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Siehe Beispiel von 9 4 8 auf Seite 156 9 4 11 SL2 GetBatteryVoltage uintl6 t SL2 GetBatteryVoltage Beschreibung Diese Funktion misst die Spannung der Akkus und gibt diese in mV zur ck So kann im Betrieb festgestellt werden ob die Akkus geladen werden sollten SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 4 SANDBOXS2_LIB 159
23. EE P SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 226 PLATINENLAYOUT BA Platinenfoto mit Aufklebern und Akkuzellen A D a ww Ar NEHM vv 3716 B 5 Foto der Platinenunterseite si 26 V EE 7 eg um x Pu ze Lr MAN 521 Lid 111 At KAAL SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 Bo BEST CKUNGSAUFDRUCK 227 B 6 Best ckungsaufdruck NiMh NiCd onlul a De N Mh N Cd onlul SERVOL4 San aan E OBER STERREICH NiMh NiCd 1 R16 SERVO17 SERVOIG SERVOIS NiMh NiCd only NiMh NiCd only EECH Ory OCT oor EH SERVO23 SERVO22 SERVO2i SERVO28 SERVOIG SERVO18 CC Oo Oo oo Ooo Oo Gg ca Ge oS oS oo UL ee SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX PLATINENLAYOUT 228 B 7 Aufkleber statt Best ckungsaufdruck Alternativ zu einem Best ckungsdruck ist eine Beschriftung mit Aufklebern m glich Die Abbildung gibt die Position der Aufkleber an ali m se R35 CI Mag N Cd only NiMh or Nica ZLOAISS CLOAlaS vLOAISS GTOAJSS 9107155 LOAJSS SLONISS G6LOAISS 02601195 LZOAJOS 22001156 ZOAIOS 8 oooomcoomcoo pce 05 00 2200 oo oo
24. IFNeut Dieses Interrupt Flag wird aktiv sobald der Servogrundstellungsmodus Ab schnitt 7 8 gew hlt wird Ausl send wirkt sich der Tastendruck zum Wechsel in den Servo grundstellungsmodus aus Dieser setzt das Interrupt Flag Ist das zugeh rige Mask Bit ImNeut im Register IrgMaskRcRxCtrl Abschnitt 7 13 1 1 gesetzt wird auch ein Interrupt auf der Lei tung INTO des Mikrocontrollers angefordert Bit 4 IFCord Dieses Interrupt Flag wird aktiv sobald der CORDIC Prozessor Abschnitt 7 22 einen Berechnungsauftrag vollst ndig bearbeitet hat Ist das zugeh rige Mask Bit ImCord im Register IrgMaskRcRxCtrl Abschnitt 7 13 1 1 gesetzt wird auch ein Interrupt auf der Leitung INTO des Mikrocontrollers angefordert 7 3 Servosteuerung Modellbauservos und spezielle Robotikservos erfreuen sich im Bereich der Embedded Robotics hoher Beliebtheit Hierf r sprechen einige gute Gr nde e Sie sind leicht und zu einem relativ geringen Preis erh ltlich e es gibt zahlreiche Bauformen und e ihre Ansteuerung ist weitgehend genormt Abbildung 7 2 Beispiele f r Robotik und Modellbauservos Servos erf llen eine einfache Aufgabe Man sendet auf elektrischem Wege den Befehl Stelle den Servoarm oder Servoscheibe auf den Winkel 67 und das Servo erledigt dies mit der ihm eigenen Geschwindigkeit Kraft und Genauigkeit Angetrieben wird der Servoarm blicherweise von einem kleinen Gleichstrommotor der den Ser vohebel ber ein Getrieb
25. ON 2559 2955 r 2582 2992 r 2598 2598 2598 r 2597 543 2882 3158 Servo 16 2835 3109 Servo 17 2837 3101 Servo 18 2857 3135 Servo 13 2837 3096 Servo 14 2824 3098 Servo 15 2875 3160 default 2875 3160 default 2875 3160 default 2876 3158 Servo 10 C EEL 3421 3370 3362 3410 3359 3359 3425 3425 3425 3423 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 144 8 INVERSE KINEMATIK 16 294 564 844 1125 1406 1690 2000 2307 2611 2891 3181 3455 3727 3994 3994 3994 70 RC SERVO REVERSE Servo 11 1 311 544 824 1094 1362 1657 1967 2291 2606 2890 3162 3426 3690 3957 3957 3957 74 RC SERVO REVERSE Servo 12 54 399 660 926 1208 1449 1740 2026 2331 2607 2884 3154 3423 3685 3951 3951 3951 74 SERVO REVERSE Servo 07 0 278 562 843 1131 1411 1722 2007 2313 2599 2889 3166 3443 3709 3973 3973 3973 53 RC SERVO REVERSE Servo 08 40 387 643 922 1193 1462 1749 2033 2336 2605 2877 3138 3398 3651 3921 3921 3921 265 RC SERVO REVERSE Servo 09 51 362 628 887 1158 1425 1708 1996 2306 2598 2875 3160 3425 3690 3953 3953 3953 0 SERVO REVERSE default 51 362 62
26. Selbst bei Verwendung von Hochpreisservos weit jenseits der 100 Marke reicht die Aufl sung des gew hlten Bereiches leicht aus Die Kalibriereinrichtung Die Kalibriereinrichtung kann leicht selbst angefertigt werden Hierzu sind die beiden Teile Al und A2 aus dem Hexapodbausatz Captain Ahab erforderlich Die Kalibrierrosette druckt man selbst aus Sie be ndet sich auf der vorletzten Seite diesese Dokuments Auf ihrer R ckseite ndet sich eine Anleitung zum unverzerrten Drucken mit dem Acrobat Reader Als letztes Bauteil f r die Kalibrier einrichtung ben tigt man noch eine einigerma en stabile Kartonschachtel die zumindest A4 Gr e haben und 3 5 cm oder h her sein sollte Abbildung 7 10 Bau der Winkelkalibriereinrichtung Links wurde ein Karton mit der Rosette mit Hil fe eines Allesklebers beklebt Im rechten Foto ist der Ausschnitt f r das Servo angebracht worden Die bauchige Form des Kartons ist eine Folge der mangelhaften Optik der verwendeten Digitalkamera Abb 7 10 zeigt die Kartonschachtel mit der aufgeklebten Winkelrosette Im rechten Foto der Ab SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 100 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP bildung ist zu sehen wie der Ausschnitt f r das Servo angebracht wird Es sollte ein minimal ber den inneren Rahmen hinausgehender Ausschnitt angebracht werden Die eigentliche Positionierung des Servos wird nicht durch diesen Ausschnitt sondern durch den aufgeklebt
27. dem alle Servos mit einer Impulsl nge von 1 5 ms angesteuert werden Diese Impulsl nge wir jedoch nur erreicht wenn die Werte der beiden Register TuneFine und TuneCoarse die gleichen sind wie nach dem Einschalten der SandboxS 2 Auf Grund der Toleranzen der einzelnen Servos wird die me chanische Mittelstellung des Servos meist auch bei einer Impulsl nge von 1 5 ms nicht genau erreicht Je nach Einbauort des Servos ist es g auch notwendig das Servo in eine der Extremstellungen zu bringen In den extremen Winkeleinstellungen verf gen Modellbauservos blicherweise ber me chanische Wegbegrenzungen so dass die mechanischen Endstellungen durch sanftes und langsames Verdrehen der Servoscheibe von Hand erreicht werden k nnen Der extrem hohe Pulsbreitenbereich der sich mit dem Servopulgenerator des Robotics Chips erreichen l sst f hrt dazu dass das Servo auch auf elektrischem Wege von Anschlag bis Anschlag bewegt werden kann Allerdings geschieht dies typischerweise sehr unsanft und sollte besser vermieden werden Entsprechende Mittel stellt der Robotics Chip mit den Parametern PhiMin und PhiMax sowie PhiOffset siehe Abschnitt 7 6 zur Verf gung Da alle angeschlossenen Servos nach Dr cken der Taste KeyFpgal praktisch ohne Verz gerung in die durch den Servogrundstellungsmodus ausgew hlte Stellung fahren ist bei der Auswahl dieses Mo dus Vorsicht geboten Bereits eingebaute Servos treffen wom glich auf einen mechanischen Anschlag
28. gStrmUSB NULL FILE gStrmUART NULL key states typedef enum SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 43 INCREMENT DECREMENT SELECT NO_KEY KeysState servo rotation states typedef enum ROT_NORMAL ROT_REVERSE ServoRotationState ALMA EL AAT AAA ALIAS functions EEN stream I O wrapper functions int strm_uart_putc char c FILE xs uart_putc c return 0 int strm_uart_getc FILE int strm usb putc char c FILE xs uart usb putchar c return 0 int strm usb getc FILE 5 return unsigned char uart usb getchar do all the initialization stuff here void Init void initialize sandboxs2 AVR peripherals SL2_Init initialize robotics chip N initialize usb uart usb init initialize UART set baud rate to 38400 uart init UART CALC BAUDRATE 38400 clear all robotics chip LEDs RC SetLedClearAl11 activate stream I O gStrmUSB fdevopen strm usb putc strm usb getc gStrmUART fdevopen strm uart putc strm uart getc enable interrupts sei get keys state KeysState GetKeysState void 5 return unsigned char uart_getc SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANU
29. m e EE Reset Taste A FPGA 41 25 END Abbildung 4 4 Reset Taster fiir den Mikrocontroller und das FPGA ter ist am Anschluss RESET des Mikrocontrollers angeschlossen und legt den Pin im geschlossenen Zustand auf Masse Im offenen Zustand wird ein interner PullUp Widerstand des AVR wirksam Der Taster ist parallel hierzu auch an den Reset Pin des FPGAs angeschlossen 4 4 Interrupts Der HSSE Robotik Chip hat die M glichkeit ber die beiden Interrupt Leitungen INTO und INT1 des AVR Mikrocontrollers einen Interrupt Request anzufordern Die genaue Beschreibung dieser Funkti on ndet sich im Abschnitt External Interrupts im Datenblatt des Mikrocontrollers Der Interrupt kann im Mikrocontroller sowohl pegelsensitiv als auch auf die fallende Flanke der INT Pins ausgel st werden Die Interrupts sind dazu geeignet den Mikrocontroller aus einem Strom sparmodus sleep mode aufzuwecken Details zur Verwendung der vom HSSE Robotik Chip kommenden Interrupts nden sich im Ab schnitt 7 2 4 5 External Memory Interface Das External Memory Interface des AVRs wird auf der SandboxS 2 genutzt um die Peripherieeinhei ten des HSSE Robotik Chips in den Speicherbereich des Mikrocontrollers einzublenden Hierdurch erscheinen die externen also im FPGA realisierten Peripherieeinheiten der Mikrocontrollersoftware in der gleichen Art wie die interne Peripherie des AVRs Zugleich l sst sich auf diese Weise eine hohe Zugriff
30. 0 4095 Initialwert nach dem Einschalten 0x0653 1619 Les und schreibbar 7 7 1 2 Register TuneCoarse Mit diesem Register ist die Dauer des Servopulszyklus in Schritten von 2 5 us stimmbar Die Grund einstellung des Registers nach dem Einschalten erzeugt einen 20 ms langen Zyklus Der zugeh rige Registerwert ist 1619 0x0653 In der Minimaleinstellung dieses Parameters 0x0000 wird die Zy kluszeit um 4 05 ms verk rzt Mit der Maximaleinstellung f r den Paramter TuneCoarse kann die Zykluszeit um 6 19 ms gedehnt werden M glicherweise bereitet diese lange Zykluszeit bei einigen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 8 SERVOGRUNDSTELLUNGSMODUS 107 Servotypen Probleme bei der Impulsauswertung In der Praxis sind solche Probleme jedoch mit kei nem der getesteten Servotypen aufgetreten Bit 0x85F9 unsigned 11 downto 8 Ox85F8 unsigned 7 downto 0 Tabelle 7 18 Register TuneCoarse Wertebereich 0 4095 Initialwert nach dem Einschalten 0x026B 619 Les und schreibbar 7 8 Servogrundstellungsmodus Durch Druck der Taste KeyFpgal kann der Servogrundstellungsmodus gew hlt werden Erneuter Druck auf die Taste verl sst diesen Modus wieder Im Servogrundstellungsmodus leuchtet die LED MsgFpgal auf Der Servogrundstellungsmodus dient dazu die Servos beispielsweise fiir den korrekten Einbau in eine Robotermechanik in ihre Mittelstellung zu bringen Die Servomittelstellung wird eingestellt in
31. 1193 1462 1749 2033 2336 3921 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1158 1425 1708 1996 2306 3953 0 RC_SERVO_REVERSE_ON 1102 1399 1694 2005 2340 3931 0 RC_SERVO_REVERSE_ON 1122 1403 1698 2006 2310 3948 0 RC_SERVO_REVERSE_ON 1134 1419 1699 1994 2279 3903 0 RC_SERVO_REVERSE_ON 1225 1508 1787 2082 2384 3898 0 RC_SERVO_REVERSE_ON 1184 1452 1749 2033 2332 3944 0 RC_SERVO_REVERSE_ON 1065 1344 1641 1954 2256 3946 0 RC_SERVO_REVERSE_ON r 2543 2837 3096 Servo 14 2552 2824 3098 Servo 15 2598 28155 3160 default 2598 2075 default 2598 2875 default 2597 2876 3158 Servo 10 2611 2891 3181 Servo 11 2606 2890 3162 Servo 12 2607 2884 3154 Servo 07 2599 2889 3166 Servo 08 2605 2877 3138 Servo 09 2598 2875 3160 default 2598 2875 default 2598 2875 default 2573 2867 3140 Servo 04 2600 2878 3154 Servo 05 2545 2818 3089 Servo 06 2680 2924 3181 Servo 01 2625 2892 3158 Servo 02 2548 2844 3130 Servo 03 3160 3160 3160 3160 3359 3359 3425 3425 3425 3423 3455 3426 3423 3443 3398 3425 3425 3425 3413 3416 3359 3424 3410 3409 VAURA 11 EI EE E AAA AA AAA AA AAA TIAA AAA AA
32. 2 21 2 4 Hello World in der 5 24 241 Popjekberstellen VE yore vus amp ee ee eR 24 242 Prosmmunschmubed s soros soo u a a 29 24 3 Projekttibersetzen 20 2 22 22 22 2 1 31 244 Programm ausf hren 2 2 2 2 2 32 243 Programimi dele u q w en zs Rx mo EGER UE 37 246 Zusammenfassung 2 2 2 22 224 a 38 Q cut no T 38 235 Laufende Lichter 5 24 420 ue ver wa EN E dox 38 Zl EReoktererebten wads Paved oriris GE 38 2 4 Programmi schreiben 22 2 5 c ue amp de komm Rode wie 38 Zo JPropkt bersebDH uc eu oue oboe QD W 41 2 5 4 Programm ausf hren EEN are au a w a 4 41 254 Programmi testen e ka ERR LA 41 Ee EE era aaa UE Y ee d 41 ZI EE 41 2 6 Servokalibrierung mit Winkelzeiger 41 26 1 Piojekteisiellen 2 RS 41 242 Programmi sohre Den 2 zac sack Sa edadia Dh 42 20 5 STusekbubereelzBH 2 amp ded kom 46 204 Programmi EN ow o om 46 205 Programmi testein 2 i s w lue 2 14 46 266 Zusammenfassung ER RA 46 222525 on en MEER RULES Um
33. 9 8 ROBOTICSCHIP 195 9 8 28 RC_SetBuzzerVolume uint8 t RC SetBuzzerVolume in uint8 t Volume Beschreibung Bestimmt die Lautst rke des Piezo Summers Parameter Bedeutung Volume Lautst rke des Piezo Summers Die Lautst rke ist in drei Stufen ein stellbar mittlere Lautst rke RC_BUZZER_VOL_MIDDLE hohe Lautst rke RC BUZZER VOL HIGH und ausgeschaltet RC BUZZER VOL OFF R ckgabewert R ckgabewert Beschreibung Status RC INVALID PARAMETER wenn der Funktion ung ltige Parameter ber geben wurden sonst RC SUCCESSFUL Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Siehe folgende Funktionen 9 8 29 RC SetBuzzerPhaseHigh void RC SetBuzzerPhaseHigh in uintl6 t PhaseHigh Beschreibung Bestimmt die L nge der High Phase des Piezo Summer Signals Rechtecksignal Die Frequenz dieses Signals kann wie folgt berechnet werden 1 TPhaseHigh TPhaseLow 125 ns frect Parameter Bedeutung PhaseHigh Lange der High Phase des Piezo Summer Signals Ruckgabewert Diese Funktion hat keinen Riickgabewert SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 196 9 SOFTWARE FUNKTIONSBIBLIOTHEK Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Siehe folgende F
34. C 1 rechts Hierzu wird dieser einfach herausgezogen Vorsicht Quarze sind ersch tterungsemfpindliche elektromechanische Bauteile Keinesfalls fallen lassen Abbildung C 1 Links Empf nger im Lieferzustand Rechts Der Quarz wurde entfernt Nun wird das Geh use ge ffnet Hierzu werden die beiden Schrauben an der Geh useunterseite herausgedreht Abb C 2 links Der passende Schraubendreher tr gt eine Klinge des Typs Philips 0 Im Anschluss daran kann der Empf nger in seine Einzelteile zerlegt werden Beim Zerlegen gehen Sie bitte behutsam mit dem Plastikgeh use um da dieses bei zu hohem Kraftaufwand leicht Risse bekommt Abb C 2 zeigt die Komponenten des zerlegten Empf ngers Die Modi kationen werden ausschlie lich auf der Platine vorgenommen Geh use Quarz und Schrauben in der Zwischenzeit also sicher verwahren damit diese nicht verloren gehen Zuerst muss die 3 polige Stiftleiste des BATT Anschlusses Abb C 3 links ausgel tet werden Ein L tkolben mit guter Heizleistung Flussmittel eine Elektronikzange und ein kleiner Schraub stock mit auf die Backen aufgesetzten Gummi oder Filzschonern z B Kugelgelenkschraubstock des SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 232 RC EMPF NGERUMBAU ZUM ANSCHLUSS AN DIE SANDBOXS 2 0682 1 Abbildung 2 Links Geh useboden und passender Schraubendreher Rechts Einzelteile des zerlegten Empf ngers Herstellers Proxxon sind die f r
35. Danach wird auf die Karte Include Directories gewechselt Abbildung 2 10 e Hexapod Softwarebibliothek Nun muss dem Kompiler noch mitgeteilt werden in welchem Ordner er nach den Header Dateien Dateierweiterung h der Hexapod Softwarebibliothek suchen soll Hierzu werden alle Pfade der einzelnen Ordner der Bibliothek in die Liste eingetragen Abbildung 2 11 Der Pfad ist abh ngig von der Position der Hexapod Bibliothek auf der Festplatte Nachfolgend ein Beispiel mit relativer Ver zeichnisangabe Bei diesem be ndet sich der 1ib Ordner im selben Verzeichnis wie die Projketdatei SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 27 Dr ru pa Dem Dee m 12492 643 W Ae S ZER gee ao xE teer fm Imm Dee m 12492 nar W Ae Aw gt t mas 0068 bbbbbeb i Abbildung 2 11 Hexapod Softwarebibliothek Header Dateien hinzuf gen Dateierweiterung aps lib SandboxS2Lib lib uart lib uart_usb lib RoboticsChip lib InverseKinematics lib MemoryCard Danach wird auf die Karte Custom Options gewechselt e Kompiler Einstellungen Zum Abschluss wird der WinAVR Kompiler ausgew hlt Hierzu muss der Pfad zu den zwei Program men stimmen avr gcc und make Dies m ssen jedoch nur ver ndert werden wenn das AVR Studio den Pfad falsch ermittelt hat oder eine andere WinAVR Version v
36. Data Angles Phi0 lt IK PHI 0 MIN Data Angles Phi0 gt IK PHI 0 MAX Data Angles Phil lt IK PHI 1 MIN Data Angles Phil IK PHI 1 MAX Data Angles Phi2 lt IK PHI 2 MIN Data Angles Phi2 IK PHI 2 MAX move the leg directly to the desired point and return RC_SetServoPhiDirect 0 Data Angles Phi0 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 9 INVERSE KINEMATIK 205 RC_SetServoPhiDirect 1 Data Angles Phil RC_SetServoPhiDirect 2 Data Angles Phi2 for return 0 9 9 3 IK SetLegMovementCoxa uint8 t IK SetLegMovementCoxa in uint8 t LegNumber in int16 t XCoord in int16 t YCoord in int16 t ZCoord in int8 t Position Beschreibung Berechnet die inverse Kinematik eines angegebenen Beines im Coxa System und bewegt den Fu punkt des Beines zu diesem Kann der angegebene Punkt nicht angefahren werden so wird das Bein nicht bewegt Parameter Bedeutung LegNumber Index des Hexapod Beines dieser Index entspricht jenem der auf der Oberseite des Hexapods eingraviert ist XCoord X Koordinate des gew nschten Fu punktes YCoord Y Koordinate des gew nschten Fu punktes ZCoord Z Koordinate des gew nschten Fu punktes Position Da es f r viele Punkte zwei verschiedene L sungen f r y und y2 gibt muss zu s tzlich angegeben werden welche der beiden L sungen berechnet werden soll Wird dieser Paramete
37. Der JTAG Anschluss wird hierdurch nicht belegt Das Flash Direct Programming des Flash Kon gurationsspeichers im FPGA wird derzeit auf Grund eines Problems im FPGA Chip von Lattice noch nicht unterst tzt Laut Lattice wird eine Mindestfre quenz des Programmiertaktes von 200 KHz ben tigt Bei Verwendung des vorgegebenen Programm ger stes ist diese Frequenz aber mittels eines AVR Mikrocontrollers nicht erreichbar SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 81 7 Robotik Peripherie HSSE Robotics Chip Der HSSE Robotics Chip V2 stellt dem Mikrocontroller und damit auf Softwareebene Peripherie komponenten Abb 7 1 zur Verf gung die speziell auf die Anwendung in der Robotik zugeschnitten NIMh or on ee ZZ Leg 2 2 5 15 Li xi Or gt bal Loi ra 9 e 22 E 5 3 E c FE mex ER b Kino POH d i pe GF Scents 65 si ESS y Servo17 1 Servo12 Abbildung 7 1 Das FPGA vom Typ Lattice XP stellt spezielle Peripherieeinheiten f r die Robotik und hnliche Anwendungsbereiche zur Verf gung Die zugeh rigen Bereiche auf der Platine sind hervorgeho ben sind e Erzeugen von PWM Signalen zur Ansteuerung von 24 handels blichen Modellbauservos e Ber cksichtigung von Korrekturwerten bei der Umrechnung von Sollwinkel auf den PWM Wert zur Servosteuerung
38. Diese Funktion hat keinen R ckgabewert Anmerkung e Der Modus RC_SERVO_MODE_NO_ACTION sollte nur verwendet werden wenn der entspre chende Servo nicht belastet wird auch nicht durch das Eigengewicht des Spinnenk rpers e Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufge rufen werden Beispiel Servo 0 in den PwmDirect Modus schalten int main uint8 t i 0 proxy function for whole initialization Init activate servo 0 RC SetServoMode 0 RC SERVO MODE PWM DIRECT move servo 0 to its middle position RC SetServoPwmDirect i 2048 1 1 return 0 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 175 9 8 5 RC_SetGlobalServoMode inline void RC_SetGlobalServoMode in uint8_t Mode Beschreibung Schaltet alle Servos in den angegebenen Modus Parameter Bedeutung Mode Bestimmt den Modus des Servos Dieser Parameter kann folgende Werte anneh men e RC_SERVO_MODE_PWM_DIRECT PwmDirect Modus siehe Abschnitt 7 5 auf Seite 92 f r genauere Erkl rung e RC SERVO MODE PHI DIRECT PhiDirect bzw PhiSpeed Modi sie he Abschnitt 7 5 auf Seite 92 f r genauere Erkl rung oder e SERVO MODE NO ACTION Servo deakiviert R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Der Modus RC_SERVO_MODE_NO_ACTION sollte nur
39. Paket gesendet Zus tzlich kann jedoch mit der Funktion uart_flush ein manuelles Senden eingeleitet werden Die gesamte Steuerung des Ger tes am Bus erfolgt ber Interrupts Alle Anfragen vom Host werden in Interrupt Routinen ausgewertet und bearbeitet F r den Anwender entsteht das Bild einer normalen seriellen Schnittstelle 9 7 1 uart usb init void uart usb init Beschreibung Initialisiert die virtuelle serielle Schnittstelle SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 168 9 SOFTWARE FUNKTIONSBIBLIOTHEK R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Nach der Initialisierung m ssen die Interrupts eingeschaltet werden Beispiel Initialisierung und Verwendung des USB UART Va M Ll ul ER EE E WEE AAA AA AT KLEE includes IL T E ARR ADU EE EE P EE include lt avr interrupt h gt include uart usb lib h never blocking putc int nb putc char xc if uart is tx ready return 1 uart usb putchar c return 0 never blocking getc int nb_getc char if uart test hit return 1 return uart usb getchar c do all the initialization stuff here void Init void initialize usb uart uart usb init enable interrupts sei program entry point int main void echar initialize system Init SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 7 USB UA
40. T u TATUO NiMhor _ __ Nica DuJENJOVH m ebd Del MSG FPGA1 MSG FPGAG 8 OVLF I tuo POIN UHNIN NiMh or NiCd only iuo POIN o um R18 LIC R19 ECH 2207 ECH CH csi ccocoocc coco 2207 cc DENM LLANOS OOMES GOMES LOMeS 9OMES GOMES yoMes BOSS COMES Jade OMS CT i9 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX B 8 LAYOUT ToP LAYER 229 B 8 Layout Top Layer SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 230 PLATINENLAYOUT B 9 Layout Bottom Layer SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 231 RC Empf ngerumbau zum Anschluss an die SandboxS 2 Prinzipiell kann so gut wie jeder RC Empf nger so umgebaut werden dass das PPM Signal der De modulationsstufe am Ausgang zur Verf gung steht Als Beispiel ist die Modi kation eine preisg nsti gen AM Empf ngers der Marke Acoms Techniplus beschrieben Der Umbau von Empf ngern anderer Fabrikate erfolgt sinngem erfordert aber unter Umst nden weitergehende Modi kationen als nach folgend dargestellt Der unmodi zierte Empf nger ist links in Abb C 1 zu sehen Um die Modi kationen durchf hren zu k nnen muss zun chst einmal der Schwingquarz entfernt werden Abb
41. bersetzt Das Potentiometer dient also als Winkelsensor Dieser Spannungswert wird von der Servoelektronik gemessen Damit schlie t sich im Servo ein Regelkreis der in Abb 7 5 zu sehen ist Modellbau und Robotikservos werden in gro en St ckzahlen unter enormem Preisdruck herge stellt Verst ndlicherweise lassen sich konkurrenzf hige Preise nur erreichen wenn die Fertigungsto leranzen der einzelnen Komponenten nicht unrealistisch eng gew hlt werden Daher ist die Genau igkeit der Zuordnung von Pulsdauer und damit dem Sollwinkel und dem tats chlich resultierenden Servohebelwinkel stark von der Qualit t der einzelnen Teile und ihrer Abstimmung aufeinander ab h ngig Ungenauigkeiten schleichen sich insbesondere an folgenden Stellen in das System Servo ein e Mechanisches Spiel zwischen Hebelarm und Potentiometerachse e Fertigungsgenauigkeit des Potentiometers e Abnutzung oder Alterung des Potentiometers Messungenauigkeit bei der Bestimmung der Spannung welche das Potentiometer vorgibt e Messungenauigkeit bei der Bestimmung der Impulsdauer Sollwinkel e Nichtlineares Verhalten der Regelelektronik SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 90 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Ist Winkel Servoscheibe eg Getriebe elektrische Verbindung Mechanische Verbindung wane ease nn gt S Soll Winkel Energieversorgung Abbildung 7 5 Regelkreis in einem Modellbauser
42. damit kein Interrupt Request ausgel st wird Um festzustellen ob eine Interrupt Anforderung vorliegt werden alle Interrupt Flag Register best ndig zyklisch ausgelesen und die darin enthaltenen Interrupt Flags ausgewertet 7 2 1 Interrupt Flag Register Adr AVR Interrupt Flag Register 0x9C00 Bereit f r neue Servo Bewegungssequenz Servos 0 7 0x9C01 Bereit f r neue Servo Bewegungssequenz Servos 8 15 0x9C02 Bereit f r neue Servo Bewegungssequenz Servos 16 23 0x9C03 IRQ Flags f r PS 2 RC Rx Grundstellung Paniktaste und CORDIC Tabelle 7 1 Addressraum der Interrupt Flag Register Diese Register haben eine Datenwortbreite von 8 Bit so dass der Mikrocontroller das gesamte Register mit einem einfachen Zugriff lesen kann Die Register sind nur les aber nicht schreibbar 7 2 1 1 Register ServoSeqEmpty70 Bit 0x9C00 IFS7 IFS6 IFSS IFS4 IFS3 IFS2 IFS1 IFSO Tabelle 7 2 Register ServoSeqEmpty70 Im Initialisierungszustand nach dem Einschalten und nach Reset sind alle Interrupt Flags inaktiv Wert 0 Nur lesbar Durch das Auslesen des Registers werden alle Interrupt Flags im Register gel scht Bit 0 IFSO Interrupt Flag Servosequencer 0 Dieses Flag wird gesetzt Wert 1 wenn der zuvor vom Mikrocontroller geschriebene Servosequenzauftrag bestehend aus den Werten fiir Phi Start DeltaPhi und NrOfDeltas vom Servosequencer abgeholt wurde Ist das Interrupt Mask Bit ImSqe im Register ModeIr
43. im Roboter Spezielle Roboterservos sind teilweise so drehmomentstark dass die Robotermechanik hierbei besch digt werden kann Auch Verletzungen durch die Servobewegung sind bei sehr kr ftigen Servos nicht ausgeschlossen Beim bergang in den Servogrundstellungsmodus wird das zugeh rige Interrupt Flag IFNeut im Register IrqFlagsOthers siehe Abschnitt 7 2 1 4 gesetzt Ein Interrupt wird auf der Leitung INTO nur dann ausgel st wenn das Interrupt Mask Bit ImNeut in Register IrqMaskRcRxCtrl Ab schnitt 7 13 1 1 gesetzt ist Wert 1 7 9 Servopaniktaste Druck auf die Taste KeyFpgaO deaktiviert die Impulserzeugung aller angeschlossenen Servos Der Effekt ist der gleiche wie wenn das Bit Active des Registers ModelrqMask aller Servos deaktiviert SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 108 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP w rde Die Deaktivierung kann nur durch Druck auf die Taste Reset oder Aus und Einschalten wieder r ckg ngig gemacht werden Beim Dr cken der Servopaniktaste wird das zugeh rige Interrupt Flag IFPnk im Register IrqFlags Others siehe Abschnitt 7 2 1 4 gesetzt Ein Interrupt wird auf der Leitung INTO nur dann ausge l st wenn das Interrupt Mask Bit ImPnk in Register IrgMaskRcRxCtrl Abschnitt 7 13 1 1 gesetzt ist Wert 1 Diese Taste hat noch eine Zweitbelegung die zum Aufruf des Bootloaders im AVR Mikrocontroller dient Eine Beschreibung ndet sich in Abschnitt 4 7 1 In dieser Zweitbed
44. installiert sein und e der Treiber f r die den Bootloader auf der SandboxS 2 muss installiert sein Das Programm Flip das kostenlos von der WWW Seite der Firma Atmel www atmel com heruntergeladen werden kann kommuniziert mit dem Bootloader auf der SandboxS 2 Es bermittelt dem Bootloader der vom AVR ausgef hrt wird Daten und Befehle die dieser interpretiert und aus f hrt Auf diese Weise kann der Programmspeicher des AVR mit einem Programm gef llt werden da der AVR dazu in der Lage ist seinen eigenen Programmspeicher zu beschreiben Gleiches gilt auch f r den EEPROM Speicher der meist f r Parameter verwendet wird Auch dieser kann vom Bootloader aus mit Daten versorgt werden Die Schritte zur Vorbereitung eines PC sind folgende Das Programm Flip wird in Form eines Dateiarchivs zip von Atmel zur Verf gung ge stellt Dieses Archiv wird zun chst in einem tempor ren Verzeichnis entpackt b Nun wird die Datei setup exe in diesem Verzeichnis ausgef hrt und der Installer des Pro gramms Flip beginnt mit seiner Arbeit c Nach abgeschlossener Installation verbindet man die noch ausgeschaltete SandboxS 2 an deren USB Buchse mittels USB Kabel mit einem USB Port des PCs d Beim Einschalten der Sandbox wird der Bootloader entsprechend der Beschreibung im nach folgenden Abschnitt 4 7 1 aktiviert e Windows reagiert automatisch mit dem Wizard f r die Installation neuer Hardware auf das neue u
45. lt im montierten Zustand das Kabel in den Schneidklemmverbindern fest Hierzu ist es mit zwei Snap In Haken ver sehen die eine Demontage so gut wie unm glich machen Diese Haken werden einfach abgebrochen wie es Abb 7 27 zeigt Allerdings taugt der B gel dann nt rlich zur Endmontage nichts mehr Statt des B gels einen Schraubenzieher oder hnlich ungeeignetes Ger t zu verwenden hie e dennoch am falschen Platz sparen Der komplette Stecker kostet ohnehin nur wenige Cent SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER 119 Abbildung 7 27 Herstellung des Montagewerkzeugs f r Einzeladern durch Abbrechen der Snap In Haken Nun k nnen die einzelnen Adern des Kabels eine nach der anderen in die Schneidklemmverbinder eingedr ckt werden Abb 7 29 zeigt einen Zwischenschritt Die Adern des Kabels werden einzeln in Abbildung 7 28 Einzeladern werden in den eigentlich f r Flachbandkabel gedachten Stecker eingelegt Jede Ader wird in den zugeh rigen Schneidkamm eingedr ckt wobei ein Teil eines weiteren Steckers behilflich ist sq einen Wannenstecker eingelegt der vom Hersteller urspr nglich f r Flachbandkabel gedacht ist Dies geht mit einem einfachen Trick recht leicht wozu zwei solche Stecker ben tigt werden Einer der beiden dient lediglich als Werkzeug beim Einlegen der einzelnen Adern w hrend der andere seiner ur spr nglich zugedachten Aufgabe als Steckverbind
46. so dass meist keine Ader f r ihn vorhanden ist Der Kontakt mit der Nummer 3 dient zur Stromversorgung der Vibrationsmotoren im Game Pad Controller Diese werden f r Robotikanwendun gen nicht ben tigt Bei drahtlosen Ger ten werden die Vibrarionsmotoren von Batterien im Handteil ver sorgt Daher kann diese Ader entfallen Das Signal auf Kontakt Nummer 9 wird von der Schnittstelle des Robotics Chip nicht benutzt Auch auf diese Ader kann also auf Wunsch verzichtet werden Alle anderen Kontakte sind f r die Funktion des Game Pad Controllers unbedingt notwendig Herstellern einheitlich mit der Vorgabe von Sony gehalten Leider nden sich aber auch vollkom men andere Belegeungen Es ist also unbedingt n tig mit einem Multimeter oder einem einfachen A Durchgangspr fer nachzumessen Flachbandkabelsteckverbinder f r Einzeladern Bevor die Einzeladern in den Stecker eingepresst oder besser nur eingedr ckt werden k nnen wird ein spezielles Werkzeug f r diesen Zweck hergestellt Dieses Werkzeug ist eigentlich eines der drei Teile eines Steckers f r Flachbandkabel n mlich der Kabelf hrungsb gel der auf das Unterteil des Steckers das mit den Steckkontakten aufgedr ckt wird Dieser Kabelf hrungsb gel enth lt halbkreisf rmige Hohlkehlen welche die Einzeladern in die richtige Position f r die aus dem Unterteil herausstehenden Schneidklemmverbinder bringen Dieses Werkzeug ist eigentlich nur f r den einmaligen Gebrauch gedacht und h
47. uft und der Baudrate Generator diesen Takt verwendet ergeben sich Synchronisationsfeh ler Diese lassen eine bertragung nur mehr mit starken Fehlern zu Dadurch wird die Auswahl auf folgende Baudraten beschr nkt 2400 4800 9600 19200 38400 Zum Anschluss des Moduls an den Erweiterungsstecker Abschnitt 5 6 der SandboxS 2 kann bei spielsweise ein speziell angefertigtes Flachband kabel dienen dessen Verbindungen nach Tabelle 5 1 angelegt wurden Bei der Herstellung des Kabels ist die gleiche Technik hilfreich die auch beim An schluss des Playstation GamePad Kabels verwendet wird siehe Abschnitt 7 17 1 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 5 7 ANSCHLUSS EINES BLUETOOTH RS323 MODULS Serial port was open COM 1 19200 No Parity One Stopbit Infomation gt Device Setting Connection out m Connection in Connection Wizard Abbildung 5 16 Kon guration des Bluetooth Serial Moduls Parani ESD100 des Herstellers SENA unter Verwendung von dessen Kon gurationsprogramm ParaniWIN Das Modul ist ber das ESD StarterKit von SENA an eine serielle Schnittstelle des PC angeschlossen Pin At90USB1286 7 Parani ESD 100 Pin 2 3V3 VDD 6 3 AVR_RXDI TXD 2 4 AVR TXDI RXD 3 AVR ADC2 RTS 4 7 EXT PIN CTS 5 9 GND DSR 9 10 GND GND 12 Tabelle 5 1 Verbinden des Erweiterungssteckers des AVR Mikrocontrollers auf der SandboxS 2 mit dem
48. 0 oder SL2 KEY 1 State De niert ob darauf gewartet werden soll dass der Taster gedr ckt wird SL2_KEY_PRESSED oder losgelassen wird 512 KEY NOT PRESSED R ckgabewert R ckgabewert Beschreibung SL2 INVALID PARAMETER Mindestens einer der angegebenen Parameter ist nicht g ltig SL2 SUCCESSFUL Die Funktion wurde erfolgreich ausgef hrt Anmerkung Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 154 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beispiel Es wird so lange gewartet bis Key 1 gedr ckt wird Sobald die Taste gedr ckt wurde wird LED 1 eingeschaltet int main uint8 t State SL2 KEY NOT PRESSED function that has to b xecuted in every appli cation to initialize the interface with the FPGA SL2 Init State 512 AvrWaitOnKey SL2 KEY 0 512 KEY PRESSED SL2 AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS ON 1 1 return 0 9 4 5 SL2_ExtAvrSetPinMode void SL2 ExtAvrSetPinMode in uint8 t Data Beschreibung ber diese Funktion kann ausgew hlt werden ob Pin D6 als Eingang oder als Ausgang verwendet werden soll Pin D6 ist am Erweiterungsstecker des AVR angeschlossen und wird von der SandboxS 2 selbst nicht verwendet Parameter Bedeutung Data De niert ob Pin D6 als Ei
49. Bei IK_KNEE_DOWN liegt der Fu punkt h her als das Kniegelenk R ckgabewert Der R ckgabewert vom Typ IK InverseKinematicsReturn ist eine Struktur welche die be rechneten Punkte beeinhaltet sowie Informationen ob die Berechnung erfolgreich war Eine Berech nung ist dann nicht erfolgreich wenn ber die Parameter XCoord YCoord und ZCoord ein Punkt angegeben wird der von der Beinmechanik nicht erreicht werden kann Der Aufbau der Struktur InverseKinematicsReturn ist in Abschnitt 9 11 auf Seite 216 genauer erkl rt R ckgabewert Beschreibung FAILED Der Punkt kann mit den gegebenen L ngen der Beine nicht erreicht wer den die R ckgabewerte der Winkel sind ung ltig und d rfen nicht ange fahren werden IK SUCCESSFUL Alle Winkel wurden erfolgreich berechnet Anmerkung e Auch wenn die Berechnung eines Winkels erfolgreich war darf dieser Winkel nicht ohne wei A teres eingestellt werden So k nnte eine Berechnung z B einen Winkel von 60 f r den Coxa Servo H ft Servo ergeben der maximale Winkel f r dieses Servo ist allerdings durch die Mechanik auf 45 beschr nkt Bevor ein berechneter Winkel angefahren wird muss berpr ft werden ob dieser Winkel ohne die Mechanik zu besch digen angefahren werden kann SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 204 9 SOFTWARE FUNKTIONSBIBLIOTHEK e Bevor diese Funktion verwendet werden kan
50. Bitte achten A Sie darauf dass dieses Kabel nicht auf Zug beansprucht und keinesfalls geknickt wird 4 2 Taktversorgung Der Mikrocontroller kann bei 3 3 V Versorgungsspannung maximal mit der Taktfrequenz 8 MHz be trieben werden Ein Takt dieser Frequenz steht ber einen Chip internen RC Oszillator zur Verf gung Jedoch ist dessen Genauigkeit f r den Betrieb des integrierten USB Peripherals nicht ausreichend Aus diesem Grund wurde ein Quarzresonator in Verbindung mit der AVR eigenen Oszillatorschaltung zur Erzeugung eines ausreichend frequenzgenauen Taktes vorgesehen Abb 4 3 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 56 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7 Abbildung 4 2 Anschluss des Atmel JTAG ICE Mk II an die SandboxS 2 Das andere Ende des USB Kabels welches das Bild am oberen Rand verl sst wird selbstverst ndlich an den PC angeschlossen AVR Abbildung 4 3 Quarzresonator zur Frequenzstabilisierung am Mikrocontroller SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 4 3 57 Das FPGA wird durch den Takt des Mikrocontrollers ebenfalls versorgt Dieser legt den auch internen Takt auf dem Pin CLKO sofern die entsprechende Fuse des AVR programmiert ist siehe Abschnitt 4 6 Dies sollte selbstverst ndlich stets der Fall sein 4 3 Reset Am Mikrocontroller gibt es die M glichkeit einen Reset mittels eines Tasters zu erzwingen Der Tas Reset Pin
51. Bluetooth Serial Modul Parani ESD 100 Die Steckernummerierung des Bluetooth Moduls folgt nicht der Konvention bei der Nummerierung von Stiftwannen und muss daher dem Datenblatt entnommen werden Verbindung 5 7 9 werden nur f r Hardware Flusskontrolle ben tigt und k nnen weggelassen werden falls sie nicht verwendet wird SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 74 6 FPGA Lattice XP LFXP3K Das verwendete FPGA geh rt zur FPGA Familie Lattice XP die in einem sogenannten Handbook genau beschrieben wird http www latticesemi com products fpga xp Die Lek t re dieses Handbuchs ist jedoch nur dann wichtig wenn ein eigener Chipentwurf auf dem FPGA implementiert werden soll Wird das FPGA in seiner Rolle als HSSE Robotics Chip verwendet dann gen gt die vorliegende Beschreibung 6 1 Taktversorgung Das FPGA wird vom Taktgenerator des Mikrocontrollers mitversorgt Daher arbeiten FPGA und Mi krocontroller taktsynchron bei einer Taktfrequenz von 8 MHz Der Mikrocontroller gibt den Takt f r das FPGA auf dem Pin CLKO jedoch nur dann aus wenn die entsprechende Fuse des AVRs programmiert ist Dies ist insbesondere bei fabrikneuen Mikrocontrol lerchips nicht der Fall Auf der SandboxS 2 wird diese Fuse jedoch unmittelbar nach der Fertigung korrekt programmiert N heres zur Einstellung der Fuses ndet sich im Abschnitt 4 6 6 2 Reset Die Resetleitung des FPGAs ist an den gleichen Taster angeschlossen wie die Rese
52. Captain Ahab einen Fortschritt verzeichnen Die enge Zusammenarbeit des Studiengangs mit der Firma trotec aus Wels auf dem Gebiet der Lasertechnik erm glicht es nun einen Lasercutter zum Ausschneiden der Roboterbauteile einzusetzen Die erreichbare Genauigkeit liegt im 1 100 mm Bereich Das Hexapod Projekt der Studieng nge HSSE und ESD w re ohne die enge Zusammenarbeit von Studierenden und Professoren in dieser Form nicht denkbar Unter anderem schl gt sich diese Zu sammenarbeit in diesem mittlerweile zu stattlichem Umfang gewachsenen Handbuch nieder wie die Zusammensetzung des Autorenteams erkennen l sst Ein Dank an dieser Stelle den industriellen Sponsoren des Projektes technosert Wartberg tro tec Wels Atmel Heilbronn Hitec Robotics Bretten Aigner Balsa Gr nburg und MSC Wien Hagenberg im September 2007 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 Inhaltsverzeichnis 1 berblick 11 one us AQ ra ea eae RE W S ee 12 2 Erste Schritte 14 2 1 SystemvorSussetzHtBeD o s e e aie w Q QQ E xo e e W wO xo ee Q w W 14 2 2 Entwicklungsumgebung 14 22 1 WI ANE installieren cu A W pus a 15 2 2 2 Atmel AVR Studio installieren 17 2 3 Ger felreiber installieren scs a s u na un an 19 2 3 1 JTAG ICE Mk II Treiber installieren 19 2 3 2 SandboxS 2 Treiber installieren 2
53. FLASH Buffer Information T89C51CCO1 Signature B tes E E e J2 KB dar Dey ish Fr Har ye Tas F Blank Ched Bootloader Yer CAN Program File seys 7 W verify ewe ee Level Level t Levelz Abbildung 4 7 Das Haupt 25 fenster der Programmierappli kation Atmel Flip Version Ist der Bootloader im Mikrocontroller aktiv kann eine Kommunikation mit dem PC aufgebaut werden wo das Programm Flip mit Hilfe eines Treibers die Gegenstelle bildet Die abgebildeten SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 4 7 UPDATE DER SOFTWARE DES AVR MIKROCONTROLLERS 61 Screenshots des Programms Flip beziehen sich auf die Version 3 1 1 Abbildung 4 7 zeigt das Haupt fenster von Flip unmittelbar nach dem Start des Programmes Nun wird Flip f r die Verbindung mit der SandboxS 2 kon guriert Hierzu muss vor allem im Men Device Select der richtige Mikrocontroller eingestellt werden In unserem Fall ist dies der AT9OUSB 1287 Di Atmel Flip ioj x Fie Buffer Device Settings Help PE Lahn En Operations Flow FLASH Buffer Information f AT9DUSB1287 Signature Bytes bs he bz B Sie 120KB M Erase Sr Device Boot 19 00 po Checksum OxFF Bootloader Ver 1 0 1 Reset Before Loading ZE NW Program HEX File Ee AIMEE Abbildung 4 8 Der richtige Mikrocontroller ist eingestellt
54. Grund des kapazitiven Charakters des Piezosummers notwendig Die erzeugte Lautst rke SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 16 ERWEITERUNGSSTECKPLATZ 115 h ngt bei einem Piezosummer von der angelegten Spannung zwischen den beiden Anschl ssen ab da sich das Piezokristall entsprechend dieser Spannung verformt Eine Form nderung wird stets durch eine Spannungs nderung bewirkt Wird ein Anschluss auf einem festen Pegel gehalten und der an dere ndert sich von Low Pegel zum High Pegel dann ist der Unterschied in der Kristallverformung geringer als wenn sich beide Anschl sse zugleich auf ihren jeweils entgegengesetzten Wert ndern Der Summer wird mit einem Rechtecksignal angesteuert und kann in seiner Tonh he und in drei Stufen in seiner Lautst rke eingestellt werden In geringem Ma e ist auch die Klangfarbe beeinfluss bar da ein asymmetrisches Rechtecksignal mit unterschiedlicher High und Low Dauer eingestellt werden kann 7 15 0 7 Register BuzzCtrl Bit 7 0 85 Ox85FE Tabelle 7 26 Register BuzzCtrl Les und schreibbar Bits 1 bis 0 Volume 00 Aus Dies ist auch der Initialisierungswert 01 Mittlere Lautst rke 10 oder 11 Volle Lautst rke 7 15 0 8 Register BuzzPhaseDurationLow Dieses Register enth lt eine vorzeichenlose 16 Bit Zahl Diese Zahl gibt an wie lange die Low Phase des Rechtecksignales dauert welches an den Piezosummer angelegt wird Die Dauer e
55. Helligkeit PS 2 Mausschnittstelle Schnittstelle f r einen kabelgebundenen oder einen drahtlosen Sony Playstation 2 Game Pad Controller Programmierbare Ausl sung von IRQs als Reaktion auf bestimmte Ereignisse Tastenkombination startet AVR Bootloader nach Reset CORDIC Koprozessor beispielsweise zur Berechnung der inversen Kinematik e USB Interface USB 2 0 Full Speed Function Bootloader f r AVR Mikrocontroller erm glicht Update und Basisfunktionalit t zum De bugging wenn auf JTAG ICE Mk II verzichtet werden soll MIDI Schnittstellenemulation ber USB m glich USB Kommunikation nach CDC Protokoll Communication Device Class ist Bestandteil der SW Bibliothek e SD Card Slot FAT Dateisystem auf SD Karte wird von SW Bibliothek unterst tzt e Energieversorgung Akkubetrieb aus f nf handels blichen und leicht austauschbaren NiMh Zellen der Gr e AA Bei Sonderbest ckung auch Zellen in Gr De AAA verwendbar Integrierte Entladeschaltung zur Vermeidung des Memory Effekts Verpolungsschutz Messung der Gesamtstromaufnahme und der Akkuspannung durch den Mikrocontroller e Erweiterungsm glichkeiten Anschlussm glichkeit an das SensOrchestra System Erweiterungsm glichkeiten durch Steckverbinder Komplette Dokumentation und frei zug ngliche Schaltungsunterlagen erm glichen eigene Projekte Bluetooth zur seriellen Daten bertragung SVN 408 PFAFF SEPTEMBER 20 2007 SBXS
56. SBXS2MANUAL TEX 128 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Bit 7 6 5 4 3 2 1 0 Adr 1 unsigned 1 downto 6 Adr unsigned 7 downto 14 Tabelle 7 41 Register Eingabewerte von x und y des CORDIC Algorithmus Zirkularer Vektormodus Schreib und lesbar Bit 7 6 5 4 3 2 1 0 Adr 1 unsigned 1 downto 6 Adr unsigned 7 downto 14 Tabelle 7 42 Register Ausgabewerte von x und z CORDIC Zirkularer Vektormodus Schreib und les bar Linearer Vektormodus e Der Eingangwert von z sollte in diesem Modus immer sein und y muss immer kleiner bzw gleich gross sein wie e Die Genauigkeit der Berechnung betr gt 18 36 Bit Die Datenformate in diesem Modus sind in den Abbildungen 7 46 7 47 und 7 48 dargestellt Hyperbolischer Rotationsmodus Dieser Modus wird nicht unterst tzt Hyperbolischer Vektormodus e Die Genauigkeit der Berechnung der Wurzelfunktion betr gt 15 94 Bit e Die Berechnung des Arkustangens Hyperbolicus wird nicht unterst tzt e F r die Berechnung der Wurzelfunktion von a muss z a 1 und y a 1 gew hlt werden wobei sich a innerhalb des Wertebereichs 0 03 1 be nden muss e Der Eingangwert von 2 sollte in diesem Modus immer 0 sein Die Datenformate in diesem Modus sind in den Abbildungen 7 49 und 7 50 dargestellt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 22 CORDIC KOPROZESSOR 129 Bit 1 unsigned 15 downto 8 unsi
57. SL2 ExtAvrSetPinValue in uint8 t Data SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 156 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beschreibung Erm glicht das Schreiben von Daten auf Pin D6 Parameter Bedeutung Wert eine logische 0 Data Wird der Parameter auf SL2_EXT_PIN_ON gesetzt so wird eine logische 1 an den Ausgang gelegt 3 3V bei SL2_EXT_PIN_OFF sowie jedem anderen 0V R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Um diese Funktion verwenden zu k nnen muss der Pin mittels 5 2 ExtAvrSetPinMode als Ausgang de niert werden e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Pin D6 zuerst auf OV und nach einem Tastendruck auf 3 3V schalten int main uint8 t State SL2 KEY NOT PRESSE function that has to b xecut D ed in every appli cation to initialize the interface with the FPGA SL2 Init ExtAvrSetPinValue SL t NO MOM E 2 te SL2 AvrWaitOnKey 5 _ExtAvrSetPinValue SL2_ 2_KEY _ExtAvrSetPinMode SL2_EXT_PIN_OUTPUT EXT_PI N_OFF 0 SL2_KEY_PRESSED EXT_PI while 1 return 0 9 4 8 SL2_GetCurrent uintl6_t SL2_GetCurrent Beschreibung N_ON Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2 und gibt diesen in mA zur ck D
58. TO USE RC SERVO REVERSE OFF rot ROT NORMAL else fprintf gStrmUSB Rotation reverse n RC_SetServoRotation SERVO_TO_USE RC_SERVO_REVERSE_ON rot ROT_REVERSE break default break apply new PWM value RC SetServoPwmDirect SERVO TO USE pwm never return loop forever for SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 46 2 ERSTE SCHRITTE return 0 2 6 2 3 Bemerkungen Die enum Typen dienen zur Gliederung der einzelnen Zust nde Dadurch wird die Fehlersuche erleichtert und der Code ist lesbarer Auf der SandboxS 2 be nden sich mehrere Taster diese sind reale Taster Das bedeutet sie Prellen beim Dr cken und Loslassen Daher wird mit der Wartefunktion _delay_ms die Zeitspanne in der St rsignale auftreten k nnen abgewartet Der und Post x der Variable pwm stellt eine Abk rzung des Ausdrucks pwm pwm 1 bzw pwm pwm 1 der Programmiersprache dar 2 6 3 Projekt bersetzen Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 3 2 6 4 Programm ausf hren Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 4 2 6 5 Programm testen Nach dem Starten des Programms und dr cken der Taste Key_Avr0 sollte ein Begr ungstext ausgegeben werden Es wird nun ein Servo an den SERVOO Anschluss angeh ngt Danach kann die Position des Servos mit den Tasten v
59. Verfeinerung eines mittels Tabelle fest programmierten Ablaufs mit anderen Worten Durch Probieren An Kurvengang war beispielsweise urspr nglich nicht zu denken Nun wurden stattdessen von Insekten abge schaut w hrend die Bewegungssteuerung auf die Prinzipien der Industrierobotik zur ckgriff allen voran die inverse Kinematik x Die urspr ngliche Steuerungselektronik war ein speziell f r den Zweck der Servosteuerung um gebautes und erweitertes Evaluierungsboard f r den Chipentwurf die Sandbox Die Steuerung wurde daher auch als reiner Chipentwurf in einem FPGA des Herstellers Xilinx verwirklicht Diesem reinen Hardwareansatz fehlte es naturgem an der Flexibilit t des Softwareanteils Der enorme Vorteil der extrem genauen zeitlichen Steuerung gegen ber den M glichkeiten eines Systems auf Basis eines Mikrocontrollers war andererseits offensichtlich Als Konse quenz hieraus wurde die SandboxS entwickelt Hier wurde ein ALtera FPGA mit einem AVR Mikrocontroller gekoppelt Damit war die Steuerung nun ein Hardware Software Co Design Die CNC Fr se der FH in Hagenberg erm glichte nicht nur die genaue Fertigung eines einzelnen Prototypen sondern mit ihrer Hilfe w re sogar die Auflage einer Kleinstserie m glich Die Steue rungselektronik SandboxS war von vornherein nach den Gesichtspunkten einer m glichen Serienpro duktion konstruiert Der Gedanke den Hexapodroboter als Botschafter in Schulen zu schicken um die Kooperation
60. Zeitschritte gesteuert Der Increment Decrementwinkel ver ndert den derzeitigen Win kel im Zeitabstand von ca 20 ms mittels TuneFine und TuneCoarse einstellbar Soll ein Winkel eingestellt und gehalten werden so wird der Incrementwinkel 0 angegeben Mit dieser Einstellung steht quasi ein dritter Modus PhiDirect zur Verf gung Bit 1 Reverse Die PWM Impulsl nge wird so umgerechnet dass sich ein umgekehrter Drehsinn des Servos ergibt Dieser Parameter wirkt in allen Modi auf die entweder vom Mikrocontrol ler direkt geschriebene Impulsl nge oder auf diejenige Impulsl nge welche intern im Modus PhiSpeed ermittelt wurde Bit 0 Active Ist dieses Bit gesetzt so wird ein Servoimpuls ausgegeben andernfalls wird kein Im puls ausgegeben Je nach Bauart werden die meisten Servos bei fehlendem Impuls das gleiche Verhalten zeigen wie bei fehlender Energieversorgung 7 5 4 Pulsdauer Die Pulsdauer kann vom Mikrocontroller aus im Register PwmLen eingestellt werden Der derzeit ablaufende Pulszyklus bleibt jedoch von einer Neueinstellung unber hrt Der neue Wert wird erst zu Beginn des n chsten Pulszyklus vom Pulsgenerator verwendet Dieses Verfahren garantiert dass keine Pulse von unerw nschter L nge beim bergang erzeugt werden Die momentan verwendete Pulsdauer kann bei Bedarf dem Register CurrentPwm entnommen werden 7 5 4 1 Register PwmLen Dieses Register steht nur im Modus PwmDirect Bit 2 Mode in Register Modelrq
61. auf Seite 211 9 10 3 GetClusterSize uint8 t GetClusterSize Beschreibung Gibt die Clustergr e zur ck welche zuvor durch die Funktion fat cluster data store ermittelt wurde R ckgabewert R ckgabewert Beschreibung ClusterSize Clustergr fe Anmerkung e Die SD Karte muss eingelegt und initialisiert sein e Die Funktion Cat cluster data store muss zuvor aufgerufen worden sein e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel siehe Beispiel in Abschnitt 9 10 4 auf Seite 211 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 10 SD KARTE 211 9 10 4 GetBytesPerSec uintl6_t GetBytesPerSec Beschreibung Gibt die Anzahl der Bytes pro Cluster zur ck welche zuvor fat cluster data store ermittelt wurde R ckgabewert durch die Funktion R ckgabewert Beschreibung BytesPerSec Anzahl der Bytes pro Sektor Anmerkung e Die SD Karte muss eingelegt und initialisiert sein e Die Funktion Cat cluster data store muss zuvor aufgerufen worden sein e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Ermittelt die Clustergr e sowie die Anzahl der Bytes pro Cluster der eingelegten SD Karte und sen det diese ber die USB Schnittstelle an den PC int main uint8_t Temp 0 uint8_t ClusterSize 0 uintl6_t BytesPerSec 0 function tha
62. datribuled under the GNU GPL Licerae 4 Debugger 26 s Gerbuted under fe GNU GL License Insight datrbuted under the 04 License VR is datributed under the Ga C License H you accept the terms of the agreement dck I Agree to Continue You must accept the agreement to metal WinAVR 20070828 Lee Lull emm WinAVR 20070525 Setup Choose Components Choose which features of WINAVR 20070525 you want te install WinAVR 20070525 Setup Anat alin Pease wat wide WAAR 20070525 6 beng installed Exvact awr Lon bass Check the components you want to install and uncheck the components you don t want to install Cick Install to start the installation Select components to metal LES 9 Add Directories to PATH Recorded S Install Programmers Compleling the WinAVR 20070525 Setup Wizard Wind 20070525 has been installed on your computer kk Finish to dose this ward Abbildung 2 1 Schrittweises Installieren des WinAVR Kompilers SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 2 ENTWICKLUNGSUMGEBUNG EINRICHTEN 17 2 2 2 Atmel AVR Studio installieren Die Entwicklungsumgebung be ndet sich ebenfalls auf der Begleit CD im Ordner AtmelAvrStudio Die Installation darf erst nach erfolgreicher Installation des WinAVR Pakets erfolgen Sie wird durch einen Assistenten begleitet Wichtig ist dabei dass der Jungo USB Treiber auch ausgew hlt wird Eine bebilderte Installation
63. den Indizes bis 16 geordnet Der nutzbare Bereich geht offenbar nur bis zum Wert f r den Index 14 Danach wird dieser Wert einfach nur wiederholt dh h jeder Winkel in diesem Bereich wird zur Ausgabe des maximal gemessenen Wertes f r PwmLen von 3898 f hren SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 102 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 7 Servo Sequencer Der Servo Sequencer bewegt ein Servo im Modus PhiSpeed Bit 2 Mode in Register ModelrqMask hat den Wert 1 automatisch mit gleichf rmiger Geschwindigkeit Die Bewegung erfolgt ausgehend von einem einstellbaren Startwinkel mit einer bestimmten Geschwindigkeit ber eine bestimmte Dau er Die drei Parameter Startwinkel PhiStart Geschwindigkeit DeltaPhi und Dauer NrOfDeltas k nnen f r jedes Servo einzeln angegeben werden Sequenzauftrag Die Bewegungssequenz wird nicht unmittelbar von den drei Registern PhiStart DeltaPhi und NrOf Deltas gesteuert Vielmehr kann ber diesen Parametersatz die auf die derzeit im Ablauf be ndliche Bewegungssequenz folgende Sequenz bestimmt werden ber die Register wird quasi eine Bewe gungssequenz in Auftrag gegeben Dieser Auftrag wird aber erst nach vollst ndiger Abarbeitung der momentan ablaufenden Sequenz bearbeitet Der Status der momentan ablaufenden Sequenz l sst sich f r jedes der Servos ber die Register CurrentPhi und CurrentPwm CurrentDeltaPhi und DeltasToGo abfragen Eine neue Bewegungssequenz b
64. der FH O Hagenberg Einfache Designs werden bereits im 3 Semester entworfen und in der Pra xis erprobt Die Methoden die f r den Entwurf des HSSE Robotics Chip ben tigt werden vermittelt das Studium im 4 Semester Im 5 Semester rundet das Design einer 16 Bit CPU und eines Signal verarbeitungssystems Audio Kommunikationstechnik das Thema f r die Bachelor Ausbildung ab Der aufbauende Master Studiengang Embedded Systems Design ESD f hrt diesen Ausbildungs zweig mit den zukunftsweisenden Themen System On Chip Design und Advanced Veri cation wei ter 7 1 Peripheriekomponenten aus Sicht des Mikrocontrollers Die nachfolgenden Abschnitte zeigen die F higkeiten der einzelnen Peripheriekomponenten auf wel che das FPGA dem Mikrocontroller zur Verf gung stellt Diese Darstellung hnelt den Erl uterungen der Peripheriekomponenten aus dem Datenblatt des 9005 1286 7 Timer SPI USART ADC Die Gesamtheit aus Atmel AVR und FPGA erscheint der Software tats chlich wie ein AVR der Robotik Peripheriekomponenten besitzt Aus Sicht der Software be ndet man sich also nach Studium der Dokumentation dieser Peripheriekomponenten nach wie vor auf gewohntem Terrain Leider gibt es jedoch eine Einschr nkung Der AVR Simulator und der Debugger JTAG ICE II wissen von den neu hinzugewonnenen F higkeiten wenig bis nichts Hierzu m sste man die Robotik Peripherie auch in deren Entwicklungssoftware nachbilden In Hinsicht auf das Echtzeitver
65. der eingelesen werden soll Kann folgende Werte annehmen 51 2 0 oder SL2 KEY 1 R ckgabewert R ckgabewert Beschreibung SL2_KEY_NOT_PRESSED Taste ist nicht gedr ckt SL2_KEY_PRESSED Taste ist gedr ckt SL2 INVALID PARAMETER Parameter Number ist nicht g ltig Anmerkung Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden Beispiel Wenn Key 1 gedr ckt ist wird die AVR LED 1 eingeschaltet ansonsten bleibt sie dunkel SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 4 SANDBOXS2_LIB 153 int main uint8_t State SL2_KEY_NOT_PRESSED function that has to be executed in every appli cation to initialize the interface with the FPGA SL2 Init while 1 State SL2 AvrGetKey SL2 KEY 1 if State SL2 KEY _PRESSED SL2_AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS ON else SL2_AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS OFF return 0 9 4 4 SL2_AvrWaitOnKey uint8 t SL2 AvrWaitOnKey in uint8 t Number Beschreibung Blockiert so lange die Abarbeitung in uint8 t State des Programmes bis ein Taster gedr ckt oder losgelassen wird Parameter Bedeutung Number Gibt den Index des Tasters an auf den gewartet werden soll Kann folgende Werte annehmen 51 2 KEY
66. diesen Schritt ausreichenden Hilfsmittel Zuerst spannen Sie die Pla tine daher die Gummi oder Filzschoner in den Schraubstock Bitte keine Gewalt anwenden da dies zur mechanischen Zerst rung der Leiterplatte f hren w rde Dann tragen Sie ein Flussmittel ausreichend dosiert auf die drei L tpads der Stiftleiste auf Anschlie end wird L tpad f r L tpad mit dem L tkolben erw rmt und die einzelnen Stifte werden wieder ohne Gewaltanwendung mit einer Zange herausgezogen Abb C 3 rechts Die Zange k hlt den Stift und damit die L tstelle stark ab Daher sollte man den Stift erst greifen wenn das Lot fl ssig geworden ist und dann unmittelbar herausziehen Abbildung C 3 Links Stiftleise des BATT Anschlusses Rechts Stift f r Stift wird die Stiftleise ausge l tet Nachdem die Stifte entl tet sind wird mit einer Entl tsaugpumpe das restliche Altlot aus den Bau teill chern entfernt In Abb C 4 ist das gew nschte Ergebnis zu sehen An die Stelle wo sich die Stiftleiste befand wird nun ein handels bliches Servokabel angel tet Abb C 5 Hierbei die Farben der einzelnen Adern nicht vertauschen Schwarz an GND au en rot an die Versorgungsspannung Mitte wei an den freien Anschluss Die Farbkodierung des Signalan SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 233 Abbildung C 4 Links Die BATT Stiftleiste ist vollst ndig entfernt Rechts Das Altlot wurde ebenfalls entfernt schlusse
67. e SAUER ZEEE 1024 0 988 xs A 3 aee Us 512 0 732 ms 0 0 476 ms 512 1024 1536 2048 2560 3072 3584 4095 gt 256 768 1280 1792 2304 2816 3328 3840 Bogenma rad 1024 O 28 65 57 30 85 94 114 59 143 24 171 89 200 54 229 181 14 32 42 97 71 62 100 27 128 92 157 56 186 21 214 90 Winkel in Grad 1 Abbildung 7 9 Linearisierungseinheit mit einstellbaren St tzstellen Phi2PwmTable 0 bis Phi2PwmTable 16 Die St tzstellen lassen sich entlang der strichlierten Linien verschieben in dem entsprechende Werte zwischen 0 und 4095 f r jede der St tzstellen eingetragen werden Die Steigung der Kurve muss an jedem Punkt gr er oder gleich 0 sein Folgewerte der Tabelle m ssen also stets gr er oder gleich ihrem Vorg ngern sein Werte die zwischen den St tzstellen liegen werden mittels linearer Interpolation errechnet Insgesamt ergibt sich eine Umrechnungsfunktion wie sie im Bild als Lininenzug dargestellt ist SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 98 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 6 0 1 Registerfeld Phi2PwmTable 0 Phi2PwmTable 16 Die 17 Register Phi2PwmTable 0 bis Phi2PwmTable 16 enthalten die Werte der Funktionstabelle welche zur Korrektur der Servokennlinie dient Jeder Wert stellt eine vorzeichenlose 12 Bit breite Bin rzahl dar H here Tabelleneintr ge m ssen gegen ber niedrigeren Eintr gen gleich oder gr
68. ead 46 3 Energieversorgung 48 34 Akkuzellen 22222222525 ok nern eS ET back 49 4 2 JEE i he de aee ES Lap Oe Tac de a o 49 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 6 INHALTSVERZEICHNIS Kuba 22220 0242 424544 cT 49 34 Eim Ausschalter 22 2 2 2 245224 50 3 9 lt s esra eaii Soo Rm dad Meh Rex a 51 3 6 Verpolungsschutzschaltung 52 3 7 Spannungsrepelung 2456s co Roe xo y oe x o ER WR 52 3 7 1 Spannungsversorgung der Elektronikkomponenten 52 3 7 2 Spannungsversorgung RC Empf nger 53 3 7 3 Spannungsversorgung PS 2 Buchse 53 3 7 4 Spannungsversorgung des ADCs im Mikrocontroller 53 4 Mikrocontroller Atmel AVR AT90USB1286 7 55 41 Emulation mit dem 55 4 2 corn EM s Ra He OS ee Pw aed PR Ra Gawd ed 55 Mio ee he eB te Ee 57 Aa INES Q 2 ee eo A ee 4 57 4 5 External Memory Interface os oa coca oea eee Roe e RR Rs 57 46 Einstellung der Fuses des 57 47 Update der Software des AVR Mikrocontrollers 58 4 7 1 USB Bootlodder lt a oa bos ee 02 45 00 RR REGRESO S 58 4 7 2 Software Update mittels Atmel AVR Studio und JTAG ICE 61 4 8 Atmel AVR Studio und W
69. gStrmUSB Hello World Nn fprintf gStrmUART Hello World Nn never return loop forever for return 0 2 4 2 3 Bemerkungen Die gesamte Hexapod Softwarebibliothek ist in einzelne Module aufgeteilt Jedes Modul ist einer bestimmten Aufgabe zugeordnet Alle Dateien eines Moduls be nden sich in dessen Ordner z B lib uart Um die Funktionen eines Moduls zu verwenden bedarf es drei Schritten Erstens inkludieren der Header Datei z B include uart h damit die Funktionen ben tzt werden k nnen Zweitens initialisieren des Moduls z B uart_init dazu muss die jeweilige Initialisie rungsfunktion aufgerufen werden Im dritten Schritt muss dem Kompiler noch mitgeteilt werden dass das Modul im aktuellen Projekt verwendet wird Hierzu werden dem Projekt alle Dateien des Moduls hinzugef gt Um Funktionen einzelnen Modulen zuordnen zu k nnen besitzt jede Funktionen einen eindeutigen Pr x z B uart_ Die in diesem Beispiel verwendeten Module sind folgende SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 31 Modul Pr x uart uart uart_usb uart usb SandboxS2Lib SL2_ Da einige Module nterrupts verwenden m ssen diese aktiviert werden Die beiden Variablen gStrmUSB und gStrmUART zeigen auf Strukturen die jeweils ein Ein Ausgabe Ger t repr sentieren Dadurch k nnen mit den selben Funktionen unterschiedliche Datenstr me gelesen oder gesc
70. im EEPROM abgelegt werden Siehe dazu avr libc Manual Kapitel EEPROM handling 9 8 20 RC SetServoTuneFine inline void RC SetServoTuneFine in 16 t Steps SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 188 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beschreibung Erm glicht die Ver nderung der Pulswiederholungszeit der PWM Signale siehe Abschnitt 7 5 5 auf Seite 96 f r eine genauere Beschreibung Parameter Bedeutung Steps Anzahl der 0 375 us Zyklen Die L nge des Pulswiederholungszyklus ist von diesem Wert abh ngig R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Diese Funktion ist bei der Programmierung von Laufmustern nicht erforderlich e Bevor diese Funktion verwendet werden kann m ssen SL2_Tnit und Init aufge rufen werden Beispiel siehe Beispiel der Funktion SetServoTuneCoarse 9 8 24 RC SetServoTuneCoarse inline void RC SetServoTuneCoarse in intl16 t Steps Beschreibung Erm glicht die Ver nderung der Pulswiederholungszeit der PWM Signale siehe Abschnitt 7 5 5 auf Seite 96 f r eine genauere Beschreibung Parameter Bedeutung Steps Anzahl der 2 625 us Zyklen Die L nge des Pulswiederholungszyklus ist von diesem Wert abh ngig R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Diese Funktion ist bei der Programmierung von Laufmustern nicht erforderlich e Bevor diese Funk
71. include lt stdio h gt include lt avr interrupt h gt include uart h include uart_usb_lib h SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 5 SCHNITTSTELLEN UND DATENSTR ME USB UND 161 V EE EE EE EU EE EE ESL LUE AE E global variables definitions Wa UT PE E EE EE EVE ED DEDE ERE DE LR ET AALS global pointers to stream objects FILE gStrmUSB FILE gStrmUART AERE AERE AT AAA LTD SAA AID IAAI ZZ functions LEIA LUUA LUUAL UUL 2 TIAL ADELA IAAL AIA EEN stream I O wrapper functions int strm uart putc char c FILE 5 uart putc c return 0 int strm_uart_getc FILE xs return unsigned char uart getc int strm usb putc char c FILE 5 uart usb putchar c return 0 int strm usb getc FILE 5 return unsigned char uart usb getchar do all the initialization stuff here void Init void initialize usb uart usb init initialize uart uart init UART CALC BAUDRATE 38400 create stream and attatch getc putc functions gStrmUSB fdevopen strm usb putc strm usb gStrmUART fdevopen strm uart putoc strm uart getc enable interrupts sei program entry point int main void char ine i char str 128 initialize system Init all functions work with gStrmUSB and gStrmUART print message to both devices fpri
72. kann die Option Erase Device Before Programming deaktiviert werden Ist dies der Fall kann eine weitere HEX Datei in den Flash Speicher des AVR geladen werden ohne die bereits dort vorhandene Datei zu l schen Allerdings sollte gew hrleistet sein dass die beiden Dateien keine berlappenden Speicher bereiche verwenden Ist eine der Dateien der Bootloader und die zweite ein Applikationsprogramm so ist dies norma lerweise nicht der Fall da der Bootloader am oberen Ende des Speichers angesiedelt ist 8 KByte so dass die unteren 120 kByte f r das Applikationsprogramm zur Verf gung stehen Vor der Programmierung der ersten Datei z B des Bootloaders sollte allerdings der Flash Speicher des AVR explizit vom AVR Programmer aus gel scht werden Button EraseDevice 4 8 Atmel AVR Studio und WinAvr Der eingesetzte Mikrocontroller AT90USB12806 7 ben tigt das Atmel AVR Studio in einer Version nicht lter als 4 13 http www atmel com dyn products tools card asp tool id 2725 und die Compiler Debugger Suite WinAvr http winavr sourceforge net nicht lter als Version 20070525 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 4 8 ATMEL STUDIO UND WINAVR 63 JTAGICE Abbildung 4 10 Der AVR Program mer welcher aus dem AVR Studio her aus gestartet werden kann Der Baustein AT9OUSB 1287 ist eingestellt und die Da tei TryI rq hex ist ausgew hlt SVN 408 PFAFF SEPTEMBER 20 200
73. mm Steon I und die Verbindung wurde auf genommen Ist die SandboxS 2 mittels USB Kabel den PC angeschlossen und eingeschaltet so kann mit dem Men entrag Settings Communication USB die Verbindung zum Bootloader im AVR Mikrocontroller aufgenommen werden Bevor die Verbindung hergestellt wird erscheint ein Fenster desen Button Open angeklickt werden muss Es sollte kein JTAG ICE Mk II gleichzeitig mit dem USB Kabel an der SandboxS 2 angeschlossen sein Das Ergebnis der letzten beiden Schritte schl gt sich entsprechend Abbildung 4 8 im Screenshot nieder Nun kann eine Programmdatei f r den Flash Speicher des Mikrocontrollers mit dem Men punkt File Load HEX File ausgew hlt und geladen werden Um diese in den Mikrocontroller zu ber tragen kann beispielsweise der Button Run links unten im Fenster angeklickt werden In der Abbil dung 4 9 wurde dies f r die Datei TryIrq hex getan Das Programm be ndet sich nun bereits im Flash Speicher des Mikrocontrollers Ausgef hrt wird vom AVR aber nach wie vor der Bootloader der sich ja ebenfalls im Speicher be ndet Will man das eigene soeben geladene Programm ausf hren gibt es zwei M glichkeiten Anklicken des Button Start Application oder besser Aus und Einschalten der SandboxS 2 Flip eignet sich neben der Programmierung des Flash Speichers im Mikrocontroller auch zur Programmierung des EEPROM Speichers Hierzu wird der Button Selec
74. negativen N Kanal MOSFET Akku Source Drain Polung spannungspol beachten VBAT ar LOAD F II e Spannungsabfall 111 bei korrekt gepolter Akkuspannung a Prinzip b Realisierung Abbildung 3 6 Verpolungsschutz f r hohe Str me auf Basis eines Leistungs MOSFETS Links die Prin zipschaltung rechts ein Ausschnitt aus dem Schaltplan der SandboxS 2 einer Diode einen Leistungs MOSFET mit niedrigem Drain Source Widerstand Der Stromfluss durch Drain und Source geschieht im Normalbetrieb in Richtung der internen Frei laufdiode Das Gate des Transistors ist mit der positiven Akkuspannung verbunden Bei falscher Po lung ist die Spannung Vgs negativ wodurch der Transistor sperrt Auch die Freilaufdiode leitet nicht Die Spannung welche am Durchlasswiderstand des MOSFET abf llt ist erheblich kleiner als bei einer Diode Die Verlustleistung sinkt hierdurch ebenfalls Eingesetzt wird der MOSFET Si4378DY von Vishay Siliconix Im Geh use 508 wird ein Durch lasswiderstand von 2 7 mQ erreicht Bei einem Strom von Ips 10 ergibt sich daher ein Span nungsabfall von 27 mV und ein Leistungsumsatz von 270 mW Dieser Strom wird aber nur in Extrem f llen und auch dann nur kurzzeitig erreicht A Erst hinter dem Verpolungsschutz d rfen Kondensatoren mit Polung zwecks zus tzlicher Span nungsgl ttung angeschlossen werden 3 7 Spannungsregelung 3 7 1 Spannungsversorgung der Elektronikkomp
75. sowohl am Wert 0 in NrOfCordicToDo als auch am Wert des Interrupt Flags IFCord siehe Abschnitt 7 2 1 4 erkennbar Dieses Interrupt Flag wird gesetzt sobald der Wert von NrOfCordicToDo von 1 nach 0 bergeht Das Interrupt Flag IFCord kann dar ber hinaus auch einen Interrupt Request auf der Leitung INTO ausl sen um dem Mikrocontroller die Fertigstellung des Auftrages mitzuteilen Ein Inter rupt wird vom Interrupt Flag ausgel st wenn das Bit ImCord im Register IrqMaskRcRxCtrl Ab schnitt 7 13 1 1 den Wert 1 tr gt Hat es den Wert 0 so wird die Ausl sung eines Interrupt Requests unterbunden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 126 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Ein und Ausgabewerte des CORDIC Algorithmus Version Rotationsmodus Vektormodus di sign z Zn gt 0 di sign x y Un gt 0 C K cir z cos z ysin 2 x C Kri y zirkular Y QR Keir y cos z z sin z Y QR 0 D D I I 0 z C z arctan sin a cos a arctan a Va b2 AL a jb a jb A B x x x x H S H 5 linear R R inear b y az D 0 I I 7 o 0 7 Tz A Ic Ku z cosh z y sinh z x KV y hyperbolisch js Knyp y cosh z z sinh z y 0 E C 0 z artanh z sinh a cosh a artanh a va b Tabelle 7 37 Verschiedene Modi und Koordinatensysteme K REUZGRUBER 2007 Die Berechnungen weisen je nach dem gew hlten Koordinatensyst
76. 00 initialisiert Am Anfang des RAM Bereichs kann eine Copyright Message ausgelesen werden Um gegen ber zuk nftigen Ver nderungen im Funktionsumfang des HSSE Robotics Chip flexibel zu sein wird dringend empfohlen den Softwareentwurf keinesfalls auf die vollst ndige Verf gbarkeit der 2kByte RAM zu st tzen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 124 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 22 CORDIC Koprozessor In der Robotik spielen trigonometrische Funktionen eine wichtige Rolle etwa bei der Transformation von Koordinatensystemen oder der Berechnung der inversen Kinematik eines Roboters Zur Berechnung der Werte trigonometrischer Funktionen gibt es unterschiedliche Methoden die al le auf einer schrittweisen Ann herung an den gesuchten Funktionswert beruhen Jeder Schritt verbes sert die Genauigkeit der L sung Innerhalb eines solchen Schrittes sind zwar ebenfalls mathematische Berechnungen notwendig diese sind aber relativ einfacher Natur meist handelt es sich um Additionen und Multiplikationen Die bekannten Methoden unterscheiden sich stark im Aufwand der f r jeden Rechenschritt not wendig ist und auch in der Anzahl der Schritte die zur Erreichung einer gew nschten Genauigkeit erforderlich sind Beide Eigenschaften zusammen entscheiden ber die Eignung einer Berechnungs methode zur Umsetzung in Hardware oder auch Software Die bekannteste Methode zur Berechnung von Funktionen wie cos a oder arctan y
77. 007 6 3 FPGA KONFIGURATION 77 Nun beginnt das Kopieren der Dateien das kurze Zeit darauf mit einem weiteren Infofenster unter brochen wird Nach einem Klick auf Met erscheint ein Auswahlfenster wie in Abb 6 3 Nachdem die Optionen wie in der Abbildung erkennbar umgestellt wurden wird der Driver mit Klick auf stall installiert Nat rlich fragt der Installer nochmals nach ob man sich auch ganz sicher ist Mit Klick auf Close wird das Fenster wieder geschlossen und der Installer fragt nach ob er den Rechner nun neu starten darf um die Installation abzuschlie en Bevor ispVM System verwendet wird sollte man diesen Neustart unbedingt durchf hren Download der Konfiguration mit ispVM System Die nachfolgende Beschreibung wurde f r ispVM System in der Version 16 4 1 erstellt Die Versions nummern dieses Programms schreiten rasch voran so dass es unm glich ist bei jeder neuen Version auch die Beschreibung zu renovieren Sollte die Beschreibung nicht mehr zur aktuellen Version pas sen sind wir f r einen Hinweis dankbar http forum hexapod at Nach Starten von ispVM System ist das Hauptfenster Abb 6 4 zu sehen f LSC ispYM System Chain configuration D xi Fie Edi View Project ispTools Options Window Help D eso Y EG EB rr SE EZ KR bh gt ER 7 Chain configuration index Devicelit FileName IR Lenglh Operation L Add New Device by selecting Edit amp dd New Dev
78. 08 PFAFF SEPTEMBER 20 2007 55 4 Mikrocontroller Atmel AVR AT90USB1286 7 Der Mikrocontroller Atmel AVR AT90USB1286 7 wird in einem sehr ausf hrlichen Datenblatt be schrieben dass von der WWW Seite der Firma Atmel geladen werden kann http www atmel com dyn resources prod documents doc7593 pdf 4 1 Emulation mit dem JTAG ICE Mk Il Zur Emulation kann der Atmel JTAG ICE II verwendet werden der ltere JTAG ICE kann f r den eingesetzten Mikrocontroller nicht benutzt werden Um diesen Emulator verwenden zu k nnen wird ein Zugriff auf den JTAG Port ben tigt der entsprechend Abb 4 1 auf eine 10 polige Stiftwanne m AVR fo o Abbildung 4 1 Der JTAG Port des ist auf einer 10 poligen Stiftwanne zug nglich gef hrt ist Der JTAG Port ist beim AT90USB1286 7 nicht konform zum JTAG Standard SOCIETY 1993 ausgef hrt da die verwendeten Anschlusspins eine Zweitfunktion besitzen F r die Anwendung auf einem mobilen Roboter ist diese Zweitfunktion unter Umst nden interessant da hier die Eing nge ADC4 ADC7 des A D Umsetzers verf gbar sind Die Anschlusswanne f r den JTAG ICE erf llt also unter Umst nden eine Zweitfunktion zum Anschluss von Sensoren 4 1 0 1 Anschluss des JTAG ICE Mk an die SandboxS 2 Im Bild4 2 ist der Anschluss des ICE Mk II an die SandboxS2 dargestellt Achtung Das Folienflachbandkabel des JTAG ICE Mk II ist leider sehr emp ndlich
79. 1 2 Inverse Kinematik Mit der inversen Kinematik lassen sich die Winkel bei gegebenem Endpunkt berechnen Abbildung 8 2 Es wird also vom Endpunkt zur ck zum Ursprung gerechnet In entgegengesetzter Richtung zur Vorw rtskinematik SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 134 8 INVERSE KINEMATIK Am Beispiel des Hexapod bedeutet das dass der Fu punkt bekannt ist jedoch nicht die Servowinkel Die Berechnung ist etwas komplexer wie die der Vorw rtskinematik Da oft mehrere Winkelkombina tionen zu dem selben Punkt f hren INVERSE KINEMATICS T Handle Abbildung 8 2 Inverse Kinematik der Endpunkt ist bekannt die Winkel werden berechnet 8 2 Inverse Kinematik des Hexapods In dieser Implementierung f r die Mechanik des Hexapods Captain Ahab werden die Winkel durch folgende Gleichungen bestimmt arctan 2 8 1 x Lp cos Po y sin Yo 8 2 Up y cos o x sin Yo 8 3 2 2 2 2 pa 8 4 2a1aa r c p gt 8 5 C2 V1 arctan 53 8 6 D 2 ag sin y2 p arctan arctan 8 7 Lp a ag cos q In diesem Kapitel werden anstatt der deutschen Begriffe fiir die einzelnen Elemente eines Beins die in der Robotik und Insektenkunde gebr uchlicheren lateinischen Begriffe verwendet SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 3 HEXAPOD KALIBRIERUNG 135 e Coxa H fte bzw oberste
80. 150 a OE ok e he 151 942 SL2_AvrSetMseled ek ee ee ee ee 151 94 SLA ett ees 2 cote um sm ee ae GR EUROS ee eee 152 9 4 4 SL2 AvrWaitOnKey 153 9 4 5 SL2 ExtAvrSetPinMode 154 9 4 6 512_ 155 9407 52 Keen ale A d s u q 2 ooo 552592 155 215 SOLI GEC uuu xo S Rodeo eremum ee New 156 9 49 SL2 GetCurrentLowAmpli cation 157 9 4 10 SL2 GetCurrentHighAmpli cation 158 94 1 SLZ GetBaiiery Voltage lt oe 22 00 20 x EROR n X Ro Qa 158 9 4 12 SL2_ExtAvrGetAdcValue 159 9 5 Schnittstellen und Datenstr me USB und UART 160 ODE ic 162 warnt inito ee mo my E RE US 162 902 uat amt doubl speed sss s saves oe m o eos 164 o ee na ee ee 164 96A pus eh E ARERR 165 MEGA 2 L e toba meon bec ko 165 966 WAS pK ae Roy Am be QS E Q a 166 QOO did ge de Tull 22220202 soo 9 REX REG SS 166 97 USB UART L22uuoauce uoce 552 Rees ES 167 9 7 1 Wart usb init a not w s o RR s 167 772 qat usb 225 22 54 NEE ale 169 SONS
81. 1FF 32 Phi2PwmTable 7 Servo ng 1996 0x8200 2ng 0x823F 32 Phi2PwmTable 8 Servo ns 2306 0x8240 2ng 0x827F 32 Phi2PwmTable 9 Servo ns 2598 0x82804 2ng 0x82BF 32 Phi2PwmTable 10 Servo ng 2875 0x82C0 2ng Ox82FF 32 Phi2PwmTable 11 Servo ne 3160 0x8300 2ng 0x833F 32 Phi2PwmTable 12 Servo ng 3425 0x8340 2n 5 0x837F 32 Phi2PwmTable 13 Servo ng 3690 0x8380 2ng Ox83BF 32 Phi2PwmTable 14 Servo ng 3953 0x83C0 2ns Ox83FF 32 Phi2PwmTable 15 Servo ng 3953 0x8400 2ng Ox843F 32 Phi2PwmTable 16 Servo ng 3953 Tabelle 7 10 Addressraum f r die Eintr ge der Linearisierungstabelle ng ist die Servonummer 0 bis 23 Die St tzstellen sollten f r jedes Servo einzeln mittels Messung bestimmt werden Nur so wird eine hohe Genauigkeit erreicht Man kommt jedoch schon durch Messung eines einzelnen Servoexem plars dessen Werte der Einfachheit halber f r alle Servos dieser Bauart eingesetzt werden auf eine erhebliche Verbesserung der Genauigkeit SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 6 SERVOLINEARISIERUNG UND KALIBRIERUNG 99 7 6 1 Vorgehensweise f r die Servokalibrierung In Abschnitt 7 3 wurde bereits erl utert warum k ufliche also reale Servos nicht die Eigenschaften eines idealen Servos erreichen F r die Robotik w re es w nschenswert das Servo direkt ber einen Wunschwinkel im Bogenmaf also beispielsweise 7 2 steuern zu k nnen Der Winkel sollte dann vorzeigerichtig also gegen den Uh
82. 2048 200 10 24 gt 11 LEDs 0 10 Data RC GetServoCurrentPhi 0 skip decimals behind the comma Data Data gt gt 4 calc the LED to switch on LedIdx Data 200 RC SetLedBrightness LedIdx 255 return 0 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 185 9 8 13 RC_SetServoRotation inline void RC_SetServoRotation in uint8_t ServoNumber in RC_ServoReverse Reverse Beschreibung Schaltet die Drehrichtung eines bestimmten Servos um Parameter Bedeutung ServoNumber Nummer des Servos dessen Modus ver ndert werden soll Die Nummerierung der Servos istin Abb 7 1 auf Seite 81 ersichtlich Reverse Umkehr der Drehrichtung Kann entweder auf RC_SERVO_REVERS oder RC_SERVO_REVERSE_OFF gesetzt werden Lj _ ON R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Bevor diese Funktion verwendet werden kann m ssen 512 Init und RC Init aufge rufen werden Beispiel Die Drehrichtung von Servo 0 ndern wenn AVR Key 0 gedr ckt wird int main proxy function for whole initialization Init move servo number 0 to angle 2000 RC_SetGlobalServoMode RC_SERVO_MODE_PHI_DIRECT RC_SetServoPhiDirect 0 2000 while 1 set inverse bit only when key 0 is pressed if SL2_AvrGetKey 0 SL2_KEY_NOT_PRESSED RC SetServoRotation 0 RC SERVO REVERSE
83. 2MANUAL TEX 14 2 Erste Schritte Dieses Kapitel stellt unter den Kapiteln dieses Handbuchs insofern eine Ausnahme dar als es den Charakter eines Tutorials aufweist Es f hrt an Hand von Beispielen in die Programmierung des AVR Mikrocontrollers auf der SandboxS 2 ein Zu Beginn wird auf die Einrichtung der Entwicklungsumgebung und der Hardware eingegangen Danach soll ein m glichst einfaches Programm f r den AVR Mikrocontroller das eine der LEDs auf der Sandbox steuert erstellt werden Ebenfalls wird das Erstellen eines neuen Projekts veranschau licht Das darauf folgende Beispiel soll einen ersten Einblick in die Steuerung mit dem Robotics Chips geben Der Hexapod darf erst nach diesem Kapitels zusammengebaut werden Da jeder einzelne Ser vomotor kalibriert werden muss 2 1 Systemvoraussetzungen e Handels blicher Computer oder Notebook mit USB Schnittstelle Eine serielle parallele Schnittstelle wird ebenfalls empfohlen Microsoft Betriebssystem der Version Windows 2000 oder Windows XP wird vorausgesetzt Microsoft Windows Vista kann noch nicht verwendet werden da die Unterst tzung einzelner Programme fehlt Die Entwicklung auf Unix Linux Systemen ist ebenfalls m glich wird in diesem Dokument aber nicht behandelt e Atmel Entwicklungsumgebung AVR Studio ab Version 4 13 Be ndet sich auf der beigelegten CD im Ordner AtmelAvrStudio Die aktuelle Version kann auch unter http www atmel com avrstudio bezogen werden e WinA
84. 30 334 Walther J S A Uni ed Algorithm for Elementary Functions In AFIPS 1971 Atlantic City USA Proc Spring Joint Computer Conf 1971 379 385 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 236 Index External Memory Interface 57 Fuse 57 Haftungsausschluss 2 JTAG ICE 58 Legende 2 Linearisierung 91 Modellbauservo 87 Nutzungsbedingungen 2 Raumkoordinate 91 Regelkreis 89 Robotikservo 87 89 Servo 87 Servokennlinie 91 Servostecker 92 Zeichenlegende 2 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 e x x au T 20 Q OT A i t Oo Q lt i d iD o be So u x QN A 42 ec Q Flee CE ELE 2 9v Hitec HS 3xx mmm 1 gt vk Ausdrucken der Winkelkalibrierschablone Die umseitige Winkelkalibrierschablone muss unverzerrt ausgedruckt werden Im Acrobat Reader wird hierzu die Seite mit der Winkelschablone aufgeschlagen und mit den Einstellungen Current page f r den Parameter Print Range und None f r den Parameter Page Handling ausgdruckt Ein Beispiel f r diese Einstellungen ist im nachfolgenden Screenshot zu sehen audith
85. 6C0 2ns ng ist die Servonummer 0 bis 23 Nur lesbar 7 5 5 Pulswiederholungszyklus Die Dauer des Zyklus in welchem der Puls wiederholt wird kann mittels der Parameter TuneFine und TuneCoarse eingestellt werden Standardeinstellung nach dem Einschalten der SandboxS 2 ist 20 ms Die Einstellbarkeit der Zyklusl nge steht im Zusammenhang mit der Abstimmungsfunktionen f r die Geschwindigkeit mit der Bewegungssequenzen vom Servo Sequencer ausgef hrt werden Daher werden die Register f r diese beiden Parameter im Abschnitt 7 7 1 besprochen 7 6 Servolinearisierung und kalibrierung F r Robotikanwendungen ist die ungenaue und nichtlineare Zuordnung von Pulsl nge zu Servostell winkel handels blicher Servos sehr st rend Um sie auszugleichen enth lt der HSSE Robotics Chip eine Linearisierungseinheit welche die nichtlineare Kennlinie eines Servos mit Hilfe von St tzstellen und zwischen diesen St tzstellen mittels linearer Interpolation ausgleicht Die Funktionsweise dieser Einheit ist in Abb 7 9 dargestellt In die Linearisierungseinheit wird ein Zahlenwert im Bereich von 0 bis 4095 eingegeben der im Parametersatz des Servos als CurrentPhi also momentaner Winkel bezeichnet wird Allerdings handelt es sich hierbei nur um den gew nschten Winkel nicht um den Winkel der tats chlich vom Servo eingenommen wird Die Linearisierungseinheit berechnet anschlie end auf der Basis der St tzstellen Phi2PwmTable 0 bis Phi2PwmTable 16 mittels
86. 7 9 8 19 RC SetGlobalServoAttributesTable 187 9820 SetServoTumePme gt s esr u a s OS RR oy Romo 187 9521 RC SetServoluneC ees eu Ls eu kem wo o wow y W 188 0922 RC OGePsDaH 2 2 mag 99 NU Qul 694 EA ES 189 0 86 23 RC SetRxControl lt se c sew o ooo k a s RR ehe 190 98521 RC a co ee oe s es Reo oq os 505 475 0 00 191 9 8 25 RC GetGamePadButtons 192 9 8 26 RC GetGamePadJoys ckData 193 9 8 27 RC GetGamePadD t 2 2 2252 194 9 8 28 RC_SetBuzzerVolume 195 95829 RC SetBuzzerPhasebhsgh lt os u D ee ee Q W 195 9 8 30 SetBuzzerPhaseLoW 224 99 a en G QUN 3 196 9 8 31 RC_SetCordicCalculationArguments 197 9 8 32 5 198 9 8 33 RC 198 9 8 34 RC GetCordicCalculationResult lees 199 9 8 35 RC_GetRoboticsChipVersion 200 9 8 36 RC GetOlobalTud t 2 200 98 27 RC 201 99 Inverse K nemalik ws w Ba oso Xo S QU QU ee W 202 JE DUE ans oco et S Rue o AE E AAS vr pg does 202 9 9 2 CalculateInverseKinematicsCoxa 203 993 SetLesMovementCoxa sco x e w RR Rx omo
87. 7 SBXS2MANUAL TEX 64 5 On Chip Peripherie des Atmel AVR AT90USB1286 7 Der Mikrocontroller Atmel AVR AT9OUSB1286 7 weist eine reichhaltige Auswahl von Peripherie einheiten auf die auch zu einem Gro teil auf der SandboxS 2 verwendet werden Abb 5 1 In die o0 Servo Servo2 Servo Se opd Servo5 Servos Servo Servos Servos Em 11 CX I epp I et rien Een Dn tex P lcs ii iss is 557 en j Sec 4 NIMh or 71 d NiMh or d A ucion od rm j 07 E KeyFpga1 ied i en ne 605 48 HSSE HAGENBERG E 4 io ww 4 E 2 E a F ri Sr E me reo SE n isi Lu Wr CFS OF CFS CSS GEE Cte EGE SS KS KS ESS 6 5 Servoi 5 15 Servo15 5 14 5 13 12 Abbildung 5 1 Der Mikrocontroller Atmel AVR und seine Peripherieeinheiten sind hervorgehoben sem Kapitel werden diese Peripherieeinheiten im Einzelnen vorgestellt Weitergehende Informationen nden sich im Datenblatt des Mikrocontrollers http www atmel com dyn resources prod_documents doc7593 pdf und in den zahlreichen Application Notes der Firma Atmel 5 1 USB Function Controller Der Mikrocontroller verf gt ber eine eingebaute USB Schnittstelle nach USB Standard 2 0 f r den Function Betrieb im Modus Full Speed Die USB Buchse vom Typ B ist
88. 8 887 1158 1425 1708 1996 2306 2598 2875 3160 3425 3690 3953 3953 3953 0 SERVO REVERSE default 51 362 628 887 1158 1425 1708 1996 2306 2598 2875 3160 3425 3690 3953 3953 3953 0 SERVO REVERSE default 19 279 545 822 1102 1399 1694 2005 2340 2573 2867 3140 3413 3680 3931 3931 3931 115 RC SERVO REVERSE Servo 04 10 299 569 843 1122 1403 1698 2006 2310 2600 2878 3154 3416 3673 3948 3948 3948 56 SERVO REVERSE Servo 05 11 314 579 842 1134 1419 1699 1994 2279 2545 2818 3089 3359 3633 3903 3903 3903 76 RC SERVO REVERSE Servo 06 62 382 661 944 1225 1508 1787 2082 2384 2680 2924 3181 3424 3662 3898 3898 3898 107 RC SERVO REVERSE Servo 01 76 396 657 901 1184 1452 1749 2033 2332 2625 2892 3158 3410 3672 3944 3944 3944 18 RC SERVO REVERSE Servo 02 1 269 533 797 1065 1344 1641 1954 2256 2548 2844 3130 3409 3673 3946 3946 3946 146 RC SERVO REVERSE ON Servo 03 d G i ou d d e d oe d o d OO oe d o ou Au d oe 1 H AA AAA AAAI ALD AA AAA ATLA UAA AA AAA AA LDA TA AAA ALD AAA ALA IAAT AL GG functions 2 LAL E TAAL TAMPA 7 ALATA A ILI ATL
89. 9 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199 9 8 34 RC_GetCordicCalculationResult uintl6_t RC GetCordicCalculationResult in uint8_1 in uint8_1 Register NumberOfCalculation Beschreibung Liest das Ergebnis einer CORDIC Berechnung aus dem RoboticsChip Parameter Bedeutung Register Auswahl des Registers aus dem gelesen werden soll kann die Werte x X y Y z oder Z annehmen NumberOfCalculation Index der Berechnung in der Queue R ckgabewert R ckgabewert Beschreibung Result Ergebnis der CORDIC Berechnung Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Berechnet den Arcustangens von int main void uintl16 t Result 0 initialize all modules Init while 1 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 200 9 SOFTWARE FUNKTIONSBIBLIOTHEK calculate atan pi by using the CORDIC algorithm in this mode the CORDIC algorithm calculates atan y x so y will be set to pi and x will be set to 1 for a higher precision of the argument both values are mul
90. 90USB1286 7 5 3 2 Spannungsmessung Der ADC des AVRs wird neben der Strommessung auch zur Messung der Akkuspannung herange zogen Die entsprechende Schaltung ist in Abb 5 11 zu sehen Die Spannung wird ber einen Span zum ADC Eingang SH ADC3 des AVR Abbildung 5 11 Schaltung zur Aufbereitung der Span eb nung f r die Messung durch den ADC des AVR nungsteiler auf den Messbereich des ADCs im AVR herabgeteilt da dieser nur von 0 3 3 V geht die Akkuspannung jedoch unmittelbar nach dem Aufladen knapp ber 7 V liegen kann Das Messprinzip des ADC im Mikrocontroller erfordert einen geringen Ausgangswiderstand der Quelle Diese wird jedoch nur kurzzeitig belastet Daher kann ein Kondensator zur Stabilisierung herangezogen werden Da die Akkuspannung im laufenden Betrieb gemessen wird ergibt sich die M glichkeit die Entla dekurve der Akkus aufzuzeichnen und den Zusammenhang zum dem entnommenen Strom festzuhal ten 5 4 Taster Am Mikrocontroller sind zwei Tasten laut Abb 5 12 zur Ausl sung beliebiger Aktionen angeschlos i e a e m on L A KeyAvro BR vi KezAvr m L3 E Abbildung 5 12 Universell einsetzbare Taster am AVR sen Die Tasten sind ber einen Serienwiderstand als Schutzschaltung angeschlossen so dass ein Tas tendruck auch bei fehlerhafter Programmierung des AVRs keine Zerst rung des Ba
91. A APES LIA FOE ALIN LUAT AU ALL IIT IIA DEEL FILE gStrmUSB NULL FILE gStrmUART NULL TAT ATA EE AE EE LAAT TLE AT TES f f fubctions ZE E E EIE AA AAAS AT stream I O wrapper functions int strm_uart_putc char c FILE s uart_putc c return 0 int strm_uart_getc FILE xs return unsigned char uart_getc int strm usb putc char c FILE xs uart usb putchar c return 0 int strm usb getc FILE 5 return unsigned char uart usb getchar SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 30 2 ERSTE SCHRITTE do all the initialization stuff here void Init void initialize sandboxs2 AVR peripherals SL2 Init initialize usb uart usb init initialize UART set baud rate to 38400 uart init UART CALC BAUDRATE 38400 activate stream I O gStrmUSB fdevopen strm usb putc strm usb getc gStrmUART fdevopen strm uart putc strm uart enable interrupts sei program entry point int main void Initialize system Init wait on key SL2 AvrSetMsgLed SL2 MSG LED 0 SL2_MSG_LED_STATUS_ON 512 AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED SL2 AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS ON print welcome messag fprintf
92. AL TEX 44 2 ERSTE SCHRITTE wait until key gets pressed while SL2_AvrGetKey SL2 KEY 0 512 KEY NOT PRESSED amp amp SL2 AvrGetKey SL2 KEY 1 SL2 KEY NOT PRESSED wait some time to debounce key delay ms 5 evaluate keys case 1 both keys pressed if SL2 AvrGetKey SL2 KEY 0 SL2 KEY PRESSED amp amp SL2 AvrGetKey SL2 KEY 1 SL2 KEY PRESSED wait until keys get released while SL2 AvrGetKey SL2 KEY 0 SL2 KEY PRESSED SL2 AvrGetKey SL2 KEY 1 SL2 KEY PRESSED wait some time to debounce key delay ms 5 return SELECT case 2 0 pressed else if SL2 AvrGetKey SL2 KEY 0 SL2_KEY_PRESSED wait until key gets released while SL2 AvrGetKey SL2 KEY 0 SL2 KEY PRESSED wait some time to debounce key delay ms 5 return INCREMENT case 3 keyl pressed else if SL2 AvrGetKey SL2 KEY 1 SL2 KEY PRESSED wait until key gets released while SL2_AvrGetKey SL2_KEY_1 SL2 KEY PRESSED wait some time to debounce key _delay_ms 5 return DECREMENT return NO_KEY program entry point int main void PWM impulse length uintl6_t pwm 1 lt lt 11 servo rotation ServoRotationSta
93. ANUAL TEX 80 6 FPGA LATTICE XP LFXP3K Detect das Kabel gesucht werden kann Ein Test mit abgezogenem Kabel zeigt dass das fehlende Kabel mit einer entsprechenden Fehlermeldung quittiert wird Ist das Kabel angesteckt passiert bei Druck auf den Button dagegen scheinbar nichts Daneben gibt es brigens eine noch gere Fehlerquelle Es wurde vergessen die SandboxS 2 einzuschalten oder deren Akkuzellen sind entladen 6 3 1 2 Embedded Programming Lattice ispVM Embedded und AVR Die JTAG Schnittstelle des FPGAs arbeitet mit Logikpegeln und nach einem speziellen seriellen Pro tokoll Es ist m glich dieses Protokoll in Software nachzubilden und die Programmierung des Flash Speichers im FPGA von einem Mikrocontroller aus vorzunehmen Hierzu ist allerdings eine Verbin dung zwischen dem Mikrocontroller und dem JTAG Port des FPGAs notwendig Da dieser Port ent sprechend des vorangegangenen Abschnitts auch an ein Download Kabel angeschlossen werden soll w re ein teurer Umschalter zwischen der Kabelverbindung und der Verbindung zum Mikrocontrol ler notwendig Aus Kostengr nden wurde hierauf verzichtet da alternativ auch eine Kabelverbindung ber den JTAG Port Stecker zum Mikrocontroller hergestellt werden kann Lattice stellt unter dem Namen ispVM Embedded das Ger st f r einen sogenannten JTAG Sequencer zur Verf gung Diese Sammlung von C Programmen kann an die Bed rfnisse der eige nen Anwendung angepasst werden Konkret
94. AS AP EIS LE stream I O wrapper functions int strm uart putc char c FILE s uart_putc c return 0 int strm uart getc FILE s return unsigned char uart getc int strm usb putc char c FILE s uart usb putchar c return 0 int strm usb getc FILE 5 return unsigned char uart_usb_getchar do all the initialization stuff here void Init void initialize sandboxs2 SL2_Init initialize robotics chip BC Init Js initialize inverse kinematics IK Init initialize usb SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 4 INVERSE KINEMATIK TEST 145 uart usb init initialize uart uart init UART CALC BAUDRATI Gl 38400 clear all LEDs RC_SetLedClearAll activate stream I O gStrmUSB fdevopen strm usb putc strm usb getc gStrmUART fdevopen strm uart putc strm uart getc enable interrupts sei program entry point int main void int8 t i 0 Initialize system Init copy the servo attributes table into the RoboticsChip RC SetGlobalServoAttributesTable P gTable init position IK SetLegMovementCoxa 3 140 40 0 IK KNEE UP never return loop forever for move leg 3 to 140 40 0 SL2_AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED for i 40 i lt 40 1 IK_SetLegMovementCoxa 3 140 i 0 IK_KNEE_UP _delay_ms 20 move
95. Abbildung 8 4 Die zuvor gemessenen Werte werden nun von den unten angegebenen idealen Werten abgezogen Daraus ergeben sich die Offset Werte die f r die Servo Tabelle ben tigt werden Hierbei mu nat r lich auf die richtige Servonummer geachtet werden Die Offset Werte werden wie folgt berechnet die zuvor ermittelten Messwerte werden in diesen Gleichungen als Y Mitte Min Femur Und P Min Tibia bezeichnet POffsetCora Mitte Cora 1609 8 8 POffset Femur Min Femur 3272 8 9 POffset Tibia Min Tibia 8 10 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 3 HEXAPOD KALIBRIERUNG 137 Abbildung 8 3 Kalibrierung der Coxa Servos Abbildung 8 4 Kalibrierung der Femur links und Tibia rechts Servos SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 138 8 INVERSE KINEMATIK 8 3 3 Quellcode Lv Workfile z main c Author t Christian Raschk amp 2007 08 20 Description main program Revision DEE EE EE EE EE HH I Y kk e ck oe o e ob e o e ob e c e oe e oe e oe e e oe e oe e oe e e e S Date E EE PEE EGER E ET EE ER includes V E A PEU EEUU DERE PUE EAE IDEAE E E E EE EE PEE E E include include include include include include include include lt stdio h gt lt avr interrupt h gt lt util delay h gt lt avr pgmspace h gt S
96. AvrSetMsgLed SL2 MSG LED 0 SL2 MSG LED STATUS ON SL2 AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED print welcome message printf gStrmUSB Running lights Nn En run light run for clear all robotics chip LEDs RC SetLedClearA11 set brightness RC SetLedBrightness led Oxff delay 160msec maximum delay time is 32 7625msec see delay h delay ms 32 delay ms 32 delay ms 32 r delay ms 32 delay ms 32 r if led gt 11 led 0 else led never return loop forever for return 0 2 5 2 3 Bemerkungen Die Funktionen mit Pr x sind Bestandteil des Robot icsChip Moduls Der Robotics Chip ist ein eigenes St ck Hardware auf der Platine das gr te Bauteil Die Funktion delay ms kehrt erst nach der angegeben Zeit wieder zur ck Dabei gibt es aber Einschr nkungen des Wertebereichs die nicht umgangen werden k nnen So ist die maximale SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 41 Wartezeit auf 32 7625 Millisekunden begrenzt 2 5 3 Projekt bersetzen Das fertige Projekt wird nun erstmals bersetzt Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 3 2 5 4 Programm ausf hren Danach kann das Programm ausgef hrt werden Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 4 2 5 5 Programm testen Nun wird die Funktion geteste
97. Beschreibung Sucht die Datei mit dem angegebenen Namen Parameter Bedeutung File Name Startadresse des Strings f r den Dateinamen Cluster Der Verzeichnis Cluster in dem gesucht werden soll Dieser Parameter gibt die Adresse des ersten Clusters der Datei zur ck wenn diese gefunden wurde Size Enth lt die Gr e der Datei sofern diese gefunden wurde Dir Attrib Attribute des Verzeichnisses Buffer Zwischenspeicher SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 10 SD KARTE 213 R ckgabewert R ckgabewert Beschreibung SUCCESSFUL Die Datei wurde gefunden FILE_NOT_FOUND Die Datei wurde nicht gefunden FAILED Mindestens einer der angegebenen Parameter ist ung ltig oder die SD Karte wurde nicht korrekt initialisiert Anmerkung e Die SD Karte muss eingelegt und initialisiert sein e Wird der Parameter Cluster auf 0 gesetzt so wird im Root Directory gesucht e Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden Beispiel siehe Beispiel in Abschnitt 9 10 7 auf Seite 214 9 10 6 fat_read_file void fat read file in uinti16 t Cluster out uint8 t Buffer in uint32 t BlockCount Beschreibung Liest Daten aus einer Datei Parameter Bedeutung Cluster Erster Cluster der Datei Buffer Gelesene Daten Buffer ist ein eindimensionales Array 8 bit Datentyp welches mindestens so grof ist wie die A
98. E6 0x87E7 1 ReRxChannel 8 Ox87E8 0 87 9 1 ReRxChannel 9 Ox87EA Ox87EB 1 ReRxChannel 10 Ox87EC 0x87ED 1 ReRxChannel 11 Ox87EE 0x87EF 1 ReRxChannel 12 Ox87FO 0 87 1 1 ReRxStatus Ox87F2 Ox87F3 1 Ps2X Ox87F4 0 87 5 1 Ps2Y Ox87F6 0x87F7 1 Ps2Buttons 0 87 8 0x87FB 2 Version Ox87FC 0x87FD 1 reserviert Ox87FE Ox87FF 1 GlobalTimer 16 Bit Register AVR kann schreiben und lesen 0x8800 0x8801 1 NrOfCordicToDo 0x8802 0x8807 3 reserviert 0x8808 2nc 0 8809 2 3 Ein und Ausgabewert 2 CORDIC Block Nr nc Ox880A 2nc 0x880B 2nc 31 Ein und Ausgabewert y CORDIC Block Nr nc 0x880C 2nc 0x880D 2nc 31 Ein und Ausgabewert z CORDIC Block Nr nc 0x880E 2nc 0 880 2 3 CoordSystem und Mode CORDIC Block Nr nc 0x8900 Ox8BFF 384 reserviert 16 Bit Bereich reserviert 0x8C00 Ox8FFF 512 reserviert 8 Bit RAM Bereich kann schreiben und lesen 0x9000 Ox97FF 2048 RAM 2kByte 16 Bit Bereich reserviert 0x9800 Ox9BFF 512 reserviert 8 Bit Register kann nur lesen 0x9C00 1 IrqFlagServo70 0 9 01 1 IrqFlagServo158 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 132 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Adr AVR Ende Words Beschreibung 0x9C02 1 IrqFlagServo2316 0x9C03 1 IrqFlagsOthers 0x9C04 Ox9FFF 1020 reserviert SBXS2MANUAL TEX SVN 408 PFAFF S
99. EPTEMBER 20 2007 133 8 Inverse Kinematik Dieses Kapitel gibt einen kurzen berblick ber die Berechnung der inversen Kinematik des Hexa pods Die Kinematik gr kinema Bewegung ist ein Teilgebiet der Mechanik Sie besch ftigt sich mit der Berechnung von Punkten und K rpern im Raum Um die inverse Kinematik mit dem Hexapod zu verwenden mu dieser zuvor kalibriert werden Programmbeispiele be nden sich am Ende des Kapitels 8 1 Allgemeines Nachfolgend wird kurz auf die Funktion der inversen Kinematik eingegangen Detaillierte Grund lagen der inversen Kinematik nden sich in Lehrb chern zur Industrie Robotik wie z B SPONG HUTCHINSON und VIDYASAGAR 2005 CRAIG 2004 8 1 1 Vorw rtskinematik Bei der Vorw rtskinematik sind die Winkel der einzelnen Gelenke bekannt jedoch nicht der Endpunkt Abbildung 8 1 Am Beispiel des Hexapod bedeutet das dass die Winkel aller Servomotoren bereits gegeben sind und die Position des Fu punktes berechnet wird Jedes Segment des Beins wird durch einen Vektor dargestellt Diese Vektoren werden nun aneinander geh ngt Femur an Coxa und Tibia an Femur Der Winkel zwischen den Vektoren ist gleich den Win keln der Servomotoren Hat man alle Winkel und L ngen der Vektoren kann der Fu punkt berechnet werden FORWARD KINEMATICS A Z 55 Z ex D Start Joint Abbildung 8 1 Vorw rtskinematik alle Winkel sind bekannt der Endpunkt wird berechnet 8
100. FTWARE FUNKTIONSBIBLIOTHEK Funktionalit t Methoden Funktionalit t Funktionalit t Funktionalit t Funktionalit t Funktionalit t Leuchtdioden des Robotics Chips RC_SetLedBrightness RC_SetLedClearAll Servos des Robotics Chips RC_SetServoMode RC_SetGlobalServoMode RC_SetServoRotation RC SetServoAttributesTable RC SetServoAttributesTable P RC SetServoAttributesTable E RC SetGlobalServoAttributesTable RC SetGlobalServoAttributesTable P RC SetGlobalServoAttributesTable E RC SetServoPwmbDirect RC GetServoCurrentPwm RC SetServoPhiSpeed RC SetServoPhiDirect RC GetServoDeltasToGo RC GetServoCurrentDeltaPhi RC GetServoCurrentPhi RC SetServoTuneFine RC SetServoTuneCoarse Eingabeger te Sony Playstation2 Gamepad RC_GetPs2Data RC_SetRxControl RC_GetRxControl RC_GetRxData RC_GetGamePadButtons RC GetGamePadJoystickData RC GetGamePadData Buzzer Summer RC_SetBuzzerVolume RC_SetBuzzerPhaseHigh RC_SetBuzzerPhaseLow CORDIC Winkelprozessor RC_SetCordicCalculationArguments RC_SetCordicCalculationS tart RC_CordicWaitOnResult RC_GetCordicCalculationResult Hilfsfunktionen RC_GetRoboticsChip Version RC_GetGlobalTimer RC SetInterruptO SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 1 BERSICHT DER SCHNITTSTELLEN 149 Modul InverseKinematics Funktionalit t Initialisierung Methoden IK Init Funktionalit t Berechnung der inversen Kinematik eines Spinnenbein
101. Festplatte erzeugt Als n chstes muss die Hexapod Soft warebibliothek von der CD auf den Computer kopiert werden Dazu wird der Ordner 1ib im HexapodFirmware Verzeichnis auf die Festplatte kopiert Dieser beinhaltet den gesamten Quell SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 26 2 ERSTE SCHRITTE code der Bibliothek e Dateien hinzuf gen n o 9 Ser Abbildung 2 9 Hinzuf gen bereits existierender Dateien Im n chsten Schritt m ssen alle Dateien der verwendeten Hexapod Software Bibliotheken hinzu gef gt werden Hierzu Rechtsklick auf die Projektwurzel im linken Fenster und Befehl Add existing File s ausw hlen Abbildung 2 9 Im nun erscheinenden Dialog werden alle ben tigten Dateien ausgew hlt Dieser Vorgang muss solange durchgef hrt werden bis alle Dateien der folgenden Ordner und Unterordner im Projekt eingebunden sind lib SandboxS2Lib lib uart lib uart usb lib RoboticsChip lib InverseKinematics lib MemoryCard e Grundeinstellungen Danach sind die Projekt Einstellungen anzupassen Der ben tigte Dialog be ndet sich unter dem Men punkt Project gt Con guration Options Hier wird unter Frequency der Takt des Mikro controllers auf 8000000 8MHz eingestellt Mit der Einstellung Optimization l sst sich die Optimierung des Kompilers einschalten Diese Option sollte jedoch nur bei fertigen Programmen vor der Auslieferung eingestellt werden
102. Flags f hren Da die Servos von der Software im Mikrocontroller aus als Gruppe betrachtet werden deren Mitglieder alle zum gleichen Zeitpunkt mit neuen Bewegungssequenzen beauftragt werden reicht es aus wenn nur das Interrupt Flag eines einzigen Servo Sequencers die Interruptleitung INT1 ansteuert Dies kann leicht erreicht werden indem nur f r ein Servo aus der Gruppe das Interrupt Mask Bit gesetzt wird Allerdings sollte hierbei beachtet werden dass die Verarbeitung der Sequenzauftr ge an die Servo SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 7 SERVO SEQUENCER 103 nicht parallel sondern nacheinander in der Reihenfolge aufsteigender Servonummern erfolgt Daher muss stets das Interrupt Mask Bit des Servo Sequencers f r das Servo mit der h chsten Nummer ak tiviert werden Sonst besteht die Gefahr dass die Sequenzauftr ge noch nicht f r alle Servos abgeholt wurden Auftr ge f r die dies der Fall ist w rden bei Aufgabe von neuen Sequenzauftr gen also berschrieben Ablauf der Sequenz Als Eingangswert der Linearisierungseinheit steuert der Wert in CurrentPhi indirekt mit die Ausga be des Pulses an das Servo Mit jedem neuen Servopulszyklus wird der Wert in CurrentPhi um den In Decrementwinkel CurrentDeltaPhi erh ht oder bei negativem CurrentDeltaPhi verringert Der Servopulszyklus wird durch den Pulsgenerator erzeugt Die Dauer eines Zyklus kann ber die Werte in den Registern TuneFine und TuneCoarse siehe A
103. HSSE ROBOTICS CHIP 7 23 Adressraum im berblick Tabelle 7 51 berblick ber den Registeraddressraum ng ist die Servo und nz die LED Nummer je weils von 0 bis 23 Der jeweils verf gbare Adressbereich ist nicht f r 24 sondern bis zu 32 Servos bzw EDs reserviert Adr AVR Ende Words Beschreibung 16 Bit Register AVR kann schreiben und lesen 0x8000 2ng Ox803F 32 PhiZPwmTable 0 Servo ng 0x8040 2ng Ox807F 32 Phi2PwmTable 1 Servo ng 0x8080 2ng Ox80BF 32 Phi2PwmTable 2 Servo ng 0x80C0 2ns Ox80FF 32 Phi2PwmTable 3 Servo ng 0x8100 2ng Ox813F 32 Phi2PwmTable 4 Servo ng 0x8140 2ng Ox817F 32 Phi2PwmTable 5 Servo ng 0x8180 2ng Ox81BF 32 Phi2PwmTable 6 Servo ng 0x81C0 2ng Ox81FF 32 Phi2PwmTable 7 Servo ng 0x8200 2ng Ox823F 32 Phi2PwmTable 8 Servo ng 0x8240 2ng Ox827F 32 Phi2PwmTable 9 Servo ng 0x8280 2ng Ox82BF 32 Phi2PwmTable 10 Servo ng 0x82C0 2ns Ox82FF 32 Phi2PwmTable 11 Servo ng 0x8300 2ng 0x833F 32 Phi2PwmTable 12 Servo ng 0x8340 2ng Ox837F 32 Phi2PwmTable 13 Servo ng 0x8380 2ng 0x83BF 32 Phi2PwmTable 14 Servo ng 0x83C0 2ns Ox83FF 32 Phi2PwmTable 15 Servo ng 0x8400 2ng Ox843F 32 Phi2PwmTable 16 Servo ng 0x8440 2ng Ox847F 32 ServoMode IRQ Mask Servo ng 0x8480 2ng Ox84BF 32 PwmLen PhiStart Servo
104. HSSE SandboxS 2 Handbuch f Markus Pfaff Michael Kreuzgruber Christian Raschko Michael Bogner Armin Brandl OBER STERREICH 2 Auflage 20 September 2007 SVN 408 HSSE SandboxS 2 Handbuch Nutzungsbedingungen Die Konstruktion der SandboxS 2 alle Abbildungen Konstruktionszeichnungen Fotos und der Text dieser Beschreibung stehen unter dem Copyright der jeweiligen Autoren Ihre weltweite Nutzung zu nichtkommerziellen Zwecken innerhalb der Ausbildung in Schulen und hnlichen Ausbildungsst tten ebenso wie im Ausbildungsbereich von Firmen und im Privatbereich wird bis auf auch in Einzelf llen m glichen Widerruf gestattet Bei solcher Nutzung ist an einer z B f r Zuschauer einer Veranstaltung gut sichtbaren Stelle auf den Ursprung der SandboxS 2 hinzuweisen Im Einzelnen besteht dieser Hinweis aus dem Logo der FH O dem Schriftzug HSSE als Hinweis auf den Studiengang Hardware Software Systems Engineering und dem Schriftzug WWW SANDBOX AT Unter h lt der Nutzer Schule Firma Privatperson WWW Seiten so ist ein Link auf www sandbox at dort vorzusehen Eine kommerzielle Nutzung ist nur mit schriftlicher Genehmigung und Lizenz der Autoren statthaft Haftungsausschluss Bitte lesen Sie die am Rand mit A gekennzeichneten Textteile besonders aufmerksam und beherzigen Sie die darin enthaltenen Warnungen Bitte beachten Sie dass die Ausf hrung s mtlicher Anweisungen in dieser Anleitun
105. LEDs again RC SetLedClearAl1 while 1 RC_GetGamePadJoystickData RC_GAME_PAD_LEFT_JOY amp Data RC SetLedBrightness 0 Data X RC SetLedBrightness 1 Data Y SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 194 9 SOFTWARE FUNKTIONSBIBLIOTHEK return 0 9 8 27 RC_GetGamePadData void RC GetGamePadData out RC GamePadData xData Beschreibung Liest die aktuelle Stellung der Joysticks und die Tasten des Sony Playstation 2 Gamepad aus dem RoboticsChip Parameter Bedeutung Data Beinhaltet die Stellung beider Joysticks und den Status der Tasten Der Aufbau dieser Struktur ist in Abschnitt 9 11 auf Seite 216 erkl rt R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen 5 2 Init und RC Init aufgerufen werden Beispiel Die Bewegungen der Joysticks an den Servo LEDs 0 3 anzeigen int main RC_GamePadData GameData proxy function for whole initialization Init clear all LEDs again SetLedClearAll while 1 RC GetGamePadData amp GameData RC SetLedBrightness RC SetLedBrightness RC SetLedBrightness RC SetLedBrightness return 0 0 GameData JoystickLeft X 1 GameData JoystickLeft Y 2 GameData JoystickRight X 3 GameData JoystickRight Y SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007
106. Mask tr gt den Wert 0 zur Verf gung Das Register enth lt eine vorzeichenlose 12 Bit Zahl 0 4095 Diese Zahl wird mit PwmLenDirect bezeichnet PwmLenDirect gibt die L nge des PWM Impulses welcher an das Servo geschickt wird unmittelbar an Sie betr gt 0 476 ms PwmLenDirect 500 ns Da der Wertebereich von PwmLenDirect zwischen und 4095 liegt ist die Impulsdauer im Bereich von 0 476 2 523 ms einstellbar Adr 1 unsigned 11 downto 8 Tabelle 7 7 Register PwmLen Wertebereich 0 4095 Adr 0x8480 2ns ng ist die Servonummer 0 bis 23 Der Initialisierungswert nach dem Einschalten ist f r alle Servos 0x0800 2048 was einer Pulsl nge von 1 5 ms ungef hr Hebelmittelstellung entspricht Les und schreibbar SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 96 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 5 4 2 Register CurrentPwm Aus diesem Register kann die Dauer des derzeit tats chlich erzeugten PWM Pulses entnommen wer den Dieses Register enth lt eine vorzeichenlose 12 Bit Zahl welche das gleiche Format verwendet wie beim Register PwmLen Die L nge des PWM Impulses wird unabh ngig von der Einstellung des Parameters ServoReverse aus dem Register ModeIrqMask jedes Servos f r die nicht drehrichtungsumgekehrte Servoeinstellung angegeben Bit 7 6 5 4 3 2 1 0 Adr 1 unsigned 11 downto 8 Adr unsigned 7 downto 0 Tabelle 7 8 Register CurrentPwm Wertebereich 0 4095 Adr 0x8
107. Modul wird an die serielle Schnittstelle des AVR Mikrocontrollers ange schlossen die auf dem Erweiterungssteckverbinder nach Abschnitt 5 6 zur Verf gung steht Auch die Spannungsversorgung des Moduls mit 3 3 kann aus diesem Steckverbinder bezogen werden Nach Kon guration des Moduls und Verbindungsaufnahme mit dem Bluetooth System des PCs steht eine drahtlose serielle Schnittstelle z B COMAO zur Verf gung die auf der PC Seite als Ein und Ausgabeport f r Daten verwendet werden kann Diese Daten werden in der gleichen Art zur SandboxS 2 bermittelt wie dies durch ein serielles Kabel geschieht Bluetooth Serial Modul Parani ESD 100 von SENA Zum Anschluss kommen die Module unterschiedlicher Hersteller in Frage Als Beispiel wird hier das Modul ESD 100 des Hersteller SENA http www sena com products industrial_ bluetooth oem bluetooth serial parani esd herangezogen das zu einem Preis von ca 50 innerhalb Europas erh ltlich ist Ein Foto des Moduls ist in Abbildung 5 15 zu sehen Abbildung 5 15 Das Bluetooth Serial Modul Parani ESD 100 der Firma SENA Damit das Modul verwendet werden kann muss es zun chst entsprechend kon guriert werden Hierzu werden vom Hersteller ein Starterkit ESD Startkerkit zum Anschluss des Moduls an den PC und ein gurationsprogramm namens ParaniWIN geliefert In Abbildung 5 16 sind Kon gurati onseinstellungen zu sehen die sich in der Praxis bew hrt haben Da der AVR mit einem Takt von 8MHz l
108. OFF else RC SetServoRotation 0 RC SERVO REVERSE ON return 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 186 9 SOFTWARE FUNKTIONSBIBLIOTHEK 9 8 14 RC_SetServoAttributesTable void RC SetServoAttributesTable in uint8 t ServoNumber in RC ServoAttributes ServoAttr Beschreibung Setzt die angegebenen Attribute f r das angegebene Servo Parameter Bedeutung ServoNumber Nummer des Servos dessen Attribute ver ndert werden Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich ServoAttr Datensatz der alle Eigenschaften eines Servos beinhaltet siehe Abschnitt 9 11 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Bevor diese Funktion verwendet werden kann m ssen SL2 Init und RC Init aufge rufen werden e Statt dieser Funktion sollte RC SetGlobalServoAttributesTable da es keinen Sinn macht nur einzelne Servos zu kalibrieren 9 8 15 RC SetServoAttributesTable P Gleiche Funktion wie RC SetServoAttributesTable die Tabelle muss jedoch im Pro grammspeicher abgelegt werden Siehe dazu avr libc Manual Kapitel Program Space Utilities 9 8 16 RC SetServoAttributesTable E Gleiche Funktion wie RC SetServoAttributesTable die Tabelle muss jedoch im EE PROM abgelegt werden Siehe dazu avr libc Manual Kapitel EEPROM handling 9 8 17 RC SetGlobalServoA
109. OTHEK Anmerkung e Um sinnvolle Ergebnisse zu erhalten m ssen die in Abschnitt 7 22 beschriebenen Zahlenfor mate und Konvergenzbedingungen beachtet werden e Bei Verwendung des hyperbolischen Koordinatensystems ist die Verwendung des Rotationsmo dus nicht m glich vgl Abschnitt 7 22 e Mittels dieser Funktion werden die Parameter nur in den daf r vorgesehenen Speicherbereich des RoboticsChips kopiert die Berechnung wird dadurch noch nicht gestartet e Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufge rufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199 9 8 32 RC SetCordicCalculationStart void RC SetCordicCalculationStart Beschreibung Startet die CORDIC Berechnungen jener Werte die zuvor mittels RC SetCordicCalculation Arguments in die Queue geschrieben wurden R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2 Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199 9 8 33 RC CordicWaitOnResult void RC CordicWaitOnResult Beschreibung Wartet so lange bis der CORDIC Interrupt vom RoboticsChip ausgel st wird und somit das Ergebnis verf gbar ist SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 19
110. P wee Ew eed a 92 132 2 DEOR Rea a 92 Ts Diahrichtunasumkehp 222222224525 59 94 To e UR oe ee ae 95 7 5 5 Pulswiederholungszyklu amp oo 2s soe m a a sa 9 y o er 96 7 6 Servolinearisierung und kalibrierung 96 7 6 1 Vorgehensweise f r die Servokalibrierung 99 37 c no 2 2 2 2 2 22 2 102 7 7 1 Geschwindigkeitsabsttmmung 106 7 8 Servogrundstellungsmodus AN o ea ee daa eS ede ea 107 T9 ere a aw al ae Eee ba EG Sai Gad a 107 7 10 LED mit Helligkeitsstevermmg 2 2 2 4 108 ZE rn RD Mr ew a ea 109 TE VASE 22 250 EE Cue Be erue d 109 2 13 FCOSEmplanaerdeeoder 2 202 Mange ote pO d be 110 7 131 RC Empf ngeranschuss 2 2 22 RR 110 7 14 Petersen A a e e sa ss k EE a 113 7 15 Piezosummer mit 114 7 16 Brweiterungssteckplatz lt o o ss cs e is es au sr an wo 115 7 17 Sony Playstation 2 Game Pad Controller 116 PIZI Adapterkabel une m na pep OR x BONS OR dedo 117 7 18 Globale Timer uunc deo e aom come m dd
111. PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 172 9 SOFTWARE FUNKTIONSBIBLIOTHEK R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Muss vor allen anderen Funktionen des Moduls aufgerufen werden 9 8 2 RC_SetLedBrightness uint8 t RC SetLedBrightness in uint8 1 LedNumber Brightness in uint8 Beschreibung Ver ndert die Helligkeit einer bestimmten Servo LED sich am Rand der Platine be ndende LED neben den Steckern f r die Servos Parameter Bedeutung LedNumber Nummer der LED deren Helligkeit ver ndert werden soll Die Nummerierung der LEDs ist in Abb 7 1 auf Seite 81 ersichtlich Brightness Bestimmt die Helligkeit einer bestimmten Servo LED 0 ausgeschaltet 255 maximale Helligkeit R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Da der nichtlineare Zusammenhang zwischen der Pulsl nge der PWM und der Helligkeit der Leuchtdiode nicht vom RoboticsChip kompensiert wird ist die unterschiedliche Helligkeit nicht bei allen Stufen zu erkennen e Bevor diese Funktion verwendet werden kann m ssen 5 2 Init und RC Init aufge rufen werden Beispiel Alle LEDs mit maximaler Helligkeit einschalten int main uint8_t i 0 proxy function for whole initialization Init for 1 0 1 lt RC_NUMBER_OF_LEDS 1 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTIC
112. Projekt bersetzen e Programm ausf hren e Programm testen e Zusammenfassung e Aufgaben 2 4 1 Projekt erstellen Ein Projekt im AVR Studio beinhaltet verschiedenste Einstellungen Darunter Einstellungen f r Mi krocontroller Debugger Frequenz Projektverzeichnisse und verwendete Dateien Um ein neuen Pro jekt zu erstellen gibt es zwei unterschiedliche M glichkeiten Entweder verwendet man ein bereits vorhandenes Projekt und kopieren dieses oder man erstellt ein neues leeres Projekt und passt alle Einstellungen an Beide L sungen werden nachfolgend gezeigt 2 4 1 1 Projekt mit Vorlage erstellen Der einfachste Weg ein neues Projekt zu beginnen ist eine bereits fertig angepasste Projektdatei zu kopieren Die hierf r ben tigten Dateien be nden sich auf der CD im Ordner HexapodFirmware Es m ssen die Ordner Template und 1ib in ein lokales Verzeichnis kopiert werden Beide Ord ner m ssen in der selben Verzeichnishierarchie verbleiben Der Ordner 1ib enth lt die Dateien der Softwarebibliothek mit denen Programme f r den Hexapod entwickelt werden k nnen Der Ordner Template enth lt eine fertig gurierte Projektdatei Hexapod aps und ein einfaches Anwen dungsskelett main c Durch einen Doppelklick auf die Projektdatei wird das Projekt ge ffnet 2 4 1 2 Projekt ohne Vorlage erstellen Es werden nun alle n tigen Schritte erkl rt um ein komplett neues Projekt einzurichten Nach dem Start des AVR Studios sollte ei
113. RC SetLedBrightness 0 MouseData DeltaX RC SetLedBrightness 1 MouseData DeltaY return 0 9 8 23 RC_SetRxControl uint8 t RC SetRxControl out uint8 t InvertPpm out uint8 t NumberOfChannels Beschreibung Stellt die Empfangseinheit im RoboticsChip auf den verwendeten Fernsteuerungsempf nger ein Parameter Bedeutung InvertPpm Bietet die M glichkeit das PPM Signal zu invertiert Dieser Parame ter ist n tig um auch Fernsteuerungen die ein invertiertes Signal sen den verwenden zu k nnen M gliche Werte RC RX NO INVERT RC RX INVERT NumberOfChannels Anzahl der verwendeten Kan le R ckgabewert R ckgabewert Beschreibung RC SUCCESSFUL Empfangseinheit im RoboticsChip wurde kon guriert RC INVALID PARAMETER Es wurde ein ung ltiger Parameter bergeben die Empfangs einheit im RoboticsChip wurde nicht guriert Anmerkung e Bei den mitgelieferten Fernsteuerungen Acoms Techniplus 40MHz AM 2 2 1 B muss InvertPpm auf RC NO INVERT und NumberOfChannels auf 2 gesetzt werden e Bevor diese Funktion verwendet werden kann m ssen 5 2 Init und RC Init aufge rufen werden Beispiel siehe Beispiele der folgenden Funktion SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 191 9 8 24 RC_GetRxData uintl6_t RC GetRxData in uint8 t ChannelNumber Beschreibung Liest die Daten von einem Kanal der Fernsteuerung
114. RECT geschalten werden e Bevor diese Funktion verwendet werden kann m ssen 5 2 Init und RC Init aufge rufen werden Beispiel Die Positition von Servo 0 wird bei jedem Tastendruck von AVR KEY 0 um 90 ver ndert int main proxy function for whole initialization Init clear all LEDs RC_SetLedClearAll RC_SetServoMode 0 while 1 RC_SERVO MODE_PWM_DIRECT SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 177 RC_SetServoPwmDirect 0 0 L2 AvrWaitOnKey 51 2 KEY 0 SL2_KEY_PRESSED L2 AvrWaitOnKey 51 2 KEY 0 SL2_KEY_NOT_PRESSED RC_SetServoPwmDirect 0 1609 L2 AvrWaitOnKey 51 2 KEY 0 SL2 KEY PRESSED L2 AvrWaitOnKey SL2 KEY 0 SL2 KEY NOT PRESSED return 0 9 8 7 RC GetServoCurrentPwm uintl16 t RC GetServoCurrentPwm in uint8 t ServoNumber Beschreibung Erm glicht die mittels SetServoPwmDirect eingestellte Pulsl nge Length zu lesen Parameter Bedeutung ServoNumber Nummer des Servos das bewegt werden soll Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich R ckgabewert R ckgabewert Beschreibung Length Jene Pulsl nge die ber die Funktion SetServoPwmDirect ein gestellt wurde Anmerkung e Um RC GetSer
115. RT 169 read character uart usb getchar print character uart usb putchar c never return loop forever for return 0 9 7 2 uart usb putchar void uart usb putchar in char data Beschreibung Sendet ein Zeichen f gt es in den Sendepuffer ein Parameter Bedeutung data Zeichen welches gesendet werden soll R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Diese Funktion blockiert wenn der Puffer voll ist Jedoch nur wenn das Ger t am Bus h ngt Besteht keine Verbindung zwischen PC und Controller werden die Daten ignoriert Ansonst wird die Flusskontrolle schlagend und die Funktion blockiert wenn die Daten nicht vom Host abgeholt werden e Bevor diese Funktion verwendet werden kann muss uart usb init aufgerufen werden Beispiel siehe Abschnitt 9 7 1 9 7 3 uart usb getchar char uart usb getchar Beschreibung Empf ngt ein Zeichen entfernt es aus dem Empfangspuffer SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 170 9 SOFTWARE FUNKTIONSBIBLIOTHEK R ckgabewert R ckgabewert Beschreibung Data Gibt das empfangene Zeichen zur ck Anmerkung e Diese Funktion blockiert wenn der Puffer leer ist Auch wenn keine Verbindung zwischen PC und Ger t besteht e Bevor diese Funktion verwendet werden kann muss uart usb init aufgerufen werden Beispiel siehe Abschnitt 9 7 1 9 7 4 uart usb
116. Register werden an den LEDs 0 5 angezeigt Dabei ist jeder LED ein bestimmter Wert f r DeltasToGo zugeordnet bei dem die Leuchtdiode eingeschaltet wird int main uintl6_t Data 0 uint8 t LedIdx 0 proxy function for whole initialization clear all LEDs RC SetLedClearAl11 RC SetServoMode 0 RC SERVO MODE PHI DIRECT RC SetServoPhiSpeed 0 0 2 4 1024 time needed for movement 1024 Steps 20 ms 20 5 sec SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 182 9 SOFTWARE FUNKTIONSBIBLIOTHEK wait for 20ms to ensure that the command has been executed by the RoboticsChip _delay_ms 20 while 1 show the changes in DeltasToGo register on the first 6 servo LEDs Data RC_GetServoDeltasToGo 0 switch on LED 0 when Data switch on LED 1 when Data switch on LED 2 when Data PR sas LedIdx Data 200 RC SetLedBrightness LedIdx return 0 200 400 255 9 8 11 RC_GetServoCurrentDeltaPhi inline uintl16_t RC GetServoCurrentDeltaPhi in uint8 t ServoNumber Beschreibung Liest das Winkelinkrement eines Servos aus dem RoboticsChip Parameter Bedeutung ServoNumber Nummer des Servos dessen Winkelinkrement gelesen werden soll Die Num merierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich R ckgabewert R ckgabewert Beschreibung DeltaPhi Winkelinkrement d
117. S CHIP 7 14 0 5 Register Ps2Y Dieses Register gibt Auskunft ber den Weg den die Maus seit ihrer letzten Ausgabe in Y Richtung zur ckgelegt hat Bit 0x87F5 0 87 4 YDelta signed 7 downto 0 YDel 8 3 2 1 e Tabelle 7 24 Register Ps2Y Nur lesbar Bit 9 YOVL Ist dieses Bit gesetzt 1 so wurde die Maus in Y Richtung zu schnell und weit be west so dass der Weg in Y Richtung nicht mehr in einer 9 Bit breiten Zahl darstellbar ist Bits 8 bis 0 YDelta Diese 9 Bit breite vorzeichenbehaftete Zahl im Zweierkomplementformat gibt den seit der letzten Mausbewegung zur ckgelegten Weg in Y Richtung an Das Vorzeichen gibt die Orientierung der Mausbewegung an 7 14 0 6 Register Ps2Buttons Dieses Register gibt den Zustand der Maustasten wieder Bit 0x87F7 0x87F6 Tabelle 7 25 Register Ps2Buttons Nur lesbar Bit 2 ButnL Bei gedr ckter linker Maustaste steht in diesem Bit der Wert 1 sonst der Wert Bit 1 ButnR Bei gedr ckter rechter Maustaste steht in diesem Bit der Wert 1 sonst der Wert 7 15 Piezosummer mit Tongenerator In Abb 7 22 ist der Anschluss des Piezosummers an das FPGA zu sehen Der Summer ist ber einen Widerstand zur Strombegrenzung Abbildung 7 22 Piezosummer zur direkten Ansteuerung ber das FPGA Strombegrenzungswiderstand an zwei Ausgangspins des FPGAs angeschlossen Eine Strombegren zung ist auf
118. SCHIP 173 RC_SetLedBrightness i 255 while 1 return 0 9 8 3 RC_SetLedClearAll void RC_SetLedClearAll Beschreibung Schaltet alle Servo LEDs auf dunkel Die LEDs des AVR werden von dieser Funktion nicht beeinflusst R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Alle Servo LEDs ausschalten int main proxy function for whole initialization Init RC_SetLedClearAll while 1 return 0 9 8 4 RC_SetServoMode inline void RC_SetServoMode in uint8_t ServoNumber in uint8 t Mode SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 174 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beschreibung Schaltet ein bestimmtes Servo in den angegebenen Bewegungsmodus Parameter Bedeutung ServoNumber Nummer des Servos dessen Modus ver ndert werden soll Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich Mode Bestimmt den Modus des Servos Dieser Parameter kann folgende Werte an nehmen e RC_SERVO_MODE_PWM_DIRECT PwmDirect Modus siehe Ab schnitt 7 5 auf Seite 92 f r genauere Erkl rung e RC_SERVO_MODE_PHI_DIRECT PhiDirect bzw PhiSpeed Modi siehe Abschnitt 7 5 auf Seite 92 f r genauere Erkl rung oder e RC_SERVO_MODE_NO_ACTION Servo deakiviert R ckgabewert
119. SERVO SEQUENCER 105 und die Bewegung des Servos ber den gew nschten Winkelbereich wird mit hoher Pr zision durch gef hrt Negative Zahlen stellen statt eines Winkelinkrements ein Winkeldekrement dar Bit 1 Adr signed 3 downto 4 signed 9 downto 4 Tabelle 7 13 Register DeltaPhi Dieses Register hat nur im Mode PhiSpeed eine Bedeutung Adr 0x84C0 2ng ng ist die Servonummer 0 bis 23 Initialisierungswert nach dem Einschalten ist 0x0000 Les und schreibbar 7 7 0 4 Register CurrentDeltaPhi Dieses Register enth lt eine vorzeichenbehaftete Festkommazahl im Zweierkomplementformat 10 4 also mit 10 Vorkommastellen inkl Vorzeichen und 4 Nachkommastellen Damit ist das Format der enthaltenen Zahl identisch zum Zahlenformat des Registers DeltaPhi Das Register CurrentDeltaPhi wird zu Beginn einer Bewegungssequenz automatisch aus dem Inhalt des Registers DeltaPhi aktuali siert Wird auf das Register vom Mikrocontroller geschrieben kommt es zu unde niertem Verhalten Das Register sollte daher ausschlie lich gelesen werden Bit Adr 1 signed 9 downto 4 Adr signed 3 downto 4 Tabelle 7 14 Register Current DeltaPhi Dieses Register hat nur im Mode PhiSpeed eine Bedeutung Adr 0x8640 2ns ns ist die Servonummer 0 bis 23 Nur lesbar 7 7 0 5 Register NrOfDeltas Dieses Register enth lt eine vorzeichenlose 12 Bit Zahl Mit dieser Zahl wird die Anzahl der Winkel
120. TAGICE Dont sesch well choose the diver to install Choose this coton to select the device Gover from a iat Windows does net guarantee that the driver you choose wil be the best match for your hardware amp This driver is red digitally signed Have Dok Tel me wiy over sonna moorant lt Back be gt Tanod _ Found New Hardware Wizard Found New Hardware Wizard Please wat while the wizard instalis the software Completing the Found New Hardware Wizard The has fresha est linc the acttmar for E JTAGICE mici EZ STAGICE skili c e Setting a system restore port and backing up fles e case your syrien meds lo be stored n Se kire Och Fresh o close the word Cg Abbildung 2 3 Installieren des Atmel JTAG ICE Debuggers nach dem Anstecken an die USB Schnitt stelle SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 3 GER TETREIBER INSTALLIEREN 21 2 3 2 SandboxS 2 Treiber installieren Der auf der SandboxS 2 verbaute Mikrocontroller besitzt bereits eine USB Unterst tzung Um eine einfache Kommunikation mit dem Computer zu erm glichen meldet sie sich als serielle Schnittstelle beim Betriebssystem an Bei der Installation wird ebenfalls ein spezieller Ger tetreiber ben tigt Das Betriebssystem erkennt nach dem Einschalten ein neues Ger t und verlangt nach einem Treiber Dieser be ndet sich auf der beigelegten CD im Ordner Driver Die SandboxS 2 sollte zuvor mit voll geladenen Akkuze
121. VR Kompiler ab Version 20070525 Be ndet sich auf der beigelegten CD im Ordner WinAVR Die aktuelle Version kann auch unter http winavr sourceforge net be zogen werden Terminal Programm nach Wahl In diesem Tutorial wird jedoch HTerm verwendet Be ndet sich auf der beigelegten CD im Ordner HTerm Die aktuelle Version kann auch unter http www der hammer info terminal bezogen werden Da Fehler in neueren Versionen der Programme nicht ausgeschlossen werden k nnen wird die A Installation von der CD empfohlen Diese Versionen wurden im Zusammenspiel miteinander getestet 2 2 Entwicklungsumgebung einrichten Um mit der Entwicklung der Firmware beginnen zu k nnen muss die Entwicklungsumgebung einge richtet werden Sie besteht aus den Programmen WinAVR und AVRStudio Beide Programme be ndet sich auf der beigelegten CD Wichtig ist dass WinAVR vor dem AVRStudio installiert wird Die Instal lation der Software wird im nachfolgenden Abschnitt ausf hrlich erkl rt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 2 ENTWICKLUNGSUMGEBUNG EINRICHTEN 15 2 2 1 WinAVR installieren Die Installation von WinAVR gestaltet sich sehr einfach Man folgt den Anweisungen des Assistenten um die Installation abzuschlie en Eine bebilderte Installationsanleitung ist in Abbildung 2 1 darge stellt Die Software be ndet sich im Ordner WinAVR auf der beigelegten CD WinAVR beinhaltet alle Programme um C und C eingeschr nkt Anwendung auf d
122. _MODE_PWM_DIRECT RC_SERVO_MODE_PHI_SPEED RC_SERVO_MODE_PHI_DIRECT RC_ServoMode typedef enum RC_SERVO_REVERSE_ON RC_SERVO_REVERSE_OFF RC_ServoReverse Um bei nderungen an der Hardware z B bei Verwendung eines anderen Hexapods m glichst wenig nderungen in der Software durchf hren zu m ssen sind alle hardwarespezi schen Werte in einer einzigen Datenstruktur abgelegt Diese Struktur beinhaltet die Linearisierungswerte aller Servos SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 11 STRUKTUREN UND BENUTZERDEFINIERTE TYPDEKLARATIONEN 217 den Offset Winkel durch die Servoscheibe und das Reverse Bit die Drehrichtung ist nicht bei allen Servomodellen gleich typedef struct uint16_t LinTable RC NUMBER OF SERVO LIN intl16 t PhiOffset RC ServoReverse Rotation RC ServoAttributes PS 2 Maus Die Struktur RC Ps2Data enth lt Daten ber die Position und Tastenzust nde der Maus Eine ge naue Beschreibung der einzelnen Registerwerte be ndet sich in Abschnitt 7 14 auf Seite 113 typedef struct uint8 t DeltaX uint8 t DeltaY uint8 t Buttons RC Ps2Data Sony PlayStation 2 Gamepad Die X und Y Koordinaten des Sony PlayStation 2 Gamepads sind in der Struktur RC GamePadJoystickData zusammengefasst Genauere Informationen ber die Register f r die Koordinaten nden sich in Abschnitt 7 16 auf Seite 115 typedef struct
123. andboxS2_lib h RoboticsChip h gart h uart usb lib h WII EERREPRMPBB M ADA ASL AAA AAPA AAA A AAA A DAA AA AAA REA A global variables definitions FEM CMM MB BEIM TIAL AA ADEA PATA ALAA AAT ALAA AAAS ALA ALATA AT EASE FILE gStrmUSB NULL FILE gStrmUART NULL Key states typedef enum INCREM NT DECREM SELECT NO KEY lt NT KeysState servo attribute table remains in flash memory RC ServoAttributes gTable RC NUMBER OF SERVOS PROGMEM 36 385 652 918 1183 1453 1745 2038 2338 2608 2882 3158 3421 3686 3952 3952 3952 0 RC_SERVO_REVERSE_ON Servo 16 1 277 543 799 1081 1363 1661 1965 2263 2559 2835 3109 3370 3641 3908 3908 3908 0 RC_SERVO_REVERSE_ON Servo 17 12 315 568 822 1100 1378 1652 1941 2255 2555 2837 3101 3362 3619 3882 3882 3882 0 SERVO REVERSE Servo 18 14 255 511 798 1075 1354 1643 2008 2242 2582 2857 3135 3410 3670 4059 4059 4059 0 RC SERVO REVERSE Servo 13 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 3 HEXAPOD KALIBRIERUNG 139 D I 19 282 3629 13 292 3608 51 362 3690 151 362 3690 51 362 3690 51 361 3689 16 294 3727 dy 311
124. artitions Prepare SandboxX removable media 5 Edit partitions wet we Abbildung 5 8 Auf die SandboxS 2 ab gestimmte Partitionierung Format SBXMEDIA OC Prepare SandboxX removable media i Format partitions Abbildung 5 9 Formatierung der zuvor erstellten Partition SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 5 3 STROMAUFNAHME UND AKKUSPANNUNG 69 5 2 0 2 Formatierung der SD Card unter Linux Unter Linux gestaltet sich die Formatierung etwas einfacher Um ein Dateisystem vom Typ FAT16 auf der SD Karte zu erstellen wird zun chst mit dem Linux Befehl fdisk eine Partition vom Typ 6 FAT16 auf der Karte eingerichtet Danach wird diese Partition mit mkdosfs formatiert Wer kein Linux installiert hat und dies m glicherweise auch nicht m chte kann hierzu eine so genannte Live CD verwenden Gut eignet sich beispielsweise Knoppix http www knoppix org das kostenlos zum Download verf gbar ist Die aktuelle Ubuntu Linux Distribution ist eben falls als Live CD verwendbar 5 3 Stromaufnahme und Akkuspannung Zur Strom und Spannungsmessung wird der ADC des AVR Mikrocontrollers verwendet Dieser be sitzt neben der Messung von Spannungen gegen ber dem Bezugspotential GND auch M glichkeiten um differentielle Messungen mit einstellbarer Verst rkung um den Faktor 1 10 oder 200 durchzuf h ren 5 3 1 Strommessung Der ADC des Mikrocontrolle
125. atz verbunden In der aktuellen Version des HSSE Robotics Chips steht auf dem Erweiterungssteckplatz eine An schlussm glichkeit f r einen Game Pad Controller wie er f r die Sony Playstation 2 verwendet wird zur Verf gung 7 17 Sony Playstation 2 Game Pad Controller Mittels eines einfachen Adapterkabels kann am Erweiterungssteckplatz siehe Abschnitt 7 16 ein handels blicher Game Pad Controller f r die Sony Playstation 2 angeschlossen werden Es kommen Abbildung 7 24 Beispiel f r einen kabellosen Game Pad Controller Ganz links ist auch dessen Ge genstelle zu sehen der in einem Steckverbinder untergebracht ist Es handelt sich nicht blo um einen Empf nger die Funkverbindung ist vielmehr bidirektional sowohl kabelgebundene als auch drahtlos wireless arbeitende Ger te wie beispielsweise das Ger t in Abb 7 24 in Frage In beiden F llen k nnen die Modi digital als auch analog verwendet werden Zwi schen diesen wird mittels eines Knopfes mit der Bezeichunng analog auf dem Game Pad Controller SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER 117 umgeschaltet Der Modus analog bietet neben den Funktionen der im Game Pad Controller eingebau ten Tasten zus tzlich die Ausschl ge der beiden Joysticks in Form einer 8 Bit breiten Bin rzahl an Au erdem wird auch der Druck auf den Joystick wie ein Tastendruck bermittelt Insgesamt stehen 16 Tasten und zwei Joystick
126. auf einem von au en zug nglichen Anschluss zur Verf gung sondern muss mit dem Oszilloskop im Empf nger aufgesp rt werden Als Beispiel ist in Abb 7 20 das Oszilloskopbild f r den Empfang eines 3 Kanal Senders zu sehen Meist ist einer der SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 13 RC EMPF NGERDECODER 111 Tek JL H Trig d M Pos 3 360ms CURSOR 4 Quelle CH1 Delta 1 S60ms 641 0Hz Cursor 1 d i 40 00 us Abbildung 7 20 Oszilloskopbild mit dem PPM Signal Cursor 2 i i 1 520 am Ausgang der Demodulationsstufe eines Fernsteuer i is CH1 1 00V M 1 00ms 2 32V empf ngers bei Empfang eines 3 Kanal Sender 6 Ju 05 2124 204 027He drei f r die Stromversorgung verwendeten Pins frei und kann mit diesem Signal belegt werden Al ternativ wird an Stelle des Stromversorgungssteckers ein Servokabel direkt innerhalb des Empf ngers angel tet und aus dem Empf nger herausgef hrt was etwas Gewicht spart und kosteng nstiger ist Eine Umbauanleitung f r einen handels blichen Empf nger enth lt Anhang C Der Impulsausgang des Empf ngers wird ber einen Serienwiderstand zur Pegelanpassung auf einen FPGA Eingang gegeben Die eventuell notwendige Pegelanpassung wird bei zu hohem Ein gangspegel von der Schutzdiode im FPGA vorgenommen 7 13 1 1 Register IrqMaskRcRxCtrl Dieses Register gibt Einstellungen f r die Auswertung des PPM Impulszugs eines RC Empf ngers an
127. auf ergibt Um die LEDs auszuschalten oder andere Helligkeitswerte einzustellen muss dieser Parameter m glichst fr hzeitig im Program mablauf eingestellt werden 7 10 0 3 Register LedBrightness Bit 7 6 5 4 3 2 1 0 1 CRM ASCII Zeichen 7 downto 0 Adr LedBrightness unsigned 7 downto 0 Tabelle 7 19 Register LedBrightness Adr 0x8540 2n nr ist die LED Nummer 0 bis 23 Les und schreibbar Bits 15 bis 8 CRM Nach dem Einschalten ist hier ein ASCII Zeichen lesbar Die Zeichen aller 24 LEDs hintereinander gestellt ergeben die Copyright Message CRM f r den HSSE Robotics Chip Bits 7 bis 0 LedBrightness Vorzeichenlose 8 Bit Zahl Die Einstellung 0 bringt die LED zum Ver l schen Die Einstellungen 1 bis 255 f hren zu steigender Helligkeit der LED 7 11 Status LED Neben den 24 in der Helligkeit steuerbaren LEDs sind zwei LEDs zur Anzeige von Statusinforma tionen am FPGA angeschlossen Abb 7 17 Der HSSE Robotics Chip gibt auf diesen LED folgende Abbildung 7 17 Status LED am FPGA Informationen aus LEDI6 MsgFpga0 Leuchtet nach Druck auf die Servopaniktaste KeyFpga0 Damit wird angezeigt dass derzeit kein Servoimpuls ausgegeben wird siehe Abschnitt 7 9 LEDI7 MsgFpgal Leuchter im Servogrundstellungsmodus siehe Abschnitt 7 8 7 12 Taster Am FPGA sind zwei Tasten laut Abb 7 18 angeschlossen Der HSSE Robotics Chip belegt diese mit folgenden F
128. bedeutet dies dass Anpassungen f r den eingesetzten C Compiler und vor allem f r den verwendeten Mikrocontroller und dessen Schnittstellen gemacht werden m ssen Endergebnis dieser Modi kationen ist eine Firmware f r einen Mikrocontroller wel che die Programmierung in der gleichen Weise erledigt wie das PC basierte Programm ispVM Sys tem das im vorigen Abschnitt besprochen wurde Diese Art der Programmierung wurde bislang noch nicht f r die SandboxS 2 umgesetzt da ein Programmierkabel in Verbindung mit ispVM System nur unwesentlich teurer aber ungleich flexibler verwendbar ist 6 3 1 3 Flash Direct Programming Lattice CPU Embedded und AVR Alternativ zur Programmierung des FPGAs ber die JTAG Schnittstelle steht der sogenannte ispCon g Port des FPGAs zur Verf gung Auch hierf r stellt Lattice ein Programmger st f r einen Mikrocontroller zur Verf gung das sich CPU Embedded nennt Ein Vorteil dieser L sung liegt im erheblich kleineren Aufwand f r die Mikrocontrollersoftware Die Anpassung des Ger stes an die konkreten Verh ltnisse erfordert hnliche Schritte wie bei der im vorigen Abschnitt besprochenen L sung Das Design der SandboxS 2 sieht bereits alle notwendigen Verbindungen zwischen AVR und FPGA f r diese Art der Programmierung vor Die entsprechenden Leitungen werden doppelt genutzt F r das External Memory Interface des AVR Mikrocontrollers und zugleich f r die Programmierung des FPGAs ber die ispCon g Schnittstelle
129. beeintr chtigt x Tipp Hinweis dessen Beachtung meist Vorteile bringen wird SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 Vorwort Als ein schwarzer Hexapodroboter in Hagenberg im Sommer 2003 im Rahmen eines einsemestrigen Studienprojektes des Jahrgangs 2001 von HSSE seine ersten noch etwas zaghaften Gehversuche un ternahm ahnte man noch nichts davon mit welcher Geschwindigkeit sich diese Tierchen quasi wie von selbst weiterentwickeln w rden Denn nach diesem ersten Erfolg wurde die Weiterentwicklung zun chst einmal auf Grund der anderweitigen Projekte und Kooperationen mit der Industrie abrupt gestoppt Nach einj hriger Pause fand sich im Herbst 2004 dann aber in einem Jahresstudienprojekt des HSSE Jahrgangs 2002 wieder eine StudentInnengruppe mit dem Ziel einer Weiterentwicklung des sechsbeinigen Roboters zusammen Das Erstlingsmodell aus dem Vorjahr litt an drei Kernproblemen die von der Gruppe systematisch angegangen wurden a Seine Gr e bedingte leider auch gro e Probleme mit den Servoantrieben Die Gelenke waren nur von geringer Lebensdauer Die Umkonstruktion in Verbindung mit einer erheblichen Ver kleinerung f hrten dann auch zum Roboter Die wilde 13 Dieser Roboter konnte nun auch auf der hauseigenen CNC Fr se gefertigt werden b Die urspr nglich verwendeten Gehmuster waren von den Vorbildern aus der Biologie weit ent fernt Sie entstanden haupts chlich durch immer weiter getriebene
130. ber eine minimale Zusatz SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 5 2 SD CARD 65 beschaltung laut Abb 5 2 an den Mikrocontroller angeschlossen Die Spannungsversorgung welche SS AVR USB Buchse TCR dc NE Typ B Function amp s Abbildung 5 2 Anschluss der USB Buchse vom Typ B an den Mikrocontroller vom USB Host aus ber das USB Kabel m glich w re wird nur vom USB Controller des AVR ge nutzt 5 2 SD Card SD Cards ben tigen eine SPI Schnittstelle mit nur vier Leitungen und er ffnen neben USB einen zweiten Weg um Daten mit der Umgebung auszutauschen Dar berhinaus lassen sich auf SD Karten gro e Datenmengen ablegen Der Steckplatz f r die SD Card SD Card Slot ist laut Abb 5 3 an die SPI Schnittstelle des AVR AVR 1 D 4 Abbildung 5 3 Anschluss des SD Card Slot an die SPI Schnittstelle des AVR Das zugeh rige Foto ist in Abbildung 5 4 zu sehen Abbildung 5 4 Foto des Platinenausschnitts zum Schaltplan in Bild 5 3 angeschlossen Der SD Card Slot verf gt neben den Anschl ssen zur Kommunikation mit der Karte auch zwei Schaltkontakte welche e die Anwesenheit einer Karte und e die Einstellung des Schreibschutzschiebers der Karte anzeigen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 66 5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7
131. bschnitt 7 7 1 ver ndert werden Die dort getrof fene Einstellung betrifft alle Servos in gleicher Weise Die Anzahl der Zyklen einer Bewegungssequenz wird dem Register NrOfDeltas entnommen Hier durch wird auch die Gesamtdauer der Sequenz bestimmt Die Relation der verschiedenen Parameter DeltaPhi NrOfDeltas Servoscheibe Abbildung 7 15 Eine Bewegungssequenz und ihre Parameter ist in der Graphik in Abbildung 7 15 verdeutlicht Rechtzeitig vor Ablauf einer Bewegungssequenz muss die nachfolgende Sequenz bestellt werden Dies kann fr hestens geschehen sobald das zu diesem Servo geh rende Interrupt Flag gesetzt wurde Wird vom Mikrocontroller keine neue Sequenz angefordert so bleibt der zuletzt eingestellte Winkel des Servos erhalten Eine vom Mikrocontroller geschriebene Bewegungssequenz wird also vom Se quencer quasi verbraucht Der Winkel mit dem die nachfolgende Sequenz beginnt sollte m glichst genau mit dem Winkel bereinstimmen der am Ende der momentan ablaufenden Sequenz erreicht wird da sonst eine ruckartiger bergang vom End auf den Anfangswinkel mit maximaler Servostell geschwindigkeit erfolgt Sonderfall Winkelgeschwindigkeit 0 Pseudomode PhiDirect Wird das Register DeltaPhi mit dem Wert 0 beschrieben entspricht dies der Bewegungsgeschwindig keit 0 Folgerichtig bewegt sich das Servo dann unmittelbar auf den Startwinkel PhiStart und ver bleibt dort Das Register NrOfDelta
132. ch und den CORDIC Modus Rotate Vectoring ausw hlen Diese Eingabewerte werden vom Mikrocontroller aus in einem Regis terblock abgelegt der sich aus vier 16 Bit breiten Registern zusammensetzt Die Zahlenformate der drei Eingabewerte y und z sind dabei sowohl vom Modus als auch vom Koordinatensystem abh ngig und sind in Abschnitt 7 22 1 aufgelistet Die Rechenvorschrift wird wie folgt bestimmt Bit Adr 1 Adr Tabelle 7 35 Register Koordinatensystem und Modus eines CORDIC Berechnungsauftrages Bit 2 1 CoordSystem Koordinatensystem der CORDIC Berechnung Die Zuordnung von Bits und Koordinatensystem ist in Tabelle 7 36 ersichtlich SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 22 CORDIC KOPROZESSOR 125 Koordinatensystem CoordSystem linear 00 zirkular 01 hyperbolisch 10 Tabelle 7 36 Bin rwerte zur Auswahl des Koordinatensystems Bit 0 Mode Modus der CORDIC Berechnung Der Rotationsmodus wird ausgew hlt wenn dieses Bit auf 0 gesetzt wird bei 1 wird der Vektormodus verwendet Tabelle 7 37 gibt eine bersicht welche Funktionen mit welchem Koordinatensystem bzw Modus berechnet werden k nnen Im Adressbereich des CORDIC Coprozessor k nnen bis zu 32 solcher Eingabepakete hintereinan der abgelegt werden Es ist m glich jede beliebige Anzahl solcher Pakete zwischen 1 und 32 zu einen Auftrag zusammen zu schn ren Ist der Mikrocontroller mit dem Ablegen d
133. ch die geregelte 3 3 V Versorgungsspannung Abbildung 5 14 Erweiterungsstecker 10 poliger Wannensteckverbinder am Mikrocontroller verf gbar Der GND Anschluss ist auf zwei Pins vorhanden Auf dem Steckverbinder stehen folgende Anschl sse des Mikrocontrollers zur Verf gung PD2 RXD Port Anschluss PD2 oder Eingang der asynchronen seriellen Schnittstelle des AVRs PD3 TXD Port Anschluss PD3 oder Ausgang der asynchronen seriellen Schnittstelle des AVRs PF2 ADC2 Port Anschluss PF2 oder Eingang ADC2 des ADCs im AVR PD6 TI Port Anschluss PD6 oder Timer Counter Clock Input 1 PF3 ADC3 Port Anschluss PF3 oder Eingang ADC2 des ADCs im AVR Bitte Vorbelegung mit der herabgeteilten Akkuspannung beachten Falls notwendig k nnen R13 und R56 von der Platine entfernt werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 72 5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7 Der Pin des Erweiterungssteckers mit der Nr 8 ist nicht angeschlossen und kann daher frei belegt werden Hierzu wird er mittels einer Drahtbr cke Wire Wrap Draht mit dem gew nschten Pin des AV Rs verbunden 5 7 Anschluss eines Bluetooth RS323 Moduls An die Erweiterungsschnittstelle ist ein Bluetooth RS232 Modul auch als Bluetooth Serial Modul bezeichnet anschlie bar Ein solches Modul erm glicht die drahtlose Steuerung mittels eines PC insbesondere mittels eines Laptops mit eingebautem Bluetooth Transceiver Das Bluetooth Serial
134. der berhaupt nur von Sony selbst zu stark berh hten Preisen erh ltlich Alternativ hierzu kann ein einfaches Adapterkabel leicht selbst konfektioniert werden Ausgangspunkt ist ein handls bliches Verl ngerungskabel f r Game Pad Controller das zu Preisen zwischen 2 und 6 erh ltlich ist Ausgangspunkt Game Pad Verl ngerungskabel Abbildung 7 25 Aus einem Game Pad Verl ngerungskabel entsteht das Adapterkabel f r die Sand boxS 2 Dieses Verl ngerungskabel wird so durchtrennt das noch etwa 20cm Kabel am Buchsenteil brig SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 118 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP bleiben Abb 7 25 links Nun entfernt man mit einem Messer die Au enh lle des Kabels auf einer L nge von ca 5 cm mitt leres und rechtes Bild in Abb 7 25 Hierbei d rfen die Isolierungen der im Innern liegenden Adern des Kabels nat rlich nicht angeschnitten werden Ausreichend Geduld etwas Vorsicht und eine ruhige Hand werden also vorausgesetzt Farbzuordnung Wenn man auf die Buchse f r den Stecker des Game Pad Controllers blickt schaut dies so aus wie in Abb 7 26 zu sehen Die Nummerierung und die Farbzuordnung der einzelnen Adern sind bei einigen gr n Schneidkamme Abbildung 7 26 Nummerierung und g ngige Farbzuordnung der einzelnen Kontakte der Buchse des Game Pad Verl ngerungskabels Der Kontakt mit der Nummer 8 wird vom Game Pad Controller nicht verwendet
135. der Kon gurationsdaten 6 3 1 Update der FPGA Konfiguration Der Flash Speicher des FPGAs kann selbstverst ndlich mehrfach programmiert werden wodurch ein Update des HSSE Robotics Chips m glich wird Es ist auch m glich ein eigenes Hardwaredesign in das FPGA einzuspielen Um Missverst ndnissen vorzubeugen nochmals der Hinweis dass es sich bei der eingespielten Datei nicht um ein Programm im Sinne von Software vergleichbar mit einer exe Datei oder einer hex Datei handelt Diese Datei enth lt vielmehr Informationen welche unmittelbar die Schaltung im Innern des FPGAs bestimmen In den folgenden Abschnitten wird besprochen welche M glichkeiten es gibt um die Kon gurati onsdatei in das FPGA zu laden 6 3 1 1 Lattice ispVM und JTAG Download Kabel W hrend des Entwicklungsprozesses des FPGA Designs steht blicherweise nur die Kon guration ber ein spezielles JTAG Download Kabel zur Verf gung Sie basiert auf der Verwendung der soge nannten JTAG Schnittstelle des FPGA Bausteins Diese Schnittstelle ist f r vielf ltige Test und Pro grammieraufgaben geeignet Alle modernen FGPA Bausteine verf gen ber eine solche Schnittstelle ber die sie Kon guriert werden k nnen Lieferant der Kon gurationsdaten ist ein PC Das hierzu notwendige Programm namens ispVM System kann kostenlos von der WWW Page der Firma Lattice http www latticesemi com Downloads Software Top Downloads ispVM geladen werden Hierzu ist eine Regist
136. die tats chlich vom Fu punkt eingenommene Raumkoordinate aus Der Roboter wird sich nur ungef hr wie gew nscht bewegen hnlich wie sich ein Betrunkener nur ungef hr so wie eigentlich von ihm gew nscht bewegt Der HSSE Robotics Chip enth lt eine Linearisierungseinheit durch die sich die Ungenauigkeiten eines Servos in gewissem Rahmen ausgleichen lassen Insbesondere die bei Billigprodukten ausge pr gten Serienschwankungen lassen sich durch diese Funktion in den Griff bekommen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 92 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 4 Servo Anschl sse Die SandboxS 2 besitzt Anschl sse f r 24 Servos Abbildung 7 7 zeigt den entsprechenden Ausschnitt des Schaltplans und ein Foto der Steckverbinder f r die Servostecker Die Servostecker werden an alle Servoanschl sse stets so angesteckt dass sich die Seite auf wel cher die vergoldeten Crimp Kontakte im Kunststoffgeh use des Servosteckers sichtbar sind auf der Oberseite Best ckungsseite der Platine be ndet Steckt man die Servostecker versehentlich falsch an also um 180 verdreht nehmen die Servos keinen Schaden funktionieren selbstverst ndlich aber nicht Beim ersten Anstecken eines Servosteckers sind die Crimp Kontakte meist noch etwas zu eng ein gestellt Daher muss der Stecker mit erh hter Kraft und angemessener Vorsicht angesteckt werden Die Servos werden mit Pegeln nach dem LVCMOS Standard 3 3 V angesteuer
137. dies nicht der Fall muss die Drehrichtung durch gleichzeitiges Bet tigen beider Tasten ge ndert werden Dadurch wird das Bit Reverse im Register ModeIrqMask gesetzt so dass der Drehsinn umgekehrt wird Dies ist beispielsweise f r Servos des Typs Hitec HS311 HS322HD und HS325HB notwendig Nun wird PwmLen so lange verringert bis das Servo am mechanischen Anschlag angelangt ist oder aber der Wert von PwmLen 0 erreicht hat Falls das Servo an den mechanischen An schlag gebracht wurde wird PwmLen wieder soweit erh ht bis das Servo nicht mehr gegen den Anschlag arbeitet 2 brummt Als n chstes wird der Winkelzeiger so aufgesteckt dass er sich im Bereich des ersten Strahlen feldes also ca 4 Uhr be ndet In Abb 7 12 ist eine m gliche Situation nach Abschluss dieses Schrittes im linken Foto zu sehen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 6 SERVOLINEARISIERUNG UND KALIBRIERUNG 101 Abbildung 7 12 Links Das Servo ist im Uhrzeigersinn an den Anschlag gefahren worden Dann wurde der Winkelzeiger so aufgesteckt dass er sich innerhalb des ersten Strahlenfeldes be ndet Rechts Der Zeiger wurde von der Ausgangsposition zum ersten erreichbaren Strahl gegen den Uhrzeigersinn matha matisch positiv gedreht Im Beispiel entschied der Zufall f r die Strahlengruppe mit dem Kreissymbol e Aus dieser Position wird PwmLen soweit erh ht bis der erste erreichbare Strahl durch durch die Mitte der kleinen ffnung im Ze
138. durch einschalten der Optimierung beheben usb_standard_request c 335 6 warning warning with avrgcc assumes devices descriptors are stored in the lower 64Kbytes of on chip flash memory Diese Warnung kann g nzlich ignoriert werden Beachten muss man sie nur wenn man Konstanten verwendet die gr er als 64Kbytes sind z B Bilder Audio Dabei kann es sein dass die USB Deskriptor Tabelle ausserhalb der 64Kbyte Grenze im Flash Speicher gelegt wird vom Kompiler und nicht mehr gelesen werden kann Zur L sung des Problems wird auf die Datei conf_usb h Zeile 149 verwiesen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 32 2 ERSTE SCHRITTE Abbildung 2 13 Projekt bersetzen 2 4 4 Programm ausf hren Um das nun erfolgreich bersetzte Programm auf der SandboxS 2 auszuf hren gibt es zwei M glich keiten Das Programm wird in beiden F llen auf den Mikrocontroller bertragen Da der Mikrocon troller ber einen Flash Speicher verf gt bleibt das Programm auch nach dem Ausschalten erhalten Bei der ersten Variante wir mit dem Programmier Dialog gearbeitet bei der Zweiten mit dem Debug ger Bevor mit der bertragung begonnen werden kann muss die Sandbox mit dem JTAG ICE verbunden werden Abbildung 2 14 Abbildung 2 14 SandboxS2 mit angeschlossenem JTAG ICE 2 4 4 1 Verwenden des Programmier Dialogs ber diesen Dialog lassen sich s mtliche Einstellungen des Mikrocontroller ver ndern Dadurch ka
139. e Zeichenfolge f gt sie in den Sendepuffer ein Parameter Bedeutung str Pointer einer Zeichenfolge R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Diese Funktion blockiert wenn der Puffer voll ist Was jedoch nur Auftritt wenn keine Interrupts aktiviert sind oder wenn die Hardware Flusskontrolle verwendet wird und die Gegenstelle nicht bereit ist e Bevor diese Funktion verwendet werden kann muss uart init aufgerufen werden Beispiel siehe Abschnitt 9 6 1 9 6 5 uart getc char uart getc SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 166 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beschreibung Empf ngt ein Zeichen entfernt es aus dem Empfangspuffer R ckgabewert R ckgabewert Beschreibung Data Gibt das empfangene Zeichen zur ck Anmerkung e Diese Funktion blockiert wenn der Puffer leer ist Sind keine Interrupts aktiviert k nnen auch keine Zeichen empfangen werden Wird die Flusskontrolle verwendet wird der Gegenstelle mit geteilt das sie keine Daten mehr senden soll bis der Puffer wieder leer ist e Bevor diese Funktion verwendet werden kann muss uart init aufgerufen werden Beispiel siehe Abschnitt 9 6 1 9 6 6 uart is rx empty char uart is rx empty Beschreibung Pr ft ob der Empfangspuffer leer ist R ckgabewert R ckgabewert Beschreibung Data Gibt Null zur ck wenn der Puffer nicht leer i
140. e displaced corpus system to the coxa system Coords IK_GivensTransformation Coords 2 calculate the inverse kinematics IK_SetLegMovementCoxa 2 Coords x Coords y 0 IK_KNEE_UP for return 0 9 10 SD Karte 9 10 1 mmc init uint8 t mmc init Beschreibung Initialisiert die SD Karte R ckgabewert R ckgabewert Beschreibung FAILED Die Initialisierung ist fehlgeschlagen SUCCESSFUL Die Funktion wurde erfolgreich ausgef hrt Anmerkung e Die SD Karte muss eingelegt sein e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Siehe Beispiele der folgenden Funktionen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 210 9 SOFTWARE FUNKTIONSBIBLIOTHEK 9 10 2 fat cluster data store void fat cluster data store Beschreibung Liest Kon gurationsdaten wie Clustergr e Anzahl der Bytes pro Cluster von der SD Karte und legt diese in einer Datenstruktur ab Diese Datenstruktur wird nur intern verwendet die darin enthaltenen Daten k nnen ber die Funktio nen GetClusterSize und GetBytesPerSec ausgelesen werden R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Die SD Karte muss eingelegt und initialisiert sein mittels mmc init e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel siehe Beispiel in Abschnitt 9 10 4
141. e verdrehen kann Um den Motor mit elektrischer Energie zu versorgen werden zumindest zwei Anschl sse gebraucht Masse GND und die positive Versorgungsspannung typischerweise zwischen 4 und 6 5 V Der oben angesprochene Befehl f r den Stellwinkel wird ber ein drittes Kabel bertragen das ebenfalls das Massekabel als R ckleitung verwendet Die Mitteilung des gew nschten Winkels erfolgt SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 88 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP i ber die Dauer eines Spannungsimpulses von mehr als 2 V Der au erhalb dieser Zeitdauer anlie gende Spannungspegel liegt nahe bei so dass die beiden Spannungen leicht unterscheidbar sind Die Dauer des Impulses bestimmt unmittelbar die Winkelstellung des Servoarms In Abbildung 7 3 ist der Zusammenhang graphisch dargestellt Der HSSE Robotics Chip erzeugt mittels eines vom Mi Abbildung 7 3 Die Pulsdauer steuert den Servostellwinkel krocontroller aus parametrisierbaren Pulsgenerators Impulse zur Steuerung von 24 Servos Abbildung 7 4 zeigt Beispiele von Impulsl ngen und zugeh rigen Servohebelwinkeln Das Ser tp 12 ms 1 ca 20 ms m 1 5 ms L ca 20 ms t 141 858 L ca 20 ms Abbildung 7 4 Beispiele f r die Stellung des Servoarms in Abh nigkeit von der Impulsdauer vo im Bild stellt den Servohebel mit gr er werdender Impulsl nge im Uhrzeigersinn weiter Die Richtu
142. e z entspricht in diesem Modus einem Winkel in Radiant wobei dem Wert 12868 212 entspricht Um sicherzustellen dass die Berechnung konvergiert muss der Winkel innerhalb des Bereichs 0 z 212 liegen e Sowohl das Ergebnis von Sinus und Cosinus weisen eine Verst rkung von Kecir auf e Die Genauigkeit von beiden Berechnungen betr gt 14 54 Bit Die Datenformate in diesem Modus sind in den Abbildungen 7 39 und 7 40 dargestellt Bit T Adr 1 unsigned 3 downto 4 Adr unsigned 5 downto 12 Tabelle 7 39 Register Eingabewerte von x y und z des CORDIC Algorithmus Zirkularer Rotationsmo dus Schreib und lesbar Bit Adr 1 signed 1 downto 6 Adr signed 7 downto 14 Tabelle 7 40 Register Ausgabewerte von x und y des CORDIC Algorithmus Zirkularer Rotationsmo dus Schreib und lesbar Zirkularer Vektormodus e Der Eingangwert von z sollte in diesem Modus immer 0 sein e Nur das Ergebnis der Wurzelfunktion weist eine Verst rkung von auf Die Berechnung des Arkustangens hat keine Verst rkung e Die Genauigkeit der Berechnung des Arkustangens betr gt 14 7 Bit jene der Wurzelfunktion 16 15 Bit Die Datenformate in diesem Modus sind in den Abbildungen 7 41 und 7 42 dargestellt Linearer Rotationsmodus Die Genauigkeit der Berechnung betr gt 17 19 Bit Die Datenformate in diesem Modus sind in den Abbildungen 7 43 7 44 und 7 45 dargestellt SVN 408 PFAFF SEPTEMBER 20 2007
143. ebereich 0 4095 Adr 0x8D8 2n ist die Kanalnummer 1 bis 12 Initialwert nach dem Einschalten 0x0000 Nur lesbar 7 13 1 3 Register RcRxStatus Dieses Register gibt Informationen ber die derzeitige Empfangslage des Fernsteuerempf ngers so dass beurteilt werden kann ob der Empfang gest rt oder aber einwandfrei ist Bit 7 6 2 4 3 2 1 0 0 87 1 0x87F0 RxOk Tabelle 7 22 Register RcRxStatus Der Initialisierungswert nach dem Einschalten ist 0x0000 Nur lesbar Bit 0 RxOk Dieses Bit tr gt den Wert wenn der Empfang des Fernsteuerempf ngers gest rt ist Kann der RC Empf ngerdecoder das empfangene Signal decodieren so ist dieses Bit mit dem Wert 1 versehen In diesem Fall ist der Empfang mit hoher Wahrscheinlichkeit einwandfrei SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 14 PS 2 MAUSINTERFACE 113 7 14 PS 2 Mausinterface Am PS 2 Anschluss k nnen handels bliche M use angeschlossen werden Ger te neuerer Bauart ar beiten meist fehlerfrei w hrend viele ltere Ger te auf Grund von Normabweichungen nicht verwend bar sind Ein Ger t sollte also vor dem Kauf an der Schnittstelle getestet werden Die Maus wird von der SandboxS 2 nur erkannt und verwendet wenn sie bereits vor dem Einschal ten der Spannungsversorgung angesteckt wurde Die PS 2 Buchse ist nach Abb 7 21 am FPGA angeschlossen Py PE y MGE Men ER e fin I
144. eginnt stets erst nach dem vollst ndigen Ablauf der vorigen Se quenz Das Ende einer Sequenz ist am Wert 0 im Register DeltasToGo erkennbar Zu Beginn einer neuen Sequenz wird wie in Abb 7 14 zu sehen der Wert aus PhiStart in das Regis N chste Laufende Sequenz Sequenz Abbildung 7 14 Registerinitialisierung zu Beginn einer Bewegungssequenz ter CurrentPhi geladen Der Wert aus DeltaPhi wird in CurrentPhi geladen und die Anzahl der Servo pulszyklen in DeltasToGo wird auf den Startwert aus NrOfDeltas gesetzt Ist dies geschehen so wird das Interrupt Flag f r dieses Servo im Interrupt Flag Register laut Abschnitt 7 2 gesetzt Dieses Flag zeigt an dass eine neue Sequenz vom Mikrocontroller angefordert werden darf Das Interrupt Flag wird in jedem Fall gesetzt und kann nur durch Auslesen des entsprechenden Interrupt Flag Registers wieder gel scht werden Ein Interrupt auf Leitung INT1 wird in Folge des gesetzten Interrupt Flags je doch nur dann ausgel st wenn das zugeh rige Mask Bit in Register ModelrgMask Abschnitt 7 5 3 1 gesetzt ist Interrupt f r eine Servogruppe Werden mehrere Servos mit Sequenzen im gleichen Rhythmus gesteuert bedeutet dies typischerwei se dass f r alle Servos Sequenzen mit identischen NrOfDeltas zum gleichen Startzeitpunkt vom Mi krocontroller aus angefordert werden diese Sequenzen werden praktisch gleichzeitig n mlich unmittelbar nach Start der Sequenz zum Setzen ihres jeweiligen Interrupt
145. eh rigen Schneidkamm eingedr ckt wobei ein Teil eines weiteren Steckers behilflich ist wi 5 0 Hd p ene n Abbildung 7 30 Zugentlastung mit einem Umlenkb gel und zwei Kabelbindern Im rechten Bild ist das Komplettsystem bei Verwendung eines Playstation 2 Controllers der Firma Logitech zu sehen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER 121 7 17 1 1 Register SonyPs2GamePadButtons Dieses Register gibt an welche Tasten auf dem Game Pad Controller gedr ckt sind und welche nicht Die nachfolgende Registerbeschreibung gilt nur dann vollst ndig wenn der Game Pad Controller mit der Taste analog in den Modus analog rote LED leuchtet versetzt wurde Ist der Modus digital ausgew hlt so sind die Bits mit der Bezeichnung JoyR und JoyL fest mit dem Wert 1 belegt Jedes Bit 5 4 3 2 1 0 0x87C3 R2 L2 RI LI ow lt Y gt s Tabelle 7 29 Register SonyPs2GamePadButtons Nur lesbar Die Zeichen 1 X und sind als Sinnbilder auf den Tasten auf der rechten Seite des Controllers zu nden Die ausgef llten Pfeile bezeich nen die Richtungen in welche der Tastenjoystick auf der linken Seite des Controllers bet tigt wird Die beiden Tasten Start und Select nden sich in der Mitte Die Tasten mit den Bezeichnungen L1 L2 und R2 be nden sich auf den Schultern des Controllers wo sie bequem mit den Zeige n
146. ehen Die Formel zur Umrechnung des Zahlenwerts in die entsprechende Spannung ndet sich im Datenblatt des e Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden Beispiel Einschalten von AVR LED 1 wenn die Spannung am Eingang von ADC 3 den Wert 100 unterschreitet dieser Wert entspricht nicht 100mV int main uinti16 t AdcVal 0 function that has to b xecuted in every appli cation to initialize the interface with the FPGA SLZ Init while 1 AdcVal SL2_ExtAvrGetAdcValue EXT_ADC_3 if AdcVal lt 100 SL2 AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS ON return 0 9 5 Schnittstellen und Datenstr me USB und UART Um eine gewisse Unabh ngigkeit von der Hardware zu erreichen kann f r die Ausgabe die Biblio thek stdio h aus der avr libc verwendet werden Dabei werden so genannte Datenstr me Streams erstellt die dann mit Standardfunktionen benutzt werden k nnen Somit macht es von der Program mierung her keinen Unterschied ob man ber UART oder USB kommuniziert F r eine genauere Beschreibung wird auf das avr libc Manual verwiesen welches mit WinAvr installiert wird In dem folgenden Codeabschnitt wird die Erstellung und Verwendung von Streams gezeigt VMMMfMYttLlitll pP pg aaaeMl FM MM MM Pg gg cM MI includes EE EE E EE ET IEEE EE EE E P EE EAE standard input output functions
147. eleert wurden Dieses Verhalten erm glicht auf Wunsch die Verwendung des Level Controlled Interrupt des AVR Es ergibt sich folgende Vorgehensweise zur Verarbeitung der Interrupt Anforderungen die vom HSSE Robotics Chip kommen e External Interrupts von den Pins INTO und INT1 des AVR Mikrocontrollers w hrend der In itialisierungsphase freigeben e Interrupt Mask Bits der Peripherieeinheiten setzen Wert 1 wenn diese einen Interrupt Request ausl sen sollen H u gster Fall ist die Freigabe von Interrupt Requests f r den Ser vosequencer des Servos mit der h chsten Servonummer e Interrupt Routinen f r die beiden Interrupt Anforderungen von INTO und INTI erstellen Grunds tzlicher Aufbau beider Routinen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 2 INTERRUPTS 85 a Auslesen und Zwischenspeichern aller zum ausl senden Interrupt Request geh renden Interrupt Flag Register Hierdurch wird die Interrupt Anforderung seitens des Robotics Chips zur ckgenommen und es werden alle ausgelesenen Interrupt Flags gel scht b Bearbeiten aller ma geblichen Interrupt Flags aus allen ausgelesenen Interrupt Flag Registern c R ckkehr aus der Interrupt Service Routine des External Interrupt Requests INTO INTI Alternativ kann statt einer Interrupt Verarbeitung auch ein Polling auf die Interrupt Flag Register durchgef hrt werden Hierzu werden die entsprechenden oder alle Interrupt Mask Bits deakti viert Wert 0
148. em Register PwmLen das direkt vom Mikrocontroller aus beschrieben wird Im wesentlich komfortableren Modus PhiSpeed wird die Pulsl nge von der Linearisierungseinheit Abschnitt 7 6 berechnet die wiederum vom Servo Sequencer Abschnitt 7 7 automatisch mit einem Bewegungsab lauf versorgt werden kann Der Modus PwmDirect ist haupts chlich zur Kalibrierung der Servos und zu Debuggingzwecken gedacht 7 5 2 Pulsunterdr ckung Mittels Bit 0 Active in Register ModeIrqMask kann die Ausgabe eines Pulses unterdr ckt werden Ist dieses Bit mit dem Wert 0 beschrieben so wird kein Puls ausgegeben Dies ist auch der Initiali SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 5 SERVOPULSGENERATOR 93 ee 4 Servo 0 bis 5 Servo 12 bis 17 J Servo 18 bis 23 E UNE e 1 E SS emm 13 Sons Abbildung 7 7 Servoanschl sse am FPGA Im Foto ist nur die H lfte der Servoanschl sse am unteren Platinenrand zu sehen Die Anschl sse f r die Servos 0 bis 11 be nden sich am oberen Rand SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 94 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 375ns 0 732 ms Servopulsformung zyklischer Servosteuer ungspuls TuneCoarse Abbildung 7 8 Der Servopulsgenerator und seine Parametr
149. em eine bestimmte Verst rkung auf siehe Tabelle 7 38 Modus zirkular linear hyperbolisch K 1 646760258121 1 0 8281593609602 Tabelle 7 38 K in Abh ngigkeit vom Modus K REUZGRUBER 2007 7 22 1 Zahlenformate Genauigkeit Der CORDIC Algorithmus ben tigt drei 16 Bit Register f r die Ein Ausgangswerte deren Daten formate abh ngig vom gew hlten Koordinatensystem und Modus interpretiert werden In diesem Ab schnitt sind alle Datenformate jeweils fiir die Eingangs und Ausgangswerte von x y und z angefiihrt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 22 CORDIC KOPROZESSOR 127 Da in jeder Berechnung ein Wert zu wird z im Rotationsmodus bzw y im Vektormodus ist f r diese Ausgangswerte kein Zahlenformat angegeben Ob eine Berechnung konvergiert hat er folgreich war kann durch lesen dieser Register bestimmt werden Theoretisch sollten diese Register immer gleich werden wenn die Berechnung konvergiert Durch die nicht unendliche Anzahl von Berechnungsschritten und die beschr nkte Darstellung der Zahlenwerte wird dieser Wert h u g nicht exakt 0 berschreitet der Betrag dieser Ungenauigkeit den Wert 20 so kann davon ausgegangen werden dass die Berechnung nicht erfolgreich war und alle Ergebnisse ung ltig sind Die berpr fung dieses Registers ist nicht n tig wenn sichergestellt wird dass die angegebenen Wer tebereiche nicht berschritten werden Zirkularer Rotationsmodus
150. en 60 mA Diese langsame Entladung in ca 2 Tagen baut den Memory Effekt gr ndlich ab 41 7 Entladen Die Entladeschaltung wird nur aktiv wenn eine Akkuzelle verkehrt herum in den Batteriehalter eingelegt wird Liegt die Akkuzelle in der normalen Richtung im Halter ist die Diode gesperrt und es flieBt kein Strom Die Entladeschaltung ist auch f r ein auf den ersten Blick merkw rdiges Verhalten verantwortlich das sich beobachten l sst wenn vier Akkuzellen best ckt sind und der f nfte Platz leer bleibt Auch dann arbeiten Mikrocontroller und FPGA bereits Sobald aber ein Servo bewegt werden soll versagt das System seinen Dienst und l st selbstt tig einen Reset aus Diode und Widerstand berbr cken bei fehlender Akkuzelle den leeren Batteriehalter Die Spannung der verbleibenden vier Akkuzellen 4 8 V Diodenkniespannung also 4 1 V reicht zum Betrieb der 3 3 V Komponenten aus Steigt der Strom jedoch an so f llt am Widerstand 10 bereits eine nennenswerte Spannung ab Die Gesamt spannung reicht dann selbst zum Betrieb von FPGA und Mikrocontroller nicht mehr aus SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 52 3 ENERGIEVERSORGUNG 3 6 Verpolungsschutzschaltung Da eine negative Spannung zur sofortigen Zerst rung der Elektronikkomponenten der Platine f hren w rde ist ein Verpolungsschutz vorhanden Die in Abb 3 6 dargestellte Schaltung verwendet statt Positiver Akkuspannungspol vom
151. en Rahmen Al Abb 7 11 linkes Foto vorgenommen Abbildung 7 11 Bau der Winkelkalibriereinrichtung Im linken Foto ist das Bauteil A2 zur genauen Positionierung des Servos auf die Winkelrosette aufgeklebt worden Die Bauteile f r den Winkelzeiger sind im mittleren Foto zu sehen Rechts der komplettierte Winkelzeiger Der Bau des Winkelzeigers ist im mittleren und rechten Foto in Abb 7 11 Die ben tigten Schrauben von 6 5 mm L nge liegen dem Bausatz des Roboters Captain Ahab bei In Abb 7 11 rechts ist der zusammengebaute Winkelzeiger zu sehen Der Kalibriervorgang a Zur Kalibrierung wird das Servo zun chst mit einem Aufkleber gekennzeichnet und dann in b die Kalibriervorrichtung gesetzt Mit einem passenden mehrfach gefalteten kann das Servogeh use im Rahmen Al der Vorrichtung xiert werden Allzu fest braucht es nicht eingeklemmt zu werden Um das Servo kalibrieren zu k nnen wird ein Programm f r den AVR auf der SandboxS 2 ben tigt mit dem der Wert im Register PwmLen ver ndert und ausgelesen werden kann Hierzu ist beispielsweise das in Abschnitt 2 6 beschriebene Programm CalibrateServo geeignet Das Programm sollte mit einer mittleren PwmLen also etwas 2048 starten Diese PwmLen kann leicht mit den Tasten eingestellt werden Nun wird das Servo an den Anschluss Servo0 angeschlossen Wird PwmLen vergr ert so muss sich das Servo gegen den Uhrzeigersinn drehen Ist
152. er ndert werden Die Verwendung des Terminal Programms wurde bereits in Abschnitt 2 4 4 beschrieben 2 6 6 Zusammenfassung In diesem Beispiel wurde der PwmDirect Modus des Robotics Chips verwendet Mit diesem l sst sich ein Servo direkt ber PWM Impulse steuern Der Winkel als Eingabe der PWM Impulsl nge ist jedoch nicht linear Dies soll mit der Sevolinearisierung kompensiert werden Ebenfalls ist die Standarddrehrichtung zu ber cksichtigen sie kann f r jede Servo Serie anders sein Die ermittelten Daten werden in Kapitel 8 verwendet Nach der erfolgreichen Kalibrierung und Archivierung der Messreihen kann der Hexapod zu sammengebaut werden N here Informationen be nden sich im beigelegten Captain Ahab Bau Mechanikhandbuch 2 6 7 Aufgaben Diese Aufgaben sollten erf llt werden bevor das n chste Kapitel begonnen wird SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 47 a Um den Kalibrierungsvorgang zu erleichtern soll die Geschwindigkeit der Servodrehbewegung durch l ngeres Dr cken einer Taste erh ht werden Erweitern Sie nun ihr Programm um diese Funktionalit t b Durch die Beschleunigung der Drehbewegung kann der Wertebereich der Variable pwm 0 4095 schnell verlassen werden Implementieren Sie nun zwei Abfragen die die Werte der Va riable pwm in den Grenzen bis 4095 halten Nimmt die Variable den Wert 0 an darf sie nicht mehr decrementiert werden Nimmt
153. er AVR Platt form zu entwickeln Dazu z hlen Kompiler Assembler Simulator Debugger und Programmer Wei ters enth lt es die C Standard Bibliothek f r AVR avr libc und deren Dokumentation Der Kompiler basiert auf der GNU Compiler Collection GCC und wurde speziell an die AVR Plattform angepasst Das komplette Paket steht unter der General Public License GPL Lizenz und kann daher ohne zu s tzliche Geb hren verwendet werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 16 2 ERSTE SCHRITTE WinAVR 20070525 Setup Welcome to the WinAVR 20070525 Setup Wizard This wizard wil guide you through the instalation of WinAVR 20070525 Its recommended that you dose other acokicasons before starting Setup Ths mil make it possible to update relevant system fies without having to reboot your computer ext to WinAVR 20070525 Setup WinAVR 20070525 Setup License Agreement Choose Install Location Pease review he terms before retains 20070525 Choose the folder in misch to instal 22070525 Press Page Down to see the rest of the agreement Setup wil ratal WinAVR 20070525 the following folder To install n a different folder dick Browse and select another folder Cick Next to continue WINAVR Licensing informaton detribuled under the GNU GPL Compier Collection
154. er CurrentPhi Dieses Register enth lt eine vorzeichenlose Festkommazahl im Format 12 4 also mit 12 Vorkommas tellen und 4 Nachkommastellen Werden die Nachkommastellen nicht gebraucht so kann der Wert aus dem Register einfach um vier Stellen nach rechts geschoben werden Der Wert der aus dem Register ausgelesen werden kann gibt den derzeit vom Servo Sequencer vorgesehenen Servostellwinkel an Wird auf das Register vom Mikrocontroller geschrieben kommt es zu unde niertem Verhalten Das Register sollte daher ausschlie lich gelesen werden Bit 7 6 5 4 3 2 1 0 Adr 1 unsigned 11 downto 4 Adr unsigned 3 downto 4 Tabelle 7 12 Register Current Phi Dieses Register hat nur im Mode PhiSpeed eine Bedeutung Adr 0x8680 2ns ng ist die Servonummer 0 bis 23 Nur lesbar 7 7 0 3 Register DeltaPhi Dieses Register enth lt eine vorzeichenbehaftete Festkommazahl im Format 10 4 also mit 10 bin ren Vorkommastellen inkl Vorzeichen und 4 bin ren Nachkommastellen Dieses Format erlaubt eine ho he Genauigkeit bei der Steuerung der Servobewegung Der AVR Mikrocontroller kennt dieses Zahlen format nicht und kann lediglich vorzeichenbehaftete Ganzzahlen von 8192 bis 8191 im Zweierkom plementformat in das Register schreiben Der HSSE Robotics Chip dividiert diese Zahlen durch 16 bevor sie als Winkelinkrement verwendet werden Damit wird der kleinste Inkrementwert zu 0 0625 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 7
155. er Eingabewerte in den entsprechenden Registern fertig so schreibt er in das Register NrOfCordicToDo die Anzahl der Pakete die berechnet werden sol len Damit sind automatisch immer die Pakete mit den Nummern 1 bis Anzahl Pakete innerhalb des Adressbereiches gemeint Durch das Schreiben dieses Registers wird die Berechnungst tigkeit der CORDIC Recheneinheit gestartet Diese beginnt beim Paket mit der h chsten Nummer und arbeitet sich Paket f r Paket bis zum Paket Nr 1 weiter Das Register NrOfCordicToDo dient synchron zum Berechnungsvorgang zur Buchf hrung und enth lt stets die Anzahl der noch ausstehenden Pakete Alle in Auftrag gegebenen Pakete mit einer h heren Nummer als sie aus dem Register NrOfCordic ToDo gelesen wird sind bereits fertig berechnet Die Ergebnisse legt der CORDIC Prozessor in den gleichen Registern ab in denen er die Eingaben vorgefunden hat Der Mikrocontroller kann diese Er gebnisse bereits auslesen w hrend der CORDIC Prozessor noch mit Paketen mit niedrigerer Nummer besch ftigt ist Um den CORDIC Prozessor weitgehend auszulasten ist es m glich unmittelbar nach dem Ausle sen der Ergebnisse aus einem Paket bereits wieder die Daten f r einen neuen Berechnungsauftrag in das Registerpaket zu packen Der neue Auftrag sollte aber erst nach der vollst ndigen Abarbeitung aller noch zu erledigenden Berechnungen durch das Schreiben auf NrOfCordicToDo erteilt werden Die vollst ndige Bearbeitung des letzten Auftrags ist
156. er nachgehen darf Die Farbzuordnung wird wieder Abb 7 26 entnommen Sollte das verwendete Kabel andere als die dargestellten Farben verwenden wird dies am besten zuerst mittels eines Durchgangspr fers gemessen und im Bild7 26 eingetragen Ein fehlerhaftes Kabel kann zur Zerst rung der SandboxS 2 oder des Game Pad Controllers f hren Bevor ein Kabelf hrungsb gel dessen Snap In Halter nicht abgebrochen wurden entg ltig alle Adern sichert sollte nochmals mit dem Durchgangspr fer die korrekte Zuordnung der Kontakte im Sony Steckverbinder zu den noch freiligenden Schneidklemmkontakten gepr ft werden Wurde eine falsche Ader eingedr ckt oder Adern verwechselt so ist dieser Fehler zu diesem Zeitpunkt noch leicht zu beheben Bei wiederholter Montage muss aber wieder ein unverletztes St ck der Kabelisolation auf dem Schneidklemmverbinder zu liegen kommen Zugentlastung des Kabels Die Zugentlastung wird in der Abfolge aus Abb 7 30 unter Zuhilfenahme zweier Kabelbinder vor genommen Zun chst wird der mit dem Flachbandsteckverbinder gelieferte Umlenkb gel aufgesteckt und festgepresst Anschlie end wird das Kabel mit zwei Kabelbindern an diesem B gel befestigt Das Endergebnis ist im rechten Foto zu sehen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 120 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP e Abbildung 7 29 Einzeladern werden in den eigentlich f r Flachbandkabel gedachten Stecker eingelegt Jede Ader wird in den zug
157. ervoPhiDirect 0 1609 512 AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED SL2 AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED return 0 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 181 9 8 10 RC_GetServoDeltasToGo inline uintl6_t RC GetServoDeltasToGo in uint8 t ServoNumber Beschreibung Liest die Anzahl der noch abzuarbeitenden Winkelschritte aus dem RoboticsChip Diese Funktion liefert nur sinnvolle Werte wenn das angegebene Servo im Modus PhiSpeed arbeitet Parameter Bedeutung ServoNumber Nummer des Servos dessen Anzahl noch abzuarbeitender Winkelschritte ge lesen werden soll Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich R ckgabewert R ckgabewert Beschreibung Deltas Anzahl der noch abzuarbeitenden Winkelinkremente Anmerkung e Um RC GetServoDeltasToGo verwenden zu k nnen muss der angegebene Servo zu vor in den Modus RC SERVO MODE PHI DIRECT geschalten werden e Wenn RC GetServoDeltasToGo direkt nach RC SetServoPhiSpeed aufgeru fen wird so wird nicht der soeben geschriebene Wert f r die Anzahl der Winkelschritte zur ck gegeben da der RoboticsChip nur alle 20 ms die Daten aus den Registern abholt e Bevor diese Funktion verwendet werden kann m ssen 51 22 Init und RC Init aufge rufen werden Beispiel Die Werte aus dem DeltasToGo
158. ervos istin Abb 7 1 auf Seite 81 ersichtlich R ckgabewert R ckgabewert Beschreibung Phi Position des Servos 4095 180 0 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 184 9 SOFTWARE FUNKTIONSBIBLIOTHEK Anmerkung e Um RC_GetServoCurrentPhi verwenden zu k nnen muss der angegebene Servo zu vor in den Modus RC_SERVO_MODE_PHI_DIRECT geschalten werden e Wenn GetServoCurrentPhi direkt nach SetServoPhiSpeed aufgeru fen wird so wird nicht der Startwinkel zur ckgegeben da der RoboticsChip nur alle 20 ms die Daten aus den Registern abholt e Bevor diese Funktion verwendet werden kann m ssen 51 22 Init und RC Init aufge rufen werden Beispiel Die Werte aus dem CurrentPhi Register werden an den ersten 11 Servo LEDs angezeigt Dabei ist jeder LED ein bestimmter Winkel zugeordnet Wird dieser Winkel berschritten so wird die LED eingeschaltet Dies hat zur Folge dass w hrend der Bewegung des Servos die LEDs nacheinander eingeschaltet werden int main uintl16 t Data 0 uint8 t LedIdx 0 proxy function for whole initialization initi clear all LEDs again RC SetLedClearA11 RC SetServoMode 0 MODE PHI DIRECT RC SetServoPhiSpeed 0 0 2 4 1024 time needed for movement 1024 Steps 20 ms 20 5 sec delay ms 20 1 1 maximum value 2048 2 1024 number of LEDs
159. erwendet wird Abbildung 2 12 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 28 2 ERSTE SCHRITTE bea pa pa ye ja pbg pee gt 282492 543 an E EEKEI 1 256 8 659 59 memory e UR Doas GE E Abbildung 2 12 Kompiler Einstellungen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 29 2 4 2 Programm schreiben Ein neues Projekt sollte nun bereit sein Auf welche Weise es erstellt wurde ist f r dieses Beispiel unerheblich 2 4 2 1 Programmspezifikation Das Programm bringt die LED Msg AvrO zum Aufleuchten Wenn man die Taste Key_AvrO dr ckt leuchtet auch die LED Msg Avr1 auf Zus tzlich wird die Zeichenkette Hello World ber die USB und UART Schnittstellen ausgegeben 2 4 2 2 Quellcode LIT Workfile main c Author Christian Raschko Date 2007 08 20 Description main program Revision n 3k ok ob AE ob oe o AE E e E e E kk oe kk ob e V Y c e ck VIV M EB LE A EE includes 2721017702 122 2271 2 7251 EE LED AAA EE standard library includes include lt stdio h gt AVR specific includes include lt avr interrupt h gt hexapod library includes include SandboxS2 lib h include uart h include uart usb lib h EE E TERR UULU UALL ALAANU ULAIA ALLOULA LILU LEIE global variables definitions DEALS IN EST IL 7 EL
160. es Servos Anmerkung e Um RC GetServoCurrentDeltaPhi verwenden zu k nnen muss der angegebene Ser vo zuvor in den Modus SERVO MODE PHI DIRECT geschalten werden e Wenn RC GetServoCurrentDeltaPhi direkt nach SetServoPhiSpeed aufgerufen wird so wird nicht das neue Winkelinkrement zur ckgegeben da der RoboticsChip nur alle 20 ms die Daten aus den Registern abholt e Bevor diese Funktion verwendet werden kann m ssen 5 2 Init und Init aufge rufen werden SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 183 Beispiel Die bereinstimmung zwischen gelesenem und geschriebenem Wert wird durch Leuchten von LED 0 angezeigt int main uintl6_t Data 0 proxy function for whole initialization Init clear all LEDs RC_SetLedClearAll RC_SetServoMode 0 RC_SERVO_MODE_PHI_DIRECT RC SetServoPhiSpeed 0 0 2 lt lt 4 1024 time needed for movement 1024 Steps 20 ms 20 5 sec delay ms 20 Data RC GetServoCurrentDeltaPhi 0 if Data 2 4 RC_SetLedBrightness 0 255 while 1 return 0 9 8 12 RC_GetServoCurrentPhi inline uintl6_t RC_GetServoCurrentPhi in uint8_t ServoNumber Beschreibung Liest die aktuelle Position aus dem RoboticsChip Parameter Bedeutung ServoNumber Nummer des Servos dessen Position gelesen werden soll Die Nummerierung der S
161. eser Funktion wird eine Berechnung mit dem CORDIC Algorithmus eingeleitet Zun chst wer den die Parameter mittels der Funktion RC SetCordicCalculationArguments in den Ro boticsChip geschrieben die Berechnung mit SetCordicCalculationStart gestartet und die Ergebnisse mit RC GetCordicCalculationResult gelesen nachdem mindestens so lange gewartet wurde bis CordicWaitOnResult nicht mehr blockiert Eine genaue Beschreibung der M glichkeiten des CORDIC Algorithmus be ndet sich in Abschnitt 2 22 Diese Funktion f hrt die ber die Parameter Mode und CoordSys bestimmte Funktion mit den Para metern RegisterX RegisterY und RegisterZ aus Parameter Bedeutung RegisterX Initialwert des X Registers RegisterY Initialwert des Y Registers RegisterZ Initialwert des Z Registers Mode Modus der Berechnung Dieser Parameter kann die Werte RC_CORDIC_MODE_ROTATION bzw RC_CORDIC_MODE_VECTORING annehmen Siehe Abschnitt 7 22 CoordSys Bestimmt das f r die Berechnung verwendete Koordinatensys tem RC CORDIC COORD LIN CORDIC COORD CIR oder RC CORDIC COORD HYP Siehe Abschnitt 7 22 R ckgabewert R ckgabewert Beschreibung RC FAILED Die Queue des RoboticsChips ist bereits g nzlich bef llt RC SUCCESSFUL Die Berechnung wurde in den Speicher des RoboticsChips geschrieben SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 198 9 SOFTWARE FUNKTIONSBIBLI
162. etGlobalServoAttributesTable_P gTable RC_SetGlobalServoMode RC_SERVO_MOD NO ACTION RC SetServoMode servo RC SERVO MOD P P PHI DIRECT RC SetServoPhiDirect servo angle show active servo RC SetLedClearAl11 RC SetLedBrightness servo Oxff SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 142 8 INVERSE KINEMATIK for switch GetKeysState case INCREMENT angle 1 lt lt 12 1 anglet t fprintf gStrmUSB Angle u n angle break case DECREMENT angle 0 angle fprintf gStrmUSB Angle u n angle break case SELECT servo RC_NUMBER_OF_SERVOS fprintf gStrmUSB Active servo uMn servo RC_SetGlobalServoMode RC_SERVO_MOD RC_SetServoMode servo RC_SERVO_MOD RC_SetLedClearAll RC SetLedBrightness servo Oxff angle 1609 break NO ACTION PHI DIRECT s default break RC_SetServoPhiDirect servo angle never return loop forever for return 0 8 4 Inverse Kinematik Test Da nun alle n tigen Servoparameter ermittelt wurden kann das inverse Kinematik Modul getestet werden 8 4 1 Spezifikation Nach dem Start des Programms bewegt sich der Fufipunkt des Beins 3 auf den Startpunkt 140 40 0 Durch Dr cken der Taste Key 0 wandert der Fu punkt entlang einer Geraden idealis
163. etLegMovementCoxa 3 159 0 0 IK KNEE UP for return 0 9 9 4 IK SetLegMovement uint8 t IK SetLegMovement uint8 t LegNumber intl16 t XCoord n n n 16 t YCoord n n intl16 t ZCoord i i i i i int8 t Position Beschreibung Berechnet die inverse Kinematik eines angegebenen Beines und bewegt den Fu punkt des Beines zu diesem Die angegebenen Koordinaten beziehen sich auf das rotierte Coxa System Das Coxa System wurde so rotiert dass die Achsen parallel zum Korpus System sind Kann der angegebene Punkt nicht angefahren werden so wird das Bein nicht bewegt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 9 INVERSE KINEMATIK 207 Parameter Bedeutung LegNumber Index des Hexapod Beines dieser Index entspricht jenem der auf der Oberseite des Hexapods eingraviert ist XCoord X Koordinate des gew nschten Fu punktes YCoord Y Koordinate des gew nschten Fu punktes ZCoord Z Koordinate des gew nschten Fu punktes Position Da es f r viele Punkte zwei verschiedene L sungen f r p und p gibt muss zu s tzlich angegeben werden welche der beiden L sungen berechnet werden soll Wird dieser Parameter KNEE gesetzt so wird eine L sung berechnet in welcher der Fu punkt stets eine tiefere Position einnimmt als das Kniegelenk Bei KNEE DOWN liegt der Fu punkt h her als das Kniegelenk
164. eutung wird das Interrupt Flag IFPnk nicht gesetzt 7 10 LED mit Helligkeitssteuerung Am FPGA sind 24 farbig sortierte LED zur Anzeige beliebiger Statusmeldungen oder auch als Schmuck angeschlossen siehe Abb 7 16 Deren Helligkeit kann in 256 Stufen eingestellt werden uw ug wu M x rd wur ooh ee UELLE UM u gt 3 5 17 5 16 15 5 014 Senvols ess gt gt ett OFF OF EES OFS gt k H Abbildung 7 16 LEDs mit Helligkeitssteuerung am FPGA Es ist nur die am unteren Platinenrand be ndliche H lfte der LEDs abgebildet Die LEDs 0 bis 11 be nden sich auf der gegen berliegenden Seite der Platine am oberen Rand Auf Stufe 0 ist die LED vollkommen dunkel Die Helligkeit der LED nimmt auf Grund der physika lischen Funktionsweise von LEDs nicht linear mit dem eingestellten Wert zu Die Leuchtst rke der LEDs in unterschiedlichen Farben unterscheidet sich sehr stark voneinander SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 11 STATUS LED 109 Der Aufbau des Parametersatzes ist f r alle LEDs identisch Nach dem Einschalten ist die Helligkeit der LEDs so eingestellt dass sich ein typischer Helligkitsverl
165. f r 2 dimensionale Punkte mit Vielfachen von 60 aus Parameter Bedeutung Input Koordinaten des zu rotierenden Koordinatensystems Leg Index des Beins f r das die Rotation ausgef hrt werden soll Der Index bestimmt den Winkel der Rotationaufgrund der Anordnung des Beins am K rper R ckgabewert Der R ckgabewert bestimmt ob der Punkt angefahren wurde oder nicht R ckgabewert Beschreibung Point Koordinaten des Punktes im rotierten Koordinatensystem Anmerkung e Bevor diese Funktion verwendet werden kann m ssen SL2 Init RC Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Berechnet die Winkel f r den Punkt 138 80 0 im rotierten Coxa System dieser Punkt entspricht 159 0 0 im Coxa System und f hrt diesen an int main void uint8_t i 0 IK_Point2d Coords initialize all modules Init copy the linearisation table into the RoboticsChip RC SetGlobalServoAttributesTable P gTable activate all servos SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 10 SD KARTE 209 for i 0 i RC NUMBER OF SERVOS i RC SetServoPhiDirect i 1609 RC_SetGlobalServoMode RC_SERVO_MODE_PHI_DIRECT enable cordic interrupt RC_SetInterruptO RC_INTTERRUPT_MASK_CORDIC points in the rotated coxa system Coords x 138 Coords y 80 rotate th
166. frequenz zur Versorgung der FPGA internen PLLs 25 MHz betr gt Daher kommt deren Einsatz bei Verwendung eines Taktes von 8 MHz Taktfrequenz nicht in Frage SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 6 3 FPGA KONFIGURATION 75 6 3 FPGA Konfiguration Der Entwurfsprozess f r den HSSE Robotics Chip endet in der Erzeugung einer sogenannten Kon gurationsdatei f r das FPGA Diese Datei enth lt quasi Schaltereinstellungen welche die Struktur und die Elementarfunktionen der Schaltung im FPGA bestimmen Das eingesetzte FPGA vom Typ Lattice XP speichert diese Kon guration in statischen Speicherzellen ab welche ber den gesamten Chip verteilt sind Daher wird die Kon guration mit jedem Ausschalten gel scht und steht nach dem Einschalten nicht mehr zur Verf gung Das FPGA vergisst sozusagen seine Kon guration Bausteine der Lattice XP Serie verf gen jedoch zus tzlich ber einen Flash Speicher in dem die Kon gurati onsdatei abgelegt werden kann Auf der SandboxS 2 ist das FPGA so eingestellt dass es den Inhalt des Flash Speichers unmittelbar nach dem Einschalten automatisch in die RAM Kon gurationszellen l dt Dies ben tigt nur wenige Millisekunden w hrend der die LED 13 in unmittelbarer N he des FPGA Bausteins eingeschaltet is Abbildung 6 1 Die DONE LED leuchtet solange das TM FPGA keine Kon guration geladen hat 4 TT ist Das kurze Aufblitzen dieser LED beim Einschalten markiert also den bertragungsvorgang
167. g Ihrem eigenen Risiko ob liegt Die SandboxS 2 stellt kein Produkt dar Es handelt sich insofern lediglich um Empfehlungen die zwar weitgehend erprobt aber m glicherweise nicht fehlerfrei sind Alle Anweisungen richten sich ausschlie lich an vollrechtsf hige Personen die demnach auch im Sinne des Gesetzes erwachsen sein m ssen Sollen Anweisungen in dieser Anleitung von anderen als solchen Personen ausgef hrt werden so sollte dies nur unter Aufsicht einer fachkundigen und vollrechtsf higen Person geschehen welche diese Aufsicht auszu ben berechtigt ist Weder der Autor noch die FH Ober sterreich Studienbetriebsgesellschaft bernehmen eine Haftung f r Sch den die durch Befolgung oder auch Nichtbefolgung dieser Anweisung entstehen Ebensowenig wird eine Haftung f r Sch den im Zusammenhang mit dem Betrieb der in dieser Anleitung beschriebenen Platine bernommen F r den Inhalt verlinkter WWW Seiten und den Inhalt von empfohlener Litera tur wird keine Verantwortung bernommen Sollten solche Seiten im Laufe der Zeit problematische Inhalte bekommen sind wir f r einen Hinweis dankbar Zeichenlegende Einige Textpassagen sind am Textrand mit Symbolen folgender Bedeutung gekennzeichnet Gefahr Bei Nichtbeachtung besteht entweder Verletzungs oder zumindest Zerst rungsgefahr f Hinweis Hinweis den man beherzigen sollte Es besteht zwar keine unmittelbare Gefahr wenn man dies nicht tut aber es wird beispielsweise eine Funktion
168. gTable RC NUMB 36 385 3686 1 277 3641 127 815 3619 14 255 3670 19 282 3629 13 292 3608 51 362 3690 51 362 3690 51 362 3690 51 361 3689 652 3952 543 3908 568 3882 511 4059 560 3903 559 3866 628 3953 628 3953 628 3953 630 3961 918 3952 799 3908 822 3882 798 4059 793 3903 828 3866 887 3953 887 3953 887 3953 887 3961 remains flash memory ER_OF_SE 1183 1453 1745 RVOS 2038 PROGME 233 VE RSE 3952 171 RC S 1081 1363 1661 1965 ERVO RE 2263 VE RSE 3908 66 RC 5 1100 1378 1652 1941 ERVO RE 2255 EVE 3882 7 RC 5 1075 1354 1643 ERVO R 2008 RSE 2242 4059 157 RC_S ERVO_RE ERSE 1082 1364 1653 1942 2242 3903 99 RC_S ERVO_RE ERSE 1101 1377 1663 1962 227 3866 44 RC_S ERVO R ERSE 1158 1425 1708 1996 30 3953 0 RC_S ERVO_RE ERSE 1158 1425 1708 1996 30 3953 0 RC_S ERVO_RE ERSE 1158 1425 1708 1996 30 3953 0 RC_S ERVO R ERSE 1159 1426 1708 1998 30 3961 21 RC_S ERVO_RE ERSE 2608 ON ON ON ON
169. ge Schnellladeger te entladen die Akkuzellen vor dem Ladevorgang Dies ist zur Vermei dung des sogenannten Memory Effektes durchschnittlich vor jedem f nften Ladezyklus notwendig Aus diesem Grunde besitzt die SandboxS 2 eine zwar einfache aber sehr wirkungsvolle Entlade JAT Entlade Entlade Entlade Entlade Entlade schaltung schajtung schaltung schaltung schaltung A Les se ss eee Z 21 t LE H 8 zy 8 M D 9 00 0 z Y Batterie Batterie Batterie Batterie Batterie halter halter halter halter halter Abbildung 3 5 Entladeschaltung aus Diode und Widerstand vorrichtung Diese besteht aus der Serienschaltung einer Diode und eines Widerstandes Abb 3 5 Die Diode l sst einen Stromfluss zu bis die anliegende Spannung unter die Diodenkniespannung ca 0 7 V sinkt Der Widerstand begrenzt den flie enden Strom Sein Wert betr gt 100 Die in Entlade richtung eingelegte Zelle wird mit einem Strom von UAkkuzelle UDiodendurchlasspannung ET Lud FEntladen 100 entladen Bei einer Kapazit t von 2500 mAh f r einen hochqualitativen NiMh Akkumulator der Gr e AA ergibt sich eine Entladezeit von Entladen 60 mA Q Akkuzelle _ 2500 mAh TEntlad
170. gern erreichbar sind Die Bits mit den Namen JoyR und JoyL geben an ob der jeweilige Joystick niedergedr ckt wird Bit im Register entspricht einer Taste am Game Pad Controller Ist die entsprechende Taste gedr ckt so wird f r das Bit der Wert 0 gelesen ansonsten der Wert 1 Wird keine Taste gedr ckt so steht entsprechend in allen Bits dieses Registers der Wert 1 7 17 1 2 Register SonyPs2GamePadJoyR Dieses Register gibt die Stellung an in der sich der rechte Joystick be ndet Die Auslenkung des Joysticks wird durch zwei vorzeichenlose 8 Bit breite Bin rzahlen angegeben wobei jedoch meist gar nicht mit der vollen Genauigkeit einer 8 Bit Zahl gerechnet werden kann Insbesondere billige Controller verf gen meist ber weit geringere Aufl sungen Die Daten sind in diesem Register nur verf gbar wenn der Game Pad Controller mit der Taste analog in den Modus analog rote LED leuchtet versetzt wurde Im Modus digital ist das Register komplett mit Bits des Wertes 1 belegt Bit 0x87C5 0x87C4 JoyR y Achse unsigned 7 downto 0 JoyR x Achse unsigned 7 downto 0 Tabelle 7 30 Register SonyPs2GamePadJoyR Nur lesbar Bits 15 bis 8 JoyR y Achse Dieses Register enth lt die momentane Auslenkung f r die y Achse des rechten Joysticks ausgedr ckt durch eine vorzeichenlose 8 Bit breite Zahl wobei 0x00 der Auslenkung nach ganz oben und OxFF der Auslenkung nach ganz unten entspricht
171. gnalader im Foto wei des zuvor eingel teten Servokabels Abbildung C 7 Der modi zierte Empf nger ist einbaufertig Im Hintergrund des linken Fotos wartet bereits die Platine eines weiteren Empf ngers auf die Modi kation SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 235 Literaturverzeichnis Craig John J Introduction to Robotics Mechanics and Control 3 Auflage Englewood Cliffs New Jersey Prentice Hall 2004 Kreuzgruber Michael CORDIC Algorithmus Bachelorarbeit FH O Hagenberg Hardware Soft ware Systems Engineering Hagenberg Austria 2007 Oehme Friedrich Huemer Mario und Pfaff Markus Elektronik und Schaltungstechnik Ein verst ndlicher Einstieg 1 Auflage M nchen Carl Hanser Verlag Oktober 2006 ISBN 978 3 446 40694 0 Dieses Buch soll f r technisch interessierte Leser den Zugang zu elektronischen Schaltungen er ffnen ohne dass ein Grundlagenstudium der Elektrotechnik vorausgesetzt wird Die Grundlagen werden soweit ben tigt mit behandelt Society IEEE Computer Hrsg IEEE Standard Test Access Port and Boundary Scan Architecture New York Institute of Electrical and Electronics Engineers 1993 Spong Mark W Hutchinson Seth und Vidyasagar Mathukumalli Robot Modeling and Control New York John Wiley amp Sons Inc 2005 Volder J E The CORDIC Trigonometric Computing Technique In IRE Trans on Electronics Com puters vol EC 8 no 3 IRE Trans September 1959 3
172. gned 7 downto 0 Tabelle 7 43 Register Eingabewerte von x y und z des CORDIC Algorithmus Linearer Rotationsmo dus Schreib und lesbar Bit 1 7 6 5 4 3 2 1 0 unsigned 3 downto A unsigned 5 downto 12 Tabelle 7 44 Register Ausgabewert von x des CORDIC Algorithmus Linearer Rotationsmodus Schreib und lesbar Bit 1 7 6 5 4 3 2 1 0 unsigned 15 downto 8 unsigned 7 downto 0 Tabelle 7 45 Register Ausgabewert von y des CORDIC Algorithmus Linearer Rotationsmodus Schreib und lesbar Bit 1 unsigned 15 downto 8 unsigned 7 downto 0 Tabelle 7 46 Register Eingabewerte von x und y des CORDIC Algorithmus Linearer Vektormodus Schreib und lesbar Bit Adr 1 Adr Tabelle 7 47 Register Ausgabewert von x des CORDIC Algorithmus Linearer Vektormodus Schreib und lesbar Bit d 1 unsigned 5 downto 2 Adr unsigned 3 downto 10 Tabelle 7 48 Register Ausgabewert von z des CORDIC Algorithmus Linearer Vektormodus Schreib und lesbar Bit 1 Bit 1 signed 1 downto 6 signed 7 downto 14 signed 1 downto 8 signed 9 downto 16 Tabelle 7 50 Register Ausgabewert von x des CORDIC Algorithmus Schreib und lesbar SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 130 7 ROBOTIK PERIPHERIE
173. gung PS 2 Buchse Die PS 2 Buchse wird statt aus einer 5 V aus der 3 3 V Spannungsversorgung des Systems gespeist Die berwiegende Anzahl der PS 2 M use funktioniert auch mit dieser Betriebsspannung fehlerfrei 3 7 4 Spannungsversorgung des ADCs im Mikrocontroller In Abb 3 9 ist die Spannungsversorgung des im AVR Mikrocontroller integrierten ADC dargestellt Die Versorgungspannung AVCC wird aus der 3 3 V Versorgung ber ein RC Glied das als Filter RC Filter Abbildung 3 9 ADC Spannungsversorgung und Gewinnung der Referenzspannung mittels RC Filter SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 54 3 ENERGIEVERSORGUNG dient gewonnen Die Eigenschaften dieses Filters lassen sich ber die Auswahl des Widerstands wertes und der Kondensatorkapazit t beeinflussen Bei zu hohen Widerstandswerten wird jedoch die minimale Versorgungsspannung des ADCs nicht mehr erreicht In Folge l st der ADC intern im Mi krocontroller unter Umst nden einen Reset aus Der angegebene Wert von 100 hat sich in der Praxis als guter Kompromiss erwiesen In der Abbildung ist auch dargestellt wie die Referenzspannung des ADCs aus der Versorgungs spannung gewonnen wird Auch hierzu wird ein RC Filter verwendet Der eingesetzte Widerstands wert kann um ein Vielfaches h her gew hlt werden als bei der Versorgung des ADCs da in den Referenzspannungseingang des ADCs nur ein minimaler Strom flie t SBXS2MANUAL TEX SVN 4
174. halten der Robotik Peripheriekomponenten ergibt sich leider ein weiteres Problem des Softwaredebugging hnlich wie bei den Timern und beim ADC des AVR l uft SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 2 INTERRUPTS 83 auch die Servosteuerung unabh ngig vom Debuggingzustand der AVR CPU Dieses Verhalten stellt ein typisches Problem des Debugging von Echtzeitanwendungen dar und l sst sich mit den typischer weise zur Verf gung stehenden Mitteln nicht ohne weiteres l sen Hierzu sind spezielle Debugging Werkzeuge notwendig 7 1 1 Zugriff auf 16 Bit Register Lese und Schreibzugriffe des Atmel AVRs erfolgen stets auf 8 Bit breite Datenw rter Der Zugriff auf 16 Bit breite Register muss daher durch zwei Zugriffe mit 8 Bit Datenwortbreite statt nden Beim Lesezugriff besteht die Gefahr dass sich die Registerwerte zwischen den beiden Leseoperationen ndern so dass nicht zusammengeh rende 8 Bit breite H lften eines Wortes gelesen werden Genauso l sst der auf zwei Operationen aufgeteilte Schreibzugriff das Register in der Zeit zwischen den beiden Zugriffen in einem ung ltigen Status Dieses Problem tritt auch bei einigen Peripherieeinheiten des AVRs auf So beispielsweise beim 16 Bit Timer Im Datenblatt ndet sich hierzu eine genaue Beschreibung Dar ber hinaus existiert eine Application Note mit der Bezeichnung AVRO72 die detailliert auf dieses Problem eingeht Diese Application Note steht auf der WWW Seite von Atmel http
175. hnellladeger t geladen Es sollte sich um ein Schnellladeger t Ladezeit ca 1 h handeln da NiMh Akkumulatoren die mit geringem Strom aufgeladen werden im Betrieb keine hohen Str me abgeben k nnen Beispielhaft zeigt Abbildung 3 2 ein kosteng nstiges Schnellladeger t f r 1 bis Abbildung 3 2 Preisg nstiges Schnellladeger t Typ C200 Die Ladezeit f r bis zu 4 Zellen liegt knapp ber einer Stunde 4 AA oder AAA Zellen Die Notwendigkeit der Schnellladung ist auch der Grund warum keine Ladeschaltung mit Strom versorgung aus einer USB Verbindung zum PC vorgesehen wurde Diese Zusatzfunktion h tte die SandboxS 2 nicht unwesentlich verteuert jedoch in der Praxis nur geringen Nutzen gebracht da so nur niedrige Ladestr me erzeugt werden k nnen 3 3 Akkuhalter Die Akkuzellen werden in stabilen Batteriehaltern des Herstellers Keystone auf der Platine xiert und zugleich kontaktiert In Abb 3 3 sind diese Halter zu sehen Die verwendeten Halter weisen einen sehr Abbildung 3 3 Halterungen f r AA Zellen von Keystone niedrigen Kontaktwiderstand auf und bieten sicheren Halt der Akkuzellen Der Abstand der Halter SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 50 3 ENERGIEVERSORGUNG vom negativen er GND Akkuspannungspol sa Lae Spannungsabfall halften voneinander kann beim Platinendesign bestimmt werden wodurch sich der Anpressdruck der Kontaktfedern variieren lasst Im Falle der SandboxS 2 ist d
176. hrieben werden Weitere Informationen sind in Abschnitt 9 5 zu nden Da die SandboxS 2 kein Betriebssystem verwendet darf das Programm niemals zu Ende sein Das Verhalten bei Verlassen des Programms ist somit nicht de niert Die Funktion fprintf sollte bereits bekannt sein Sie entspringt der C Standard Bibliothek Eine AVR spezi sche Anpassung stellt jedoch die Funktion fdevopen dar sie soll die fopen Funktion am AVR ersetzen 2 4 3 Projekt bersetzen Um das Projekt zu bersetzen wird der Men punkt Build gt Build ausgew hlt Nun generiert das AVR Studio ein so genanntes Makefile und l sst es von dem Programm GNU Make das Teil des WinAVR Pakets ist ausf hren Dieses Programm ruft in richtiger Reihenfolge f r jede Datei den Kompiler auf Die Ausgabe kann man im Fenster Build am unteren Bildschirmrand sehen Ab bildung 2 13 Sind Fehler Errors aufgetreten werden diese mit einem roten Punkt in der Liste gekennzeichnet Zus tzlich wird die Anzahl der Fehler am Ende der Ausgabe angezeigt Das gleiche gilt f r Warnungen Warnings nur ist der Punkt diesmal gelb Nachfolgende Warnungen k nnen ignoriert werden delay h 89 3 warning warning Compiler optimizations disabled functions from lt util delay h gt won t work as designed Diese Warnung tritt nur auf wenn die Optimierung des Kompilers abgeschaltet ist Die Wartefunktio nen z B _delay_ms sind dadurch etwas ungenauer Die Warnung l sst sich
177. ht nun eine Verbindung mit der Sandbox aufzubauen Ist die Sandbox oder der JTAG ICE nicht angeschlos sen eingeschaltet erscheint eine Fehlermeldung Ist eine Verbindung vorhanden wird das Programm bertragen dies kann an dem Fortschrittsbalken in der Statusleiste erkannt werden Abbildung 2 17 e Debugger ist bereit Hat der Debugger das Programm erfolgreich bertragen ist er f r die Annahme weiterer Befehle be reit Der gelbe Zeiger am rechten Rand des Editors zeigt immer auf den als n chstes abzuarbeitenden Befehl Am Anfang steht er knapp unterhalb der main Funktion Abbildung 2 18 e Steuern des Debuggers Der Debugger besitzt Befehle die den Programmablauf beeinflussen k nnen Diese werden nachfol gend erkl rt Abbildung 2 19 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 36 2 ERSTE SCHRITTE Bre pen pu gem De pem gem pp du und SR Mere uw toas to Oe Ox B GT or 5 D Bre beer bed po yos Dem ads asa Trace Stop Run Break Reset Step Into Step Over Step Out Run to Cursor New Breakpoint Ee RAA DRAMA p Abbildung 2 19 Steuerbefehle des Debuggers Beendet die debugging Sitzung F hrt das aktuelle Programm aus Pausiert die Ausf hrung ab Setzt das Programm auf den Anfangszustand zur ck F hrt einen einzigen Befehl aus springt dabei in die Funktion F hrt einen einzigen Befeh
178. ice Abbildung 6 4 Hauptfenster von ispVM unmittelbar nach Start des Programmes For Help press F1 Als zweiter Schritt folgt der Anschluss des Programmierkabels and den die SandboxS 2 zehnpolige FPGA JTAG Anschlusswanne aus Abb 6 2 Dann Einschalten der SandboxS 2 Nun wird in ispVM der Men punkt ispTools Scan Chain ausgew hlt Die Software sucht nun im System dass ber das Downloadkabel angeschlossen ist nach Bausteinen die in der sogenannten Scan Chain miteinander und mit ispV M System verbunden sind Das Ergebnis dieses Vorgangs ist in Abb 6 5 zu sehen In der Scan Chain wurde ein Baustein des Typs LFXP3 aufgefunden Damit ist das FPGA auf der SandboxS 2 gemeint Ein Doppelklick auf die Zeile mit dem Device LEXP3C wie in Abbildung 6 6 zu sehen ffnet das Fenster links in Abb 6 7 In diesem Fenster wird der Bezug zur FPGA Kon gurationsdatei hergestellt Hierzu mit dem Button Browse beispielsweise die Dateihsserobchipv2 jed suchen Dann den Button OK klicken Es erscheint ein Infofenster Abb 6 7 rechts das quittiert wird Die Datei kann nun mit Project Download aus dem Men in das FPGA geladen werden Dort wird sie in einem Flash Speicher abgelegt und steht damit auch beim n chsten Einschalten der Span nungsversorgung im FPGA zur Verf gung W hrend des Download Vorgangs von 20 40 Sekunden Dauer erscheint das Fenster links in Abb 6 8 Der erfolgreiche Abschluss des Downloads ist am Sta tus
179. ie Abfrage des Gamepads erfolgt im gleichen Rhytmus in dem auch die Servopulsausgabe erfolgt also ca alle 20 ms Daher kann ein Interrupt f r das Gamepad erzeugt werden indem ein Servosequencer mit dem Wert NrOfDeltas 1 programmiert wird Dieser Sequencer l st dann alle 20 ms ein Interrupt Flag aus Sollen die Werte vom GamePad seltener einge lesen werden so kann NrOfDeltas entsprechend auf eine h here Zahl gesetzt werden 7 18 Globaler Timer Der Globale Timer z hlt beginnend mit dem Wert 0 die PWM Pulse die vom Servopulsgenerator erzeugt werden Unmittelbar nach dem Einschalten ist dessen Pulsl nge auf ca 20 ms eingestellt Je nach Einstellung der Register TuneFine und TuneCoarse laut Abschnitt 7 7 1 kann die Pulsl nge variieren 7 18 0 4 Register GlobalTimer Dieses Register enth lt eine vorzeichenlose 16 Bit Zahl Diese Zahl gibt an wie lange die Stromver sorgung des Robotics Chips bereits eingeschaltet ist Die Dauer errechnet sich aus dem Produkt der Zeitkonstanten welche durch die beiden Register TuneFine und TuneCoarse siehe Abschnitt 7 7 1 eingestellt wird nach dem Einschalten 20 ms mit der im Register angegebenen Zahl Bit 7 6 5 4 3 2 1 0 0x87FF unsigned 15 downto 8 0x87FE unsigned 7 downto 0 Tabelle 7 32 Register GobalTimer Der Initialisierungswert nach dem Einschalten ist 0x0000 Nur lesbar SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 19 VERSIONSNUMMER DES ROBOTICS CHIPS 123
180. ie f r die Strommessung n tige Verst rkung des ADC wird automatisch ermittelt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 4 SANDBOXS2_LIB 157 R ckgabewert R ckgabewert Beschreibung Data Aktuell flie ender Strom in mA Anmerkung e Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden e Das Ergebnis ist relativ ungenau und sollte nur als Richtwert dienen Beispiel Einschalten von LED 1 wenn der Strom bei einer Messung gr er als 1 1 1000 ist Die LED wird nicht wieder ausgeschaltet int main uintl6_t Current 0 function that has to b xecuted in every appli cation to initialize the interface with the FPGA SL2 Init while 1 Current SL2_GetCurrent if Current gt 1000 SL2 AvrSetMsgLed SL2 MSG LED 1 SL2_MSG_LED_STATUS_ON return 0 9 4 9 SL2_GetCurrentLowAmplification uintl6_t SL2 GetCurrentLowAmplification Beschreibung Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2 mit einer xen internen Ver st rkung von 10 und gibt diesen in mA zur ck Diese Verst rkung wird an den differentiellen ADC Eing ngen des AVR eingestellt R ckgabewert R ckgabewert Beschreibung Data Aktuell flie ender Strom in mA SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 158 9 SOFTWARE FUNKTIONSBIBLIOTHEK 4 7 7
181. iert bis zum Endpunkt 140 40 0 Wurde der Endpunkt erreicht und die Taste los gelassen bewegt sich der Fu punkt wieder geradlinig zum Startpunkt zur ck Die Werte der Datenstruktur gTable m ssen durch die zuletzt ermittelten Werte des Hexapods ersetzt werden Linearisierungs St tzstellen Offset Winkel Standard Drehrichtung SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 4 INVERSE KINEMATIK TEST 143 8 4 2 Quellcode ek ke sk ke ke ke ke ke ke oko e ok e ke e sk ke ok ce HH e ce HH HH e HH HH HH ce e o e sk e ok e s oe ok e e ce e oe e oe e e e e e e e e Workfile main c Author Michael Kreuzgruber Date 2 2007 08 29 Description main program Revision 3 e sk ke sk ke e oe e oe e oe e ck e ck ke sk e ck ke sk ke e oe e ob e ce e ck e ok e ck e sk e e ke ce e ce e ob e ck e ce SY e ok e sk e ke EN includes EEN include include include include include lt stdio h gt includ include include avr interrupt h util delay h SandboxS2 lib h RoboticsChip h InverseKinematics h uart usb lib h AI ALAA ATLA AAS ALAA LA AAAS AAA AAA global variables definitions JE AE EE gStrmUSB gStrmUART FILE FILE NULL NULL servo attribute table RC ServoAttributes
182. ieser Druck auf ein Maximum eingestellt Bitte verbiegen Sie die Kontaktfedern der Akkuhalter auf keinen Fall da deren Federeigenschaften zerst rt w rden Neben dem Anpressdruck der Kontaktfedern spielt deren Oberfl chenbeschaffenheit eine wichti ge Rolle Im Falle der Batteriehalter von Keystone kommt eine spezielle Oberfl chenveredelung der Rohbleche zum Einsatz Leider verschlechtert sich der Kontaktwiderstand sobald Verschmutzungen auftreten Besonders ung nstig sind Fingerabdr cke Bitte ber hren Sie also die Kontaktfl chen nicht Eine Reinigung sollte normalerweise nicht n tig sein Falls doch ziehen Sie bei montiertem Akku ein fach einen Papierstreifen zwischen den Kontaktfl chen der Akkuzelle und des Halters hindurch Die Akkuhalter besitzen keine Isolation und stellen daher ein gewisses Gefahrenpotential dar Die Platzierung der Halter verhindert Kurzschl sse durch Verbiegen Achten Sie aber stets darauf dass keine Metallteile auf der Platine liegen ohnehin keine gute Idee Ein St ck Draht etwa das auf die mit Akkuzellen best ckte Platine f llt verursacht wahrscheinlich einen Kurzschluss der Akkuzellen die kurzzeitig enorm hohe Str me gt 40 treiben k nnen Sowohl das Drahtst ck als auch die am Stromfluss beteiligten Teile der Platine vor allem aber die Akkumulatoren erhitzen sich dabei sehr stark Brand und Explosionsgefahr sind die Folge Die Platine wird in solchen F llen ebenfalls besch digt oder gar unbra
183. iger verl uft Das Symbol f r diesen Strahl gilt f r den gesamten Kalibriervorgang Im Beispiel in Abbildung 7 12 rechts hat der Zufall sich f r das Kreissymbol entschieden Der so eingestellte Wert ist der erste Wert f r die Linearisierungsta belle Phi2PwmTable 0 f Um die weiteren Werte f r die Linearisierungstabelle herauszu nden wird der Reihe nach auf alle Strahlen mit dem gew hlten Symbol eingestellt In Abb 7 13 ist auf den dritten Strahl mit dem Kreissymbol eingestellt Der so gefundene Wert von PwmLen ist der Tabelleneintrag f r Phi2PwmTable 2 Abbildung 7 13 Die PwmLen Abschnitt 7 5 3 1 wurde so eingestellt dass der Strahl mit dem Kreissymbol im dritten Strahlenfeld erreicht wird Der zugeh rige Index in die Ta belle hat den Wert 2 g Die Winkelrosette berstreicht einen Bereich von ann hernd 230 welchen ein typisches Mo dellbauservo nicht g nzlich ausnutzen kann Der mechanische Anschlag wird beim Hitec HS311 beispielsweise bei ca 205 erreicht Daher bleiben Tabelleneintr ge brig welche nicht mehr sinnvoll verwendbar sind Diese werden mit dem gleichen Wert gef llt der f r den letzten noch erreichbaren Strahl mit dem Symbol im Beispiel wieder dem Kreis gefunden wurde Ein Beispiel f r eine typische Zahlenreihe die auf diese Weise f r ein Servo des Typs HS311 ermittelt wurde 62 382 661 944 1225 1508 1787 2082 2384 2680 2924 3181 3424 3662 3898 3898 3898 Die Zahlen sind nach
184. ik hinaus auch f r die Bewegungssteuerung animier ter Objekte und die Maschinensteuerung Die Bewegung kann synchron zu Video und Audiodaten erfolgen wobei MIDI Daten per USB Schnittstelle bertragen werden k nnen Die SandboxS 2 ist ein offenes Projekt der Studieng nge Hardware Software Systems Engineering HSSE und Embedded Systems Design ESD an der FH O Hagenberg Die SandboxS 2 wird von der Firma technosert in Wartberg Aist gefertigt und nanziell unterst tzt 1 1 Merkmale e Software auf Basis des Mikrocontrollers Atmel AVR At90USB1286 7 Kostenloser OpenSource C Compiler WinAVR Kostenloser Simulator AvrStudio von Atmel Preisg nstiger Emulator AVR JTAG ICE Mk II Kostenloser USB Bootloader zur Flash und EEPROM Programmierung Umfangreiche Software Funktionsbibliothek e Robotik Peripherals des HSSE Robotik Chip V2 Implementiert in einem FPGA der Lattice XP Familie Umfangreiche Kontrollfunktionen f r bis zu 24 handels bliche Modellbauservos Parametrisierbare Linearisierung des Zusammenhangs von Soll und Istwinkel f r jedes einzelne Servo Programmierbare Servo Bewegungssequenzen Servogrundstellung und deaktivierung auf Tastendruck Speziell an die Erfordernisse der Robotik angepasste Timerfunktionen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 1 1 MERKMALE 13 Auswertung des Signals eines RC Empf ngers mit bis zu 12 Kan len 24 LEDs mit in 256 Stufen einstellbarer
185. ile Temp SUCCESSFUL printf accessing memory _card n save cluster OFFSET und cluster size fat cluster data store get cluster size and bytes per sector ClusterSize GetClusterSize BytesPerSec GetBytesPerSec print some more data on the screen printf reading cluster size d n ClusterSize printf reading bytes per sector uMn BytesPerSec printf testing_memory card _ save the current content of the file in RAM write into the file test txt on the SD card read the data back compare both and restore the file if fat search file test txt amp ClusterVar amp Size amp DirAttrib DataReadback SUCCESSFUL fat read file ClusterVar DataBackup 0 fat write file ClusterVar Data 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 216 9 SOFTWARE FUNKTIONSBIBLIOTHEK fat_read_file ClusterVar DataReadback 0 compare bytewise for Cnt 0 Cnt 512 if Data Cnt DataReadback Cnt SignalizeError fat_write_file ClusterVar DataBackup 0 printf OK n else printf FILE_NOT_FOUND while 1 return 0 9 11 Strukturen und benutzerdefinierte Typdeklarationen 9 11 1 Robotics Chip Servolinearisierung Statt De nitionen werden f r die Auswahl der Servo Modi sowie des Reverse Bits die folgenden Enumerationstypen verwendet typedef enum RC_SERVO_MODE_NO_ACTION RC_SERVO
186. im PhiSpeed Modus Der Modus ist in Abschnitt 7 7 auf Seite 102 erkl rt Parameter Bedeutung ServoNumber Nummer des Servos das bewegt werden soll Die Nummerierung der Ser vos ist in Abb 7 1 auf Seite 81 ersichtlich InitialAngle Startwinkel der Bewegung DeltaPhi Winkel um welchen das Servo innerhalb von 20 ms bewegt wird NumberOfDeltas Anzahl der Winkelinkremente SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 179 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Um RC_SetServoPhiSpeed verwenden zu k nnen muss das angegebene Servo zuvor in den Modus SERVO MODE PHI DIRECT geschalten werden e Der Wert von DeltaPhi wird im RoboticsChip als bin re Dezimalzahl mit 4 Nachkommastellen interpretiert Wenn eine ganze Zahl angegeben werden soll muss diese mit 16 multipliziert werden Schiebeoperation um 4 Bits nach links e Die Summe von InitialAngle DeltaPhi NumberOfDeltas muss im Bereich 0 4095 liegen e Bevor diese Funktion verwendet werden kann m ssen 51 2 Init und RC Init aufge rufen werden Beispiel Das Servo von der Position aus auf die Mittelposition stellen int main proxy function for whole initialization Init clear all LEDs RC_SetLedClearAll move servo 0 RC_SetServoMode 0 RC_SERVO_MODE_PHI_DIRECT RC SetServoPhiSpeed 0 0 16 4 128
187. inAvr 62 5 On Chip Peripherie des Atmel AVR AT90USB1286 7 64 5 1 USB Function Controller sooo RR 64 CNET 65 5 3 Stromaufnahme und Akkuspannung 69 Suhl uo uu mask ee XA Xx wok Rog e eo be a 69 5 32 SpannungsmessuDgEg sous ommo ge gem o m Rob Po wo woe ade 70 SA oe bee a ee abe dee Ed ke 70 25 SUMELED s s w edna anne de dea od 70 50 BrwelerunsssteckBE 71 5 7 Anschluss eines 5323 72 6 FPGA Lattice XP LFXP3K 74 hd 22222222222 ee 74 n oe tp headed ba cde Bed eee d de EEE EE RO SE 74 6 2 1 Hardware Bootloader Aufruf des AVRs 74 6 53 PPGA Kon guration 2 2 un a w anne nn 75 6 3 1 Update der FPGA Kon 75 7 Robotik Peripherie HSSE Robotics Chip 81 7 Peripheriekomponenten aus Sicht des Mikrocontrollers 82 7 1 1 Zugriff auf 16 Bit Register lel 83 MENPE cuu La k a h ukun a ba ew Ron oS Q a dew 83 721 Intermpt Plag Resister Ee eR SE m nennen 85 na Re Da a 87 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 INHALTSVERZEICHNIS 7 Za ENEE o os o ok yos EO 92 7 5 ServopulsgenerStOt 2 2 22 2 2 4 92 DUMP C CPU T
188. ind f nf handels bliche Akkuzellen der Gr e AA welche direkt in sta bile Halter auf der Platinenoberseite eingelegt werden Da die Akkuzellen zum Entladen beseitigt Memory Effekt auch verkehrt eingelegt werden k nnen ist ein Verpolungsschutz vorgesehen Auch ein Ein Ausschalter ist vorhanden wobei alternativ durch Einstecken einer SD Karte eingeschaltet werden kann Auf Grund der hohen Maximalstr me der Servos im Bereich von 10 A wird ein Leis tungstransistor zum Schalten der Versorgungsspannung eingesetzt W hrend die Servos unmittelbar von den Akkuzellen versorgt werden ist f r die Elektronikkompo nenten eine 3 3 V Versorgungsspannung erforderlich Diese stellt ein Linearregler aus der Akkuspan nung zur Verf gung SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 3 1 AKKUZELLEN 49 3 1 Akkuzellen Als netzunabh ngige Energiequelle der SandboxS 2 dienen f nf NiMh oder NiCd Zellen der Gr e AA Besonders empfehlenswert ist die Verwendung von NiMh Zellen der neuesten Generation die eine Kapazit t von ber 2000 mAh und eine ausreichende Hochstromfestigkeit aufweisen Trockenbatterien mit 1 5 V Nennspannung z B Alkali Mangan eignen sich nicht zum Betrieb der SandboxS 2 Dies liegt zum einen in der zu hohen Leerlaufspannung solcher Zellen und zum anderen an deren hohem Innenwiderstand 3 2 Ladeger t Zum Aufladen der Akkuzellen werden diese aus den Haltern herausgenommen und in einem handels blichen Sc
189. insbesondere der HTBLAs und AHS mit technischer Orientierung mit dem Studiengang zu f rdern lag nahe Dies war die Geburtsstunde der sterreichischen Hexapod Meisterschaften die mittlerweile allj hrlich im April in Hagenberg ausgetragen werden und sich in der Robotikszene einen festen Platz erobert haben SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX Das vorliegende Handbuch beschreibt die Weiterentwicklung der Steuerungselektronik SandboxS die SandboxS 2 Der urspr nglich verwendete Mikrocontroller wurde durch einen Typen ersetzt der eine eingebaute USB Schnittstelle aufweist und das FPGA stammt nun vom Hersteller Lattice und besitzt einen Kon gurationsspeicher auf Flash Basis Der Betrieb erfolgt in dieser Version aus um weltfreundlichen NiMh Akkus die einfach in Akkuhalter auf der Platine eingesetzt werden k nnen Kern der SandboxS 2 ist nach wie vor der HSSE Robotics Chip der gegen ber der urspr nglichen Version einen enorm erweiterten Funktionsumfang anbietet und in der neuesten Version sogar einen CORDIC Koprozessor zur schnellen Berechnung der inversen Kinematik und der f r die Robotik typischen Koordinatentransformationen Givens Rotation enth lt In der Software wird der Zugang zu dieser Vielzahl an komplexen Funktionen durch eine Funktionsbibliothek f r die Programmierung des AVR Mikrocontrollers in C mittlerweile ebenfalls sehr erleichtert Auch auf der mechanischen Seite konnten wir mit dem neuen Roboterentwurf
190. intl6_t Phil intl6_t Phi2 IK HexapodLegAngles typedef struct IK InverseKinematicsReturn IK HexapodLegAngles Angles uint8 t Calculation IK InverseKinematicsReturn SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 219 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX E A SCHALTPLAN A Schaltplan D Dod 4 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 UU UU UT W c SBXS2MANUAL TEX 222 SCHALTPLAN SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 223 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 224 Platinenlayout B 1 Platinenfoto ohne Best ckungsdruck SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 PLATINENFOTO OHNE BEST CKUNGSDRUCK 225 B 2 Platinenfoto ohne Best ckungsdruck w wa art TI0OM e TUI Es HSSE on vn ep erg E vm vm e AAA oii Sgr CFE ert 41 SSS Gs CSS Sts Ere LS DO ERR
191. isierungsm glichkeiten sierungswert nach dem Einschalten der SandboxS 2 Die meisten Servos werden in diesem Fall den Motor stromlos schalten Ist das Bit mit dem Wert 1 beschrieben wird zyklisch ein Impuls ausgegeben Nach dem Einschalten der SandboxS 2 sollten die Servos der Reihe nach aktiviert werden Bit 0 Active auf 1 setzen wobei nach dem Aktivieren eines Servos lange genug gewartet ca 0 3 0 5 s werden sollte damit sich das Servo auf den gew nschten Winkel einstellen kann Erst wenn dies der Fall ist sollte das n chste Servo aktiviert werden Diese Vorgehensweise schont die Robotermechanik vermeidet einen schockartig einsetzenden enorm hohen Strom beim Einschalten und schaut au erdem auch erheblich eleganter aus 7 5 3 Drehrichtungsumkehr Servos k nnen bei zunehmender PWM Impulsl nge entweder im Uhrzeigersinn oder in Gegenrich tung ausschlagen Mit diesem Parameter kann ausgew hlt werden ob die vom Anwender eingegebene oder von der Tabellenfunktion errechnete PWM Impulsl nge verwendet wird oder ob stattdessen ei ne invertierte Impulsl nge berechnet und eingesetzt wird Die Berechnung der Impulsl nge erfolgt indem die urspr ngliche Impulsl nge vom Maximum 4095 subtrahiert wird Die Drehrichtungsumkehr wirkt immer auf den die L nge des PWM Pulses welches das Servo steuert Wird die Steuerung im Modus PhiSpeed oder im Pseudomodus PhiDirect ber Winkelwerte vorgenommen so kann mit der Drehrichtungsumkehr nich
192. ist sicher die so genannte Taylor Reihe Eine Taylor Reihe ist f r die Umsetzung in Software oder Hardware zwar geeignet erfordert aber einen recht hohen Berech nungsaufwand da einige Divisionen auszuf hren sind In der Praxis der Computerarithmetik konnte dieses Verfahren nie Fuf fassen denn es gibt seit den 50er Jahren des 20 Jahrhunderts einen wesent lich ef zienteren Konkurrenten den CORDIC Algorithmus VOLDER 1959 WALTHER 1971 Der CORDIC Algorithmus f hrt die Berechnung vielf ltiger elementarer Funktionen auf Berech nungen zur ck die in Hardware sehr ef zient ausf hrbar sind Schiebeoperationen Additionen und das Nachschlagen einiger Tabellenwerte CORDIC Auftragsbearbeitung Der HSSE Robotics Chip muss aus Platzgr nden mit einer einzigen CORDIC Recheneinheit aus kommen Damit diese ber einen m glichst langen Zeitraum hinweg unabh ngig vom AVR Mikrocontroller ihre Berechnungen ausf hren kann ist ein Auftragssystem implementiert Dieses kann mit mehreren Berechnungen beauftragt werden und unterbricht den Mikrocontroller erst nach Bearbeitung des kompletten Auftrags mittels eines Interrupt Requests Alternativ kann der Mikrocon troller auch Teilergebnisse erfragen und bereits nach deren Fertigstellung den entsprechenden Teil eines neuen Auftrags notieren Eine Berechnung des CORDIC Prozessors besitzt drei Eingabewerte x y und z sowie zwei Para meter welche die Rechenvorschrift trigonometrisch linear hyperbolis
193. l aus Alle Befehle bis zum Verlassen der Funktion werden abgearbeitet F hrt alle Befehle bis zur Position des Cursors aus F gt einen Haltepunkt ein SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 37 2 4 5 Programm testen Nachdem das Programm erfolgreich bersetzt und bertragen wurde kann mit dem Testen begonnen werden Die Ausgabe der LEDs kann einfach durch Zuhilfenahme des eigenen Auges berpr ft wer den Um den Begr ungstext anzuzeigen wird das HTerm Programm verwendet Es be ndet sich auf der beigelegten CD im Ordner HTerm Zuerst wird der SandboxS 2 Port ermittelt dies ist die An schlussnummer der virtuellen seriellen Schnittstelle ber die kommuniziert wird Dazu ffnet man den Ger te Manager Start gt Ausfiihren devmgmt msc und sucht nach dem SandboxS2 serial emulation Anschluss Abbildung 2 20 Nun kann das Terminalprogramm gestartet und die Verbindung aufgebaut werden Hierzu wird unter Port die ermittelte Anschlussnummer ausgew hlt und anschlie end Connect ausgef hrt Zuvor muss die Sandbox nat rlich eingeschaltet und vom Betriebssystem erkannt werden Nach einem kurzen Druck der Taste Key AvrO sollte der Begr ungstext auf dem Bildschirm erschei nen Abbildung 2 21 X Device Manager Fle Acton View Help a Abbildung 2 20 Ger te Manager mit SandboxS2 serial emulation Anschlussnu
194. l unterschiedlichen Positionen der Z hne im Innenzahn kranz der Servoscheibe und deren Befestigungsl cher an die das Spinnenbein montiert wird entsteht ein Differenzwinkel Dieser Fehler kann durch versetztes Aufsetzen der Servoscheibe reduziert wer den diese Reduktion ist allerdings f r Bewegungsabl ufe nicht genau genug durch die Verzahnung ergibt sich ein maximaler Differenzwinkel von ca 7 Diese Differenzwinkel werden mit Hilfe der Mechanik des Hexapods bestimmt Sie m ssen im Programm abgespeichert werden Dadurch kann eine Kompensierung w hrend der Programmlaufzeit erfolgen Die Nichtlinearit t der Servowinkel muss jedoch bereits ber cksichtigt werden Dazu werden die im Kapitels 2 ermittelten Werte in die Datenstruktur gTable eingetragen Die Datenstruktur besteht aus 24 Datens tzen je Zeile einer f r jedes Servo einen Datensatz Jeder Datensatz besteht aus 17 St tzstellen zur Linearisierung einem Offset Winkel der nun ermittelt wird und der Standard Drehrichtung Der erste Datensatz wird dem Servoanschlu SERVOO zugeordnet der zweite dem SERVOI bis SERVO23 8 3 1 Spezifikation Mittels dem Programm CalibrateHexapod werden die einzelnen Beinelemente in einen Randbereich des Arbeitsraums bewegt dessen idealer Winkel bekannt ist dieser Winkel wird dann vom tats chli chen Winkel subtrahiert und es ergibt sich der Differenzwinkel PhiOffset Nach dem Einschalten wird MSG_LED_0 eingeschaltet und es kann ber die USB Sch
195. leg 3 to 140 40 0 SL2_AvrWaitOnKey SL2 KEY 0 512 for i 40 i gt 40 i x EY_NOT_PRESSED IK_SetLegMovementCoxa 3 140 i 0 IK_KNEE_UP delay ms 20 return 0 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 146 9 Software Funktionsbibliothek In diesem Kapitel wird die Software Bibliothek der SandboxS 2 beschrieben mit welcher es m glich ist alle Hardware Einheiten der Platine mit geringem zus tzlichen Aufwand zu verwenden 9 1 bersicht der Schnittstellen Die Software Funktionsbibliothek umfasst folgende Funktionen Tasten und Leuchtdioden des AVR Erm glicht einfachen Zugriff auf die Tasten und Leuchtdioden des AVR Auslesen und Beschreiben zus tzlicher Pins des AVR ber diese Funktionen k nnen Daten an eine zus tzliche Hardware bermittelt werden Strom und Spannungsmessung Bietet die M glichkeit den aktuellen Stromverbrauch zu messen bzw zu beurteilen ob die Akkus neu geladen werden sollten PC Schnittstellen USB und UART ber diese Schnittstellen ist es m glich Daten mit einem PC auszutauschen RoboticsChip Die Funktionen dieser Gruppe erm glichen Zugriff auf die Servos die Servo LEDs die PS 2 Schnittstelle das Sony Playstation2 Gamepad den Summer die Fernsteuerung und den CORDIC Prozessor Inverse Kinematik Berechnung der inversen Kinematik eines Spinnenbeins SD Karte Mit diesen Funktionen k nnen Daten
196. linearer Interpolation die passende Pulsl nge die im Register Current Pwm abgelegt wird und aus diesem auch ausgelesen werden kann Der Wert von CurrentPhi kann vom Mikrocontroller nur ausgelesen werden Einstellen l sst sich der gew nschte Winkel ber den Parameter PhiStart wenn der Modus PhiSpeed im Register Mode IrqMask ausgew hlt wurde Ist der Parameter NrOfDeltas auf den Wert gesetzt wird CurrentPhi direkt aus PhiStart bernommen Auf Wunsch kann der in Abschnitt 7 7 beschriebene Servo Sequencer den Wert von CurrentPhi auch zum Erzielen einer gleichm ig fortlaufenden Servobewegung automatisch nachf hren SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 6 SERVOLINEARISIERUNG UND KALIBRIERUNG 97 Pulsl nge 4095 2 523 ms 4 I I S S i H i H i E on H H eod U 81 2 gt gt 3584 2 268 AES fait S 1 S 11 6 S d o MEE t ei od Qel EIS cg sS 3072 2 012 ms 21 t fey Ri z S m S gs i ell RIL e s EI zs CAS ej ri z Nr 2560 1 756 ms wl sj glas SNIE i _ 9S dm BSI EIN 7 ole clie _ a a sI t 2 gt Pul t 2 E n E amp 2048 1 500 ulsgenerator e s ss S EE B DREE ES d zc 21 1536 1 244 ES
197. llen best ckt werden Abbildung 2 4 Um eine reibungslose Treiberinstallation zu gew hrleisten m ssen alle Aktionen wie in Abbildungen 2 5 2 6 ausgef hrt werden Abbildung 2 4 SandboxS2 mit best ckten Akkuzellen Die SandboxS 2 wird mit einer Firmware die die USB Unterst tzung des Mikrocontrollers aktiviert ausgeliefert Wird sie trotz mehrere Versuche nicht erkannt K nnte es an einer fehlenden fehlerhaften A Firmware liegen Sollte dies der Fall sein kann die Installation erst nach dem Erstellen des ersten Beispielprogramms fortgesetzt werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 22 2 ERSTE SCHRITTE Found New Hardware Wizard Found New Hardware Wizard Welcome to Ihe Found New Hardware Wizard Wesdows wil vasrch for conet ai updated software by lockang on your computer on the hares installation CO er on the Wexsowes Update Viet ith your Bend aroni Thee wini helps you ratal for USE Geen your hardware come with an installation CD Can Windows connect to Windows Update t search for or floppy disk insert 4 now actua Yes tha tme orty Yes now and every tme connect a device 9 No net the tme What do you wort the wiraed to do ratal the software automatically Fecommersied 9 Ita trom a pectic location Advanced BS CJ Found New Hardware Wiza
198. m in der Funktion Init in der Datei main c zusammengefasst do all the initialization stuff here void Init void initialize the RoboticsChip RC Init initialize sandboxS2 512 Init initialize inverse kinematics IK Init initialize usb uart usb init initialize uart uart init CALC BAUDRATE 38400 elear all LEDS RC_SetLedClearAll activate stream I O gStrmUSB fdevopen strm_usb_putc strm_usb_getc gStrmUART fdevopen strm_uart_putc strm_uart_getc enable interrupts sei Die Reihenfolge der Aufrufe muss nicht beachtet werden Eine mehrmalige Initialisierung ist jedoch zu Vermeiden Die Initialisierungen sollten Grunds tzlich immer am Beginn des Programms erfolgen Im weiteren Verlauf dieses Abschnitts sind alle n tigen Initialisierungsfunktionen f r jede Funktion der Software Funktionsbibliothek angegeben in den Beispielen sind die Aufrufe dieser Funktionen durch den Aufruf der Funktion Init implementiert 9 4 SandboxS2_lib SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 4 SANDBOXS2_LIB 151 9 4 1 SL2 Init void SL2 Init Beschreibung Initialisiert die SandboxS 2 AVR Komponenten R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Muss vor allen anderen Funktionen des Moduls aufgerufen werden 9 4 2 SL2 AvrSetMsgLed void 512 AvrSetMsgLed in uint8_ in uinte8 1 Number Status c
199. mmer Kann mit der Eingabe von devmgmt msc in den Ausf hren Dialog Start gt Ausfiihren aufgerufen werden Abbildung 2 21 Terminal Programm HTerm Alle Einstellungen bis auf die Anschlussnummer sind zu ignorieren Da des sich um eine virtuelle serielle Schnittstelle handelt maximale Geschwindigkeit und Flusskontrolle wird durch das USB Protokoll vorgegeben SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 38 2 ERSTE SCHRITTE 2 4 6 Zusammenfassung In diesem Beispiel wurde die grundlegende Arbeitsweise mit der Hexapod Bibliothek gezeigt Auch die Verwendung von Datenstr me Streams wurde beschrieben Alle Befehle der Hexapod Bibliothek sind in Kapitel 9 aufgelistet Die restlichen Funktionen sind Bestandteil der C Standard Bibliothek und werden im avr libc Manual das im WinAVR Paket enthalten ist beschrieben 2 4 7 Aufgaben Diese Aufgaben sollten erf llt werden bevor mit dem n chsten Beispiel fortgefahren wird a ndern Sie den Begr ungstext auf ihren Namen im Format Vorname Nachname b Der Text soll erst nach dem Loslassen der Taste ausgegeben werden c Lassen Sie den Text mit Hilfe einer Schleife nach jedem Tastendruck ausgeben 2 5 Laufende Lichter Mit diesem Beispiel soll erstmals der Robotics Chip verwendet werden Die Funktionen des Moduls RoboticsChip erm glichen ein einfaches Arbeiten Bevor dieses Beispiel begonnen wird sollte das letzte bereits erfolgreich abgeschlossen sein
200. n fro Abbildung 7 21 Anbindung der PS 2 Buchse an das FPGA Das Eintreffen eines vollst ndigen Satzes neuer Werte von der Maus wird mittels des Interrupt Flags IFPs2 im Interrupt Flag Register IrqFlagsOthers Abschnitt 7 2 1 4 angezeigt Dieses Interupt Flag l st einen Interrupt auf Leitung INTO aus wenn das Interrupt Mask Bit ImRc im Register IrqMas kRcRxCtrl Abschnitt 7 13 1 1 gesetzt ist Wert 1 Da die Werte f r XDelta und YDelta den Unterschied zur Position der Maus bei der vorigen Mes sung angeben ist es wichtig alle Wertemeldungen von der Maus sicher zu empfangen Neue Werte treffen etwa alle 10 ms ein 7 14 0 4 Register Ps2X Dieses Register gibt Auskunft ber den Weg den die Maus seit ihrer letzten Ausgabe in X Richtung zur ckgelegt hat Bit JU 6 5 4 3 2 1 0 0x87F3 XOVL XDel 8 0x87F2 XDelta signed 7 downto 0 Tabelle 7 23 Register Ps2X Nur lesbar Bit 9 XOVL Ist dieses Bit gesetzt 1 so wurde die Maus in X Richtung zu schnell und weit be wegt so dass der Weg in X Richtung nicht mehr in einer 9 Bit breiten Zahl darstellbar ist Bits 8 bis 0 XDelta Diese 9 Bit breite vorzeichenbehaftete Zahl im Zweierkomplementformat gibt den seit der letzten Mausbewegung zur ckgelegten Weg in X Richtung an Das Vorzeichen gibt die Orientierung der Mausbewegung an SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 114 7 ROBOTIK PERIPHERIE HSSE ROBOTIC
201. n m ssen SL2_Init RC_Init und RC_Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein Beispiel Berechnet die Winkel f r Punkt 159 0 0 im Beinkoordinatensystem und f hrt diesen mit allen drei Servos an int main void uint8_t i 0 IK_InverseKinematicsReturn Data initialize all modules Init copy the linearisation table into the RoboticsChip RC_SetGlobalServoAttributesTable_P gTable activate all servos for i 0 i lt RC_NUMBER_OF_SERVOS i RC_SetServoPhiDirect i 1609 RC SetGlobalServoMode RC SERVO MODE PHI DIRECT enable cordic interrupt RC SetInterruptO INTTERRUPT MASK CORDIC calculate the angles needed to reach the desired point Data IK CalculateInverseKinematicsCoxa 159 0 0 IK KNEE UP return in case the point cannot be reached if Data Calculation IK SUCCESSFUL normalize the calculated angles to the data format of the RoboticsChip and add the value for the reference angle Data Angles Phi0 uinti16 t int32 t Data Angles Phi0 gt gt 3 IK PHI 0 COOR SYS OFFSET Data Angles Phil uinti16 t int32 t Data Angles Phil gt gt 3 IK PHI 1 COOR SYS OFFSET Data Angles Phi2 uinti16 t int32 t Data Angles Phi2 gt gt 3 IK PHI 2 COOR SYS OFFSET the mechanics do not allow following angles if
202. n Dialog mit dem Titel Welcome to AVR Studio 4 ange zeigt werden Ist dieser Dialog nicht zu sehen kann er ber den Men befehl New Project gt Project Wizard aufgerufen werden Ein Klick auf die Schaltfl che New Project wechselt auf die n chste Seite des Assistenten e Projektbezeichnung und Pfad Unter Project type ist AVR GCC auszuw hlen Der Pfad f r das neue Projekt ist ebenfalls zu setzen Weiters sollte dem Projekt ein sprechender Projektname verliehen werden Durch einen Klick auf die Schaltfl che Next gt werden die Eingaben bernommen und der Assistent wechselt auf die SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 25 f pupa Pm Yew Imm Queq W 9 Jis g uA41 an Trees ma Abbildung 2 7 Projekt Assistent Eingabe des Projektnamens n chste Seite Abbildung 2 7 e Debugger und Mikrocontroller f pai DAC Imm Queq gehe an AR ERAT ran Trees Dati ma Abbildung 2 8 Projekt Assistent Einstellen der verwendeten Hardware Auf dieser Seite werden nun der verwendete Debugger und der Mikrocontroller eingestellt Ver wendet wird das JTAG ICE Mk II und der AT90USB1287 Mikrocontroller Durch einen Klick auf die Schaltfl che Finish wird der Assistent beendet Abbildung 2 8 e Hexapod Softwarebibliothek Die Projektdateien wurden nun auf der
203. nd noch unbekannte USB Ger t Die inf Datei die Windows f r die auto matische Treiberinstallation ben tigt wird nicht automatisch vom Wizard gefunden Die se Datei be ndet sich im Installationsverzeichnis von Flip also beispielsweise unter C Programme Atmel FLIP 3 1 0 usb Dieses Verzeichnis muss dem Hardware Wizard manuell bekannt gegeben werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 60 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7 f Im Ger te Manager Device Manager ndet sich nun ein Ger t namens Jungo AT90USB 128 Dies sollte man kontrollieren Abbildung 4 6 Anschluss des USB Kabels an der Sand boxS 2 Das andere Ende des Kabels wird an den PC angeschlossen Verwendung des Bootloaders Der Bootloader im AVR wir aktiviert indem der Reset Taster auf der SandboxS 2 gemeinsam mit dem Taster KeyFpgaO schon vor Einschalten gedr ckt und beim Einschalten in dieser Stellung ge halten wird Nach dem Einschalten wird zuerst der Reset Taster und danach der Taster KeyFpga0 losgelassen Hierdurch wird das Bootloadprogramm aufgerufen Es arbeitet nach dem immer gleichen Ablauf Es wartet auf einen Befehl seitens des PCs z B vom Proramm Flip um ihn unmittelbar nach Ankunft auszuf hren Anschlie end wird erneut auf einen Befehl gewartet Fr Atmel Flip gt Eile Buffer Device Settings 2 d Z ta Operations Flow
204. ng in welche sich der Hebelarm bei gr er werdender Impulsl nge bewegt ist jedoch nicht ge normt Selbst bei unterschiedlichen Servotypen des gleichen Hersteller kann die Drehrichtung einmal wie im Bild und das andere Mal umgekehrt eingestellt sein Der HSSE Robotics Chip beseitigt die ses Problem durch eine eingebaute Drehrichtungsumkehr die mittels Umrechnung der Impulsdauer durchgef hrt wird Der Impuls muss regelm ig wiederholt werden was in der Praxis im Zyklus von 16 bis 30 ms ge schieht Wenn allzu lange kein Impuls beim Servo ankommt entspannt das Servo sozusagen d h der SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 3 SERVOSTEUERUNG 89 Motor des Servos wird g nzlich abgeschaltet Da kein Winkel gew nscht wird ist nun jeder Winkel m glich und durch Verdrehen des Servohebels von au en auch tats chlich einstellbar Allerdings soll te man der Versuchung am Hebel zu drehen mit R cksicht auf das Getriebespiel des Servos besser widerstehen Der HSSE Robotics Chip bietet die M glichkeit die Impulserzeugung f r jedes Servo zu unterdr cken Hierdurch kann der Energieverbrauch eines Roboters unter Umst nden erheblich reduziert werden Nach dem Einschalten der Energieversorgung der SandboxS 2 sind alle Servoim pulse deaktiviert damit die Akkuzellen durch den pl tzlich einsetzenden Energiebedarf s mtlicher Servomotoren nicht berlastet werden Sinnvollerweise wird die Impulserzeugung der einzelnen Ser vo
205. ngang oder als Ausgang verwendet werden soll Wird der Parameter auf 51 2 EXT PIN OUTPUT gesetzt so wird der Pin als Aus gang verwendet bei SL2 EXT PIN INPUT sowie jedem anderen Wert als Eingang R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Siehe Beispiele von 9 4 6 und 9 4 7 ab Seite 155 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 4 SANDBOXS2_LIB 155 9 4 6 SL2_ExtAvrGetPinValue uint8 t SL2_ExtAvrGetPinValue Beschreibung Liest den aktuellen Zustand von Pin D6 ein R ckgabewert R ckgabewert Beschreibung SL2 EXT PIN OFF An Pin D6 liegt eine logische 0 OV an SL2 EXT PIN ON An Pin D6 liegt eine logische 1 3 3V an Anmerkung e Um diese Funktion verwenden zu k nnen muss der Pin mittels 512 ExtAvrSetPinMode als Eingang de niert werden e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden Beispiel Von Pin D6 lesen und den Wert an LED 1 anzeigen int main uint8 t Data 0 function that has to b xecuted in every appli cation to initialize the interface with the FPGA SL2 Init SL2 ExtAvrSetPinMode SL2 EXT PIN INPUT while 1 Data SL2 ExtAvrGetPinValue SL2 AvrSetMsgLed SL2 MSG LED 1 Data return 0 9 4 7 SL2 ExtAvrSetPinValue void
206. nittstelle der Sandbox eine Verbindung mit dem PC hergestellt werden Bei einem Tastendruck von AVR KEY 0 wird eine Willkommensnachricht sowie eine kurze Anleitung f r das Programm ber USB ausgege ben So kann der Winkel ber AVR KEY 0 erh ht werden ber AVR KEY 1 vermindert werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 136 8 INVERSE KINEMATIK bzw durch das Dr cken beider Tasten zum n chsten Servo gewechselt werden Welches Servo gera de aktiv ist wird ber eine leuchtende LED neben dem Servostecker angezeigt Wird eine der Tasten l nger gedr ckt so erh ht sich die Geschwindigkeit des Servos Der aktuelle Winkelwert wird nach jedem Tastendruck ausgegeben 8 3 2 Messung Zur Messung der einzelnen Werte m ssen folgende Servopositionen angefahren und die Winkelwerte aufgezeichnet werden e Coxa H ftservo Um die Mittelposition genau bestimmten zu k nnen werden alle Beine zu n chst v llig ausgestreckt Danach werden mit Hilfe eines Lineals alle Servos so eingestellt dass sowohl die Schraube des Coxa Servos und der Fu punkt beider gegen berliegender Beine auf einer Linie liegen Abbildung 8 3 e Femur Oberschenkelservo So weit nach oben drehen bis sich ein Streifen Papier gerade nicht mehr zwischen Coxa und Femur schieben l sst Abbildung 8 4 e Tibia Unterschenkelservo So weit nach unten drehen bis sich ein Streifen Papier gerade nicht mehr zwischen Femur und Tibia schieben l sst
207. nn er aber auch irreparabel besch digt werden Keinesfalls d rfen die Einstellungen in den Registerkarten Fuses oder LockBits willk rlich ver ndert werden Die erste Registerkarte beinhaltet alle Funk tionen die zur bertragung ben tigt werden SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 33 e Auswahl des Programmierger tes B pm ye iem De mh m Ieee eo HUET de M MM P hat Ce Tew Tata en Det mmm gt iy LI 4 st ETT 178445353 Abbildung 2 15 Auswahl des Programmierger tes Im Menu wird der Punkt Tools gt Program AVR Connect ausgew hlt Ein Dialog erscheint in dem man das verwendete Programmierger t ausw hlen kann Hier wird JTAG ICE Mk II und USB ausgew hlt Abbildung 2 15 e bertragung des Programms been demo pm lem Deep mh m asr amp eSG rv 229 2 Den Abbildung 2 16 bertragung des bersetzen Programms auf den Mikrocontroller Ist ein Ger t an dem gew hlten Anschluss vorhanden wird ein neuer Dialog angezeigt In die sem wird der Mikrocontroller auf 9005 1287 gestellt und der Modus auf JTAG mode Nun kann man die z
208. ns 0x84CO 2ng Ox84FF 32 DeltaPhi Servo ng 0x8500 2ng Ox853F 32 NrOfDeltas Servo ne 0x8540 2ng 0x857F 32 LedBrightness LED nz 0x8580 Ox85F1 57 reserviert Ox85F2 Ox85F3 intern 0x85F4 Ox85F5 1 IrqMaskRcRxCtrl Ox85F6 0x85F7 1 TuneFine Ox85F8 0x85F9 1 TuneCoarse Ox85FA Ox85FB 1 BuzzPhaseDurationLow Ox85FC 0 85 1 BuzzPhaseDurationHigh Ox85FE Ox85FF 1 BuzzCtil 16 Bit Register kann nur lesen 0x8600 2ns 0x863F 32 DeltasToGo Servo ng 0x8640 2ns 0x867F 32 Current DeltaPhi Servo ng 0x8680 2ns Ox86BF 32 Current Phi Servo ng 0x86C0 2ns Ox86FF 32 Current PWM Servo ng 0x8700 Ox87BD 95 reserviert SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 23 ADRESSRAUM IM BERBLICK 131 Adr AVR Ende Words Beschreibung Ox87BE 0x87BF 1 intern 0x87C0 0x87C1 1 intern 0x87C2 0x87C3 1 SonyPs2GamePadButtons 0x87C4 0x87C5 1 SonyPs2GamePadJoyR 0x87C6 0x87C7 1 SonyPs2GamePadJoyL 0x87C8 0x87D7 8 reserviert 0x87D8 0x87D9 1 ReRxChannel 1 0x87DA 0x87DB 1 ReRxChannel 2 0x87DC 0x87DD 1 ReRxChannel 3 0x87DE 0x87DF 1 ReRxChannel 4 0 87 0 0x87E1 1 ReRxChannel 5 Ox87E2 0x87E3 1 ReRxChannel 6 Ox87E4 Ox87E5 1 ReRxChannel 7 Ox87
209. ntf gStrmUSB Hello World Nn fprintf gStrmUART Hello World Nn read character fgetc gStrmUSB write character SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 162 9 SOFTWARE FUNKTIONSBIBLIOTHEK fputc gStrmUSB read integer fscanf gStrmUSB d 8 amp i read string fscanf gStrmUSB s amp str print integer as hex value and string fprintf gStrmUSB x_ s i str for full list of functions see avr libc manual section Standard IO facilities never return loop forever for return 0 9 6 UART Diese Implementierung verwendet einen Pufferspeicher um Sende und Empfangsdaten zwischen zuspeichern Bei jedem empfangenen Zeichen wird ein Interrupt ausgel st und dieses in den Puffer kopiert Dort kann es dann vom Hauptprogramm abgeholt werden Das Senden eines Zeichens er folgt ebenfalls ber einen Puffer Dabei wird ein Interrupt ausgel st wenn der UART frei ist und ein Zeichen vom Puffer in das Senderegister kopiert Es kann auch eine Hardware Flusskontrol le eingestellt werden Standardm ig werden zwei Pins am Erweiterungsstecker des AVR ben tzt die jedoch bereits von der SandboxS2 lib verwendet werden Daher m ssen diese zuerst deaktiviert werden siehe folgende Makros SL2_NO_ADC SL2_NO_EXT_PIN UART_FLOW_USE_RTS UART_FLOW_USE_CTS 9 6 1 uart_init void uart init in uintl6_t baudRate Beschreibung Initialisier
210. nzahl der Bytes pro Sektor BlockCount Zu lesender Teil der Datei Da eine Datei g sser sein kann als ein einziger Clus ter muss angegeben werden aus dem welchem Cluster der Datei gelesen werden soll R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Die SD Karte muss eingelegt und initialisiert sein e Bevor diese Funktion verwendet werden kann muss 5 2 Init aufgerufen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 214 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beispiel siehe Beispiel in Abschnitt 9 10 7 auf Seite 214 9 10 7 fat_write_file void fat write file in uintl6_t cluster in uint8 t xbuffer in uint32 t blockCount Beschreibung Schreibt Daten in eine Datei Parameter Bedeutung Cluster Erster Cluster der Datei Buffer Zu schreibende Daten Buffer ist ein eindimensionales Array 8 bit Datentyp welches mindestens so grof ist wie die Anzahl der Bytes pro Sektor BlockCount Zu schreibender Teil der Datei Da eine Datei g sser sein kann als ein einzi ger Cluster muss angegeben werden in welchem Cluster der Datei geschrieben werden soll R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Die SD Karte muss eingelegt und initialisiert sein in e Wird die Dateigr e durch die Schreibeoperation ver ndert so wird diese m glicherweise nicht mehr korrekt am PC angezeigt e Bevor diese Funktion
211. oe ao 122 7 19 Versionsnummer des 123 Doma Modes o uu er E we PERE a de uade 123 7 21 ROANISEDWEHOEHRE 2 2 A Aer a MA ERR 123 722 CORDIC ROptoZe8SO0E 220222222222 2494 gm 124 7 221 Zahlenformate Genauigkeit 4 A 126 7 23 Adressraum im 130 8 Inverse Kinematik 133 Bl SOHO ee a ee 133 133 2 222 emo EE w 133 82 Inverse Kinematik des Hexapods 134 3 3 Bhxapog 22 4 e cy wake pa E des aus 135 8 1 Spezi KION e gt ee A aes 135 Gaa MESME 202222222245 4222 45 S leue 136 55 22222522222 bd SUR mue deg dks 138 SA Inverse Kinematik Test ooo ze anne Ain d 142 SAL Spezi kaloi 25 be w m S WW 142 552 Quellcode 22220525555 E TROU en 143 9 Software Funktionsbibliothek 146 9 1 bersicht der 5 146 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 8 INHALTSVERZEICHNIS 32 I dic oe soe ee ne ed 150 921 ea a anche 150 Ud SGundbdxbs HD ese 552215552 ES
212. ogramm geschrieben werden 2 6 2 1 Programmspezifikation Beim Einschalten wird der Wert 2048 in das Register PwmLen des Servos 0 geschrieben Das Servos wird im PwmDirect Modus betrieben Die Drehrichtung von Servo 0 kann mittels des Reverse Bits im Register ModelrqMask umgekehrt werden Der Wert im Register PwmLen soll anschlie end im Bereich von 0 bis 4095 per Tastendruck eingestellt werden k nnen Die beiden Tasten Key AvrO und Key Avrl dienen jeweils dazu diesen Wert zu erh hen respektive zu verringern oder die Drehrichtung zu invertieren 2 6 2 2 Quellcode TEE EE EE EE C S Workfile main c Author Christian Raschko Date 2007 08 20 Description main program Revision 23 AE AE HE AE AE AE AE VV YY YY E E E E E AAA AAAI includes LSA M PEE NM IMP TAT AAA ALA AA ALA ELA AAD EI ILL standard library includes include lt stdio h gt AVR specific includes include lt avr interrupt h gt include lt util delay h gt hexapod library includes include SandboxS2_lib h include RoboticsChip h include uart h include uart_usb_lib h servo port number to use define SERVO_TO_USE 0 IAL AAA ALAA AT global variables definitions PETA T E LAA AAA AT AA AAA TIA LAT EP TALIA TALIA AIA AAA pointers to I O stream structures FILE
213. onenten Sowohl der Mikrocontroller als auch das FPGA ben tigen eine Spannungsversorgung mit 3 3 V die durch einen linearen Spannungsregler aus der Akkuspannung bereitgestellt wird Abb 3 7 Die Stromaufnahme des FPGAs bewegt sich unter 100 mA die des Mikrocontrollers unter 15 mA Hinzu kommen noch die Str me zum Betrieb der LEDs und der Schnittstellen SD Card oder Modul und PS 2 Maus Der eingesetzte Spannungsregler kann einen Strom von maximal 300 mA bereitstellen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 3 7 SPANNUNGSREGELUNG 53 Positive Akkuspannung JP Abbildung 3 7 Spannungsregelung und stabilisierung 3 7 2 Spannungsversorgung RC Empf nger RC Empf nger werden traditionell mit 4 AA Zellen versorgt Die meisten modernen Empf nger k n nen jedoch auch mit 5 AA Zellen versorgt werden da sie einen Spannungsregler enthalten Um eine si Positive Akkuspannung _ GND TL Abbildung 3 8 Versorgungsspannung f r den Emp f nger chere Spannungsversorgung von Empf ngern jeden Alters zu garantieren wird wie in Abbildung 3 8 zu sehen eine Siliziumdiode in die Versorgung des Empf ngers eingeschleift Sie setzt die Versor gungspannung um 0 7 V herab Die so erzeugte Spannung wird mittels eines Kondensators stabilisiert Diese um 0 7 V herabgesetzte Spannung ist zwar ein Kompromiss hat sich aber in der Praxis gut bew hrt 3 7 3 Spannungsversor
214. or return 0 9 9 Inverse Kinematik Mit Hilfe der inversen Kinematik ist es m glich die Winkel aller Gelenke Servos aus einem gegeben Fu punkt zu berechnen Weitere Informationen sind in Kapitel 8 zu nden 9 9 1 IK Init void IK Init Beschreibung Initialisiert das inverse Kinematik Modul R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Muss vor allen anderen Funktionen des Moduls aufgerufen werden SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 9 INVERSE KINEMATIK 203 9 9 2 IK_CalculatelnverseKinematicsCoxa IK InverseKinematicsReturn CalculateInverseKinematicsCoxa in int16 t XCoord in int16 t YCoord in int16 t ZCoord in int8 t Position Beschreibung Berechnet die inverse Kinematik eines Beines In dieser Berechnung werden die Einschr nkungen durch die Mechanik des Hexapods nicht ber ck sichtigt Parameter Bedeutung XCoord X Koordinate des gew nschten Fu punktes YCoord Y Koordinate des gew nschten Fu punktes ZCoord Z Koordinate des gew nschten Fu punktes Position Da es f r viele Punkte zwei verschiedene L sungen f r p und y gibt muss zu s tzlich angegeben werden welche der beiden L sungen berechnet werden soll Wird dieser Parameter KNEE UP gesetzt so wird eine L sung berechnet in welcher der Fu punkt stets eine tiefere Position einnimmt als das Kniegelenk
215. ow 4 Sands 2 cd SexS 2 Deer Abbildung 2 5 Installieren des SandboxS 2 Treibers nach dem Anstecken an die USB Schnittstelle Teil 1 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 3 GER TETREIBER INSTALLIEREN 23 Found New Hardware Wizard Found New Hardware Wizard Select the device driver you want 10 install for thes hardware Please wat while the wizard installs the software Select the manufacturer and model of your hardware device and then cick Next f you have a that contains the diver you want to install cick Have Disk 2 SandbocS2 sensi E Show compatitie hardware Model Sandbox 52 serai emulation Ei e Setting a system restore port and backing up oki fles e Wes diver gta case your syrien reeds to be hise Tel me why ger soning Completing the Found New Hardware Wizard winerd has frished insti lig the for Sandbar S2 em daten Check Femh 16 close the word Abbildung 2 6 Installieren des SandboxS 2 Treibers nach dem Anstecken an die USB Schnittstelle Teil 2 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 24 2 ERSTE SCHRITTE 2 4 Hello World in der Sandbox Version Da nun die ben tigte Hard und Software installiert wurde kann mit einem ersten Programm begonnen werden Dazu werden folgende Punkte beschrieben e Projekt erstellen e Programm schreiben e
216. p deskjet E122 series Document and Markups Beispiel f r den Druckdialog von Acrobat Reader Die Einstellung f r den Drucker muss selbst verst ndlich an die verwendete Computer Druckerkombination angepasst werden
217. prechenden Pin ausgibt muss die Fuse CKOUT programmiert sein siehe Abb 4 5 4 7 Update der Software des AVR Mikrocontrollers Die Software auf dem AVR Mikrocontroller wird in einem Flash Speicher festgehalten Dieser kann auf unterschiedliche Weise mit einem neuen Programm versorgt werden Wichtig sind insbesondere die nachfolgend beschriebenen Vorgehensweisen mittels des USB Bootloaders und unter Verwendung des In Circuit Emulators ICE JTAG ICE Mk II Bei der Programmierung des Speichers mittels USB Bootloader wird lediglich ein USB Kabel und die kostenlos unter http www atmel com erh ltliche Programmierapplikatioon Flip ben tigt Diese L sung ist daher praktisch kostenlos bietet aber nicht die M glichkeiten des Emulators ICE bei der Unterst tzung der Softwareentwicklung Mit letzterem k nnen vielf ltige Informa tionen ber den derzeitigen Zustand von Prozessor und Speicher w hrend des Programmlaufs erfragt und beobachtet werden Nachteil ist sein relativ hoher Preis 4 7 1 USB Bootloader Der USB Bootloader f r die SandboxS 2 ist ein Programm f r den AVR Mikroccontroller und wird fertig von der Firma Atmel zur Verf gung gestellt Wird er in den Flash Speicher des Mikrocontrollers geladen so belegt er dort die oberen 8 kByte dieses Programmspeichers insgesamt stehen 128 kByte Programmspeicher zur Verf gung Man kann daher keine Programme in den Flash Speicher laden welche diesen Teil des Speichers ebenfall
218. qFlagsOthers Bit 7 6 5 4 3 2 1 0 0x9C03 IFCord IFNeut IFPnk IFRc IFPs2 Tabelle 7 5 Register IrqFlagsOthers Im Initialisierungszustand nach dem Einschalten und nach Reset sind alle Interrupt Flags inaktiv Wert 0 Nur lesbar Durch das Auslesen des Registers werden alle Interrupt Flags im Register gel scht Bit 0 IFPs2 Interrupt Flag zur Anzeige der Verf gbarkeit neuer Daten vom PS 2 Mausinterface Abschnitt 7 14 Ist das zugeh rige Mask Bit ImPs2 im Register IrqMaskRcRxCtrl Ab schnitt 7 13 1 1 gesetzt wird auch ein Interrupt auf der Leitung INTO des Mikrocontrollers angefordert Bit 1 IFRc Interrupt Flag zur Anzeige der Verf gbarkeit neuer Daten vom RC Empf ngerdecoder Abschnitt 7 13 Ist das zugeh rige Mask Bit ImRc im Register IrqMaskRcRxCtrl Ab schnitt 7 13 1 1 gesetzt wird auch ein Interrupt auf der Leitung INTO des Mikrocontrollers angefordert Bit 2 IFPnk Dieses Interrupt Flag wird bei Druck auf die Servopaniktaste Abschnitt 7 9 gesetzt Ausl ser f r das Setzen des Flags ist der erstmalige Druck auf die Taste Auch wenn das Flag SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 3 SERVOSTEUERUNG 87 durch Auslesen gel scht wird kann es kein zweites Mal gesetzt werden Ist das zugeh rige Mask Bit ImPnk im Register IrgMaskRcRxCtrl Abschnitt 7 13 1 1 gesetzt wird auch ein In terrupt auf der Leitung INTO des Mikrocontrollers angefordert Bit 3
219. qMask von Servo 0 gesetzt wird bei gesetztem Interrupt Flag ein Interrupt auf der Leitung INT1 beim Mikrocontroller angefordert Bits 1 7 IFSI IFS7 quivalent zum Interrupt Flag f r den Servosequencer 0 gibt es die ent sprechenden Interrupt Flags auch f r die Servosequencer 1 bis 7 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 86 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP 7 2 1 2 Register ServoSeqEmpty158 Bit 7 6 5 4 3 2 1 0 0x9C01 IFS15 IFS14 IFS13 IFS12 IFS11 IFS10 IFS9 IFS8 Tabelle 7 3 Register ServoSeqEmpty158 Im Initialisierungszustand nach dem Einschalten und nach Reset sind alle Interrupt Flags inaktiv Wert 0 Nur lesbar Durch das Auslesen des Registers werden alle Interrupt Flags in diesem Register gel scht Bits 0 7 IFS8 IFSIS quivalent zum Interrupt Flag f r den Servosequencer 0 gibt es die ent sprechenden Interrupt Flags auch fiir die Servosequencer 8 bis 15 7 2 1 3 Register ServoSeqEmpty2316 Bit 7 6 5 4 3 2 1 0 0x9C02 Tabelle 7 4 Register ServoSeqEmpty2316 Im Initialisierungszustand nach dem Einschalten und nach Reset sind alle Interrupt Flags inaktiv Wert 0 Nur lesbar Durch das Auslesen des Registers werden alle Interrupt Flags im Register gel scht Bits 0 7 IFS16 IFS23 quivalent zum Interrupt Flag f r den Servosequencer 0 gibt es die ent sprechenden Interrupt Flags auch f r die Servosequencer 16 bis 23 7 2 1 4 Register Ir
220. r KNEE UP gesetzt so wird eine L sung berechnet in welcher der Fu punkt stets eine tiefere Position einnimmt als das Kniegelenk Bei IK_KNEE_DOWN liegt der Fu punkt h her als das Kniegelenk R ckgabewert Der R ckgabewert bestimmt ob der Punkt angefahren wurde oder nicht R ckgabewert Beschreibung IK_FAILED Der Punkt kann nicht erreicht werden IK_SUCCESSFUL Der Punkt wurde angefahren Anmerkung e Bevor diese Funktion verwendet werden kann m ssen SL2 Init RC Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 206 9 SOFTWARE FUNKTIONSBIBLIOTHEK e Von dieser Funktion werden sowohl die Einschr nkungen durch die L ngen der Beinelemente als auch durch die maximalen Drehwinkel der Servos beachtet Beispiel Berechnet die Winkel f r Punkt 159 0 0 und f hrt diesen an int main void uint8 t i 0 IK InverseKinematicsReturn Data initialize all modules Init copy the linearisation table into the RoboticsChip RC SetGlobalServoAttributesTable P gTable activate all servos for i20 i RC NUMBER OF SERVOS i RC_SetServoPhiDirect 1 1609 RC_SetGlobalServoMode RC SERVO MODE PHI DIRECT enable cordic interrupt RC SetInterruptO INTTERRUPT MASK CORDIC move leg 3 to 159 0 0 IK S
221. r Teil des Beines Coxa stellt den Bereich dar der am n chsten am K rper liegt e Femur Oberschenkel bzw Mittelst ck des Beins bei der gegebenen Mechanik e Tibia Unterschenkel inklusive Fu punkt beim Hexapod Die Aufl sung des 3 dimensionalen Koordinatensystem f r den Fu punkt betr gt etwa 1 mm Der Ursprung dieses Koordinatensystems Coxa System liegt in der Achse des Coxa Servos und einer gedachten horizontalen Ebene durch die Achse des Femur Servos Das Koordinatensystem ist so ge dreht dass die positive Z Achse des Koordinatensystems nach unten die positive X Achse vom K r per weg und die positive Y Achse bei einem von oben gesehenen Hexapod in Richtung des Uhrzeigersinns zeigt siehe Abb d F r die einfachere Programmierung eines Bewegungsablaufs werden die Koordinatensysteme aller Beine so gedreht dass alle x bzw y Achsen parallel zu einander sind siehe Abb Diese gedreh De ten Koordinatensysteme werden in der Folge als rotierte Coxa Systeme bezeichnet 8 3 Hexapod Kalibrierung Neben der Nichtlinearit t der Servos die mit Hilfe der zuvor ermittelten Werte vom RoboticsChip kompensiert werden kann gibt es noch einen zweiten Parameter der korrigiert werden muss um sicherzustellen dass sich alle 6 Beine des Hexapods gleich verhalten Das Problem ist hier allerdings nicht das Servo selbst sondern die Scheibe welche an Servo und Spinnenbein montiert wird Durch die zum Tei
222. rd Found New Hardware Wizard Please choose your search and installation options Starch for the beat diver in these locanons Use the check boxes below to let or expand the search which local paths and renovatie meda The best dever found wil be Select a hardware type and then cick Next Common hardware types 1294 Debugger Device Qu 51553 Device Coss Wem been Dont sesch Led choose the drew to install T L Choose thes coton to select the device dever rom a lat Windows does not guarantee that oem Rasos the dever you choose wil be the best match for your hardware ij Conouer mee Found New Hardware Wizard Select the device diver you want 1o install for this hardware Select the manufacturer and model your hardware device and then cick Next f you Install Fr Disk have dsk that contains the diver you wart to install cick Have Disk sta om Uis inset the man facturers dac and then make sure that the comect dive a selected below A Made NF CD ROM Deve force CODA accurate Ee ATA ATAPI IJ CO ROM Oire force CODA raccunte B CD ROM Deve force MAPI desi 4 5 Orre MAPI stinga on Siam masna 5 Ta diver a d tt Found New Hardware Wizard Locate File install From Disk the man factures nstalaben dak and then sure that the conet selected bel
223. rierung auf der Lattice Homepage erforderlich Der Installer von ispVM System hat eine Dateigr e von ca 25MByte Zum Anschluss des PCs an die JTAG Schnittstelle des FPGAs ist ein sogenanntes Programierka bel notwendig Dieses Kabel ist in zwei Ausf hrungen erh ltlich n mlich f r die USB Schnittstelle SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 6 FPGA LATTICE XP LFXP3K Preis ca 150 und f r den Parallel Port Preis ca 65 Genaueres ndet sich auf der Lattice Homepage unter den Links Products Development Hardware Programming Cables Auf der SandboxS 2 ist der JTAG Port des FPGAs ber die 10 polige Steckwanne mit der Bezeichnung U4 FPGA LJ 40 pol Wanne U4 f r d Download kabel ispVM Embedded Abbildung 6 2 Steckwanne zum Anschluss an die JTAG Schnittstelle des FPGAs Abb 6 2 erreichbar Verkauft werden die Produkte von Lattice ber Distributoren Deren aktuelle Adressen lassen sich ebenfalls ber die oben genannte Homepage Men punkt Sales heraus nden Die FH O Hagenberg steht in keinem kommerziellen Verh ltnis zu Lattice oder seinen Distributoren und verkauft nat rlich auch keine Produkte von Lattice oder anderen Herstellern Bei Interesse an einem der genannten Download Kabel wenden Sie sich also bitte direkt an den zust ndigen Distributor Alternativ zur k uflichen L sung kann ein Programmierkabel auch im Selbstbau e
224. rn loop forever for return 0 9 6 2 uart init double speed void uart init double speed in uintl16 t baudRate Beschreibung Initialisiert die UART verdoppelt jedoch den Grundtakt des Baudrate Generators Parameter Bedeutung baudRate Gibt den Wert f r das Baudrate Register an Dieser Werte muss mit dem Makro UART CALC BAUDRATE DOUBLE SPEED berechnet werden R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Aufgrund des verwendeten 8MHz Systemtaktes k nnen nur folgende g ngige Baudraten feh lerfrei generiert werden siehe 9005 1287 Datenblatt Kapitel 18 10 2400 4800 9600 19200 38400 Beispiel siehe Abschnitt 9 6 1 9 6 3 uart putc void uart putc in char data Beschreibung Sendet ein Zeichen f gt es in den Sendepuffer ein Parameter Bedeutung data Zeichen das gesendet werden soll SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 6 UART 165 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Diese Funktion blockiert wenn der Puffer voll ist Was jedoch nur Auftritt wenn keine Interrupts aktiviert sind oder wenn die Hardware Flusskontrolle verwendet wird und die Gegenstelle nicht bereit ist e Bevor diese Funktion verwendet werden kann muss uart_init aufgerufen werden Beispiel siehe Abschnitt 9 6 1 9 6 4 uart_puts void uart_puts in charx str Beschreibung Sendet ein
225. rrechnet sich aus dem Produkt der Zeitkonstanten 125 ns mit der im Register angegebenen Zahl Bit Ox85FB unsigned 15 downto 8 Ox85FA unsigned 7 downto 0 Tabelle 7 27 Register BuzzPhaseDurationLow Der Initialisierungswert nach dem Einschalten ist 0x2382 Schreib und lesbar 7 15 0 9 Register BuzzPhaseDurationHigh Dieses Register enth lt eine vorzeichenlose 16 Bit Zahl Diese Zahl gibt an wie lange die High Phase des Rechtecksignales dauert welches an den Piezosummer angelegt wird Die Dauer errechnet sich aus dem Produkt der Zeitkonstanten 125 ns mit der im Register angegebenen Zahl 7 16 Erweiterungssteckplatz In Abb 7 23 ist der Erweiterungssteckplatz welcher am FPGA angeschlossen ist dargestellt Auf dem Steckplatz stehen zur Energieversorgung einer externen Erweiterung sowohl die geregelte Spannung SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 116 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Bit T 6 5 4 3 2 1 0 0x85FD unsigned 15 downto 8 0x85FC unsigned 7 downto 0 Tabelle 7 28 Register BuzzPhaseDurationHigh Der Initialisierungswert nach dem Einschalten ist 0x2382 Schreib und lesbar NAAAAAA Vv V YV V VY V V V Abbildung 7 23 Als Erweiterungsstecker wird eine 20 polige Stiftwanne eingesetzt von 3 3 V als auch die ungeregelte Akkuspannung zur Verf gung Die Masseleitung GND ist auf zwei Pins ausgef hrt Das FPGA ist ber 16 kon gurierbare Pins mit dem Steckpl
226. rs erlaubt die Messung der Gesamtstromaufnahme des Systems Sand boxS 2 und Servos wobei der Restwiderstand des Ein Ausschalt MOSFETs als Shunt Widerstand genutzt wird Der Anschluss des Transistorkanals Drain Source Strecke ist in Abb 5 10 dargestellt Der AVR verf gt ber differentielle ADC Eing nge so dass unter Umgehung des von hohen Str men Spannungsabfall I vom negativen 1 7 SSC GND Akkuspannungspol zx a Kana med e Abbildung 5 10 Die Messung der am Tran sistorkanal abfallenden Spannung erlaubt den e e R ckschluss auf den Strom der ber den Ka nal flie t lt durchflossenen Weges ber GND eine genauere Messung m glich ist Dieses Verfahren bietet zwar nicht die Genauigkeit eines speziellen Mess Shunts aber ben tigt im Gegenzug kaum Platinenfl che und verursacht nur minimale Kosten Die am Kanal des Transistors abfallende Spannung bei max 3 m Kanalwiderstand im eingeschal teten Zustand bewegt sich im Bereich von 0 30 mV Bei 200 facher Verst rkung ergeben sich daher 0 6 V w hrend eine zehnfache Verst rkung 300 mV ergibt In den meisten F llen wird die 200 fache Verst rkung also verwendet werden k nnen Bei berlauf des ADC Messergebnisses kann einfach ei ne zweite Messung mit reduzierter Verst rkung erfolgen da die Verst rkung per Software einstellbar ist SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 70 5 ON CHIP PERIPHERIE DES ATMEL AVR AT
227. rstellt werden Zumindest f r die Version zum Anschluss an den Parallelport ist dies relativ leicht m glich Installation von ispVM System Die Installation geht wie bei den meisten anderen Windows Programmen von statten Als Installati onsoption im Fenster mit dem Titel Select Components sollte sicherheitshalber Full Installation ausgew hlt werden Im Fenster Select Additional Tasks kann man getrost die Voreinstellungen bernehmen Wer sei nen Desktop frei von weiteren Icons halten m chte in diesem Fall vier davon kann nat rlich das H kchen im entsprechenden Auswahlfeld l schen Nach dem Infofenster mit einem berblick der ausgew hlten Komponenten ffnet ein Klick auf Install ein Fenster mit der Frage ob auch ein LSC USB or Parallel Port driver installiert werden soll Hier unbedingt mit Ja antworten LSC Drivers Install Uninstall x Install Lattice 21222 Semiconductor Corporation Close r Drivers Installation Options 15 win98 2000 P USB Driver Both Drivers r Parallel Port Driver Installation Options Driver s service starts on demand only Default System Standby Mode Support Driver s service starts during startup of the system N Backwards Compatible Abbildung 6 3 Auswahlfenster f r die Treiberinstal lation zum Download Kabel von Lattice SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2
228. rzeigersinn f r wachsende Winkelwerte vom Servo angesteuert werden Der Sinn der Linearisierungseinheit liegt nun genau darin aus einem beliebigen Servo eines zu machen dass dieses w nschenswerte Verhalten zeigt Der Winkelbereich 0 205 entspricht in etwa dem maximal von g ngigen Modellbauservos wie dem Hitec HS311 erreichbaren Winkelbereich Die Angabe des gew nschten Winkels sollte wie ge sagt in der in der Mathematik blicheren Art und Weise geschehen n mlich im Bogenma Im Bo genma entspricht der Winkel 180 dem Wert 7 und demnach der Winkel 205 dem Wert 3 58 Mul tipliziert man diesen Maximal Wert mit 1024 so erh lt man 3663 Durch diese Skalierung l sst sich der Zahlenbereich einer zw lf Bit breiten Dualzahl von 0 4095 f r das Bogenmaf ef zient nutzen Die Multiplikation mit dem Faktor 1024 kann f r eine Dualzahl mit sehr geringem Rechenaufwand durchgef hrt werden da 1024 219 ist und daher durch eine Verschiebung der Zahl um 10 Stellen nach links ersetzt werden kann Genauso kann die Division durch 1024 durch eine Verschiebung um 10 Stellen nach rechts ersetzt werden Im C Code kann trotzdem beispielsweise Alpha 1024 geschrieben werden da der Compiler die Optimierungsm glichkeit automatisch erkennt und nutzen wird Zwar bleibt ca 10 des Zahlenbereichs die Werte von 3664 bis 4095 f r die Angabe des Winkels ungenutzt aber die Auswirkungen auf die Stellgenauigkeit handels blicher Servos sind u erst gering
229. s Methoden IK_CalculatelnverseKinematicsCoxa IK_SetLegMovementCoxa IK_SetLegMovement IK_GivensTransformation Modul MemoryCard Funktionalit t Lesen und schreiben von SD Karten Methoden mmc init fat cluster data store GetClusterSize GetBytesPerSec fat search le fat read le fat write le In den nachfolgenden Abschnitten werden die einzelnen Funktionen erl utert Meist wird die De klaration angegeben wobei in einen Eingangsparameter out einen Ausgangsparameter und inout einen bergangsparameter darstellt Weiters werden die Parameter und R ckgabewerte beschrieben und ein kurzes Beispiel gezeigt SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 150 9 SOFTWARE FUNKTIONSBIBLIOTHEK 9 2 Datentypen In den folgenden Funktionen werden die vorzeichenlosen Datentypen uint8_t uint16_t und uint32_t sowie die vorzeichenbehafteten Datentypen int8_t int16_t und int32_t verwen det Die Zahlen 8 16 und 32 bestimmen den von der Variable ben tigten Speicherplatz in Bit sowie deren Wertebereich Sie beeinflussen die Anzahl der Prozessorzyklen die eine Operation ben tigt Diese Datentypen sind der Datei stdint h im Installationsordner von WinAvr de niert 9 3 Initialisierung Die in diesem Abschnitt beschriebene Software Funktionsbibliothek besteht aus mehreren Modulen Bevor ein bestimmtes Modul verwendet werden kann muss dieses initialisiert werden Die Funktions aufrufe aller Initialisierungsfunktionen sind wiederu
230. s belegen sei es dass das zu ladende Programm auf Grund seiner L nge in diesen Speicherbereich hineinragt sei es dass es sich beim zu ladenden Programm um eine Kombination aus einer Applikation und einem eigenen Bootloader handelt SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 4 7 UPDATE DER SOFTWARE DES AVR MIKROCONTROLLERS 59 Beim Debuggen mit dem Debugger JTAG ICE wird der Bootloader leider durch das Ablegen des eigenen Programmes im Flash Speicher des Mikrocontrollers gel scht Ist dies geschehen so kann der Bootloader wie im Abschnitt 4 7 2 beschrieben wieder in den Flash Speicher des AVR geladen werden Vorbereitung SandboxS 2 Die SandboxS 2 muss folgenderma en f r die Verwendung des USB Booloaders vorbereitet sein e Das Bootloaderprogramm b1_usb a90 auch einfach Bootloader genannt ist in den oberen 8 kByte des Flash Programmspeichers innerhalb des AVR AT9OUSB1286 7 abgelegt und e die Fuse HWBE ist gesetzt aktiviert H kchen ist gesetzt siehe Abschnitt 4 6 Bei einer frisch gelieferten SandboxS 2 sind beide Voraussetzungen erf llt Im Nachhinein l sst sich das Bootloadprogramm 1 usb a90 mit in der im Abschnitt 4 7 2 beschriebenen Art an der richtigen Stelle im Flash Programmspeicher des AVR ablegen Mit dem dort beschriebenen Werkzeug JTAG ICE Mk II ist auch eine Einstellung der sogennannten Fuses und daher auch der Fuse HWBE m glich Vorbereitung PC e Auf dem PC muss das Programm Flip
231. s mit jeweils zwei unabh ngigen Achsen zur Verf gung Die weitere Be schreibung geht davon aus dass der Modus analog grunds tzlich aktiviert ist Ist dies nicht der Fall so ist die entsprechende Taste auf dem Game Pad Controller zu dr cken In Modus analog leuchtet normalerweise eine im Controller eingebaute rote LED Im Modus digital ist diese LED hingegen ausgeschaltet Game Pad Controller f r die Sony Playstation 2 werden nicht nur von Sony sondern auch von ei ner gro en Zahl weiterer Firmen in hoher St ckzahl hergestellt Auf dem Markt herrscht ein enormer Preisdruck Kabellose Versionen sind schon ab 15 zu bekommen kabelgebundene Formen liegen preislich meist unterhalb von 10 teilweise gar bei 5 Allerdings gibt es auch entsprechend hohe Qualit tsunterschiede Viele Game Pad Controller an der unteren Preisgrenze lassen es an an Fein f hligkeit fehlen Vor dem Kauf sollte man also besser ausgiebig testen oder sich an Hand der Erfah rungsberichte von Bekannten oder aus Foren orientieren Der attraktive Preis und die praktische Handhabung der Game Pad Controller zusammen mit der entsprechenden Auswertungseinheit im HSSE Robotics Chip kombinieren sich optimal zur Steuerung von Robotern 7 17 1 Adapterkabel Die Steckverbindung der Game Pad Controller weist eine eigens von Sony geschaffene Form auf Diese Steckverbinder sind daher auch nur u erst schwer zu beschaffen F r die Best ckung von Platinen sind die Steckverbin
232. s muss nicht zwingend mit 0 beschrieben werden Daher k nnen auf diese Weise die Servopulszyklen im Hintergrund gez hlt werden DeltasToGo wird also weiterhin SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 104 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP in jedem Servopulszyklus um eins verringert und auch das Interrupt Flag wird am Ende der Sequenz gesetzt Der Servo Sequencer kann auf diese Weise auch als Timer verwendet werden 7 7 0 1 Register PhiStart Dieses Register steht nur im Modus PhiSpeed Bit 2 Mode in Register ModelrgqMask tr gt den Wert 1 zur Verf gung Das Register enth lt eine vorzeichenlose 12 Bit Zahl 0 4095 Die Zahl im Register wird mit Phi Start bezeichnet PhiStart gibt einen Servostellwinkel im Bereich von 0 4095 an Die Bedeutung die ses Stellwinkels h ngt von den Werten der Phi2PwmTable ab Empfohlen wird die Skalierung nach b Abschnitt PhiStart dient nur als Ausgangswert f r die Bewegung des Servos Mittels der Werte von DeltaPhi und NrOfDeltas kann von diesem Wert ausgehend eine zeitlich lineare Winkelbewegung programmiert werden Bit 7 6 5 4 3 2 1 0 Adr 1 unsigned 11 downto 8 Adr unsigned 7 downto 0 Tabelle 7 11 Register PhiStart Wertebereich 0 4095 Adr 0x8480 2ng ng ist die Servonummer 0 bis 23 Der Initialisierungswert ist f r alle Servos Mittelstellung Les und schreibbar Mittelstellung berechnen 7 7 0 2 Regist
233. s nach dem Einschalten der SandboxS 2 nacheinander mit einigem Zeitabstand aktiviert um die Akkuzellen und die Mechanik zu schonen Geschieht dies nicht ist es unter Umst nden sogar m g lich dass die Akkuspannung auf Grund der berlastung direkt nach dem Einschalten zusammenbricht und einen Unterspannungsreset des Mikrocontrollers und des FPGAs ausl st Der Roboter l sst sich dann nicht in Betrieb nehmen da der beschriebene berlastungseffekt unmittelbar nach Verlassen des Resets sofort wieder auftritt Erkennbar ist dieses Problem an der rhythmischen ruckartigen Bewegung s mtlicher Servos Einige Servos insbesondere sogenannte Digitalservos behalten den zuletzt eingestellten Winkel bei statt den Motor abzuschalten Solche Servos sind unter Umst nden f r den Einsatz mit der Sand boxS 2 unbrauchbar Allerdings kann man Digitalservos h u auch so programmieren dass sie bei fehlendem Impuls das im vorigen Absatz beschriebene Verhalten zeigen Funktionsweise eines Servos Die Auswertung des Servosteuerimpulses Messung der Impulsdauer und die Steuerung des Servo motors werden von der Servoelektronik durchgef hrt Diese Baugruppe muss auch den momentanen Ist Winkel des Hebelarms kennen damit sie dar ber entscheiden kann in welche Richtung der Hebel zum Erreichen des gew nschten Winkels zu verdrehen ist Der Ist Winkel des Hebelarms wird hierzu von einem Drehpotentiometer einstellbarer Span nungsteiler in einen Spannungswert
234. s unterscheidet sich f r unterschiedliche Servohersteller Bei Hitec ndet sich hier beispiels weise eine gelbe Ader Abbildung C 5 Das an Stelle der BATT Steckleiste angel tete Servoanschlusskabel Das f r die Steuerung des Hexapods ben tigte PPM Signal muss auf der wei en Ader des Servo kabels verf gbar sein Im jetzigen Zustand ist diese Ader not connected Um das PPM Signal an die Ader anzuschlie en muss dieses mittels eines Oszilloskops auf der Platine aufgesp rt werden siehe hierzu Abschnitt 7 13 Im Falle des Acom Empf ngers ist dies bereits geschehen so dass eine Draht br cke laut Abb C 6 das gew nschte Ergebnis erzielen wird Am Besten verwendet man hierf r ein St ck Wire Wrap oder Kupferlack Draht Nun kann der Empf nger wieder in sein Geh use zur ck Zu beachten ist dass der Servokabelste cker wie links in Abb zu sehen von innen durch den Geh usedeckel gef hrt werden muss Wird ein Stecker verwendet der nicht durch die ffnung passt teilweise beim Stecksystem von Futaba der Fall dann muss das Servokabel bereits vor dem Einl ten durch diese ffnung gezogen werderden Anschlie end wird der Empf nger wieder komplett zusammengebaut und verschraubt Abb C 7 rechts SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 234 RC EMPF NGERUMBAU ZUM ANSCHLUSS AN DIE SANDBOXS 2 Abbildung C 6 Die Drahtbr cke legt das PPM Signal am Ausgang der Empf ngerdemodulationsstufe auf die Si
235. sanleitung ist in Abbildung 2 2 dargestellt Das AVR Studio beinhaltet eine komfortable graphische Benutzeroberfl che sowie Assembler De bugger und Simulator Um Anwendungen in C C entwickeln zu k nnen ben tigt es das zuvor in stallierte WinAVR Paket Dieses Paket wird in das AVR Studio integriert und erm glicht eine komfor table Programmentwicklung Auf die Kommandozeilenprogramme des WinAVR Pakets muss daher nicht zur ckgegriffen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 18 2 ERSTE SCHRITTE Abbildung 2 2 Installation der Atmel AVR Entwicklungsumgebung SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 3 GER TETREIBER INSTALLIEREN 19 2 3 Ger tetreiber installieren Da beide Ger te der JTAG ICE und die SandboxS 2 ber das USB Bussystem mit dem Computer kommunizieren ist f r jedes ein Ger tetreiber erforderlich Der n tige Treiber f r das JTAG ICE wurde bereits mit dem AVR Studio installiert Der SandboxS 2 Treiber be ndet sich auf der CD im Ordner Driver 2 3 1 JTAG ICE Mk II Treiber installieren Das JTAG ICE Mk II ist ein Ger t zur Fehlersuche debugging von Programmen welche bereits auf der Hardware SandboxS 2 laufen Es verwendet den Jungo USB Treiber des AVR Studios Beim erstmaligen Anstecken des JTAGs an die USB Schnittstelle ndet das Betriebssystem ein neues Ger t Der ICE muss nat rlich bereits eingeschaltet sein Um eine reibungslose Treiber installa
236. schritte angegeben aus der die n chste Bewegungssequenz bestehen wird Bit Adr 1 unsigned 11 downto 8 Adr unsigned 7 downto 0 Tabelle 7 15 Register NrOfDeltas Dieses Register hat nur im Mode PhiSpeed eine Bedeutung Adr 0x8500 2ns ng ist Servonummer 0 bis 23 Initialisierungswert nach dem Einschalten ist 0x0000 Les und schreibbar 7 7 0 6 Register DeltasToGo Dieses Register enth lt eine vorzeichenlose 12 Bit Zahl Diese Zahl gibt an wie viele Winkelschritte in der momentan ablaufenden Bewegungssequenz noch brig sind und wird zu diesem Zweck bei jedem Winkelschritt automatisch vom Sequencer dekrementiert Dieses Register kann dazu verwendet werden zeitgerecht eine neue Bewegungssequenz zu initiie ren Hierzu kann beispielsweise gewartet werden bis das Register mit dem Wert Null das Ende der SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 106 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Sequenz anzeigt Es ist jedoch m glich schon unmittelbar nach dem Ablauf des ersten Winkelschrittes DeltasToGo enth lt einen Schritt weniger als NrOfDeltas eine neue Sequenz zu starten da die Werte der neuen Sequenz ohnehin erst nach dem vollst ndigen Ablauf der momentan in Arbeit be ndlichen Sequenz vom Sequencer geladen werden Wird auf das Register vom Mikrocontroller geschrieben kommt es zu unde niertem Verhalten Das Register sollte daher ausschlie lich gelesen werden Adr 1 unsigned 11 downto 8
237. sgeschwindigkeit erreichen 4 6 Einstellung der Fuses des AVR Die Fuses fabrikfrischer Chips m ssen f r den Betrieb auf der SandboxS 2 laut Abb 4 5 gesetzt werden Die korrekte Einstellung der Fuses ist die Basis f r die einwandfreie Funktion des AVRs auf der SandboxS 2 Andere als die oben angegebenen Einstellungen sollten nur vorgenommen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 58 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7 Progam Peer Locutus Advanced Auto Progam Funes Locas Advanced Progam Fines Locus Advanced Aus Orconrerted Mate Deen Loneecton salo to T Cat Eed 2020 8 Tuna wa 250 CX 41 a e Zoe nmm za Abbildung 4 5 Screenshots der Fuse Einstellungen des AVR 9005 1286 7 Einige Einstellm glich keiten f r die Taktgenerierung sind nicht dargestellt diese sind s mtlich nicht ausgew hlt kein H k chen wenn die entsprechenden Teile des AVR Datenblatts vollst ndig gelesen und verstanden wurden Es ist A beispielsweise durch Manipulation mancher der Fuses m glich den weiteren Zugriff vom Debugger JTAG ICE komplett zu unterbinden Anschlie end lassen sich die Fuses nicht mehr ver ndern und die Platine ist nur noch durch Austausch des AVRs zu retten Die Taktversorgung des FPGAs auf der SandboxS 2 erfolgt ber den AVR Mikrocontroller Damit dieser seinen Takt auf dem ents
238. sie den Wert 4095 darf sie nicht mehr inkrementiert werden lt Kalibrieren Sie die Servos mit dem nun erstellten Programm gem Abschnitt 7 6 1 Nummerie ren Sie die Servomotoren und erstellen Sie eine Tabelle die jedem Servo 17 St tzstellen zuord net Zus tzlich soll auch die Standarddrehrichtung vermerkt werden Reverse oder Normal Eine Vorlage f r Aufkleber zur Servonummerierung ist im Captain Ahab Bau Mechanikhandbuch zu nden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 48 3 Energieversorgung Die Energieversorgung der SandboxS 2 nimmt einen relativ gro en Bereich der Platine in Anspruch Servo Sei vo4_ Servos Servos Servo Servos Ss Servo11 Sas Coe GEI COE r ree KR E un Bh es bu cx NiMh or D Nice only 7 Lee de ST ttd tentiae an au 5 KeyAvr0 ZK vg M KezAvr B EE 605 48 rpolungsschutz 53 V Regler eres eee s RH AMO Let F UE LE 5 Wr ers OFF Cre ess 6 est 6066 066 658 Peneza Serv 921 20 19 Servo17 Servois San 14 Senol uan T gei via Kri di i FA g INE D LE P X qd 2 d 1 4 E uw EAO mh E Abbildung 3 1 F r die Energieversorgung verantwortliche Bereiche sind eingerahmt Abb 3 1 Energiequelle s
239. ss sich die Daten seit dem letzten Auslesen ge ndert haben m ssen INTO Servogrundstellungsmodus wurde eingeschaltet INTO Paniktaste wurde gedr ckt INTO CORDIC Ergebnisse liegen vor All diese Ereignisse k nnen einzeln zur der Interrupt Ausl sung zugelassen werden indem das entsprechende Interrupt Mask Bit IrgMask gesetzt wird Wert 1 Die Interrupt Mask Bits nden sich in den in den Abschnitten 7 5 3 1 7 13 1 1 und 7 22 beschrieben Welche Quelle den Interrupt ausgel st hat l sst sich durch Lesen der Interrupt Flag Register fest stellen Die Interrupt Flag Register sind 8 Bit breit so dass kein 16 Bit Zugriff laut Abschnitt 7 1 1 durchgef hrt werden braucht Stattdessen werden die Interrupt Flags immer in Portionen zu einem Byte gelesen Auslesen des jeweiligen Registers l scht zugleich alle im Register gesetzten Flags Die Daten wer den sozusagen nicht nur betrachtet sondern entnommen Es m ssen also s mtliche Interrupt Requests welche aus einem Interrupt Flag Register ausgelesen wurden nacheinander verarbeitet werden Sollte zuf llig gleichzeitig mit dem Auslesen eines der Interrupt Flag Register ein neuer Interrupt eintreffen so wird dieser im Register abgelegt und alle zuvor bereits vorhandenen Interrupt Flags werden gel scht Der Interrupt Ausgang bleibt nach dem Aktivieren durch die Interrupt Quelle solange aktiv bis alle ihm zugeordneten Interrupt Flag Register mit aktiviertem Interrupt Mask Bit durch Lesen g
240. st Sonst eine Zahl ungleich Null Anmerkung e Bevor diese Funktion verwendet werden kann muss uart init aufgerufen werden Beispiel siehe Abschnitt 9 6 1 9 6 7 uart is tx full char uart is tx full SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 7 USB UART 167 Beschreibung Pr ft ob der Sendepuffer voll ist R ckgabewert R ckgabewert Beschreibung Data Gibt Null zur ck wenn der Puffer nicht voll ist Sonst eine Zahl ungleich Null Anmerkung e Bevor diese Funktion verwendet werden kann muss uart_init aufgerufen werden Beispiel siehe Abschnitt 9 6 1 9 7 USB UART Dieses Modul verwendet den integrierten USB Kern des Mikrocontrollers um eine virtuelle serielle Schnittstelle zu simulieren Hierf r wird die Communication Device Class CDC des USB Stan dards verwendet Um die Schnittstelle an einem Computer zu verwenden muss der Treiber vorher installiert werden Danach kann sie wie eine echte serielle Schnittstelle verwendet werden Die bertragung erfolgt bei USB mit Datenpaketen xer L nge von einem Endpunkt zum Host und ist bereits mit Fehlererkennung und Flusskontrolle ausgestattet Um die Datenbl cke empfangen und senden zu k nnen ist ein Puffer notwendig Dieser wird immer mit xer Gr e empfangen oder gesendet auch wenn er nur zur H lfte voll ist Bei dieser Implementierung wird der Puffer jede Millisekunde bei jedem Start Of Frame SOF
241. t Nach dem Starten des Programms und dr cken der Taste 0 sollte ein Licht von LEDO bis LED11 wandern Ist es an LED11 angekommen beginnt es wieder bei LEDO Die Verwendung des Terminal Programms wurde bereits in Abschnitt 2 4 4 beschrieben 2 5 6 Zusammenfassung Da nun die grundlegende Verwendung des Robotics Chips gezeigt wurde sollten die anderen Funk tionen des Moduls ebenfalls betrachtet werden Hierzu emp ehlt es sich den Abschnitt 9 8 genauer anzusehen Das Kapitel 7 ist ebenfalls sehr hilfreich es beschreibt unter anderem die verschiedenen Servo Modi 2 5 7 Aufgaben Diese Aufgaben sollten erf llt werden bevor mit dem n chsten Beispiel fortgefahren wird a Lassen Sie das Licht in entgegengesetzte Richtung zur ck laufen sobald es an LED11 ange kommen ist b Das Licht soll nach dr cken einer Taste nur einen Schritt laufen 2 6 Servokalibrierung mit Winkelzeiger Dieses Beispiel besitzt bereits eine echte Anwendung Es dient zum Kalibrieren der einzelnen Servo motoren Dazu wird jedem Servo eine eindeutige Nummer zugeordnet ber diese k nnen die Kali brierungswerte danach identi ziert werden Die Kalibrierung ist notwendig da sich der Winkel nicht linear mit dem Eingangsimpuls ndert 2 6 1 Projekt erstellen Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 1 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 42 2 ERSTE SCHRITTE 2 6 2 Programm schreiben Nun kann das Pr
242. t Versorgungsspan nung der Servos ist jedoch die wesentlich h here Akkuspannung Nicht alle Servos auf dem Markt k nnen mit der Akkunennspannung von 6 V betrieben werden F nf frisch geladene Akkuzellen wie sie auf der SandboxS 2 verwendet werden weisen in den ersten Betriebsminuten unter Umst nden eine Spannung knapp oberhalb von 7 V auf Ob ein Servo dies verkraftet oder nicht sollte also vor dem Kauf bereits gepr ft werden Die Lage der Stiftleisten am Platinenrand birgt gewisse T cken in der Handhabung Greifen Sie die Platine nie an diesen Stiftleisten Es besteht ernsthafte Verletzungsgefahr durch die Stifte Diese dringen sehr leicht durch die Haut Auf unbenutzte Stiftleisen kann ein Streifen Styropor Depron oder hnliches nichtleitendes Material als Abdeckung aufgesteckt werden 7 5 Servopulsgenerator Aufgabe des Servopulsgenerators ist die Erzeugung genauer PWM Pulssignale zur Ansteuerung der Servos Der Servopulsgenerator ist in hohem Ma e kon gurierbar um das Erstellen der Software f r den AVR Mikrocontroller zu erleichtern Die Erzeugung der Servopulssignale unterliegt dar ber hin aus sehr engen Echtzeitanforderungen die von einer Softwarel sung nur schwer mit der erw nschten Genauigkeit wahrgenommen werden k nnen Abbildung 7 8 bietet einen berblick des Servopulsgenerators und seiner Parameter 7 5 1 Mode Die Ansteuerung des Servopulsgenerators mit der gew nschten Pulsl nge erfolgt im Modus PwmDi rect aus d
243. t EEPROM angeklickt Nun kann im gleichen Verfahren eine entsprechende Datei mit Daten f r das EEPROM in den AVR geladen werden 4 7 2 Software Update mittels Atmel AVR Studio und JTAG ICE Mk II Der In Circuit Emulator JTAG ICE Mk II von Atmel kann neben der Emulation auch zur Program mierung von Flash Speicher und EEPROM des AVR Mikrocontrollers verwendet werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 62 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7 Di Atmel Flip x Fie Buffer Device Settings Help PS w r A Et FLASH Buffer Information Operations Flow ATSOUSB1287 Signature Bytes Es pz p2 Size 120 Range 0x0 0x359 Device Boot Ids po be Checksum 0x 1DEE2 I c etie eicere Bootloader ver 1 0 1 E Program HEX File Trylrq hex Abbildung 4 9 Der Inhalt 2431 bytes der Programmdatei TryIrq hex wurde in den Flash AMEL Speicher des Mikrocontrollers geladen Die gr nen Punk te links neben den Aktionen Eu Jd s Erase Program Verify zei IL gen an dass diese erfolgreich verify PASS Jusson durchgef hrt wurden Hierzu wird im AVR Studio der Men punkt Tools Program AVR Auto Connect gew hlt Das Fenster des AVR Programmer aus Abbildung 4 10 erscheint Bootloader und Applikation gemeinsam im Speicher Im Dialogfenster AVR Programmer das vom AVR Studio aus aufgerufen werden kann
244. t ct Beschreibung Ein bzw Ausschalten der beiden Message LEDs des AVR Parameter Bedeutung Number Gibt den Index jener Leuchtdiode n an die ein bzw ausgeschal tet werden soll en Kann folgende Werte annehmen 51 2 MSG LED 1 5 2 MSG LED 2 oder 51 2 MSG LED ALL Status De niert ob die Leuchtdiode ein oder ausgeschaltet werden soll M gliche Wer te 5 2 MSG LED STATUS 512 MSG LED STATUS OFF R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Werden ung ltige Parameter bergeben so wird der aktuelle Status der Leuchtdioden nicht ver ndert e Bevor diese Funktion verwendet werden kann muss SL2_Init aufgerufen werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 152 9 SOFTWARE FUNKTIONSBIBLIOTHEK Beispiel Einschalten von Leuchtdiode 1 die Leuchtdiode wird nicht wieder ausgeschaltet int main function that has to b xecuted in every appli cation to initialize the interface with the FPGA SL2 Init switch on AVR LED 1 SL2 AvrSetMsgLed SL2 MSG LED 1 SL2 MSG LED STATUS ON ensure that the program NEVER ends as there is no operating system 1 1 return 0 9 4 3 SL2_AvrGetKey uint8_t SL2_AvrGetKey in uint8_t Number Beschreibung berpr ft ob die Taster beim AVR gedr ckt sind oder nicht Parameter Bedeutung Number Gibt den Index des Tasters an
245. t das Vorzeichen des Stellwinkels gew hlt werden Vielmehr wird der richtige Wert f r die Drehrichtungsumkehr im Rahmen des Kalibrierver fahrens Abschnitt 7 6 1 ermittelt und bleibt dann f r die gesamte Lebensdauer des betreffenden Ser vos xiert Drehungen entgegen der mathematisch positiven Richtung also im Uhrzeigersinn werden durch negativer Winkelwerte repr sentiert 7 5 3 1 Register ModelrqMask Bit 7 6 5 4 3 2 1 0 Adr 1 Adr ImSqe Mode Reverse Active Tabelle 7 6 Register ModeIrqMask Adr 0x8440 2ns ng ist die Servonummer 0 bis 23 Der Initiali sierungswert nach dem Einschalten ist 0x0000 Les und schreibbar SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 5 SERVOPULSGENERATOR 95 Bit 3 IrqMsk Ist dieses Bit gesetzt so l st die Auswertung des zuvor vom Mikrocontroller ge schriebenen Servosequenzauftrages bestehend aus den Werten f r PhiStart DeltaPhi und NrOf Deltas einen Interrupt auf der Leitung aus Ein Interrupt wird nur ausgel st wenn sich das Servo im Mode PhiSpeed be ndet Bit 2 Mode Dieser Eintrag stellt den Modus f r das Servo ein Folgende Modi sind m glich 0 PwmDirect Das Servo wird direkt durch die Eingabe der PWM Impulsl nge gesteuert 1 PhiSpeed Das Servo wird durch die Eingabe eines Anfangswinkels eines Increment Decrementwinkels um den sich der Winkel pro Zeitschritt ver ndert und die Anzahl der
246. t die UART Parameter Bedeutung baudRate Gibt den Wert f r das Baudrate Register an Dieser Werte muss mit dem Makro UART CALC BAUDRATE berechnet werden R ckgabewert Diese Funktion hat keinen R ckgabewert SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 6 UART 163 Anmerkung e Aufgrund des verwendeten 8MHz Systemtaktes k nnen nur folgende g ngige Baudraten feh lerfrei generiert werden siehe AT90USB1287 Datenblatt Kapitel 18 10 2400 4800 9600 19200 38400 Beispiel Initialisierung und Verwendung des UART KR ELLI ES LET EAE PEEL AAAS PLP ISAT IS AA ELE EFFET includes KW RETE EE FERE PEE LLLI DEEP EE SLIDE include lt avr interrupt h gt include uart h never blocking putc int nb putc char c if uart is tx full return 1 uart putc c return 0 never blocking getc int nb getc char xc if uart is rx empty return 1 return uart_getc c do all the initialization stuff here void Init void initialize uart uart_init UART_CALC_BAUDRATE 38400 enable interrupts sei program entry point int main void char initialize system Init read character uart getc SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 164 9 SOFTWARE FUNKTIONSBIBLIOTHEK print character uart putc oc print string uart puts blaaah never retu
247. t has to b xecuted in every appli cation to initialize the interface with the FPGA InitSandboxS2 initialize the USB port to send debug information to the PC TextInterfacelnit 38400 initialize the memory card this has to be done here AND before the memory card is used because otherwise there occur problems with various cards at power on do Temp mmc init while Temp SUCCESSFUL clear all LEDs again SetLedClearAll SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 212 9 SOFTWARE FUNKTIONSBIBLIOTHEK wait until the key is released and pressed again AvrWaitOnKey KEY 1 KEY_NOT_PRESSED AvrWaitOnKey KEY 1 KEY PRESSED initialize the memory card again do Temp mmc init while Temp SUCCESSFUL printf accessing memory card n save cluster OFFSET und size fat_cluster_data_store get cluster size and bytes per sector ClusterSize GetClusterSize BytesPerSec GetBytesPerSec print some more data on the screen printf reading Cluster size ClusterSize printf reading bytes per sector u n BytesPerSec while 1 return 0 9 10 5 fat_search_file uint8 t fat search file inout uint8 t File Name inout uinti16 t Cluster out uint32 t Size out uint8 t Dir_Attrib inout uint8 t Buffer
248. te rot ROT_NORMAL initialize system Init set AVR status led and wait on key SL2 AvrSetMsgLed SL2 MSG LED 0 SL2 MSG LED STATUS ON SL2 AvrWaitOnKey SL2 KEY 0 SL2 KEY PRESSED 512 AvrWaitOnKey SL2 KEY 0 SL2 KEY NOT PRESSED SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 45 print welcome messag fprintf gStrmUSB Servo calibration program n fprintf gStrmUSB Press AvrKeyO for value increment Nn fprintf gStrmUSB Press AvrKeyl for value decrement Nn fprintf gStrmUSB Press AvrKeyO0 and AvrKeyl together to change servo rotation An r set servo mode to PWM direct mode RC SetServoMode SERVO TO USE RC SERVO MODE PWM DIRECT set servo PWM pulse length RC SetServoPwmDirect SERVO TO USE pwm set LED to signal active servo port RC SetLedBrightness SERVO TO USE Oxff for switch GetKeysState increment PWM pulse length case INCREMENT pwmt fprintf gStrmUSB PWM u n pwm break decrement PWM pulse length case DECREMENT pwm fprintf gStrmUSB PWM u n pwm break switch servo rotation case SELECT if rot ROT REVERSE fprintf gStrmUSB Rotation normal n RC SetServoRotation SERVO
249. test hit char uart usb test hit Beschreibung Pr ft ob der Empfangspuffer leer ist ob Daten gelesen werden k nnen R ckgabewert R ckgabewert Beschreibung Data Gibt Null zur ck wenn der Puffer nicht leer ist Sonst eine Zahl ungleich Null Anmerkung e Bevor diese Funktion verwendet werden kann muss uart usb init aufgerufen werden Beispiel siehe Abschnitt 9 7 1 9 7 5 uart usb tx ready char uart usb tx ready Beschreibung Pr ft ob der Sendepuffer voll ist ob Daten geschrieben werden k nnen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 171 R ckgabewert R ckgabewert Beschreibung Data Gibt Null zur ck wenn der Puffer nicht voll ist Sonst eine Zahl ungleich Null Anmerkung e Bevor diese Funktion verwendet werden kann muss uart_usb_init aufgerufen werden Beispiel siehe Abschnitt 9 7 1 9 7 6 uart_usb_flush void uart usb flush Beschreibung Sendet denn Puffer gibt ihn zum Senden frei R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Da diese Funktion jede Millisekunde aufgerufen wird sollte man sie manuell nicht benutzen e Bevor diese Funktion verwendet werden kann muss uart usb init aufgerufen werden Beispiel siehe Abschnitt 9 7 1 9 8 RoboticsChip 9 8 1 RC Init void RC Init Beschreibung Initialisiert die Verbindung mit dem Robotics Chip SVN 408
250. tics Chips sind 16 Bit breit so dass f r einen Zugriff auf das komplette Register die oben angesprochene Reihenfolge einzuhalten ist Soll lediglich auf die unteren 8 Bit eines Registers zugegriffen werden oder sind ohnehin nur diese 8 Bit belegt so kann der Zugriff unmittelbar in einem AVR Schreib oder Lesezyklus geschehen 7 2 Interrupts Der HSSE Robotics Chip kann dem Mikrocontroller das Eintreten verschiedener Ereignisse mittels der External Interrupt Pins INTO und INT1 mitteilen INTI Zuletzt durch den Mikrocontroller aufgegebener Servosequenzauftrag bestehend aus PhiStart DeltaPhi und NrOfDeltas wird nun bearbeitet Daher kann ein neuer Auftrag angenommen wer SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 84 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP den Dieses Flag existiert einzeln f r jedes Servo Die Auftragsannahme geschieht intern in der Reihenfolge der Servonummern so dass es meist ausreicht das Servo mit der h chsten Nummer zur Ausl sung dieses Interrupts zu verwenden Wenn alle Servos die gleiche Anzahl an Delta Schritten vorgegeben wird k nnen so alle Servos im gleichen Arbeitstakt mit Bewe gungssequenzen versorgt werden INTO Neue Daten sind von der PS 2 Schnittstelle eingetroffen Da diese Daten f r die angeschlossene Maus relativ zur zuletzt eingenommenen Position angegeben werden darf dieses Ereignis nicht bersehen werden INTO Neue Daten vom RC Empf nger liegen bereit Dies bedeutet nicht da
251. tion verwendet werden kann m ssen SL2_Init und RC Init aufge rufen werden SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 189 Beispiel Die Pulswiederholungszeit wird auf ihren Initialwert gesetzt int main proxy function for whole initialization Init set the impulse time to its default values RC_SetServoTuneFine 619 RC_SetServoTuneCoarse 619 while 1 return 0 9 8 22 RC_GetPs2Data void RC GetPs2Data in RC Ps2Data xData Beschreibung Liest die aktuellen Posititionsdaten der PS 2 Maus aus dem RoboticsChip und speichert diese in der der Funktion bergebenen Datenstruktur ab Parameter Bedeutung Data Beinhaltet die Posititionsdaten der PS 2 Maus Die Datenstruktur Ps2Data ist in Abschnitt 9 11 auf Seite 216 erkl rt R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Die Positionsdaten auf den Servo LEDs 0 und 1 ausgeben int main RC_Ps2Data MouseData proxy function for whole initialization Init SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 190 9 SOFTWARE FUNKTIONSBIBLIOTHEK clear all LEDs RC SetLedClearA11 while 1 RC_GetPs2Data amp MouseData show DeltaX and DeltaY on servo LEDs 0 and 1 clicks are shown on the FPGA message LEDs
252. tion zu gew hrleisten m ssen alle Aktionen wie in Abbildung 2 3 ausgef hrt werden SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 20 2 ERSTE SCHRITTE Found New Hardware Wizard Found New Hardware Wizard Welcome to Ihe Found New Hardware Wizard Weidows wil for conent aru Eed softam by on your computer on the installation CD or on the Update Vei is min your person Bend gras poto Thee waa helps you ratal software JTAGICE ek 1 your hardware come with an installation CD Can Windows connect to Windows Update to search for EP floppy disk insert now actua Yes tha time Yes now and every tme connect 8 device No net tha tee What do you wort the to do O kaal the atomatraly Recommended G rat al trom a ist location Advanced Check Next to cortes Check to cortes Found New Hardware Wizard Found New Hardware Wizard Select the device driver you want to install for this hardware Search f r the beat diver e these Select the manufacturer and model of your hardware device and then dck Next f you T have a that contains the diver you want to install cick Have Duk Use the check boxes below to Im or expand the Gel aut search which nades ocs paths and removable meda The best dever found wil be 7 Siow hardware Model J
253. tiplied by 4096 shift left by 12 bits write the parameters into the RoboticsChip and start the calculation RC SetCordicCalculationArguments 4096 12868 0 RC CORDIC MODE VECTORING BC CORDIC COORD CIR RC SetCordicCalculationStart wait until the calculation is done and read the result RC CordicWaitOnResult Result RC GetCordicCalculationResult z 0 Result will have the value 20687 here which is equal to atan pi 2 14 return 0 9 8 35 RC GetRoboticsChipVersion uintl6 t RC GetRoboticsChipVersion Beschreibung Liest die Version der Kon guration des RoboticsChips R ckgabewert R ckgabewert Beschreibung Version Versionsnummer als Dezimalzahl Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2 Init und RC Init aufgerufen werden und der CORDIC Interrupt muss aktiviert sein 9 8 36 RC GetGlobalTimer uinti16 t RC GetGlobalTimer Beschreibung Liest die Anzahl der seit dem Einschalten vergangenen 20 ms Takte des RoboticsChips R ckgabewert R ckgabewert Beschreibung Result Anzahl der 20 ms Takte des RoboticsChips SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 201 Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Schaltet LED O nach 100s ein int main void uintl6_t Timer 0
254. tleitung des Mi krocontrollers Anders als bei den Peripherieeinheiten des AVRs werden die Register der Periphe rieeinheiten welche das FPGA zur Verf gung stellt bei einem Reset nicht ver ndert Nur ein Aus Einschaltvorgang setzt diese Werte wieder auf den Initialisierungszustand zur ck Ausgenommen von dieser Regel sind lediglich die Interrupt Flag Register Abschnitt 7 2 Diese werden durch einen Reset gel scht also mit Bits des Wertes 0 gef llt 6 2 1 Hardware Bootloader Aufruf des AVRs Wird vor Loslassen der Reset Taste die Taste KeyFpgaO gedr ckt und erst nach dem Loslassen der Reset Taste wieder losgelassen so ruft der HSSE Robotics Chip die Hardware Boot Funktion HWB des AVR Mikrocontrollers auf Aktivieren der Leitung ALE mit dem Deaktivieren des Reset Impulses Soll diese Funktion schon beim Einschalten aufgerufen werden so sind bereits vor dem Einschalten beide Tasten zu dr cken Man l sst dann zuerst die Reset Taste und dann die Taste KeyF pga0 los Der Mikrocontroller ruft als Reaktion statt des normalen Applikationsprogramms ein Bootloader programm auf Voraussetzung ist dass die Fuse HWBE des AVRs entsprechend programmiert ist Dies ist normalerweise jedoch nicht der Fall siehe Abschnitt 4 6 Weitere Informationen gibt das Datenblatt des AT90USB 1286 7 wenn man es nach dem Stichwort HWB durchsucht Falls das FPGA mit einer eigenen Kon guration betrieben werden soll ist zu beachten dass die Mindest
255. tray Men des Programms Sbx Ne vx RemMedia c Zun chst muss das Laufwerk der SD Karte ausgew hlt werden Wird das entsprechende Lauf werk nicht automatisch angezeigt so kann dieses manuell ber die Option Show all drives ausgew hlt werden Wenn diese Option aktiv ist muss darauf geachtet werden dass auch wirklich das richtige Laufwerk gew hlt wird Abb 5 6 zeigt die Auswahl des Laufwerks bei einer 128 MB Speicherkarte d Standardm ssig erstellt das Programm zwei Partitionen eine vom Typ SANDBOXX und eine vom Typ HUGE siehe Abb 5 7 Um die SD Karte mit der SandboxS 2 verwenden zu k nnen muss die Partition vom Typ SANDBOXX gel scht werden und Partition 0 auf den Typ FAT 16 umgestellt werden siehe Abb 5 8 e x Nach der zweimaligen Best tigung mit OK wird das SD Karten Laufwerk ausgew hlt FAT als Dateisystem eingestellt und die Partition formatiert siehe Abb 5 9 Die Karte kann jetzt sowohl von der SandboxS 2 als auch vom PC gelesen und beschrieben werden SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 5 2 SD CARD 67 Select drive Prepare SandboxX removable media Select drive Abbildung 5 6 Auswahl des Laufwerks Edit partitions Prepare SandboxX removable media Edit partitions Abbildung 5 7 Standard Partitionierung SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 68 5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7 Edit p
256. ttributesTable void RC SetGlobalServoAttributesTable in RC ServoAttributes Beschreibung Setzt die angegebenen Attribute f r alle Servos Parameter Bedeutung ServoAttributes Feld von ServoAttributes Datens tzen F r jedes Servo muss ein Datensatz im Feld enthalten sein siehe Abschnitt 9 11 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 187 R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung e Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufge rufen werden Beispiel Kopiert die Tabelle mit den Werten der Servolinearisierung dem Offsetwinkel und dem Reverse Bit in den RoboticsChip und f hrt die Mittelposition aller Servos an int main uint8 t i 0 proxy function for whole initialization Init copy the linearisation table into the RoboticsChip RC SetGlobalServoAttributesTable P gTable activate all servos for i20 i RC NUMBER OF SERVOS i RC SetServoPhiDirect i 1609 while 1 return 0 9 8 18 RC_SetGlobalServoAttributesTable_P Gleiche Funktion wie RC_SetGlobalServoAttributesTable die Tabelle muss jedoch im Programmspeicher abgelegt werden Siehe dazu avr libc Manual Kapitel Program Space Utilities 9 8 19 RC_SetGlobalServoAttributesTable_E Gleiche Funktion wie RC_SetGlobalServoAttributesTable die Tabelle muss jedoch
257. tungstasten am Gamepad gedr ckt wird int main uintl6_t Data proxy function for whole initialization Init clear all LEDs again RC SetLedClearA11 while 1 Data RC GetGamePadButtons ignore all other buttons Data Data gt gt 4 Data Data amp Ox000F if Data OxOF switch LED on RC SetLedBrightness 0 255 else clear LED SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 193 RC_SetLedBrightness 0 0 return 0 9 8 26 RC GetGamePadJoystickData void RC GetGamePadJoystickData in uint8 t Position out RC GamePadJoystickData xData Beschreibung Liest die aktuelle Stellung der Joysticks am Sony Playstation 2 Gamepad aus dem RoboticsChip Parameter Bedeutung Position Gibt an ob der linke oder rechte Joystick verwendet wird Dieser Parameter kann den Wert GAME LEFT JOY oder RC GAME PAD RIGHT JOY an nehmen Data Beinhaltet die Stellung beider Joysticks Der Aufbau dieser Struktur ist in Ab schnitt 9 11 auf Seite 216 erkl rt R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Die Bewegungen des linken Joysticks an den Servo LEDs 0 und 1 anzeigen int main RC_GamePadJoystickData Data proxy function for whole initialization Init clear all
258. u bertragende Datei ausw hlen Dateierweiterung hex Sie be ndet sich im Pro jektverzeichnis im Unterordner default Mit der Schaltfl che Program wird die Datei in den Mikrocontroller bertragen Abbildung 2 16 Sobald die bertragung abgeschlossen wurde wird das SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 34 2 ERSTE SCHRITTE Programm ausgef hrt Durch einen Reset der mit der Reser Taste ausgel st werden kann f ngt das Programm wieder vom Anfang an SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 2 4 HELLO WORLD IN DER SANDBOX VERSION 35 2 4 4 2 Verwenden des Debuggers Mit dem Debugger k nnen Programme Schritt f r Schritt oder bis zu bestimmten Haltepunkten Breakpoints ausgef hrt werden Weiters ist es m glich Werte von Variablen oder Speicherbereichen w hrend der Abarbeitung anzeigen zu lassen Ein m chtiges Werkzeug zur Fehlersuche Jedoch gibt es Einschr nkung bei der Verwendung der USB Funktion Wird der Prozessor durch den Debugger angehalten k nnen die USB Nachrichten vom Computer nicht mehr durch den Mikrocontroller quit tiert werden Nach kurzer Zeit zeigt das Betriebssystem ein fehlerhaftes Ger t an Zus tzlich k nnen A sich die Interrupt Service Routinen ISR st rend auswirken e Debugger starten CR n n 9 ER 8 2 Abbildung 2 17 Starten des Debuggers Im Menu wird der Punkt Debug gt Start Debugging ausgew hlt Der Debugger versuc
259. uchbar Entfernen Sie vor dem Montieren der Platine auf einem Roboter unbedingt die Akkuzellen aus den Haltern Gerade von den Schrauben und dem Schraubendreher geht f r eine mit Akkuzellen versehene Platine eine gro e Gefahr aus Da auch Halter f r AAA Zellen erh ltlich sind k nnen diese wahlweise best ckt werden Hierdurch ergibt sich eine Gewichtsersparnis von ca 60 g der jedoch ein erheblich ung nstigerer Innenwider stand der Zellen und deren geringere Kapazit t gegen berstehen F r Anwendungen mit vielen Servos ergibt sich eine Gesamtstromaufnahme die mit AAA Zellen beim derzeitigen Stand der Akkutechno logie nicht befriedigt werden kann 3 4 Ein Ausschalter Die Versorgungsspannung der SandboxS 2 wird ber einen Leistungs MOSFET der neuesten Gene ration ein und ausgeschaltet Angesteuert wird dieser Transistor sowohl vom Hauptschalter als auch Positiver Akkuspannungspol Hauptschalter gm Stellung ein High bei 0 lt eingesteckter SD Karte Zr N Kanal MOSFET Abbildung 3 4 Ein und Ausschalten der Spannungsversorgung mittels MOSFET durch den SD CARD Slot Sobald der Schalter in die Ein Position gebracht oder eine SD Karte ein SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 3 5 ENTLADESCHALTUNG 51 geschoben wird ist die Versorgungsspannung eingeschaltet Mit eingesteckter Karte wird daher der Hauptschalter wirkungslos 3 5 Entladeschaltung Nur weni
260. und der e Anpassung der Bewegungsgeschwindigkeit der Servos so dass alle Servos sich synchron und SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 82 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP gleichf rmig bewegen wobei die Sollwinkel in einem festen Zeitraster erreicht werden Zum entsprechenden Zeitpunkt erfolgt die e Ausgabe eines Interrupt Signals an den Mikrocontroller um die Bereitschaft f r neue Zielwinkel aller Servos mitzuteilen die Mittelstellung der Servos kann zur Justage und als Servotest per Tastendruck angew hlt werden e CORDIC Coprozessor zur Berechnung der inversen Kinematik und zur Koordinatentransfor mation Einlesen des PPM Signals aus der Demodulationsstufe eines Modellbauempf ngers Einlesen der Tasten und Joystickstellungen von einem handels blichen kabelgebundenen oder drahtlosen Playstation 2 GamePad Einlesen der Bewegungsdaten einer PS 2 Maus und e feinstu ge Helligkeitssteuerung von 24 LEDs Diese Funktionen wurden auf der Abstraktionsebene RTL Register Transfer Level in VHDL mo delliert wobei haupts chlich das Entwurfsparadigma der hierarchischen FSMD verwendet wurde Zur Simulation wurde Mentor Graphics Modelsim eingesetzt Synthesewerkzeug war Synplicity Synplify in der Lattice Version Als Backend Werkzeug kam die Toolsuite ispLever von Lattice in der Starter Version zum Einsatz Der Themenbereich Chip Design ist fester Bestandteil der Studieninhalte des Studiengangs HSSE an
261. unktion 9 8 30 RC SetBuzzerPhaseLow void RC SetBuzzerPhaseLow in uintl16 t PhaseLow Beschreibung Bestimmt die L nge der Low Phase des Piezo Summer Signals Rechtecksignal Die Frequenz dieses Signals kann wie folgt berechnet werden 1 125 ns frect Parameter Bedeutung PhaseLow L nge der Low Phase des Piezo Summer Signals R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufgerufen werden Beispiel Erzeugt ein Rechtecksignal mit einer Frequenz von 100 Hz f r den Summer und schaltet diesen auf maximale Lautst rke int main proxy function for whole initialization Init j clear all LEDs again RC SetLedClearA11 generate a 100Hz oscillation 2 40000 125 0 015 RC_SetBuzzerPhaseHigh 40000 RC SetBuzzerPhaseLow 40000 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 8 ROBOTICSCHIP 197 activate the buzzer high volume RC_SetBuzzerVolume RC_BUZZER_VOL_HIGH do nothing while 1 return 0 9 8 31 RC_SetCordicCalculationArguments uint8 t RC_SetCordicCalculationArguments uintl6_t RegisterX 16 t RegisterY 16 t RegisterZ uint8 t Mode uint8 t CoordSys uin et EI in in in uin in in Beschreibung Mit di
262. unktionen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 110 7 ROBOTIK PERIPHERIE HSSE ROBOTICS CHIP Abbildung 7 18 Taster am FPGA KeyFpga0 In Zusammenhang mit der Reset Taste kann die Hardware Boot Funktion des AVRs akti viert werden Mehr hierzu im Abschnitt 6 2 1 Au erhalb des Reset deaktiviert ein Druck auf die Taste s mtliche Servos siehe Abschnitt 7 9 KeyFpgal Diese Taste erm glicht den Wechsel in den Servogrundstellungsmodus und zur ck Eine genaue Beschreibung ndet sich im Abschnitt 7 8 7 13 RC Empf ngerdecoder 7 13 1 RC Empf ngeranschluss Der RC Empf ngeranschluss RC steht f r Remote Control also Fernsteuerung dient zum Einlei ten des PPM Signals wie es nach der Demodulationsstufe eines handels blichen RC Empf ngers zur Verf gung steht Auf diese Weise k nnen bis zu 12 Kan le empfangen werden wobei die Kanalzahl des Empf ngers irrelevant ist Empfangen werden auf diese Weise stets alle Kan le des Senders Dies gilt auch wenn der Empf nger eine andere Kanalzahl als der Sender hat AM Empf nger sind jedoch nicht mit FM Sendern mischbar da die Demodulationsstufe des Empf ngers nicht f r die Demodu lation von FM Signalen FSK geeignet ist Angeschlossen wird der Empf nger an die Buchse in Bild 7 19 Abbildung 7 19 Anschluss f r das Signal aus der Demodulationsstufe eines RC Empf ngers Bei den meisten Empf ngern steht dieses Signal nicht
263. usteins zur Folge hat Um die Stellung einer Taste auswerten zu k nnen ist der interne Pull Up Widerstand des entspre chenden AVR Ports zu aktivieren Solange die Taste nicht gedr ckt und der Kontakt demnach ge ffnet ist wird vom AVR ein 1 Bit eingelesen Dr ckt man die Taste so liegt das Potential GND am Port so dass ein O Bit eingelesen wird 5 5 Status LED Am Mikrocontroller stehen zwei LEDs siehe Abb 5 13 zur Anzeige beliebiger Statusmeldungen zur SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 5 6 ERWEITERUNGSSTECKER 71 Abbildung 5 13 LED am Mikrocontroller zur Anzeige von Statusmeldungen Verf gung Die Anode jeder LED ist ber einen Widerstand zur Strombegrenzung an einen Port des AVRs angeschlossen Der Port wird als Ausgang programmiert Gibt man auf dem Port ein 1 Bit aus so leuchtet die LED w hrend Sie bei Ausgabe einer 0 dunkel bleibt Stellt man den Port als Eingang ein und aktiviert den zugeh rigen Pull Up Widerstand so kann man hierdurch unter Umst nden ein schwaches Glimmen der LED erzielen Dessen Intensit t h ngt stark vom Typ der best ckten LED und sogar von Serienstreuungen in der LED Fertigung ab Es kann daher durchaus sein dass die LED auf diese Weise berhaupt nicht zum Leuchten gebracht werden kann 5 6 Erweiterungsstecker Auf dem AVR Erweiterungsstecker in Form einer 10 poligen Stiftwanne im 2 54 mm Raster darge stellt in Abb 5 14 ist sowohl die Batteriespannung als au
264. verwendet werden wenn der entspre A chende Servo nicht belastet wird auch nicht durch das Eigengewicht des Spinnenk rpers e Bevor diese Funktion verwendet werden kann m ssen SL2_Init und RC Init aufge rufen werden Beispiel Alle Servos in den PwmDirect Modus schalten int main uint8 t i 0 proxy function for whole initialization Init activate all servos RC_SetGlobalServoMode RC_SERVO_MODE_PWM_DIRECT move all servos to their middle position for 0 i RC NUMBER OF SERVOS i RC_SetServoPwmDirect 1 2048 SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 176 9 SOFTWARE FUNKTIONSBIBLIOTHEK while 1 return 9 8 6 RC_SetServoPwmDirect inline void RC_SetServoPwmDirect in uint8_t ServoNumber in uint16 t Length Beschreibung Die Funktion erm glicht die Bewegung eines Servos direkt ber die Pulsl nge zu steuern Parameter Bedeutung ServoNumber Nummer des Servos das bewegt werden soll Die Nummerierung der Servos ist in Abb 7 1 auf Seite 81 ersichtlich Length Pulsl nge muss im Bereich 0 4095 liegen R ckgabewert Diese Funktion hat keinen R ckgabewert Anmerkung m e Die Drehrichtung des Servos ist nicht bei allen Herstellern bzw Servomodellen gleich e Um SetServoPwmDirect verwenden zu k nnen muss der angegebene Servo zuvor in den Modus RC SI MODI E PWM DI
265. verwendet werden kann muss SL2_Init aufgerufen werden Beispiel Liest Daten aus der Datei test c im Root Directory der SD Karte speichert diese im RAM zwischen und berschreibt die Datei auf der SD Karte mit eigenen Daten Die auf die SD Karte geschriebe nen Daten werden wieder mit den Ausgangsdaten verglichen und die Datei wird dann wiederherge stellt int main uint8 t Data 512 his is a simple test for the SD card uint8 t DataBackup 512 uint8 t DataReadback 512 uintl16 t ClusterVar 0 uint8 t DirAttrib 0 uint32 t Size 0 uint8 t ClusterSize Ore uintl6_t BytesPerSec 0 SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 10 SD KARTE 215 uintl6_t Cnt 0 uint8 t Temp 0 function that has to b xecuted in every application to initialize the interface with the FPGA Init initialize the USB port to send debug information to the PC TextInterfaceInit 38400 initialize the memory card this has to be done here AND before the memory card is used because otherwise there occur problems with various cards at power on do Temp mmo init while Temp SUCCESSFUL clear all LEDs again SetLedClearAll wait until the key is released and pressed again AvrWaitOnKey KEY 1 KEY_NOT_PRESSED AvrWaitOnKey KEY 1 KEY PRESSED initialize the memory card again do Temp mmc_init wh
266. vo Der Sollwinkel wird durch eine Impulsdauer von au en vorgegeben Der elektronische Regler misst den Ist Winkel des Hebelarms wobei ein Potentiometer als Sensor fungiert und stellt den Servoarm mittels eines Elektromotors mit nachgeschaltetem Geriebe so ein dass Soll und Ist Winkel im Rahmen einer bestimmten Toleranz bereinstimmen SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 7 3 SERVOSTEUERUNG 91 In Summe ergeben sich Ungenauigkeiten die zwar im Modellbaubereich meist tolerabel sind aber in der Robotik sehr st rend wirken In Abb 7 6 ist der Zusammenhang von Pulsl nge und einge 74 200 190 2 180 170 160 150 140 130 120 110 100 90 80 70 50 40 30 20 g 10 Servohebelwinkel Pulsl nge ms l _ Abbildung 7 6 Gemessener Zusammenhang von Pulsl nge Soll Winkel und resultierendem Servoar meinstellwinkel bei einem idealen blaue Gerade und einem realen rote gekr mmte Linie Servo Im Bild ist die Nichtlinearit t des Zusammenhangs beim realen Servo zur Verdeutlichung etwas bertrieben dargestellt stelltem Winkel die sogenannte Servokennlinie gemessen worden Die Abweichung von der idealen Kennlinie blau ist deutlich sichtbar Das Bein eines Laufroboters etwa wird in seinen Gelenken so abgewinkelt dass der Fu punkt eine bestimmte Raumkoordinate x z erreicht Die beschriebene Ungenauigkeit wirkt sich unmittelbar auf
267. voCurrentPwm verwenden zu k nnen muss der angegebene Servo zu vor in den Modus RC SERVO MODE PWM DIRECT geschalten werden e Wenn RC GetServoCurrentPwm direkt nach RC Set ServoPwmDirect aufgeru fen wird so wird nicht der soeben geschriebene Wert zur ckgegeben sondern noch der alte Wert da der RoboticsChip nur alle 20 ms die Daten aus den internen Registern abholt e Bevor diese Funktion verwendet werden kann m ssen 51 2 Init und RC Init aufge rufen werden Beispiel Schreiben einer PWM Pulsl nge diese wieder lesen und mit dem geschriebenen Wert verglei chen SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 178 9 SOFTWARE FUNKTIONSBIBLIOTHEK int main uintl6_t Data 0 proxy function for whole initialization Init elear all LEDs RC_SetLedClearAll RC_SetServoMode 0 RC SERVO MODE PWM DIRECT RC SetServoPwmDirect 0 1609 Delay is n ded to ensure that the command has been executed by the RoboticsChip delay ms 100 Data RC GetServoCurrentPwm 0 signal that everything is ok if Data 1609 RC_SetLedBrightness 0 255 while 1 return 0 9 8 8 RC_SetServoPhiSpeed inline void RC SetServoPhiSpeed Beschreibung uint8 t ServoNumber uintl6 t InitialAngle int16 t DeltaPhi 16 t NumberOfDeltas in in in in Erm glicht die Bewegung eines Servos
268. von der SD Karte gelesen und geschrieben werden z B um Positionsdaten f r Servos einfach zu verwalten Die einzelnen Schnittstellen und das jeweilige Verhalten werden im Folgenden erl utert SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 9 1 BERSICHT DER SCHNITTSTELLEN 147 Vorab eine bersicht ber die Methoden bzw Funktionen der einzelnen Schnittstellen Modul Funktionalit t Methoden Funktionalit t Methoden Funktionalit t Methoden Funktionalit t Methoden Modul Funktionalit t Methoden Modul Funktionalit t Methoden Modul Funktionalit t Methoden SandboxS2_lib Initialisierung SL2 Init Tasten und Leuchtdioden des AVR SL2 AvrSetMsgLed SL2 AvrGetKey SL2 AvrWaitOnKey Lesen und Schreiben zus tzlicher Pins SL2_ExtAvrSetPinMode SL2_ExtAvrGetPinValue SL2_ExtAvrSetPin Value Strom und Spannungsmessung SL2_GetCurrent SL2_GetCurrentLowAmpli cation SL2_GetCurrentHighAmpli cation SL2_GetBattery Voltage SL2_ExtAvrGetAdc Value uart UART Kommunikation uart_init uart_init_double_speed uart_putc uart_puts uart_getc uart_is_rx_empty uart is tx full uart usb lib Virtuelle serielle Schnittstelle vervendet USB uart usb init uart usb putchar uart usb getchar uart usb test hit uart usb tx ready uart usb flush RoboticsChip Initialisierung RC Init SVN 408 PFAFF SEPTEMBER 20 2007 SBXS2MANUAL TEX 148 9 SO
269. while SL2 AvrGetKey SL2 KEY 0 SL2_AvrGetKey SL2_KEY_1 delay loop 1 0xff return SELECT else if SL2 AvrGetKey SL2 KEY 0 for i 0 i lt 0xfff i SBXS2MANUAL TEX SVN 408 PFAFF SEPTEMBER 20 2007 8 3 HEXAPOD KALIBRIERUNG 141 _delay_loop_1 0xff if SL2_AvrGetKey SL2_KEY_0 break return INCREMENT else if SL2_AvrGetKey SL2_KEY_1 for i 0 i lt 0xfff i delay loop 1 0xff if SL2 AvrGetKey SL2 KEY 1 break return DECREMENT return NO LH K M program entry point int main void uintli6 t angle 1609 uint8 t servo 0 Initialize system Init copy the linearisation table into the RoboticsChip RC SetGlobalServoAttributesTable P gTable wait on key SL2 MSG LED STATUS 512 AvrSetMsgLed 512 MSG LED 0 SL2 AvrWaitOnKey 512 KEY 0 SL2 KEY PRESSED SL2 AvrWaitOnKey 512 KEY 0 SL2 K EY NOT PRESSED print welcome messag fprintf gStrmUSB Hexapod calibration program n fprintf gStrmUSB Press AvrKeyO for angle increment hold key increase speed Nn fprintf gStrmUSB Press AvrKeyl for angle decrement hold key to increase speed fprintf gStrmUSB Press AvrKeyO and AvrKeyl together to_select_next_servo n set servo mode RC_S
270. zu ist der Wert 0 einzustellen was auch der Einstellung nach dem Einschalten entspricht Einige Fabrikate verwenden jedoch ein invertiertes Puls Pausen Signal In diesem Fall muss InvPpm auf den Wert 1 eingestellt werden Bits 3 bis 0 NrOfChannels Diese vier Bit breite vorzeichenlose Bin rzahl gibt die Anzahl der Kan le an welche der verwendete Sender hat Die Einstellung nach dem Einschalten ist 0x2 Q 7 13 1 2 Registerblock RcRxChannel 1 bis RcRxChannel 12 Dieser Registerblock gibt die vom Fernsteuerempf nger empfangenen Pulsl ngen f r die Senderkan le 1 bis 12 jeweils mit einer 12 Bit breiten vorzeichenlosen Zahl an Die Kanalzahl des Senders muss zuvor im Register RcRxCtrl korrekt eingestellt worden sein Das Format in dem die Dauer der emp fangenen Pulse angegeben wird ist das gleiche das auch beim Register PwmLen Abschnitt 7 5 4 1 eingesetzt wird Das Eintreffen eines vollst ndigen Satzes neuer Werte also Werte f r alle Kan le wird mittels des Interrupt Flags IFRc im Interrupt Flag Register IrqFlagsOthers Abschnitt 7 2 1 4 angezeigt Ob die neuen Werte sich von den vorigen unterscheiden ist dabei nicht relevant Dieses Interupt Flag l st einen Interrupt auf Leitung INTO aus wenn das Interrupt Mask Bit ImRc im Register IrgMaskRcR xCtrl Abschnitt 7 13 1 1 gesetzt ist Wert 1 Bit Adr 1 unsigned 11 downto 8 Adr unsigned 7 downto 0 Tabelle 7 21 Register RcRxChannel 1 bis RcRxChannel 12 Wert
Download Pdf Manuals
Related Search
Related Contents
Samsung BD-C5900 Наръчник за потребителя AV2009/01 - Bitron Video Stoves WD16v Epson PowerLite 520 NEOSTAR ECO Anwenderhandbuch HOUZER G-100U MIDNITE Instructions / Assembly Keurig Special Edition/Signature Brewing System User Guide 第85回 電気用品調査委員会 議事要録 Les insertions lyriques dans les romans en vers du Copyright © All rights reserved.
Failed to retrieve file