Hochschule Ostwestfalen-Lippe Fachbereich Elektrotechnik und Technische Informatik Schriftlicher Bericht über das Praxisprojekt des Herrn Daniel Klose Matr.-Nr.: 1522 2039 gemäß Bachelorprüfungsordnung für den Studiengang Elektrotechnik in der Fassung der Bekanntmachung vom 30. September 2008 (Verkündungsblatt der Hochschule 2008/Nr. 16). Thema: Hardwareerweiterung für einen mobilen Roboter Prüfer/-in: Prof. Dr.-Ing. Rolf Hausdörfer Der Bericht umfasst 27 Seiten. Erklärung II Ich erkläre, dass ich das vorliegende Praxisprojekt selbstständig angefertigt habe. Zur Anfertigung des Praxisprojektes benutzte ich keine anderen als die angegebenen Quellen und Hilfsmittel. Die Ausfertigung als CD-ROM liegt bei. Lemgo, den 26.07.2012 ___________________________________ (Unterschrift des Autors) Praxisprojekt SS12 Daniel Klose Inhaltsverzeichnis III Inhaltsverzeichnis Tabellenverzeichnis ................................................................................................... V Abbildungsverzeichnis............................................................................................. VI Abkürzungsverzeichnis ..........................................................................................VII 1 Einleitung..................................................................................................................1 2 Sensoren ....................................................................................................................2 2.1 Distanzsensoren ...................................................................................................2 2.2 Positionssensor ....................................................................................................5 2.3 Kanten-/Liniensensoren ......................................................................................8 2.4 Klappensensor .....................................................................................................9 2.5 Lichtschranke ......................................................................................................9 2.6 Radencoder ..........................................................................................................9 2.7 Lichtsensoren ....................................................................................................10 3 Hardwareerweiterungen .......................................................................................11 3.1 Schaltungsänderungen und Funktionen ............................................................11 3.1.1 Integration des 68HCS12 Controllers ........................................................11 3.1.2 Servo-Antrieb .............................................................................................13 3.1.3 Betriebsspannung der Schaltung ................................................................15 3.1.4 Empfänger der Fernbedienung ...................................................................16 3.1.5 Sonstige Änderungen ................................................................................18 3.2 Platinenmodellierung und Realisierung ............................................................20 3.2.1 Hauptplatine ...............................................................................................20 3.2.2 Linien-/Positionssensor Platine ..................................................................21 4 Mechanik ................................................................................................................23 4.1 Akkuhalterung ...................................................................................................23 4.2 Transportklappe .................................................................................................24 5 Zusammenfassung .................................................................................................26 6 Ausblick ..................................................................................................................27 7 Danksagung ............................................................................................................28 Praxisprojekt SS12 Daniel Klose Inhaltsverzeichnis IV 8 Anhang ....................................................................................................................29 A Register des ACX-1001 ..................................................................................29 B Portbelegung 68HCS12...................................................................................31 C Schaltplan Hauptplatine ..................................................................................33 D Schaltplan Linien-/Positionssensorplatine ......................................................34 E Stückliste Hautplatine .....................................................................................35 F Stückliste Linien-/Positionssensorplatine .......................................................36 G Layout und Bestückung der Hautplatine .........................................................37 H Layout und Bestückung der Linien-/Positionssensorplatine ...........................40 I Zeichnung der Transportklappe ......................................................................42 J Zeichnung der Akkuhalterung ........................................................................44 K E-Mail Schriftverkehr mit der Firma PixArt...................................................45 Literaturverzeichnis .................................................................................................46 Praxisprojekt SS12 Daniel Klose Tabellenverzeichnis V Tabellenverzeichnis Tabelle 1: Vergleich der zur Auswahl stehenden Lasermäuse .....................................5 Tabelle 2: Pinbelegung des ACX-1001 ........................................................................6 Tabelle 3: Vergleich des 68HCS12 mit dem Atmel Controller ..................................11 Praxisprojekt SS12 Daniel Klose Abbildungsverzeichnis VI Abbildungsverzeichnis Abbildung 1: Übersicht der Sensoren auf dem Roboter der c’t ....................................2 Abbildung 2: Distanz/Ausgangsspannung Kennlinie des GP2Y0A21YK ...................3 Abbildung 3: Ausgang eines Distanzsensors im Vergleich ..........................................4 Abbildung 4: Übertragungsprotokoll ............................................................................7 Abbildung 5: Ausschnitt einer Übertragung .................................................................7 Abbildung 6: Sensorplatinen ........................................................................................8 Abbildung 7: Schaltplanverbindungen zum 68HCS12 ...............................................12 Abbildung 8: Fehlersignalerzeugung für den Servo-Antrieb im Originalschaltplan ..13 Abbildung 9: Fehlersignalerzeugung für den Servo-Antrieb im neuen Schaltplan ....14 Abbildung 10: Pulsdiagramm einer Servo-Ansteuerung ............................................15 Abbildung 11: Beschaltung des TSOP34836 mit RC-Tiefpass ..................................16 Abbildung 12: Signaldemodulation des Empfängers (TSOP34836) ..........................17 Abbildung 13: Beschaltung der roten LED ................................................................19 Abbildung 14: Neu erstellte Hauptplatine ..................................................................21 Abbildung 15: Ober- und Unteransicht der neuen Positionssensorplatine .................22 Abbildung 16: ACX-1001 Positionssensor im Roboter .............................................22 Abbildung 17: Vorgesehene Befestigung der Akkufächer .........................................23 Abbildung 18: Neue Befestigung der Akkufächer .....................................................23 Abbildung 19: Transportklappe aus dem Erweiterungspaket .....................................24 Abbildung 20: Neue Transportklappe.........................................................................25 Abbildung 21: Überarbeiteter c’t-Bot mit 68HCS12 Controller ................................26 Praxisprojekt SS12 Daniel Klose Abkürzungsverzeichnis VII Abkürzungsverzeichnis A Amper B Byte CAN Controller Area Network dpi dots per inch F Farad FET Feldeffekttransistor GND Ground h hour Hz Hertz IC Integrated Circuit IIC Inter-Integrated Circuit IR Infrarot LED Light Emitting Diode m Meter mil milli-inch MSB Most Significant Bit PWM Pulsweitenmodulation SCLK Serial Clock SD Secure Digital SDIO Serial Data Input Output SMD Surface Mounted Device SPI Serial Peripheral Interface TWI Two-Wire Interface USART Universal Asynchronous Receiver Transmitter V Volt Vcc Versorgungsspannung WLAN Wireless Local Area Network Praxisprojekt SS12 Daniel Klose 1 Einleitung 1 1 Einleitung Roboter übernehmen immer mehr Aufgaben für den Menschen. Arbeiten können meist nicht nur präziser ausgeführt werden, sondern auch in erheblich kürzerer Zeit. Damit ein Roboter das überhaupt leisten kann, muss er seine Umwelt kennen und sich orientieren können. Ein Mensch hat dafür seine Sinnesorgane und nutzt vorzugsweise seine Augen dafür. Um dem Roboter ähnliches zu ermöglichen, werden heute oft schon Kameras verwendet. Verschiedene Sensoren reichen aber auch schon aus, damit sich ein Roboter zurechtfindet. Die Zeitschrift c’t stellt in einem offenem Projekt einen Bausatz für einen kleinen Roboter zur Verfügung, der durch seine verschiedenen Sensoren unterschiedliche kleine Aufgaben bewältigen kann. Das „Gehirn“ des Roboters bildet ein Atmel Mikrocontroller, der durch seine Ports mit den Sensoren und Aktoren des Roboters verbunden ist. Der Roboter, der auch c’t-Bot genannt wird, kann durch weitere Bausätze erweitert werden und erhält dadurch zusätzliche Funktionen. Diese Arbeit beschäftigt sich mit der Hardware des mobilen Roboters der Zeitschrift c’t, die auf einen Mikrocontroller des Typs 68HCS12 abgestimmt werden soll. Weiterhin soll die vorhandene Hardware der c’t untersucht und verbessert werden. Dabei ist die Funktion der Sensoren zu prüfen, die bisher teilweise nur eingeschränkt nutzbar sind. Insbesondere der Positionssensor einer optischen Maus, der unterhalb des Roboters sitzt, soll durch eine Alternative ersetzt werden. Die Hardware soll dafür geändert und durch die Herstellung einer geeigneten Leiterplatte realisiert werden. Dabei soll auch die noch nicht implementierte Hardware für eine Fernbedienung und für einen Betrieb mit Akkus bzw. Batterien integriert werden. Praxisprojekt SS12 Daniel Klose 2 Sensoren 2 2 Sensoren Klappensensor (unterhalb der Platine) Distanzsensor Kantensensor Lichtschranke Radencoder Positionssensor Liniensensoren Abbildung 1: Übersicht der Sensoren auf dem Roboter der c’t [1] 2.1 Distanzsensoren Zur Erkennung von Hindernissen hat der Roboter der Zeitschrift c’t zwei nach vorn gerichtete Sharp GP2Y0A21YK Sensoren, die durch ein gepulstes Infrarotsignal (IRSignal) den Abstand zum Hindernis ermitteln können. Die Sensoren haben einen Messbereich von 10 cm bis 80 cm und einen Blickwinkel von ca. drei Grad. Für die Weiterverarbeitung liefert der Sensor eine analoge Ausgangsspannung bis maximal 3,2 V. Dabei verhalten sich Ausgangsspannung und Distanz nicht proportional zueinander (siehe Abbildung 2). [2] Praxisprojekt SS12 Daniel Klose 2 Sensoren 3 Abbildung 2: Distanz/Ausgangsspannung Kennlinie des GP2Y0A21YK [2] Für einen reibungslosen Betrieb müssen die Sensoren vom Träger und anderen leitenden Teilen isoliert sein. Eine Messung mit dem Multimeter bestätigt die Aussage von [1] und [3], dass das Gehäuse des Sensors niederohmig (ca. 200 Ω) leitend ist. Durch den direkten Kontakt mit dem Träger erreicht die Ausgangsspannung maximal 1,9 V und keinen stabilen Wert. Die Isolierung durch Polyamid-Schrauben und Polyamid-Unterlegscheiben unterbindet den Kontakt, so dass der Sensor brauchbare Werte liefert. Um die Messwerte noch weiter zu verbessern und zu stabilisieren, ist es erforderlich direkt am Sensor einen 100 nF Kondensator zwischen Vcc und GND zu schalten. Der Kondensator verhindert große Spannungsspitzen am Ausgang, die durch das gepulste IR-Signal verursacht werden. Wie in Abbildung 3 zu sehen ist, gibt es mit einem 100 nF Kondensator nur noch kleine Spannungsspitzen, die nur noch bei einer großen Auflösung auf dem Oszilloskop sichtbar sind. Praxisprojekt SS12 Daniel Klose 2 Sensoren 4 Abbildung 3: Ausgang eines Distanzsensors im Vergleich (Quelle: Autor) oben: ohne Kondensatoren; unten: mit Kondensatoren (15 cm Abstand zu einer weißen Fläche, mit 10:1 Tastkopf) Die Sensoren können durch einen Feldeffekttransistor (FET) zu- und abgeschaltet werden, um den Stromverbrauch zu senken, wenn die Sensoren nicht gebraucht werden. Da das IR-Signal der Sensoren gepulst ist, verursacht der Restwiderstand des FETs (RDS) im durchgeschalteten Zustand bei jedem Puls einen kurzen Einbruch in der Versorgungsspannung der Sensoren, was ebenfalls die Messwerte beeinflusst. Ein 100µF Kondensator (C8 im Schaltplan) kompensiert diese Einbrüche und verbessert dadurch die Messwerte. [3] Praxisprojekt SS12 Daniel Klose 2 Sensoren 5 2.2 Positionssensor Unterhalb des Roboters befindet sich ein Positionssensor von einer optischen Computer-Maus. Über eine Serial Data Input Output (SDIO) Leitung gelangen die vom Sensor erfassten X- und Y-Koordinaten zum Mikrocontroller, der diese zur Positionsbestimmung heranziehen kann. Die vorgesehene Montage des Sensors führt zu fehlerhaften Messdaten, da der Abstand zwischen Sensor und Boden zu groß ist. Laut Datenblatt des Sensors sollen maximal 2,5 mm zwischen Boden und der Linse des Sensors liegen. Um in die Nähe dieses Wertes zu kommen und dadurch brauchbare Messwerte zu bekommen, empfiehlt die Zeitschrift c’t ein Tieferlegen des Sensors [4]. Eine Alternative zum Tieferlegen ist der Austausch des vorhandenen Sensors gegen einen Sensor einer Lasermaus, der mit größeren Abständen besser zurechtkommt. Der Kauf in kleinen Stückzahlen der Sensoren solcher Mäuse gestaltet sich schwierig, so dass der Ausbau eines Sensors aus einer Lasermaus eine naheliegende Lösung ist. Zur Auswahl standen die zwei in Tabelle 1 gelisteten Modelle. Logitech LS1 Laser Mouse Verbatim 49031 Laser Mouse Preis Sensor Auflösung Laser on Chip ca. 13 € S7550 von Avago 400 / 800 / 1200 / 1600 dpi1 ja ca. 5 € ACX-1001 von PixArt 800 / 1200 / 1600 dpi nein Tabelle 1: Vergleich der zur Auswahl stehenden Lasermäuse Der S7550 Sensor der Logitech Maus scheint baugleich zu dem ADNS-7550 Navigationssensor von Avago zu sein. Eine genauere Analyse des S7550 ist aufgrund der komplizierten Integration auf der Platine der Logitech Maus nicht gemacht worden. Zudem reagiert die Logitech Maus nicht spürbar besser auf eine Erhöhung des Abstandes zur Oberfläche als eine normale optische Maus. In einem Test wird die Auflösung der Logitech Maus auf 800 dpi geschätzt [5], denn eine Veränderung der Auflösung ist nicht möglich und Logitech macht auch keine Angaben zur Auflösung der Maus. Der ADNS-7550 Sensor hat sehr viele Einstellmöglichkeiten; u.a. kann neben 1 Angaben aus dem Datenblatt des ADNS-7550 von Avago Praxisprojekt SS12 Daniel Klose 2 Sensoren 6 der Auflösung auch z.B. die Laserleistung gesteuert werden. Es ist daher davon Auszugehen, dass Logitech den S7550 nur begrenzt ausnutzt. In der Verbatim Maus steckt ein kundenspezifischer Sensor der Firma PixArt Imaging Inc. aus Taiwan. Das Verhalten bei größeren Abständen zur Oberfläche ist bei der Maus sehr positiv, jedoch ist zu diesem Sensor kein Datenblatt zu finden. Die Anfrage nach einem Datenblatt des Sensors bei PixArt blieb erfolglos (siehe E-Mail im Anhang), aber durch die Datenblätter der frei verkäuflichen Sensoren von PixArt [6] und durch die überschaubare Platine in der Maus ist es möglich die Beschaltung und Ansteuerung zu rekonstruieren (Tabelle 2). Pin-Nr. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Name VSS_LD LD OSCOUT OSCIN VDDD VSSD VSSA VDD VDDA VREF YA YB XA XB NC NC NC SCLK SDIO PD Belegung2 GND Laser Diode Quarz Ausgang Quarz Eingang keine Verbindung GND GND VCC = 5 V Kondensator Kondensator keine Verbindung keine Verbindung keine Verbindung keine Verbindung keine Verbindung keine Verbindung keine Verbindung Controller Controller Controller Beschreibung Laser Diode Masse Laser Diode Steuerung Quarz Ausgang Quarz Eingang Digitale Masse Analoge Masse 5 V Versorgungsspannung 3,3 V Versorgungsspannung Analoge Spannungsreferenz YA Quadratur Ausgang YB Quadratur Ausgang XA Quadratur Ausgang XB Quadratur Ausgang Takt für serielle Schnittstelle Serielle Schnittstelle, bidirektional Power Down Pin, aktiv High Tabelle 2: Pinbelegung des ACX-1001 Neben der einfachen Beschaltung (siehe Schaltplan im Anhang) ist die Ansteuerung der bidirektionalen Schnittstelle sehr ähnlich wie bei dem von der c’t vorgesehenen Sensor. Durch Zugriff auf verschiedene Register3 kann die veränderte Position der X- und Y-Achse ausgelesen werden und auch Einstellungen wie die Auflösung ver- 2 3 Anschluss auf der Platine in der Verbatim Maus Register des ACX-1001 können im Anhang eingesehen werden Praxisprojekt SS12 Daniel Klose 2 Sensoren 7 ändert werden. Daher gibt es bei der Nutzung der Schnittstelle zwei Möglichkeiten der Übertragung: • „Schreib-Operation“ • „Lese-Operation“ Der Sensor erkennt den Unterschied zwischen „Schreiben“ und „Lesen“ durch das Most Significant Bit (MSB), also dem höchstwertigen Bit, des ersten Bytes der Übertragung. Für eine „Schreib-Operation“ ist das MSB „1“ und für eine „LeseOperation“ ist das MSB „0“ zu setzen. Die restlichen sieben Bits enthalten die Adresse des Registers auf welches zugegegriffen werden soll. Das zweite Byte der Übertragung enthält die entsprechenden Daten des Registers. Das erste Byte wird also bei jeder Übertragung immer vom Controller zum Sensor geschickt. [6] Abbildung 4: Übertragungsprotokoll [6] Die Übertragung der einzelnen Bits erfolgt synchron zum Takt (SCLK). Bei fallender Flanke des Takts wird das Datenbit geändert und bei steigender Flanke wird das Datenbit übernommen. Das High-Signal des Takts muss für eine fehlerfreie Bitübertragung mindestens 3 µs bestehen (siehe Abbildung 5). Abbildung 5: Ausschnitt einer Übertragung [6] Neben der seriellen Schnittstelle des ACX-1001 können die Positionswerte auch aus den vier Quadratur-Pins ermittelt werden. Jedoch sind die vier nötigen Leitungen zum Mikrocontroller und das Auslesen der Werte weitaus aufwändiger als das Nutzen der seriellen Schnittstelle. Eine dritte Leitung, neben denen für SDIO und SCLK, ist dennoch nötig, da die externe Laser-LED eine 3,3 V Spannungsquelle benötigt. Praxisprojekt SS12 Daniel Klose 2 Sensoren 8 Der Spannungsregler LM2937/3,3V, der der Laser-LED mit bis zu 0,5 A genügend Strom liefert, sitzt auf der Hauptplatine, weil kein Platz auf der kleinen Platine unterhalb des Roboters ist. Diese Platine muss für den Positionssensor neu gestaltet werden, da der ACX-1001 völlig anders beschaltet wird und ein spezielles Rastermaß von 1,778 mm (70 mil) hat, wodurch er auf keine europäisch genormte Platine passt (siehe 3.2.2). 2.3 Kanten-/Liniensensoren Zur Abtastung des Bodens besitzt der Roboter Reflexionskoppler des Typs CNY70 von Vishay. Zwei dieser Sensoren sitzen an vorderster Front rechts und links auf kleinen Sensorplatinen (Abbildung 6) und sollen verhindern, dass der Roboter über einen Abgrund fährt. Zwei Weitere sitzen mittig nebeneinander auf der kleinen Platine unter dem Roboter und sollen die Linienfahrt ermöglichen. Der CNY70 Sensor sendet ähnlich wie der Distanzsensor ein IR-Signal und fängt die Reflexion durch einen Fototransistor wieder ein. Die Stärke der Reflexion entscheidet über die Collector-Spannung am Ausgang. Die Reichweite des CNY70 ist sehr gering, so dass der Abstand der Kantensensoren zum Untergrund mit 12 mm schon sehr groß ist, aber noch ausreicht, um die Aufgabe des Sensors zu erfüllen. Da der CNY70 nur die Reflexion seines IR-Signals erfasst, sind die Reflexionseigenschaften des Untergrundes ausschlaggebend für die analoge Ausgangsspannung und nicht der wirkliche Abstand. Dadurch kann dieser Sensor auch genutzt werden, um das Folgen einer Linie des Roboters zu ermöglichen. [7] Abbildung 6: Sensorplatinen [1] Praxisprojekt SS12 Daniel Klose 2 Sensoren 9 2.4 Klappensensor Für die Transportklappe des Roboters existiert ein weiterer CNY70 Reflexionskoppler, der erkennt, ob die Transportklappe geschlossen oder geöffnet ist. Im Gegensatz zu den anderen CNY70 Sensoren fungiert der Klappensensor als digitaler Schalter. Auf der von der c’t bereitgestellten Hauptplatine sitzt der Sensor nach unten gerichtet, um den „D“-förmigen Träger der Klappe zu erkennen. Durch die Neugestaltung der Klappe (siehe 4.2) sitzt der Sensor nicht mehr unter der Hauptplatine, sondern ist am vorderen rechten Träger montiert. Bei geöffneter Klappe liegt Low-Pegel am entsprechenden Port des Mikrocontrollers und bei geschlossener Klappe ein HighSignal. 2.5 Lichtschranke In der vorderen Aussparung des Roboters, die als Transportfach dient, sitzt im hinteren Bereich eine Lichtschranke, die unterbrochen wird, sobald sich ein Gegenstand in dem Fach befindet. Die Lichtschranke besteht aus einer IR-Diode des Typs LD274-3, die einen geringen Abstrahlwinkel besitzt, und dem Empfänger IS471F, die sich gegenüber liegend jeweils auf einer Sensorplatine an den vorderen beiden Trägern befinden (siehe Abbildung 6). Bei einem ersten Test des Roboters ist kein Signal beim Mikrocontroller angekommen, da der Empfänger falsch herum aufgelötet war. Der IS471F steuert das IR-Signal (Wellenlänge 950 nm) der Diode und empfängt es mit der leicht gespiegelten Fläche. 2.6 Radencoder Ebenfalls auf den kleinen Sensorplatinen (Abbildung 6) sitzen weitere CNY70 Reflexionskoppler, die die Räder des Roboters beobachten. Auf der Räderinnenseite ist eine Scheibe mit gleichgroßen Aussparungen am Rand geklebt, die der CNY70 erkennt und in ein elektrisches Signal umwandelt. Durch einen Schmitt-Trigger wird ein digitales Signal daraus, welches der Mikrocontroller durch eine Flankenerkennung auswerten kann. Dadurch kann die Geschwindigkeit beider Räder ermittelt werden und diese miteinander abgeglichen werden. Wichtig ist, dass die Sensoren Praxisprojekt SS12 Daniel Klose 2 Sensoren 10 passend auf die Aussparung zeigen. Aus diesem Grund ist eine Nachjustierung der Sensoren notwendig gewesen, ohne die es oft zu fehlerhaften Daten gekommen ist. 2.7 Lichtsensoren Direkt vorne auf der Platine befinden sich zwei Fotowiderstände, die durch einen Spannungsteiler analoge Werte entsprechend der Helligkeit dem Mikrocontroller zur Verfügung stellen. Die Fotowiderstände vom Typ MPY54C569 haben ihr Empfindlichkeitsmaximum bei einer Wellenlänge von 550 nm und ihre Werte bewegen sich zwischen ca. 500 Ω (hell) und ca. 50 kΩ (dunkel). Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 3 11 Hardwareerweiterungen Im Zuge der Überarbeitung der Sensoren sowie der Steuerung durch einen 68HCS12 Controller ist eine neue Schaltung für die Hauptplatine und die Platine für die Liniensensoren und den Positionssensor unterhalb des Roboters entstanden. Außerdem fallen einige Schaltungsteile, wie die Ansteuerung von verschiedenen LEDs und die für ein Display, weg, da diese Funktionen keine Verwendung finden. Desweiteren hat die Originalschaltung der c’t einige Mängel und bedarf einer Überarbeitung. Im Folgenden werden die Schaltungsänderungen, die vorgenommen werden, erklärt und deren Umsetzung in ein neues Platinenlayout beschrieben. 3.1 Schaltungsänderungen und Funktionen 3.1.1 Integration des 68HCS12 Controllers Für die Steuerung des mobilen Roboters der Zeitschrift c’t ist ein 8-Bit Controller von Atmel vorgesehen. Dieser sehr kompakte Controller wird bei diesem Projekt durch den leistungsstärkeren 68HCS12 ersetzt, der sich auf einem sogenannten CardS12 Modul befindet und durch einfaches Aufstecken in eine Schaltung integriert werden kann. Typ Prozessoren Flashspeicher EEPROM Takt RAM I/O Anschlüsse Peripherie Atmel AVR ATmega32 8-Bit 32 kB 1 kB 16 MHz 2 kB 32 - 2×8-Bit Timer - 1×16-Bit Timer - 4×PWM - 8-Kanal 10-Bit A/D U. - 1×SPI - 1×TWI - 1×USART Freescale 68HCS12 MCU MC9S12DP512 16-Bit 512 kB 4 kB 16 MHz (bis zu 25 MHz über PLL) 14 kB 87 - 8×16-Bit Timer - 8×PWM - 16-Kanal 10-Bit A/D Umsetzer - 3×SPI - 1×IIC - 2×SCI - 5×msCAN-Module Tabelle 3: Vergleich des 68HCS12 mit dem Atmel Controller [8][9] Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 12 Die Leistungssteigerung durch den 68HCS12 hat zur Folge, dass der Stromverbrauch steigt und die Laufzeit des Roboters mit Akkus/Batterien, die bei Nutzung von 2300 mAh Akkus/Batterien und dem Atmel Mikrocontroller mit 9 Stunden von der c’t angegeben wird [10], verkürzt wird. In einem Test der neuen Schaltung mit dem 68HCS12 ist mit 2500 mAh Akkus eine Laufzeit von über 3 Stunden erreicht worden. Dabei ist die Schaltung jedoch auch dauerhaft einer großen Belastung ausgesetzt worden, so dass in einem ruhigeren Betrieb von einer längeren Laufzeit ausgegangen werden kann. Auch wenn der Stromverbrauch gegen den 68HCS12 spricht, hat der Controller sonst viele Vorteile gegenüber dem Atmel Controller. Während der Atmel Controller mit vier Ports begrenzte Möglichkeiten hat und sich dadurch mittels drei Schieberegister in der Schaltung behelfen muss, kommt der 68HCS12 auf dem CardS12 Modul ohne Schieberegister aus und kann dank seiner 12 Ports die unterschiedlichsten Aufgaben übernehmen. Neben digitalen Ein- und Ausgängen benötigt die Steuerung für den mobilen Roboter auch analoge Eingänge und Pulsweitenmodulationen (PWM). Die Ports sind nach ihrer Funktion ausgewählt worden. Alle FETs werden beispielsweise über Port A geschaltet und Port B agiert nur als digitaler Eingang. Eine Auflistung aller Portzuweisungen befindet sich im Anhang oder kann im Schaltplan durch die Verbinder J2 und J3 (siehe Abbildung 7) entnommen werden, auf die das CardS12 Modul gesteckt wird. Abbildung 7: Schaltplanverbindungen zum 68HCS12 (siehe Schaltplan im Anhang) Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 13 3.1.2 Servo-Antrieb In einem Erweiterungspacket der Zeitschrift c’t kann dem mobilen Roboter ein Servo-Antrieb (Robbe-Futaba S3107) hinzugefügt werden, der eine Transportklappe betätigen soll. Ein Servo-Antrieb soll nicht mit der gleichen Versorgungsspannung wie der Mikrocontroller betrieben werden, da es sonst durch verursachte Störungen zum Absturz des Mikrocontrollers kommen kann [11]. Daher wird der Antrieb direkt von der Betriebsspannung des Netzteils oder der Batterien/Akkus versorgt. Um ein Festsitzen der Transportklappe zu verhindern, ist ein 6,8 Ω Widerstand vorgeschaltet, der die Stromaufnahme des Antriebs überwacht und über eine Komperatorschaltung eine Fehlermeldung bei zu hoher Stromaufnahme an den Mikrocontroller gibt. Die Fehlermeldung wird jedoch mit einem Fehlersignal für eine zu niedrige Betriebsspannung, die durch Entladung der Batterien/Akkus verursacht wird, durch eine Disjunktion verbunden, wodurch der Mikrocontroller keine genaue Aussage über den Fehler erhält. Des Weiteren ist die Fehlermeldung für die Stromaufnahme des ServoAntriebs stark von der Betriebsspannung abhängig, so dass mit der zeitlichen Entladung der Batterien/Akkus das Fehlersignal bei immer geringeren Strömen anliegt. Abbildung 8: Fehlersignalerzeugung für den Servo-Antrieb im Originalschaltplan [12] Für die Betriebsspannung sind nach [10] nicht viel mehr als 6 V vorgesehen und es wird deshalb empfohlen ein 6 V-Netzteil zu verwenden bzw. fünf Akkus (5×1,2 V) oder nur vier Batterien (4×1,5 V), um die Motoren und auch den Servo-Antrieb nicht zu überlasten. Um das zu umgehen, gibt es bei der neuen Schaltung einen eigenen Spannungsregler (LM2940) für den Servo-Antrieb, dessen Nennspannung bei 4,8 V Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 14 liegt. Mit bis zu 1 A stellt der Spannungsregler mehr als ausreichend Strom zur Verfügung und liefert wie der Spannungsregler der Versorgungsspannung stabile 5 V bis etwa 5,3 V Eingangsspannung. Der Servo-Antrieb bekommt durch den eigenen Spannungsregler konstant 5 V und der Strom des Servo-Antriebs wird über einen sogenannten Shunt-Widerstand (R27 in Abbildung 9) gemessen. Durch die neue Beschaltung wird das Fehlersignal immer bei einem Strom von etwa 200 mA ausgelöst und ist nicht mehr von der Betriebsspannung abhängig. Zusätzlich wird das Fehlersignal des Servo-Antriebs getrennt von dem Fehlersignal der Batterie-/Akkuspannung ausgewertet und ist nicht mehr durch eine Disjunktion mit dem Fehlersignal der Batterie-/Akkuspannung verbunden. Des Weiteren ist die Belegung des Steckers angepasst worden, da die Pins für Masse und Versorgungsspannung des Servo-Antriebs im Schaltplan der c’t vertauscht sind [4]. Abbildung 9: Fehlersignalauswertung für den Servo-Antrieb im neuen Schaltplan (siehe Schaltplan im Anhang) Die Ansteuerung des Servo-Antriebs erfolgt mit einem PWM-Signal von 50 Hz, das heißt, dass die Periode T des Signals 20 ms beträgt. Der Antrieb ist durch zwei Endanschläge begrenzt, wodurch der Antrieb einen Bewegungsradius von 180° hat. Durch die Pulsdauer thigh bewegt sich der Servo-Antrieb in einem bestimmten Winkel innerhalb dieser 180°, wobei thigh zwischen 1 und 2 ms liegt. Für den linken Anschlag beträgt die Pulsdauer 1 ms, für den rechten Anschlag 2 ms und die Mittelstellung des Antriebs ergibt sich folglich aus 1,5 ms. Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 15 Abbildung 10: Pulsdiagramm einer Servo-Ansteuerung [11] 3.1.3 Betriebsspannung der Schaltung Durch die Neuerungen aus 3.1.2 ist eine höhere Betriebsspannung als 6 V, wie sie bei fünf Batterien entstehen würde, für den Servo-Antrieb kein Problem mehr. Neben dem Servo-Antrieb sind noch weitere Schaltungsteile direkt mit der Betriebsspannung verbunden und müssen auf ihre Spannungsfestigkeit überprüft werden, bevor die Betriebsspannung auf bis zu 7,5 V erhöht werden kann. Mit einer größeren Betriebsspannung als 6 V hat der Motortreiber L293D keine Probleme und kann laut seinem Datenblatt mit bis zu 36 V betrieben werden. Die Getriebemotoren (Faulhaber 2619 006 SR) des Roboters haben eine Nennspannung von 6 V und werden mit einer größeren Spannung sehr belastet. Die Motoren arbeiten mit dem Mittelwert eines PWM-Signals wie in (1) ersichtlich. [10][11] Damit die Motoren nicht überlastet werden, sollte das Tastverhältnis der PWM Ansteuerung auf 85% begrenzt werden, wenn der Roboter mit fünf Batterien (7,5 V) oder anderen größeren Spannungsquellen betrieben wird. ∙ Praxisprojekt ∙ ä SS12 , (1) Daniel Klose 3 Hardwareerweiterung 16 3.1.4 Empfänger der Fernbedienung Der Roboter wird erst so richtig mobil, wenn er auch kabellos gesteuert und bedient werden kann. Damit der Roboter nicht immer ein Kabel hinter sich herziehen muss, hat die Zeitschrift c’t einen Infrarot Empfänger (TSOP34836) vorgesehen, der Signale einer Fernbedienung aufnehmen kann, die auch Fernseher oder andere Geräte steuern kann. Der TSOP34836 Empfänger empfängt Infrarot Signale (950 nm) der Frequenz 36 kHz und demoduliert diese in elektrische Signale, die dann von dem Mikrocontroller ausgewertet werden können. Die Frequenz resultiert aus der Taktung der meisten Fernbedienungen, die im Medienbereich zum Einsatz kommen. Die Beschaltung des Empfängerbausteins ist bei der neuen Schaltung um einen RC-Tiefpass ergänzt worden, um hochfrequente Störungen in der Versorgungsspannung zu unterdrücken [13]. Abbildung 11: Beschaltung des TSOP34836 mit RC-Tiefpass (siehe Schaltplan im Anhng) Viele Fernbedienungen arbeiten mit dem RC5-Code, um Befehle zu verschlüsseln. Der RC5-Code setzt sich aus 14 Bits zusammen und ist ursprünglich von der Firma Philips entwickelt worden. Wenn eine Universalfernbedienung verwendet wird, sind deswegen die Programmiercodes der Firma Philips meist die Richtigen. Bei der Universalfernbedienung „RC Univers29“ kann z.B. der Code „0026“ benutzt werden. Die Entschlüsselung der einzelnen Bits erfolgt nach dem Prinzip der ManchesterCodierung, das bedeutet, dass die Flanken des Signals zur Bitbestimmung herangezogen werden. Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 17 Der RC5-Code besteht aus: • 2 Startbits4 • 1 Togglebit • 5 Adressbits • 6 Kommandobits Die Modulation für den RC5-Code von der Fernbedienung erfolgt mit einem Signal von 36 kHz. Dieses Signal muss der Empfänger wieder demodulieren, denn diese Infrarot-Pulse sind nicht die einzelnen Bits des RC5-Codes. Das Senden von modulierten Pulsen garantiert eine höhere Übertragungssicherheit und das Unterdrücken von Störungen. &'()*+,*-( Ü !"!# $% ./01'0+, 23 24555687 9 888,9µs (2) Für ein Halb-Bit werden 32 Pulse an den Empfänger geschickt, die dieser dann entsprechend in ein Low-Signal demoduliert. Für ein High-Signal kommen in dieser Zeit (2) keine Pulse. Die Auswertung erfolgt wie erwähnt flankengesteuert, weswegen sich jedes Bit zur Hälfte aus einem High- und zur Hälfte aus einem Low-Signal zusammensetzt. (siehe Abbildung 12) [14][15] Infrarotpulse von der Fernbedienung Elektrisches Signal vom Empfänger Abbildung 12: Signaldemodulation des Empfängers (TSOP34836) [14] 4 Das zweite Startbit entwickelte sich mit der Zeit zum 7ten Kommandobit, um die Befehlsanzahl von 64 auf 128 zu erhöhen. Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 18 3.1.5 Sonstige Änderungen Die Schaltung der Zeitschrift c’t kann an einigen Stellen verbessert werden. Ein genaueres Betrachten des Schaltplans lässt erahnen, dass die Schaltung sehr störempfindlich reagieren könnte. Bei normalem Betrieb des Roboters ist es öfters dazu gekommen, dass ohne Fremdeinwirkung Resets ausgelöst wurden. Der Grund für die Resets liegt in Schwankungen in der Versorgungsspannung, die von ICs ausgelöst werden. Aus diesem Grund sind einige Abblockkondensatoren in die Schaltung integriert worden, die die Versorgungsspannung stabil halten. Die 100 nF Kondensatoren direkt am Spannungsregler L4940V5 verhindern die eigenständigen Resets der Schaltung, aber auch vor jedem anderen IC ist jeweils ein Kondensator zwischen der Versorgungsspannung (Vcc) und Masse (GND) eingefügt worden. Da in der Schaltung keine größeren Frequenzen vorkommen, ist die Kapazität dieser Kondensatoren mit 100 nF erfahrungsgemäß ausreichend. [15][4] Auch die nächste Änderung beschreibt die c’t in ihren nachträglichen Modifikationen [4] und verhindert, dass sich die Antriebsmotoren bei jedem Reset oder auch beim Überspielen des Programms in den Flashspeicher drehen. Die Motoren werden durch ein PWM-Signal über den Motortreiberbaustein L293D angesteuert. Dieses Signal wird direkt vom Mikrocontroller auf den Motortreiberbaustein gelegt. Bei einem Reset oder auch beim Beschreiben des Flashspeichers wird der Port des Mikrocontrollers als Eingang geschaltet und der Motortreiberbaustein interpretiert dies als wenn ein „High“-Signal anliegen würde. Die Folge ist das Drehen der Antriebsmotoren mit voller Geschwindigkeit. Damit die Motoren sich nicht drehen, müssen die Eingänge des Motortreiberbausteins in dieser Zeit auf Masse gezogen werden. Diese Aufgabe übernehmen Pull-Down Widerstände, die zwischen den Eingängen des Motortreiberbausteins und Masse liegen (R1 und R2 im Schaltplan). [4] Die Schaltung enthält einen Komperator, der die Betriebsspannung überwacht und bei zu niedriger Betriebsspannung eine Fehlermeldung an den Mikrocontroller weitergibt. Eine Zener-Diode sorgt dafür, dass an dem einen Eingang des Komperators konstante 2,4 V liegen, während der andere Eingang über einen Spannungsteiler die Betriebsspannung abgreift. Durch die Beschaltung wird der Ausgang des Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 19 Komperators bei etwa 5,6 V5 Betriebsspannung auf „Low“ geschaltet, so dass der Mikrocontroller ebenfalls ein „Low“-Signal anliegen hat. Bisher ist das Signal mit dem Fehlersignal des Servo-Antriebs durch eine Disjunktion verknüpft gewesen, wodurch der Mikrocontroller die Signale nicht unterscheiden konnte. In dem geänderten Schaltplan werden beide Signale getrennt behandelt. Außerdem ist der Widerstand vor der Zener-Diode von 1 kΩ auf 620 Ω gesenkt worden, da sie mit dem 1 kΩ Widerstand nicht ausreichend Strom für die Zener-Spannung erhält, wodurch die Spannung bei lediglich 2,2 V liegt und nicht bei den geforderten 2,4 V. Das Fehlersignal ist in einem Test der neuen Hardware mit 2500 mAh Akkus 30 Minuten vor dem Erschöpfen der Akkus ausgelöst worden. Um der Umgebung mitteilen zu können, dass die Akkus/Batterien erschöpft sind, ist eine rote LED im Schaltplan hinzugefügt worden, die über einen weiteren P-Kanal FET (BS250) geschaltet werden kann. Abbildung 13: Beschaltung der roten LED (siehe Schaltplan im Anhang) Die Beschaltung des Klappensensors und der Lichtschranke des Transportfachs sind in der Originalschaltung miteinander verflochten. Durch das Schalten des FETs für die Aktivierung des Klappensensors wird auch die Infrarot-LED des Transportfachs beschaltet. Auch wenn die LED erst durch die Beschaltung des Empfängers IS471F aktiviert wird, weil der die LED steuert, ist es verwirrend und undurchschaubar. In der überarbeiteten Version der Schaltung ist dies modifiziert worden, so dass durch das Schalten des FETs der Klappe nur der Klappensensor aktiviert wird und durch das Schalten des FETs der Lichtschranke die beiden Elemente der Lichtschranke (Empfänger und IR-LED) aktiviert werden. Die Beschaltung des Empfängers der 5 Inklusive dem Spannungsabfall der Schottky-Diode SB140, die als Schutzdiode vorgeschaltet ist. Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 20 Lichtschranke ist um einen Kondensator ergänzt worden, der die Spannungsversorgung für den Empfänger stabilisieren soll [16]. 3.2 Platinenmodellierung und Realisierung 3.2.1 Hauptplatine Die neue und geänderte Schaltung der Hauptplatine ist durch ein neues Platinenlayout realisiert worden, welches mit der Software OrCAD der Firma Cadence erstellt worden ist. Bei der Umsetzung ist die Position einiger Bauelemente wichtig gewesen. Die Fotowiderstände, durch die eine Lichtquelle ausgemacht werden kann, sind wie schon bei der Originalplatine an deren Front zu finden. Die Stiftleisten sind an ähnlicher Stelle symmetrisch angeordnet, damit die untere Ebene durch die gleichen Kabel mit der Hauptplatine verbunden werden kann. Der Empfänger für die Fernsteuerung ist im hinteren Bereich platziert, wo ihn die Signale erreichen können. Des Weiteren ist die Höhe unter dem CardS12 Modul eingeschränkt, so dass manche Bauelemente wie zum Beispiel Elektrolytkondensatoren keinen Platz an dieser Stelle haben. Hinzu kommen noch Ausschnitte für den ServoAntrieb und die Transportklappe, die es zu beachten gibt. Letzterer Ausschnitt ist im Vergleich zum Vorgänger kleiner geworden, was aber kein Problem im Bezug auf die Transportklappe ist. Das neue Layout ist mittels des Ätzverfahrens erstellt worden, welches die Leiterbahnbreite bereits auf ein Minimum von 0,4 bis 0,5 mm beschränkt. Aus diesem Grund sind alle Leiterbahnen der Platine 0,5 mm breit, welche bei einer Kupferschicht von 35 µm bei normalen Bedingungen Stromstärken bis 2 A bewältigen können [11][15]. Durch die große Leiterbahndichte ist ein Auskommen mit einer Seite der Platine unmöglich, wodurch einige Bahnen auf der oberen Seite geführt werden müssen. Da für ein zweiseitiges Platinenlayout eine Verbindung zwischen der Oberseite und der Unterseite mittels Durchkontaktierungen erforderlich ist, aber kein Verfahren dafür zur Verfügung steht, sind die Verbindungen auf der oberen Seite durch Drahtbrücken realisiert worden. Die Form der Hauptplatine hat sich von einer runden Platine mit 120 mm Durchmesser zu einem Achteck geändert und ist etwas größer als sein Vorgänger. Für die MonPraxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 21 tage auf den Trägern des mobilen Roboters sind zwei Polyamid-Unterlegscheiben vorgesehen, die einen Kontakt zu den Trägern verhindern. Abbildung 14: Neu erstellte Hauptplatine (Quelle: Autor) 3.2.2 Linien-/Positionssensor Platine Der neue Positionssensor und die dafür erforderliche neue Schaltung erhalten ebenfalls eine neue Platine und ein neues Design. Anders als bei der originalen Platine des Projekts, sind die Bauelemente bis auf einen Widerstand und die beiden Liniensensoren auf der oberen Seite bestückt. Letzt genannte Liniensensoren sind der Grund für die Verwendung einer zweiseitigen Platine, bei der die Problematik der fehlenden Möglichkeit für Durchkontaktierungen gelöst werden muss. Die Beschaltung der Liniensensoren löst dieses Problem jedoch schon fast selbst, indem vier der sechs Stellen, an denen eine Durchkontaktierung erforderlich ist, mit Widerständen bestückt werden, dessen Drähte die Verbindung zwischen den beiden Ebenen herstellen. Auch an den restlichen zwei Stellen ist das Problem ähnlich gelöst worden, so dass der Kontakt zwischen den Leiterbahnen auf der Ober- und Unterseite sichergestellt ist. Wie bei der Hauptplatine sind auch hier, aufgrund des Ätzverfahrens, alle Leiterbahnen 0,5 mm breit und können unter normalen Bedingungen bis zu 2 A aushalten [11][15]. Damit die Bauelemente auf der Oberseite bestückt werden können und die Platine dennoch so nah wie möglich an der Grundplatte montiert werden kann, sind die Bauelemente der Schaltung so angeordnet worden, dass sie in die Aussparung der Praxisprojekt SS12 Daniel Klose 3 Hardwareerweiterung 22 Grundplatt passen (siehe Abbildung 15). Nur der Widerstand R4 befindet sich außerhalb dieser Aussparung und ist deswegen von unten auf die Platine bestückt worden. Dadurch kann die Platine höher montiert werden und ist nur von zwei PolyamidUnterlegscheiben von der Grundplatte entfernt (1 mm). Die neue Bodenfreiheit von 2,5 mm kann durch Montierung der Platine mittels Senkkopfschrauben noch auf bis zu 3,5-4 mm erhöht werden, wodurch die Liniensensoren der dem Boden am nächst gelegene Teil des Roboters werden. Abbildung 15: Ober- und Unteransicht der neuen Positionssensorplatine (Quelle: Autor) Der Positionssensor sitzt wie bei dem Vorgänger nicht in der Mitte des Roboters, sondern auch etwas im hinteren Teil, so dass auch Rotationsbewegungen erkannt werden können. Wie in Abbildung 16 zu erkennen ist, liefert der Positionssensor bei dieser Bestückung bei Vorwärtsfahrt des Roboters negative Werte und in Rückwärtsrichtung positive Werte. Auch die Werte für Rechts und Links sind entgegengesetzt eines normalen Koordinatensystems. Dies kann später durch eine Inversion der Werte in der Software angepasst werden. Abbildung 16: ACX-1001 Positionssensor im Roboter (Ansicht von oben) [6] Praxisprojekt SS12 Daniel Klose 4 Mechanik 4 23 Mechanik 4.1 Akkuhalterung Die Akkus oder auch Batterien werden in ein dreier und ein zweier Fach eingelegt und in Reihe miteinander verbunden. Die beiden Fächer, die bisher noch nicht in den Roboter integriert sind, sollen zwischen den Getriebemotoren mit zwei Klettverschlüssen befestigt werden (siehe Abbildung 17). Abbildung 17: Vorgesehene Befestigung der Akkufächer [17] Ohne die Akkus/Batterien kippt der Roboter sehr leicht nach vorne, da er das Gewicht der Akkus/Batterien für einen sicheren Stand braucht. Für die Integrierung der Akkufächer in den überarbeiteten Roboter ist eine Halterung aus Aluminium konstruiert worden, die am hinteren Träger befestigt wird (siehe Abbildung 18). Dadurch steht der Roboter auch ohne eingelegte Akkus/Batterien sicher und hat auch optisch einen größeren Reiz. Die Akkufächer werden von beiden Seiten mit Senkkopfschrauben befestigt und sind damit fest mit dem Roboter verbunden. (Zeichnung der Halterung befindet sich im Anhang) Abbildung 18: Neue Befestigung der Akkufächer (Quelle: Autor) Praxisprojekt SS12 Daniel Klose 4 Mechanik 24 4.2 Transportklappe In einem Erweiterungspaket der Zeitschrift c’t ist eine Transportklappe für den Roboter erhältlich, mit der die Aussparung verschlossen werden kann, so dass Sachen wie z.B. einen Tischtennisball darin ohne Verlust transportiert werden können. Die vorgesehene Transportklappe, die bisher nicht montiert ist, besteht aus einer Art „D“förmigen Träger, an dem ein rechteckiges Metallstück angebracht wird (siehe Abbildung 19). Der Sensor für die Transportklappe sitzt unterhalb der Hauptplatine und wird beim Öffnen und Schließen vom „D“-förmigen Träger verdeckt bzw. nicht verdeckt. Ein Nachteil an dieser Konstruktion ist, dass der Stecker des rechten Abstandssensors entfernt werden muss und die Kabel direkt eingelötet werden müssen, damit die Klappe daran vorbeikommt. Abbildung 19: Transportklappe aus dem Erweiterungspacket [12] Durch die Neugestaltung der Hauptplatine ist das Anbringen des Sensors schwierig, da ein Auflöten auf der Unterseite der Platine durch das einseitige Layout nicht vorgesehen ist. Des Weiteren sitzt der Servo-Antrieb, durch den die Klappe betätigt wird, tiefer als bei der Originalplatine, da unterhalb des CardS12 Moduls nur wenig Platz ist. Aus diesem Grund ist eine neue Transportklappe aus Aluminium entwickelt worden, die damit keine Probleme hat und wodurch der Stecker des Abstandssensors nicht entfernt werden muss. Die neue Klappe wird durch zwei Winkel hinter den vorderen Trägern gehalten und wird mit einer vertikalen Bewegung geöffnet oder geschlossen. Die Kraft des ServoAntriebs wird mittels einer Stange und eines Hebels auf die Transportklappe übertragen. Der Sensor, der erkennt ob die Transportklappe geöffnet oder geschlossen ist, sitzt nun seitlich auf einem Stück Lochrasterplatine und wird über Kabel mit der Praxisprojekt SS12 Daniel Klose 4 Mechanik 25 Hauptplatine verbunden. Da die neue Transportklappe nur ein geringes Gewicht hat, entsteht keine Kippgefahr beim Roboter. (Zeichnung im Anhang) Sensor Abbildung 20: Neue Transportklappe (Quelle: Autor) Praxisprojekt SS12 Daniel Klose 5 Zusammenfassung 5 26 Zusammenfassung Ziel dieses Projektes war die Funktion aller Sensoren des Roboters der c’t zu überprüfen und gegebenenfalls zu verbessern oder diese zu ersetzen. Besonders der Positionssensor einer optischen Maus sollte durch eine Alternative ersetzt werden. Außerdem sollte der Mikrocontroller des Roboters durch den leistungsstärkeren Mikrocontroller des Typs 68HCS12 ersetzt werden und die Hardware dafür verändert werden. Dabei sollte auch die bis dahin noch nicht implementierte Hardware für eine Fernsteuerung und den Akku-Betrieb berücksichtigt und getestet werden. Die Werte der Distanzsensoren wurden durch Isolierung des Gehäuses und durch Kondensatoren stabilisiert und wurden deswegen auch präziser. Der Positionssensor wurde durch einen Sensor einer Lasermaus ersetzt, wodurch der Roboter nun seine zurückgelegte Strecke berechnen kann und seine Position kennt. Die restlichen Sensoren mussten teilweise nur besser justiert oder versetzt werden, aber hatten keine weiteren Änderungen nötig. Der neue Mikrocontroller (68HCS12) ist durch das CardS12 Modul und eine neue Leiterplatte integriert worden. Dabei wurde die alte Schaltung an einigen Stellen verbessert und geändert, wodurch einige kleine Probleme beseitigt wurden und der Betrieb des Roboters mit einer Spannungsbreite von 67,5 V ermöglicht wurde. Bei der Herstellung der neuen Leiterplatte wurde auch die Hardware der Fernbedienung berücksichtigt und zudem der Servo-Antrieb für die Transportklappe integriert. Die Transportklappe wurde zusätzlich neu gestaltet und auch der Akku-Betrieb durch eine Halterung sichergestellt. Da die Low Drop Spannungsregler auch noch bei einer niedrigen Spannung von bis zu 5,2 V6 ausreichend Versorgungsspannung liefern, ist eine Akkulaufzeit von über 3 Stunden möglich. Abbildung 21: Überarbeiteter c’t-Bot mit 68HCS12 Controller 6 Da an der Schottky-Diode (D1) etwa 0,3 V abfallen, liegt die Betriebsspannung der Akkus dann bei etwa 5,5 V. Praxisprojekt SS12 Daniel Klose 6 Ausblick 6 27 Ausblick Für den mobilen Roboter der c’t sind noch Erweiterungspakete erhältlich, die z.B. das Abspeichern von Daten auf einer SD-Karte oder die drahtlose Kommunikation über einen WLAN-Port ermöglichen. Es ist auch denkbar, den Roboter mit einer Kamera auszustatten, durch die er seine Umgebung besser wahrnehmen kann und Objekte erkennen kann. Eine integrierte Ladeeinrichtung für die Akkus wäre praktisch und könnte so gebaut werden, dass der Roboter bei Bedarf selbst den Kontakt der Ladestation findet. Weiter wäre eine Kommunikation unter mehreren c’t-Bots denkbar, die über eine Bluetooth-Verbindung kommunizieren. Mit einer passenden Mechanik für eine Schussvorrichtung könnte dann eine Art Fußball gespielt werden. Dazu wäre es aber notwendig, die Hardware der Hauptplatine zu ändern, denn diese Funktionen sind in diesem Projekt vernachlässigt worden. Zudem wäre dazu eine Leiterplatte herzustellen, die nicht mit dem Ätzverfahren erstellt wird, denn auch schon bei diesem Projekt waren die Möglichkeiten dadurch eingeschränkt. Denkbar wäre auch, dass durch die Bestückung von SMD Bauelementen mehr Platz auf der Hauptplatine geschaffen wird und auch der Mikrocontroller 68HCS12 direkt integriert wird und nicht über ein Modul. Praxisprojekt SS12 Daniel Klose 7 Danksagung 7 28 Danksagung An dieser Stelle möchte ich mich bei der Firma Jacob Schaltschränke GmbH & Co. KG bedanken, insbesondere bei Alexander Golz und Gerhard Klose, die die Realisierung der Akkuhalterung und Transportklappe ermöglichten. Praxisprojekt SS12 Daniel Klose 8 Anhang 29 Register des ACX-1001 Address Name R/W Default Data Type 0x00 Product_ID R 0x30 0x01 Product_ID R 0x00 0x02 0x03 Motion_Status Delta_X R R - 0x04 Delta_Y R - 0x057 0x067 Operation_Mode R/W Configuration R/W Eight bits [11:4] number with the product identifier Four bits [3:0] number with the product identifier Reserved[3:0] number is reserved for further Bit field Eight bits 2’s complement number Eight bits 2’s complement number Bit field Bit field 0xD0 0x01 Nutzung der Register, um einen Bewegungswert auszulesen: Die Register „Delta_X“ und „Delta_Y“ enthalten die Positionsveränderung seit dem letzten Auslesen. Um die beiden Register auszulesen, wird zunächst im Register „Motion_Status“ das „Motion Bit“ (7te Bit) abgefragt. Erst wenn dieses „1“ ist, hat eine Bewegung stattgefunden und „Delta_X“ und „Delta_Y“ können ausgelesen werden. Es folgen die Erklärungen zu den Registern, die zum Auslesen nötig sind. Register Erklärung [6]: 0x00 Bit Field Usage Product_ID1 4 3 2 1 0 PID[11:4] The value in this register can’t change. It can be used to verify that the serial communications link is OK. 0x01 Bit Field Usage Product_ID2 6 5 4 3 2 1 0 PID[3:0] Reserved[3:0] The value in this register can’t change. PID[3:0] can be used to verify that the serial communications link is OK. Reserved[3:0] is a value between 0x0 and 0xF, it can’t be used to verify that the serial communication. 7 6 5 7 7 Die Register „Operation_Mode“ und „Configuration“ wurden nicht getestet und werden mit den „Default“-Werten betrieben, die für den Mausbetrieb implementiert wurden. Praxisprojekt SS12 Daniel Klose 8 Anhang 0x02 Bit Field Usage Notes 30 Motion_Status 7 6 5 4 3 2 1 0 Motion Reserved[3:2] DYOVF DXOVF Reserved[1:0] RES Register 0x02 allows the user to determine if motion has occurred since the last time it was read. If so, then the user should read registers 0x03 and 0x04 to get the accumulated motion. It also tells if the motion buffers have overflowed since the last reading. The current resolution is also shown. Reading this register freezes the Delta_X and Delta_Y register values. Read this register before reading the Delta_X and Delta_Y registers. If Delta_X and Delta_Y are not read before the motion register is read a second time, the data in Delta_X and Delta_Y will be lost. Field Name Description Motion Motion since last report or PD Reserved[3:2] DYOVF DXOVF Reserved[1:0] RES 0 = No motion (Default) 1 = Motion occurred, data ready for reading in Delta_X and Delta_Y registers Reserved for future use Motion Delta Y overflow, ∆Y buffer has overflowed since last report 0 = No overflow (Default) 1 = Overflow has occurred Motion Delta X overflow, ∆X buffer has overflowed since last report 0 = No overflow (Default) 1 = Overflow has occurred Reserved for future use Resolution in counts per inch 0 = 1600 1 = 800 0x03 Bit Field Usage Delta_X 7 6 5 4 3 2 1 0 X7 X6 X5 X4 X3 X2 X1 X0 X movement is counts since last report. Absolute value is determined by resolution. Reading clears the register. Report range –128 ~ +127. 0x04 Bit Field Usage Delta_Y 7 6 5 4 3 2 1 0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 Y movement is counts since last report. Absolute value is determined by resolution. Reading clears the register. Report range –128 ~ +127. Praxisprojekt SS12 Daniel Klose 8 Anhang 31 Portbelegung 68HCS12 Port A (Digital Out) PA0 Enable Radencoder PA1 Enable Abstandssensoren PA2 Enable Liniensensoren PA3 Enable Kantensensoren PA4 Enable Lichtschranke Transportfach PA5 Enable Klappensensor Transportfach PA6 Enable Rote LED PA7 Port B (Digital In) PB0 Akku Low PB1 Fehler Transportklappe PB2 Lichtschranke Transportfach PB3 Klappensensor Transportfach PB4 PB5 PB6 PB7 Port H (Digital Out) PH0 Motor links (Richtung) PH1 Motor rechts (Richtung) PH2 PH3 PH4 PH5 PH6 PH7 Indikator LED CardS12 (blau) Port K (SDIO Interface) PK0 Positionssensor SDIO DATA PK1 Positionssensor SCLK PK2 PK3 PK4 PK5 PK6 PK7 Praxisprojekt SS12 Daniel Klose 8 Anhang 32 Port T (Timer) PT0 Radencoder links PT1 Radencoder rechts PT2 Infrarot-Receiver (Fernsteuerung) PT3 PT4 PT5 PT6 PT7 Port P (PWM) PP0 Motor links (Geschwindigkeit) PP1 Motor rechts (Geschwindigkeit) PP2 PP3 PP4 Servo-Antrieb Klappe Transportfach PP5 PP6 PP7 Port ATD0 (Analog-Digital) PAD00 Abstandssensor links PAD01 Abstandssensor rechts PAD02 Liniensensor links PAD03 Liniensensor rechts PAD04 Kantensensor links PAD05 Kantensensor rechts PAD06 Helligkeitssensor links PAD07 Helligkeitssensor rechts Praxisprojekt SS12 Daniel Klose 8 Anhang Praxisprojekt 33 SS12 Daniel Klose 8 Anhang Praxisprojekt 34 SS12 Daniel Klose 8 Anhang 35 Stückliste Hauptplatine Item 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Quantity 3 8 1 1 1 1 1 1 2 1 1 1 2 1 7 2 4 3 1 2 2 5 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 Praxisprojekt Reference C1,C8,C10 C2,C3,C4,C5,C7,C11,C12,C13 C6 C9 C14 D1 D2 D3 D4,D5 J1 J2 J3 LDR1,LDR2 P1 Q1,Q2,Q3,Q4,Q5,Q6,Q7 R1,R2 R3,R12,R13,R18 R4,R15,R17 R5 R6,R25 R7,R22 R8,R9,R10,R11,R19 R14,R16 R20,R21 R23 R24 R26 R27 ST1 ST2 ST3 ST4 ST5 ST6 SW1 U1 U2 U3 U4,U7 U5 U6 U8 U9 SS12 Part 100uF 100nF 4,7uF 0,33uF 10uF SB140 ZD 2,4V LED 1N4148 Servo1 CARD12 X6 CARD12 X5 MPY54C569 LUM NEB 1R BS250P/TO 10k 47k 39k 620R 4k7 100R 180R 6k2 470k 3k3 75k 160R 1R Akkupack MotorL MotorR Sensoren links Sensoren rechts Sensoren Boden SW SPDT L293D 74HC14 L4940V5/TO LM311 TSOP34836 CNY70 LM2940/5V LM2937/3,3V Footprint cap196 capck05 cap196 cap196 cap196 dio400 dio400 led dio400 jumper3 conn50 conn50 ldr lumneb1r to92 res400 res400 res400 res400 res400 res400 res400 res400 res400 res400 res400 res400 res400 st2 st2 st2 st10 st10 st10 switch dip16_3 dip14_3 to126v dip8_3 to126 cny70 to126v to126v Daniel Klose 8 Anhang 36 Stückliste Linien-/Positionssensorplatine Item 1 2 3 4 5 6 7 8 9 10 11 12 Quantity 2 2 1 1 1 1 1 2 2 1 2 1 Praxisprojekt Reference C1,C2 C3,C6 C4 C5 D1 J1 R1 R2,R3 R4,R5 U1 U2,U3 Y1 Part 10pF 100nF 10uF 1uF LASER DIODE CON10 150R 47k 180R ACX-1001 CNY70 27MHz SS12 Footprint capck05 capck05 cap196 cap196 jumper2 con10 res400 res400 res400 acx-1001 cny70 quarz1 Daniel Klose 8 Anhang 37 Bestückungsplan der Hauptplatine Praxisprojekt SS12 Daniel Klose 8 Anhang 38 Layout der Hauptplatine (Bestückungsseite) Praxisprojekt SS12 Daniel Klose 8 Anhang 39 Layout der Hauptplatine (Lötseite) Praxisprojekt SS12 Daniel Klose 8 Anhang 40 Bestückungsplan der Linien-/Positionssensorplatine /Positionssensorplatine Layout der Linien-/Positionssensorplatine Linien (Bestückungsseite) Praxisprojekt SS12 Daniel Klose 8 Anhang 41 Layout der Linien-/Positionssensorplatine Linien /Positionssensorplatine (Lötseite) Praxisprojekt SS12 Daniel Klose 8 Anhang 42 Zeichnung der Transportklappe Praxisprojekt SS12 Daniel Klose 8 Anhang Praxisprojekt 43 SS12 Daniel Klose 8 Anhang 44 Zeichnung der Akkuhalterung Praxisprojekt SS12 Daniel Klose 8 Anhang 45 E-Mail Schriftverkehr mit der Firma PixArt Re: [**轉自原相網頁**] Datasheet of ACX-1001(20120503151525) [email protected] An: Daniel Klose Dear Sir: ACX-1001 is a customizing product ,we can't offer the datasheet to you. Sorry. ============================================== || FAE & Sales Contact || PixArt Imaging Inc. || http://www.pixart.com.tw || 5F,No.5, Innovation Road I, Hsin-Chu Science Park, || Hsin-Chu, Taiwan, R.O.C. ============================================== <[email protected]> 2012/05/03 03:15 PM To: <[email protected]> cc: Subject: [**轉自原相網頁**] Datasheet of ACX-1001(20120503151525) 聯絡我們 主旨: [**轉自原相網頁**] Datasheet of ACX-1001(20120503151525) 姓名: Daniel Klose e-mail: [email protected] 收件部門: 客戶服務 Good afternoon, I am student of a University of Applied Science in Germany and working on my thesis in electrical engineering. In my project I want to use the ACX-1001 device of you, but I can not find any datasheet of the device. Is it possible to get a datasheet of the ACX-1001 from you? I would be happy about an answer of you. Kind regards, 訊息內容: Daniel Klose [email protected] Hochschule Ostwestfalen-Lippe University of Applied Science Liebigstr. 87 32657 Lemgo Germany http://www.hs-owl.de Praxisprojekt SS12 Daniel Klose Literaturverzeichnis 46 Literaturverzeichnis [1] http://www.wiki.ctbot.de, [Stand: 03.07.2012] [2] SHARP: Datenblatt GP2Y0A21YK, Sharp Corporation, 2005 [3] Thorsten Thiele, „Untersuchung zum Abstandssensor GP2D12“, 06.02.2006. http://www.segor.de/L1Bausaetze/gp2d12.shtml [Stand: 17.05.2012] [4] Heise Zeitschriften Verlag, „Hardware Modifikationen“, 07.03. – 10.06.2006. http://www.heise.de/ct/projekte/machmit/ctbot/wiki/ct-Bot-Modifikationen [Stand: 31.05.2012] [5] Testberichte.de Redaktion, „Logitech LS1 Laser Mouse“, 13.08.2010. http://www.testberichte.de/p/logitech-tests/ls1-laser-mouse-testbericht.html [Stand: 14.05.2012] [6] PixArt: Datenblätter Maussensoren „PAW3601DH“, PAW3602DH“, „PAW3603DH“, PixArt Imaging Inc., Taiwan, 03.2010. http://www.pixart.com.tw/product_data.asp?ToPage=1&productclassify_id=1 &productclassify2_id=5 [Stand: 07.05.2012] [7] Fabian Greif, „Liniensensor mit CNY70“, 13.01.2007. http://www.kreatives-chaos.com/artikel/liniensensor-mit-cny70 [Stand: 30.05.2012] [8] Atmel: Datenblatt ATmega32, Atmel Corporation, San Jose, 02.2011 [9] CardS12: Benutzerhandbuch CardS12 V1.1, ELMICRO Computer GmbH & Co. KG, Leipzig, 09.08.2007 [10] Benjamin Benz, „Spielgefährten”, c’t Magazin 2/2006, S.130, Heise Zeitschriften Verlag, 2006 [11] http://www.mikrocontroller.net, [Stand: 01.06.2012] [12] Heise Zeitschriften Verlag, Projektseite „c’t-Bot und c’t-Sim“, http://www.heise.de/ct/projekte/c-t-Bot-und-c-t-Sim-284119.html [Stand: 04.07.2012] [13] Vishay: Datenblatt TSOP34836, Vishay Semiconductor GmbH, Heilbronn, 23.06.2003 [14] Sprut.de, „IR-Fernbedienung –der RC-5 Code“, 16.07.2009. http://www.sprut.de/electronic/ir/rc5.htm [Stand: 13.06.2012] [15] http://www.rn-wissen.de, [Stand: 15.06.2012] Praxisprojekt SS12 Daniel Klose Literaturverzeichnis 47 [16] SHARP: Datenblatt IS471F, Sharp Corporation [17] Holger Thiele, „c’t-Bot“, 2010. http://www.hthiele.de/ctbot6.html [Stand: 15.07.2012] [18] Kraig Mitzner, „Complete PCB Design Using OrCAD® Capture and PCB Editor“, Elsevier Inc., 2009 Praxisprojekt SS12 Daniel Klose