cover

Verlag: BoD – Books on Demand, Norderstedt.

ISBN:9783744873642

Bibliografische Information der Deutschen Nationalbibliothek:

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie, detaillierte bibliografische Daten sind im Internet über www.dnb.de abrufbar.

© 2017 Dipl. –Ing. Peter Schneider

Herstellung und Verlag

BoD – Books on Demand GmbH, Norderstedt.

ISBN: 9783744807951

Alle Rechte, besonders das der Übersetzung, vorbehalten. Nachdruck und Vervielfältigung von Text und Abbildungen, auch auszugsweise, nur mit ausdrücklicher Genehmigung des Verlages.

Mein persönlicher Dank gilt folgenden Personen, die unermüdlich an der Fertigstellung dieses Buches mitgearbeitet haben und die manchmal doch recht eigenwilligen Ideen des Autors in Bild und Fotografie umsetzten.

Nicht zu vergessen, das technische Korrekturlesen der Schaltungen und der Begleittexte, welches sich als eine der aufwendigsten Arbeiten herausstellte.

Klaus Wellmann (Korrekturlesen)

Jürgen Rösler (Korrekturlesen)

Gerhard Spode (Korrekturlesen)

Christina Pagels (Beratung und Fotografien)

Gerd Lehmann (Comic Zeichnungen)

Inhaltsverzeichnis

  1. Rückblick auf die Arbeitsergebnisse des ersten Bandes
    1. 1.1 Informationen zur verwendeten Roboterhardware
      1. 1.1.1 Chassis Roboter R2PT3
      2. 1.1.2 Steuerplatine des Roboters
      3. 1.1.3 Die Test- und Programmierplatine
  2. Auswerten von Sensorsignalen
    1. 2.1 Flussdiagramme, auch Prograrnmablaufpläne genannt
    2. 2.2 Signalauswertung über Polling
    3. 2.3 Signalauswertung über Interrupt
  3. Der Analog-Digital-Wandler
    1. 3.1 Allgemeine Grundlagen
    2. 3.2 Programmablaufplan
    3. 3.3 Programmcode AD-Wandler-Funktion
  4. Projekt: Spannungsüberwachung des Akkus mit AD-Wandler
    1. 4.1 Entwurf einer Spannungsüberwachung
    2. 4.2 Ablaufplan Funktion check_bat()
    3. 4.3 Programmcode Funktion check bat ()
    4. 4.4 Einbinden der Funktion in das Hauptprogramm
    5. 4.5 Programmablaufplan Hauptprogramm
    6. 4.6 Sourcecode Hauptprogramm
  5. Timerprogrammierung (ATmega8)
    1. 5.1 Allgemeines zum 8-Bit-Timer
    2. 5.2 Der WatchDog(Stopuhr des ATmega8)
    3. 5.3 Programmablaufplan WatchDog ISR
    4. 5.4 Sourcecode der ISR
    5. 5.5 Programmablaufplan Init-Timer-Register
    6. 5.6 Sourcecode Init-Timer-Register
    7. 5.7 Ein einfaches Anwendungsbeispiel
  6. Zusätzliche Sensoren für den R2PT3 Roboter
    1. 6.1 Allgemeine Übersicht über die Sensoren des R2PT3
    2. 6.2 Passive- und aktive Sensoren
    3. 6.3 Analoge und digitale Infrarot Sensoren
      1. 6.3.1 Infrarot Reflexkoppler CNY70
      2. 6.3.2 Infrarot Reflexkoppler GP2Y0A21YK0F von Sharp.
      3. 6.3.3 IR-Gabellichtschranke GP1S58VJ000F von Sharp
      4. 6.3.4 Infrarot Reflexkoppler IS471F
    4. 6.4 IR-Sensor auf Basis des IS471F
  7. Projekt: Liniensensor
    1. 7.1 Entwurf eines Liniensensors
      1. 7.1.1 Der IR Sensor CNY70
      2. 7.1.2 Die IR-Sensor Platine
      3. 7.1.3 Realisierung des Sensors
    2. 7.2 Software zur Auswertung der Sensorsignale
      1. 7.2.1 Funktion: check_line
      2. 7.2.2 Funktion: move_control
  8. Projekt: Impulsgeber
    1. 8.1 Entwurf einer Impulsgeberschaltung
    2. 8.2 Software zur Auswertung der Signale des Impulsgeber
      1. 8.2.1 Abfrage der Impulsgeber
      2. 8.2.2 Funktion speed_fwd_full
    3. 8.3 Anwendungsbeispiel, eine bestimmte Strecke fahren
      1. 8.3.1 Funktion behaviourController
      2. 8.3.2 Funktion behaviour_cruise
      3. 8.3.3 Funktion behaviour_escape
      4. 8.3.4 Funktion moveCommand
      5. 8.3.5 Funktion Motor_Control
  9. Steuern und Regeln mit dem Mikrocontroller
    1. 9.1 Ein wenig Theorie zum Thema Steuern und Regeln
      1. 9.1.1 Unterschied zwischen Steuern und Regeln
      2. 9.1.2 Der Regelkreis
      3. 9.1.3 Verschiedene Typen von Reglern
      4. 9.1.4 Realisierung eines Reglers mittels Software
  10. Projekt: Gleichlauf der Antriebsräder des Roboters
    1. 10.1 Allgemeine Beschreibung des Projekt-vorhabens
    2. 10.2 Komponenten des Regelkreises
    3. 10.3 Software zur Auswertung der Sensorsignale
    4. 10.4 Realisierung der Regelung mittels P-Regler
  11. Programmerweiterung um den Status AVOID
    1. 11.1 Allgemeine Beschreibung der Funktion AVOID
    2. 11.2 Verdrahtung der IR-Sensoren
    3. 11.3 Veränderungen zum bestehenden Sourcecode aus dem Kapitel 8.3
      1. 11.3.1 Hauptprogramm main anpassen
      2. 11.3.2 ISR anpassen
      3. 11.3.3 Funktion behaviourController anpassen
    4. 11.4 Sourcecode der neuen Funktionen
      1. 11.4.1 Neue Funktion speed_left_avoid oder speed_right_avoid
      2. 11.4.2 Neue Funktion check_for_hindernis
      3. 11.4.3 Funktion moveCommand anpassen
      4. 11.4.4 Neue Funktion behaviour_avoid
  12. Steuerplatine auf Basis des ATmega32
    1. 12.1 Steuerplatine
    2. 12.2 Schaltplan, Bohr- und Bestückungsplan
      1. 12.2.1 Schaltplan Steuerplatine ATmega32
      2. 12.2.2 Bohrplan Steuerplatine ATmega32
      3. 12.2.3 Bestückungsplan Steuerplatine ATmega32
    3. 12.3 Änderungen an der Software
      1. 12.3.1 Der 16-Bit Timer
      2. 12.3.2 Anpassung der ISR
      3. 12.3.3 Funktion Motor_Drehrichtung
      4. 12.3.4 Funktion Motor_Geschwindigkeit
      5. 12.3.5 Funktion Motor_Control
      6. 12.3.6 Funktion check_for_hindernis
  13. Datenübertragung von PC zum Mikrocontroller
    1. 13.1 Warum überhaupt Datenübertragung?
    2. 13.2 UART- oder RS232-Schnittstelle
    3. 13.3 Der I2C-Bus
    4. 13.4 Datentransfer mittels Bluetooth
      1. 13.4.1 Schaltplan der Testschaltung
      2. 13.4.2 Bohrplan
      3. 13.4.3 Bestückungsplan
      4. 13.4.4 Programmierung des Moduls
  14. Projekt: Datenübertragung von PC zu R2PT3
    1. 14.1 Allgemeine Beschreibung des Projektes
    2. 14.2 Adapterplatine für den R2PT3
    3. 14.3 Programmcode für den PC
      1. 14.3.1 Daten über Tastatur einlesen
      2. 14.3.2 Daten an die serielle Schnittstelle senden
    4. 14.4 Programmcode für den R2PT3
    5. 14.5 Aufbau einer Handsteuerung
      1. 14.5.1 Aufbau der Senderhardware
      2. 14.5.2 Sourcecode für den Handsender
  15. Projekt: Wegsuche durch ein Labyrinth
    1. 15.1 Allgemeine Beschreibung des Projektes
    2. 15.2 Installation der neuen Sensoren
    3. 15.3 Programmcode für den R2PT3
  16. Projekt: Ansteuern von Servos aus dem RC-Modellbau
    1. 16.1 Allgemeine Beschreibung des Projektes
    2. 16.2 Programmcode für den PC
    3. 16.3 Programmcode für den ATmega8 Mikrocontroller
  17. Projekt: Auswerten der Signale aus einem RC-Modellbauempfänger
    1. 17.1 Allgemeine Beschreibung des Projektes
    2. 17.2 Programmcode für den ATmega8 Mikrocontroller
  18. Projekt: Ansteuern eines Schritt-motors
    1. 18.1 Allgemeine Beschreibung des Projektes
    2. 18.2 Programmcode für den ATmega8 Mikrocontroller
  19. Schlussbetrachtung und Ausblick
  20. Sourcecode-Sammlung
    1. 20.1 Projekt Spannungsüberwachung des Akkus mit AD-Wandler
      1. 20.1.1 Header-Datei für AD-Wandlerauswertung
      2. 20.1.2 Spannungsüberwachung des Akkus
    2. 20.2 Timerprogrammierung (ATmega8)
    3. 20.3 Projekt: Liniensensor
    4. 20.4 Projekt: Impulsgeber
    5. 20.5 Projekt: Gleichlauf der Antriebsräder des Roboters
    6. 20.6 Programmerweiterung um den Status AVOID
    7. 20.7 Projekt: Datenübertragung von PC zu R2PT3 mittels Bluetooth
      1. 20.7.1 Sourcecode für den Header-File RS232_v1.h
      2. 20.7.2 Sourcecode für R2PT3
      3. 20.7.3 Sourcecode für PC
      4. 20.7.4 Sourcecode für Handsender
    8. 20.8 Projekt: Wegsuche durch ein Labyrinth
    9. 20.9 Projekt: Ansteuern von Servos aus dem RC-Modellbau
      1. 20.9.1 Sourcecode für die ATmega8 Test -und Programmierplatine
      2. 20.9.2 Sourcecode für die PC Software
    10. 20.10 Projekt: Auswerten der Signale aus einem RC-Modellbauempfänger
    11. 20.11 Projekt: Ansteuern eines Schrittmotors
  21. Fehleranalyse
  22. Quellenangaben:
    1. 22.1 Internet-Quellen:
    2. 22.2 Bücher:
  23. Bezugsmöglichkeiten der verwendeten Bauteile und Materialien
  24. Materiallisten für den Roboterbau inkl. Steuerplatine
    1. 24.1 Roboter und Chassis
    2. 24.2 Steuerplatinen
    3. 24.3 Sensoren
    4. 24.4 Test –und Programmierplatinen
    5. 24.5 Bluetooth

Vorwort

Liebe Roboterbegeisterte und Technikfreaks. In meinem zweiten Band über Robotertechnik möchte ich mit Ihnen einige Ausflüge in Richtung der Sensorik unternehmen und wie man diese Sensorwerte geschickt auswertet bzw. verarbeitet. Als erstes betrachten wir einmal unser Ergebnis aus Band I, „Der Weg zum eigenen Roboter, Selbstbau und Programmierung“. Wie, noch nicht gekauft und dann wollen Sie hier in die Thematik einsteigen…?

Okay, vielleicht haben Sie ja auch das fertige Produkt bei Schneider-Engineerings (www.ps-robotics.de) bezogen, oder Sie haben bereits Erfahrungen gesammelt auf dem Gebiet der Robotertechnik und wollen Ihr Wissen vertiefen. Alles valide Begründungen und doch möchte ich Sie darauf aufmerksam machen, dass wir auf bestehende Hardware und Software aus Band I immer wieder zurückgreifen werden. Ebenfalls möchte ich nicht verschweigen, dass dieses Buch nicht für Anfänger geschrieben ist. Viele der gezeigten Beispiele sind so groß im Umfang, dass ich nicht jede Zeile Sourcecode beschreiben kann.

Natürlich gibt es direkt am Anfang dieses Buches einen Crashkurs zu den Ergebnissen aus Band I. Die dort gezeigten Bilder und Erklärungen sollten Ihnen den schnellen Einstieg ermöglichen. Der PC diente bisher nur als Entwicklungstool und Datentransferschnittstelle. Diesmal wollen wir ein wenig tiefer in die Möglichkeiten eintauchen den PC für Simulationen und als Kommunikationsschnittstelle zu nutzen. Kommunikationsschnittstelle, hört sich fast gefährlich an! Was gemeint ist, ist dass wir den PC nutzen wollen, via Funksignal z.B. Wireless Network (WLAN) oder Bluetooth mit dem Roboter in Verbindung zu treten.

Um das Ganze nicht von vorneherein zu verkomplizieren, schauen wir uns die Grundlagen der Kommunikation mit einem Roboter an einer seriellen Schnittstelle an. Bei dieser Datenübertragung wird die RS232 Schnittstelle des PCs und die RS232 Schnittstelle des Mikrocontrollers (UART) zur Datenübertragung genutzt. Die dort gewonnenen Grundlagen werden wir ausbauen und bei den Funkverbindungen verwenden bzw. weiterentwickeln. Wozu das alles? Über die Funk– bzw. Netzwerkverbindung sollen Daten ausgetauscht werden. Zum Beispiel können wir Steuerdaten von dem PC an den Roboter senden und den Roboter somit fernsteuern. Bisher war der Roboter nur in der Lage geradeaus zufahren und beim Berühren von Hindernissen die Fahrtrichtung zu ändern. Als weiteren Punkt werden wir die Analog-Digital-Schnittstelle am ATmega8 Mikrocontroller ansteuern und auslesen. Nutzen werden wir die AD-Schnittstelle, um eine Batterieüberwachung für den Roboter zu realisieren. Außerdem werden wir das bestehende Programm zur Robotersteuerung aus Band I erweitern, um die Funktion AVOID. Mit dieser neuen Funktion und entsprechend neuen Sensoren, soll der Roboter entfernte Hindernisse erkennen und ihnen ausweichen. Eine weitere Sensor– und Programmerweiterung soll den Roboter in die Lage versetzen einer Linie am Boden zu folgen. Zusätzlich angebrachte Lochscheiben an den Getriebeachsen werden als Impulsgeber genutzt. Über einen Regelalgorithmus wollen wir den Gleichlauf der Antriebsräder realisieren. Somit kann der Roboter sehr genau geradeaus fahren. Da wir an die Speichergrenzen des ATmega8 kommen, werden wir eine neue Robotersteuerplatine, auf Basis des ATmega32 erstellen und die bisher genutzte Steuerplatine, auf Basis des ATmega8 ablösen.

Neue Sensoren wollen wir ebenfalls entwickeln, auf Basis von Infrarot Sendern und Empfängern und noch viele kleine weitere Dinge, die unserem Roboter mehr „Leben“ einhauchen. Bei all den kleinen Projekten wird es jede Menge Tipps und Tricks geben, die uns das Leben erleichtern.

Hört sich toll an? Dann aber los und ein neues Kapitel der Robotik angehen. Genau wie letztes Mal, alles im Eigenbau oder Neu-Deutsch „home made“!

Ebenfalls für den Band II gilt, dass ich gerne mal abschweife und versuche meine Erfahrungen mit etwas Humor einfließen zu lassen. Ich möchte das manchmal sehr trockene Thema etwas mit Esprit würzen und eines werde ich Ihnen bestimmt nicht verheimlichen, meine Misserfolge und den Frust, den ich geschoben habe wenn es nicht funktionierte. Mit diesem Buch möchte ich Ihnen zeigen, wie man die größten Fehler vermeiden, bzw. wie man aus dem Dilemma herauskommt, wenn gar nichts mehr geht.

Anmerkung:

Je nach dem, wann Sie dieses Buch erwerben kann es sein, dass die Produkte / Elektronikbauteile in den beschriebene Versionen nicht mehr verfügbar sind. Meistens hat man aber Glück und findet die Nachfolgemodelle, die dann meistens abwärtskompatibel sind. Das gilt sowohl für die verwendete Software, als auch für die verwendete Hardware.

Genannte Informationen über Bauteile sind auf das Entstehungsjahr (2016 / 2017) dieses Buches bezogen.

Voraussetzungen zum Arbeiten mit diesem Buch

Für wen ist dieses Buch geschrieben? Einen Teil der Antwort habe ich schon im Vorwort beschrieben. Hier nun einige Vorbedingungen, die wir ganz am Anfang klären sollten:

1. Rückblick auf die Arbeitsergebnisse des ersten Bandes

Das erste Kapitel soll einen Einblick geben welche Hardware, Software aus Band I übernommen wurde. Die wichtigsten Details des Roboters, der Platinen und Software werden noch einmal kurz wiederholt.

Folgende Lernziele sind Bestandteil dieses Kapitels:

1.1 Informationen zur verwendeten Roboterhardware

Im Band I wurde ein Roboter vorgestellt, der vollkommen im Selbstbau erstellt werden kann. Der nun folgende Abschnitt zeigt die wichtigsten Bauabschnitte und die dazugehörigen Baupläne. Sollte das zu kompliziert für Sie sein, alle z.B. Chassisteile aus 3mm Sperrholz oder PCV zu fertigen, dann können sie den kompletten Bausatz, inklusive Software bei Schneider-Engineerings bestellen. Siehe Weblink www.ps-robotics.de. In dem Roboterbausatz sind allerdings nicht die im weiteren verwendeten Programmier- und Testplatinen enthalten. Diese können allerdings separat bezogen werden.

Den prinzipiellen Aufbau der Roboters zeigt die Abbildung 1. Das Chassis besteht aus einer runden Holzplatte oder PVC in dem die Ausschnitte für die Räder eingelassen sind. Die Abbildungen 2 bis 6 zeigen die einzelnen Zeichnungen mit Maßangaben für die Bauteile der beiden Getriebe. Das Getriebe wird aus insgesamt drei Teilen zusammengesetzt und anschließend Messingrohre als Lagerung für die Achsen eingeführt. Die Messingrohre haben die Längen 26mm, 24mm und 22mm. Als Achsen können z.B. 3mm Gewindestange genutzt werden. Bitte beachten Sie, dass das Getriebe einmal für links und einmal für rechts aufgebaut werden muss. Das fertige Getriebe zeigen die Abbildung 7 bis 9. Alle zum Roboternachbau benötigten Materialien sind im Anhang dieses Buches aufgeführt.

1.1.1 Chassis Roboter R2PT3

Abb.: 1

Grundplatte des Roboters

Abb.: 2

Einzelteile des Getriebechassis:

Abb.: 3

Abb.: 4

Zusammenführen der einzelnen Getriebeteile

Abb.: 5

Halterung für Ladebuchse, Ausschalter und Resetknopf

Abb.: 6

Das fertige Chassis sieht nach Zusammenbau folgendermaßen aus:

Chassis mit Motorverkabelung

Abb.: 7

Chassis komplett inkl. Steuerplatine

Abb.: 8

Detailaufnahme des Getriebes

Abb.: 9

Stoßstange des R2PT3

Abb.: 10

1.1.2 Steuerplatine des Roboters

Für den Bau der Steuerplatine wurde eine handelsübliche Lochstreifenplatine mit den Maßen 90mm × 50mm verwendet. Mit einem 4mm Bohrer wurden die Leiterbahnen je nach Bedarf aufgetrennt. Die Abbildungen 11, 13, 12 und 14 zeigen den überarbeiteten Schaltplan, Bohrplan, Legende (Zeichenerklärung) und Bestückungsplan der Steuerplatine. Änderungen, siehe

Schaltplan

Abb.: 11

Zeichenerklärung zu den Platinenlayouts

Abb.: 12

Bohrplan der Steuerplatine

Abb: 13

Bestückungsplan der Steuerplatine

Abb.: 14

Die Abbildung 15 zeigt wie die einzelnen Komponenten miteinander verbunden werden. als Energieversorgung nutzen wir 6 × 1,2Volt 1100mAh Akkus vom Type AAA.

Somit liegen Ihnen alle Informationen vor, die Sie zum Nachbau des Roboters benötigen. Als nächstes folgt ein kurzer Rückblick in die Programmierung des Roboters.

Abb.: 15

1.1.3 Die Test- und Programmierplatine

Schaltplan der Test- und Programmierplatine

Abb.: 16

Die Programmierhardware wird benötigt, um den Bootloader „einmalig“ auf den Mikrocontroller zu laden. Der Ladevorgang erfolgt mit dem Tool PonyProg2000 über ein spezielles Kabel, dass die RS232 des PCs mit der ISP Schnittstelle des Mikrocontrollers verbindet. Als Alternative stehen Ihnen für die Programmierung, als auch für das Aufspielen des Bootloaders, die von Atmel angebotenen, professionellen Programmierplatinen vom Type z.B. STK500 oder STK600 zur Verfügung. Die späteren Ladevorgänge der Software auf den Roboter erfolgen mit dem Programm Megaload. Die Software Megaload ist auf dem PC und lädt das zuvor kompilierte Programm mittels Bootloader in den Mikrocontroller. Als Compiler steht uns WinAVR zur Verfügung. Zur Programmentwicklung reicht ein einfacher Editor wie Notepad von Windows aus. Das C-Programm wird im Editor (z.B. Notepad) entwickelt, mit WinAVR kompiliert und anschließend mit Megaload auf den Mikrocontroller geladen.

Es gibt hier noch viel mehr zu erklären, aber das finden Sie ja alles in Band I erschöpfend erklärt.