Transcript
Page 1: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Hovercraft

H o c h s c h u l e R u h r W e s t

E m b e d d e d S y s t e m s

P r o f . M i c h a e l S c h ä f e r

W i n t e r s e m e s t e r 2 0 1 1 / 1 2

Jan Eberwein - Matrikelnummer: 10000198

Thorsten Tatarek – Matrikelnr.:10000179

Die Lehrveranstaltung „Embedded Systems“ wird in Form

von Vorlesungen und Praktika abgehalten. In den

Vorlesungen werden Theorien zur Microcontroller

Programmierung, elektronischen Bauteilen und ähnliches

erläutert. Im Praktikum werden diese Themen vertieft,

indem an verschiedenen „Projekten“ gearbeitet wird. Bei

dem Hovercraft handelt es sich um ein Semesterprojekt.

Diese Ausarbeitung beschäftigt sich primär mit der

Entwicklung des Hovercrafts und sekundär mit anderen

Themengebieten die mit in das Projekt eingeflossen sind.

Page 2: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

1 | S e i t e

Inhaltsverzeichnis

Inhaltsverzeichnis ___________________________________________________________ 1

Vorwort ___________________________________________________________________ 2

Danksagung ____________________________________________________________________ 2

Hinweise ______________________________________________________________________ 2

Einführung Hovercraft _______________________________________________________ 3

Projektthema: Hovercraft ________________________________________________________ 3

Hovercraft Bauteile ______________________________________________________________ 3

Arduino Entwicklerumgebung _____________________________________________________ 8

Ablauf des Praktikums ___________________________________________________________ 9

Schaltungsaufbau _______________________________________________________________ 9

Steuerung des Hovercrafts _______________________________________________________ 11

Einführung der Programmierung __________________________________________________ 12

Optimierung: Zwei PWM Signale parallel senden_________________________________ 14

Hovercraft Erweiterung – Ultraschall __________________________________________ 15

Was ist Ultraschall / Theorie _____________________________________________________ 15

Sensormechanik und Schaltungsaufbau ____________________________________________ 17

Programmierung _______________________________________________________________ 18

Anwendung der Sensorinformation ________________________________________________ 19

Programmablauf___________________________________________________________ 20

Projektergebnis ____________________________________________________________ 21

Bilderverzeichnis ___________________________________________________________ 22

Literaturverzeichnis ________________________________________________________ 22

Genutzte Programme _______________________________________________________ 22

Anhang __________________________________________________________________ 23

Aufgabenteilung ___________________________________________________________ 23

Page 3: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

2 | S e i t e

Vorwort

Danksagung Hiermit möchten wir uns dafür bedanken, dass Herr Professor Michael Schäfer, Leiter der Vorträge

und des Praktikums im Fach Eingebettet Systems (engl.:embedded Systems), dieses interessante

Praktikum mit uns Studierenden durchgeführt hat.

Des Weiteren möchten wir uns bei Robert Reichert bedanken, der viele Stunden damit verbracht hat

Bastelmaterialien und Elektronik zu sammeln um daraus für jede Studierendengruppe ein Hovercraft

zu bauen (das „Verkabeln“ war aber noch unsere Aufgabe).

Prof. Schäfer, Herr Reichert sowie die Hochschule Ruhr West haben alles was im Praktikum

verwendet wurde für uns ohne Kosten bereitgestellt. Es ist nicht selbstverständlich das Hardware von

über 70 Euro an jede Studentengruppe ausgehändigt wird. Natürlich werden alle Materialien

zurückgegeben.

Eine weitere Danksagung geht an Stefan Janssen von der Fachhochschule Südwestfalen, einen

Studenten, der zu der Zeit des Praktikums an seiner Masterarbeit gearbeitet hat. Er ist jeden Montag

über 50 Kilometer gefahren um uns das Programmieren von Microcontrollern und das Verwenden

des Programmes EAGLE zur Erstellung von Leiterplatinen und Schaltbildern beizubringen.

Hinweise Alle in diesem Dokument angebenden Daten und Internetadressen waren gültig vor dem

19.3.2012. Änderungen der Quellen sind nicht ausgeschlossen.

In dieser Dokumentation werden Theorien zu verschiedenen Themen sowie Bauelementen

beschrieben, dabei betrachten wir die Bauteile als ideale Bauelemente.

Page 4: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

3 | S e i t e

Einführung Hovercraft

Projektthema: Hovercraft Das Projekt fand während des ganzen Wintersemesters 2011/12 in Form eines Praktikums statt. Ziel

des Praktikums war es ein Hovercraft zu bauen und die Steuerung über ein Arduinoboard zu

realisieren.

Innerhalb des Praktikums wurde wöchentlich an dem Hovercraft gebastelt und programmiert. Uns

wurde das Hovercraft, welches eigentlich ein Schwimmbrett ist, mit dem vormontierten Rotor für

den Auftrieb gestellt. Außerdem war der Schwenkarm + Rotor bereits vorinstalliert. Das

Arduinoboard stand durch die Aufgabenstellung von vornerein zur Verfügung. Die weiteren

Komponenten (Fahrtenregler, Akku, Steuerung) wurden während des Praktikums zusammen mit

einer „Erweiterung“ installiert und programmiert.

Unsere Hovercraft Erweiterung ist ein Ultraschallsensor, damit eine Frontalkollision automatisch

vermieden wird.

Hovercraft Bauteile Das Hovercraft wurde wie oben beschrieben aus vielen verschiedenen Teilen zusammengebaut und

sieht im Ganzen wie folgt aus.

Akku

Fahrtenregler

Ultraschallsensor

Schaltplatine

Arduinoboard

Schwenkarm + Rotor

Steuerung Analogstick

Rotor für Auftrieb

Abbildung 1 - Hovercraft

Page 5: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

4 | S e i t e

Das Herz des Hovercrafts ist das Arduinoboard auf dem sich der Microcontroller mit der

Programmierung befindet. Der Rotor in der Mitte des Schwimmbrettes sorgt für den benötigten

Auftrieb. Die Bewegung in die gewünschte Richtung übernimmt der Rotor mit dem Servomotor im

Hintergrund. Das ganze System wird über den Akku mit Strom versorgt. Nun werden die einzelnen

Bauteile genauer beleuchtet.

Akku

Kenndaten:

7,2 Volt

1300 mAmpere

Abbildung 2 - Akku

Rotor / Motor

Auf dem folgenden Bild ist der Rotor zu erkennen. Dieser saugt die Luft von oben ein und drückt sie

nach unten. Dadurch entsteht ein Luftkegel der das Hovercraft hochdrückt. Die Geschwindigkeit mit

der sich der Rotor dreht ist fix eingestellt um für einen gleichmäßigen Luftstrom zu sorgen. Der

Motor wird direkt vom Akku mit 7,2V betrieben.

Abbildung 3 - Motor

Page 6: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

5 | S e i t e

Unterseite

Hier ist die Unterseite des Luftbootes zu sehen. Es wurde etwas herausgeschnitten, damit Platz für

die eingesogene Luft verfügbar ist. Es entsteht das sogenannte „Luftkissen“ auf dem das Boot

„schwebt“. Diese Aussparung ist vorhanden, damit der „Luftkisseneffekt“ besser auftreten kann.

Abbildung 4 - Unterseite

Fahrtenregler

Der Fahrtenregler ist für die Ansteuerung des Motors zuständig, er übersetzt ihm gesendete Befehle,

die in Form von Spannungen an den Motor des Schwenkarms anlegt werden. Der Fahrtenregler hat

ein Standard Output für einen Motor und ist außerdem mit dem Akku direkt verbunden.

Kenndaten:

Modelcraft B4230 – Carbon Series (Deutsches Datenblatt im Anhang)

Negatives:

Verfügt über eine Selbstjustierfunktion, führte zu Problemen in der Programmierung

Sperre von Vorwärtsgang in den Rückwärtsgang (erzwingt eine Pause vom Anwender)

Abbildung 5 - Fahrtenregler

Page 7: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

6 | S e i t e

Schwenkarm und Rotor

Dieses Bauteil ist für den Antrieb und für die Lenkung zuständig. Der Rotor sorgt für Schub und drückt

das schwebende Hovercraft nach vorne bzw. nach hinten. Die Schubmenge ist regelbar über einen

Steueranalogstick und ermöglicht eine Dosierung der Geschwindigkeit (genauer Vorgang wird in

dieser Dokumentation folgen). Unter dem Schwenkarm ist ein Servomotor verbaut der das Gestell

dreht und somit die Lenkung ermöglicht. Der Servo wird im nachfolgenden Bild genauer gezeigt.

Kenndaten:

Design des Schwenkarms von Robert Reichert

Hergestellt mit einem 3D-Drucker

Abbildung 6 - Schwenkarm und Rotor

Servomotor

Hier handelt es sich um den oben erwähnten Servomotor. Dieser kippt den Rotor für den Antrieb

nach Links oder Rechts. Wird der Rotor nach Rechts gekippt dreht sich das Hovercraft nach Links und

umgekehrt. Er arbeiten mit der Pulse Weiten Modulation (PWM) welche im Bereich Programmierung

genauer beschrieben wird.

Abbildung 7 - Servomotor

Page 8: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

7 | S e i t e

Analogstick

Im Bild zu sehen ist der Analogstick (beim grauen Kasten handelt es sich nur um ein Gehäuse damit

der Stick besser verwendet werden kann) mit dem sich das Hovercraft bewegen lässt. Er ermöglicht

die Vorwärts- bzw. Rückwärtsbewegung und steuert außerdem den Schwenkarm nach Links und

Rechts mithilfe des Servomotors. Der Analogsticks verfügt über zwei Potentionmeter welche die

Bewegung in X- und Y-Achse erkennen und über die Signalleitung an den Fahrtenregler weitergeben.

Abbildung 8 - Analogstick

Arduinoboard, Schaltplatine, Ultraschallsensor

Nun kommen wir zum Herz des Hovercrafts, das Arduinoboard. Auf diesem befindet sich der

Microcontroller ATMEGA328P-PU. Es verfügt über eine USB-Schnittstelle zur Programmierung die

zudem als Spannungsquelle mit 5 Volt genutzt werden kann (Maximalleistung ist durch die USB-

Schnittstelle begrenzt). Des Weiteren kann das Ardoinuoboard mit einer externen Spannungquelle

über einen Anschlusspin oder Klemme versorgt werden. Die Arduinotechnik ist mittlerweile sehr

beliebt, weil das Gesamtboard so gestaltet wurde, dass sogennante „Shields“ (Erweitungen aus der

Industrie oder privaten Hobbybastlern) sich aufstecken lassen. Ein Shield wäre z.B. das WLAN-Shield

welches genutzt wird um Funkverbindungen einzugehen.

Bei der Arduino-Platform handelt es um ein OpenSource System/Projekt welches somit für jeden

zugänglich ist. Jeder kann eigene Shields entwickeln und kann diese für jedermann zugänglich

machen. Das Board verfügt über 14 digitale I/O-Pins und weitere 6 Pins die direkt an einen Analog-

/Digitalwandler gekoppelt sind.

Wir verwenden ein Shield um unsere spätere Erweiterung nutzen zu können. Dieses Shield ist eine

Schaltplatine und wird auf das Arduinoboard aufgesteckt. Jedes Shield ist so designt das es alle Pins

über mehrere Layer verbindet. Das gute an dem Shield ist, dass man eigene Kabelverbindungen bzw.

eigene Schaltungen erstellen kann. Dies ist genau der Grund weswegen wir dieses Shield für unsere

Erweiterung mit dem Ultraschallsensor verwenden.

Im linken Bild unten ist der Ultraschallsensor zu erkennen. Dieser hat drei Pins

(5V/Ground(GND)/Signal) über die der Sensor betrieben wird. Die Theorie des Ultraschallsensors

wird später noch genauer erläutert.

Page 9: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

8 | S e i t e

Abbildung 9 - Arduino UNO

Ardunioboard Kenndaten:

Board: Ardunio Uno R3

ATMEGA328P-PU

5V Operating Voltage

7-12V Input Voltage

USB-Port

Takt: 16MHz

weiteres Details siehe unter: arduino.cc/en/Main/ArduinoBoardUno

Abbildung 10 - Arduinoboard, Schaltplatine, Ultraschallsensor

Arduino Entwicklerumgebung Die Entwicklerumgebung besteht grundlegend aus einem Texteditor für Quellcode und einer Toolbar

mit einzelnen Buttons für die Konnektivität mit dem Board. Des Weiteren gibt es einige Menüpunkte

mit Extrafunktionen wie z.B. einen Serialmonitor der die Ergebnisse der Variablen anzeigt.

Zu den eben erwähnten Tools zählen unter anderem Verify, Upload, New, Open, Save. „Verify“

überprüft ob der Code irgendwelche Fehler beinhaltet. „Upload“ ist eines der wichtigsten Tools. Der

Quellcode wird für das Arduinoboard kompiliert und auf das Board via USB-Kabel übertragen. „New“

erstellt ein neues Projekt für ein Programm und „Open“ öffnet ein bereits bestehendes Dokument.

„Save“ speichert das aktuell ausgewählte Projekt.

Die Arduinoumgebung besitzt eine Bibliothek für eine Reihe von Befehlen welche mit „#include“ in

das Programm eingebunden wird. Zudem stehen Beispielquellcodes zur für diverse Shields

Verfügung.

Page 10: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

9 | S e i t e

Ablauf des Praktikums Zu Beginn des Praktikums wurde uns das Hovercraft gezeigt und das Arduinoboard erklärt. Wie der

Microcontroller programmiert wird erlernten wir ebenfalls im Laufe des Praktikums durch das Bauen

von Schaltungen wie z.B. einen A/D-Wandler oder eine funktionsfähige Lichterkennung mit LEDs und

Fototransistoren. Begleitet und geholfen hat uns dabei Herr Janssen. Die Elektronik, bestehend aus

Akku, Fahrtenregler und Analogstick, des Hovercrafts mussten wir selbständig mit einem Lötkolben

verlöten. Der Schwenkarm und die Rotoren waren von Herr Reichert vormontiert worden und so

mussten wir nur noch die Leitungen verbinden bzw. an die andere Elektronik löten. Es war ein grobes

Schema der Gesamtschaltung vorgegeben, jedoch war die Programmierung des Arduinoboards eine

vollständige Eigenleistung der Praktikumsgruppe.

Als Zusatz sollte sich jede Gruppe eine Erweiterung für das Hovercraft ausdenken und umsetzen. Ein

Team hat z.B. die Steuerung über ein Smartphone und WLAN ermöglicht. Wir haben uns für eine

Ultraschallsensorik entschieden, damit das Hovercraft ein Hindernis erkennt und darauf reagieren

kann. Die dazugekommenen Bauteile waren das Schaltplatinen-Shield und der Ultraschallsensor.

Im Praktikum haben wir für das Arduinoboard mit aufgestecktem Shield und Sensor Programme

angefertigt und auf das Arduino Uno überspielt. Uns war es frei gestellt das Praktikum Zuhause

fortzuführen um das Projekt fertigzustellen oder eventuelle Verbesserungen vorzunehmen.

Schaltungsaufbau Das nachfolgenden Schaltbild, welches mit EAGLE erstellt wurde, zeigt den Basis-Schaltungsaufbau

(ohne Ultraschallsensorik, denn diese folgt im späteren Verlauf der Dokumentation) des Hovercrafts,

welcher auch in Zusammenhang mit einem funktionstüchtigen Quellcode des Hovercrafts steht.

Anmerkung: Alle Schaltbilder und Programmcodesegmente kommen von unserer Gruppe und sind

das Ergebnis unseres Projektes. Werden Änderungen an den Angaben aus dieser

Projektbeschreibung vorgenommen so ist nicht dieselbe Funktion gewährleistet.

Abbildung 11 – Schaltplan des Hovercrafts

Page 11: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

10 | S e i t e

Erläuterung der PIN-Belegung

Aufgrund dessen, dass keine Schaltsymbole für unseren Fahrtenregler, Servomotor und Motoren in

der EAGLE Bibliothek gefunden wurden, haben wir diese mit PINHEADER Symbolen dargestellt.

2-mal 1x2 PINHEADER für Motoren/Rotoren (MOTORHUB und MOTORACC) 1-mal 1x3 PINHEADER für Servomotor (SERVO) 1-mal 2x5 PINHEADER für Fahrtenregler (MOTORCONTROLLER)

Erläuterung des PINHEADER 2x5: MOTORCONTROLLER

PIN Funktion

10 Vin / Spannungsversorgung des Fahrtenregler von bis zu +8,4V

8 GND

9 Spannungsversorgung: Beschleunigungsmotor

7 GND: Beschleunigungsmotor

5 Spannungsversorgung für den Servomotor

1 GND für den Servomotor

3 Input: Ansteuerung des Fahrtenreglers mit Pulse Weiten Modulation(PWM)

6,4,2 Physisch nicht verfügbar

Pin 9 und 7 können je nach Einsetzen des Motors oder Quellcode getauscht sein.

Erläuterung des PINHEADER 1x2: MOTORACC und MOTORHUB

Der MOTORACC steht für den Motor/Rotor der das Hovercraft beschleunigt und der MOTORHUB für den Motor/Rotor der das Luftkissen erzeugt. Die Anschlussbelegung ist bei beiden Motoren identisch.

PIN Funktion

1 Vin / Spannungsversorgung von bis zu 7,2V

2 GND

Je nach Einsetzen des Motors könnte Vin und GND getauscht werden müssen, damit die Betriebsrichtung mit dieser Dokumentation übereinstimmt.

Erläuterung des PINHEADER 1x3: SERVO

PIN Funktion

1 Vin / Spannungsversorgung von bis zu 7,2V

2 Input: Ansteuerung des Servomotors mit PWM

3 GND

Je nach Position und Typ des Servomotors muss der Quellcode angepasst werden.

Page 12: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

11 | S e i t e

Steuerung des Hovercrafts Eine analoge Fernbedienung steuert das Hovercraft, indem der Analogstick, welcher über zwei

Potentiometer verfügt, analoge Spannungen an zwei Analog-/Digitalwandler (A/D-Wandler) des

ATMEGA328P-PU legt. Der A/D-Wandler wandelt diese in einen digitalen Wert um die dann weiter

verwendet werden.

Die vorgenommen Einstellungen des A/D-Wandlers und Kenndaten:

Reference Spannung: 5V

10 Bit Auflösung (1024 Werte von 0 bis 1023)

Durch die 10 Bit Auflösung liegt die Quantisierung des A/D-Wandler bei

Der Analogstick und somit die Potentiometer befinden sich auf dem obigen Bild in der Null-Position

(keine Kraftauswirkung auf den Stick). Ein Potentiometer funktioniert nach dem Prinzip eines

Spannungsteilers.

Beispiel: Würde man an den Spannungsteiler 5V anlegen (am Ende ist GND)

so müsste nach dem Reihenschaltungsgesetz die Spannung sich

verhältnismäßig aufteilen. In der Null-Position sollte idealerweise das

Verhältnis auf 50-50 sein. Zwischen den Widerständen 1 und 2 wird die

Teilspannung von 2,5V an den A/D-Wandler gelegt/abgegriffen.

Diese 2,5V werden vom A/D-Wandler mit einer 10 Bit Auflösung in den

Digitalwert von 512 umgewandelt.

Berechnungsformel:

Dieses Prinzip gilt für die horizontale- und vertikale Achse bzw.

Potentiometer.

Die Vertikale Achse (Y-Achse) des Analogsticks bestimmt die Beschleunigung des Hovercrafts und die

horizontale Achse (X-Achse) die Bewegungsrichtung.

Die Digitalwerte 512 stehen dafür, dass sich das Hovercraft in Ruhe befindet und die

Bewegungsrichtung Gerade aus ist.

Abbildung 12 - Fernsteuerung

Abbildung 13 - Spannungsteiler

Page 13: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

12 | S e i t e

Unsere eigenen daraus resultierenden Definitionen lauten:

Vertikale Werte:

Wert > 512 : Beschleunigung nach vorne /Vorwärts fahren

Wert = 512 : keine Beschleunigung

Wert < 512 : Beschleunigung nach hinten /Rückwärts fahren

Vertikale Werte:

Wert > 512 : nach rechts fahren

Wert = 512 : kein lenken

Wert < 512 : nach links fahren

Achtung: Das Prinzip des Lenkens bzw. das Fahren in eine bestimmte Richtung folgt dem

Abstoßungsprinzip.

Einführung der Programmierung Der Servo und der Fahrtenregler arbeiten mit der Pulse Weiten Modulation (engl.: pulse width

modulation, PWM). Das PWM Signal ist ein Zeitsignal welches eine Maximallänge von 20 ms besitzt.

Die Information, die über die PWM versendet wird, versteckt sich in Länge der High/Low Pegel des

Zeitsignals.

Der nachfolgende Quellcode ist die PWM-Basisfunktion mit dem das Hovercraft betrieben wird:

Der Funktion werden ein Wert, welcher die PWM verlängert, und ein Empfänger-Port übergeben.

void pulseWidthModulationFunction(int value, int port){ digitalWrite(port, HIGH); delayMicroseconds (value + 1000); digitalWrite(port, LOW); delayMicroseconds(10000);

}

Abbildung 14 - Lenkprinzip

Page 14: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

13 | S e i t e

Beim Hovercraft verwenden wir den Port 13 (gleichzusetzten mit PIN 13) für den Servomotor des

Schwenkarms, welche die Bewegungsrichtung steuert und Port 11 für den Fahrtenregler vom

Arduinoboard.

Aus dem Quellcode ist ersichtlich, dass die Länge des PWM-Signals über die „delayMicroseconds“-

Funktion erzeugt wird. Die Minimallänge beträgt 1ms bzw. 1000µs und wird über eine Addition mit

der Variable „value“ verlängert. Bei einem „value“ Wert von 512 erfolgt keine Beschleunigung und

der Servo richtet sich in einen 90° Winkel aus.

Ziel ist es über die PWM das Hovercraft positiv/negativ zu beschleunigen und die „Lenkung“ zu

realisieren.

Beispiel Servomotor:

Hovercraft soll stark nach rechts fahren:

o Wert vom A/D-Wandler 1023

o Highpegel aktiv für 2023µs

o => Einstellung eines 180° Winkel

Hovercraft soll geradeaus fahren:

o Wert vom A/D-Wandler 512

o Highpegel aktiv für 1512µs

o => Einstellung eines 90° Winkel

Hovercraft soll stark nach links fahren:

o Wert vom A/D-Wandler 0

o Highpegel aktiv für 1000µs

o => Einstellung eines 0° Winkel

Funktionsart des Fahrtenreglers: je nach PWM legt der Fahrtenregler an der Stromleitungen für den

Motor eine Spannung an.

Gewünschte A/D-Wandler Werte:

Beispiel

Hovercraft soll maximal beschleunigen:

o Wert vom A/D-Wandler 1023

o Highpegel aktiv für 2023µs

o => Einstellung am Fahrtenregler von +5V (Vermutung da die Fahrtenregler Anleitung

keine Angaben liefert)

Hovercraft soll nicht beschleunigen:

o Wert vom A/D-Wandler 512

o Highpegel aktiv für 1512µs

o => Einstellung am Fahrtenregler von +0V

Hovercraft soll maximal negativ beschleunigen:

o Wert vom A/D-Wandler 0

o Highpegel aktiv für 1000µs

o => Einstellung am Fahrtenregler von -5V

Abbildung 15 - Servo PWM

Page 15: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

14 | S e i t e

Optimierung: Zwei PWM Signale parallel senden Der ATMEGA328P-PU Microcontroller kann nur sequentiell das aufgespielte Programm verarbeiten,

was in manchen Situationen uneffektiv ist.

Man kann die pulseWidthModulationFunction zweimal hintereinander Ausführen um den

Fahrtenregler und den Servomotor mit neusten Werten/Einstellungen zu versorgen. Dabei würde der

Microcontroller maximal (( ) ( ) )

brauchen um den Code auszuführen.

Durch eine Optimierung kann das Senden der PWM-Signale aussehen als würden zwei PWM-Signale

parallel ausgeführt. Dadurch lässt sich ca. die Hälfte der oben angegebenen Zeit einsparen.

Das Prinzip hinter dem Quellcode ist, dass beide PWM-Signale zeitgleich gestartet werden und der

kleinere von beiden zu generierenden Highpegel als erstes auf Low gesetzt wird. Bevor das größere

Highsignal auf Low gesetzt wird führt eine Pausefunktion, mit der Differenz der beiden Werte in µs,

den Highpegel fort.

Hier liegt die maximale Zeit bei: ( )

Vorteil: ca. 2x bessere Aktualisierungsrate

Nachteil: Bei anderer Hardware könnte die Funktion zu falscher Hardwareinterpretationen führen

void optimizedPWMFunction(int biggestSensorValue, int smallestSensorValue, int outputPortOfBiggestSensorValue, int outputPortOfSmallestSensorValue) {

int pulseDiff = biggestSensorValue - smallestSensorValue;

digitalWrite(outputPortOfBiggestSensorValue, HIGH); digitalWrite(outputPortOfSmallestSensorValue, HIGH); delayMicroseconds (smallestSensorValue + 1000); digitalWrite(outputPortOfSmallestSensorValue, LOW);

if(pulseDiff != 0) {

delayMicroseconds (pulseDiff); }

digitalWrite(outputPortOfBiggestSensorValue, LOW); delayMicroseconds(10000);

}

Anmerkung: Das Potentiometer für die Beschleunigung in Zusammenarbeit mit dem A/D-Wandler

arbeitet genau anders herum als wie im obigen Beispiel aufgeführt. Deswegen Rechnen wir:

𝑊𝑒𝑟𝑡 −𝑊𝑒𝑟𝑡𝐴𝐷 und so erhalten wir unser gewünschtes Schema aus dem Beispiel.

Page 16: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

15 | S e i t e

Hovercraft Erweiterung – Ultraschall Kenndaten:

Von Parallax INC.

Model: PING)))

3 Pins: 5V Versorgungsspannung, GND und Signal-Pin

Frequenz: 40kHz

Rückgabewert in µs

Abbildung 16 - Ping))) Sensor

Was ist Ultraschall / Theorie

Allgemein

Der Ultraschall ist normaler Schall nur das dieser eine Frequenz von 20kHz bis 10MHz besitzt.

Ultraschall kann nicht vom menschlichen Gehör wahrgenommen werden, da Menschen nur Schall

bzw. Töne in einer Frequenz von ca. 20Hz bis 20 kHz hören. Es gibt jedoch Tiere, wie z.B.

Fledermäuse, die Ultraschall wahrnehmen und sogar verwenden/nutzen können.

Fledermäuse nutzen den Ultraschall um sich zu orientieren, indem sie ein Ultraschallsignal

(theoretisch könnte dies auch ein Ton sein den Menschen wahrnehmen können) aussenden und

dann Echosignale (reflektiert von z.B. festen Stoffen) auffangen. Empfängt die Fledermaus ein Echo,

so erhält sie die Information, dass sich etwas in der Richtung befindet in der sie das Signal geschickt

hat. Was die Fledermaus macht ist gleichzustellen mit einem Sonar eines U-Bootes.

Funktionsweise des Ultraschallsensors

Der Ultraschallsensor sendet in einem bestimmten Takt immer wieder ein Signal und wartet auf ein

Echo, jedoch wartet der Sensor nur eine gewisse Zeit auf das Echo. Wenn das Signal reflektiert wird

und den Ultraschallempfänger des Sensors erreicht, kann der Sensor eine Zeit ermitteln die zwischen

Senden und Empfangen vergangen ist.

Grobes Beispiel des Sensorablaufs:

1. Sende Ultraschall Signal -> Timer(Zeit) auf 0 setzen -> starte Timer

2. Warte auf Echo, inkrementiere Timer jeder µs um 1

3. Echo angekommen -> Timer stoppen

4. Timer Wert durch 2 teilen -> senden an die genutzte Hardware zu Weiterverarbeitung

Bei Schritt 4 wird die Teilung des Timers vorgenommen, da dieser die Zeit für Hin- und Rückweg

aufgezeichnet hat aber uns nur der Rückweg interessiert. Diese Zeit kann in eine Abstandsmessung

umgewandelt werden, weil der Schall ca. 340m/s schnell ist bzw. 29µs/cm braucht.

Page 17: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

16 | S e i t e

Abbildung 17 - Echo-Laufzeit-Verfahren

Probleme

Umweltfaktoren wie z.B. Temperatur haben sehr großen Einfluss auf die Messung mit Ultraschall.

Außerdem ist die Erkennung eines Echos erschwert, wenn die Welle schräg auf das Hindernis

aufkommt. Die Lage des Hindernisses ist somit auch ein Faktor. Prinzipiell ist die Erkennung von

Gegenständen nicht ideal für große Entfernungen jedoch reicht sie aus für die Nutzung in kleinem

Maßstab bis zu 2-4 Meter. Der Arbeitsbereich unseres Sensors ist von 2cm bis 3m.

Anwendungsgebiete

Ein mittlerweile weitverbreitetes Anwendungsgebiet von Ultraschallsensoren ist die Parkhilfe beim

Auto hinten und/oder vorne. Es fängt an zu piepen wenn ein Hindernis sich dem Auto nähert und

erleichtert somit das Einparken. Außerdem wird Ultraschall im Modellbau verwendet, wie in

unserem Beispiel, um einem Fahrzeug die Erkennung von Hindernissen zu ermöglichen und somit

eine automatische Reaktion auszulösen.

Page 18: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

17 | S e i t e

Sensormechanik und Schaltungsaufbau

Abbildung 18 - Sensor Schemata

Abbildung 19 - Schaltplan mit Ultraschallsensor

Erläuterung des PINHEADER 1x3: PING)))

PIN Funktion

1 GND

2 Versorgungsspannung 5V

3 Signalleitung/Datenleitung verbunden mit dem PIN7 vom Ardiunoboard

Wie der Sensor angesprochen wird, um einen Wert zu erhalten, folgt im nächsten Kapitel.

Empfänger

Sender

Page 19: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

18 | S e i t e

Programmierung Wir haben den Beispielcode zu PING))) aus der Programmierumgebung, die auf „ardunio.cc“ für

Arduinoboards bereitgestellt wird, genutzt.

Als erstes muss der Ultraschallsensor PING))) initialisiert werden und dies geschieht mit folgendem

Programmcode:

An dem Signal Pin des Sensors wird ein 5µs langes Highsignal von PIN7 des Arduinoboards gesendet

um den Sensor zu signalisieren das ein Wert von ihm verlangt wird. Daraufhin sendet PING))) einen

Ultraschallimpuls. Danach wird PIN7 in ein INPUT PIN umdeklariert, da der Sensor über dieselbe

Datenleitung nun zum Programm kommuniziert.

Der Sensor ist so definiert das er nun einen PWM sendet. Der nächste Codeabschnitt gibt nun an wie

man dieses PWM nutzt.

Die „pulseIn(PIN, HIGH/LOW)” wartet und zählt die Zeit (in µs) beim angegebenen PIN bis das

angegebene HIGH oder LOW Signal auftritt.

Hier wartet die Funktion an PIN7 das ein Wechsel von LOW auf HIGH auftritt. Während das LOW

Signal anliegt inkrementiert die Funktion eine Interne Variable um 1 (Angaben in µs). Liegt ein HIGH

Signal an PIN7, so stoppt die Funktion das Zählen, gibt die interne Variable zurück und beendet die

Funktion.

Die „microsecondsToCentimeters(duration)” Funktion wandelt die Zeit in eine Strecke um.

und z.B. mit einer „duration = 300µs“ :

pinMode(7, OUTPUT); digitalWrite(7, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(5); digitalWrite(7, LOW); pinMode(7, INPUT);

int duration = pulseIn(7, HIGH); int cm = microsecondsToCentimeters(duration); long microsecondsToCentimeters(long microseconds) {

return microseconds / 29 / 2; }

Page 20: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

19 | S e i t e

Anwendung der Sensorinformation Nachdem wir nun eine Strecke als Information gewonnen haben, können wir nun unser Szenario und

die Reaktion des Systems definieren. Alles was nun folgt kann nach persönlichen Vorlieben oder

Aufgabenstellung geändert werden.

Szenario 1:

Den Wert zum Beschleunigen abschwächen sobald ein Hindernis zwischen 150cm bis 30 cm auftritt.

Bedeutet: wenn das Hovercraft auf eine Wand zu fährt und der Anwender „Vollgas“ gibt, wird der

Output am Beschleunigungsrotor immer weiter gedrosselt.

Szenario 2:

Kommt das Hovercraft einem Hindernis zu nah, so soll das Hovercraft mit voller Kraft

rückwärtsfahren um eine Kollision zu vermeiden.

Es folgt nun ein Auszug (etwas verändert, Original im Anhang) des genutzten Programmes:

Die Variable „softenPulse“ ist eine Beispielhafte Funktion wie man über den Abstand zum Hindernis

einen „Verlangsamungsfaktor“ (Angabe in %) berechnen kann.

Danach wird der mit „softenPulse“ multipliziert wenn das Hovercraft zwischen 30cm und

150cm vom Hindernis befindet. Ist das Hovercraft unter 30 cm so wird der auf null gesetzt.

Zum Schluss wird das PWM Signal zur Lenkung und Beschleunigung an den Servomotor bzw. Fahrtenregler gesendet. Hierfür nutzen wir die schon weit oben aufgeführte optimierte PWM-Funktion „optimizedPWMFunction(int biggestSensorValue, int smallestSensorValue, int outputPortOfBiggestSensorValue, int outputPortOfSmallestSensorValue)“ Damit das längste PWM Signal und die dazugehörige Pin Zuweisung an den richtigen Stellen

übergeben wird müssen wir dies im Hauptprogrammcode über eine If-Funktion unterscheiden.

softenPulse = ((float)cm/3)/100; if (cm < 150 && cm >= 30) {

inputAcceleration = defaultAccelerationValue + (inputAcceleration -defaultAccelerationValue) * softenPulse; } else if (cm < 30) {

inputAcceleration = 0; }

Page 21: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

20 | S e i t e

Siehe unteren Codeauszug:

Programmablauf Im Anhang befindet sich der vollständige Quellcode zu diesem Projekt und nun folgt ein kurzer

Ablaufplan:

1. Bekomme Werte vom Analogstick

2. Werte mit A/D-Wandler umwandeln

3. Ultraschallsensor initialisieren

4. Warten auf Echo -> bekomme PWM

5. PWM in Strecke umwandeln

6. Szenario 1 bis n und dazugehörige Werte/Funktionen berechnen

7. Sende PWM an Servomotor und Fahrtenregler

8. Gehe wieder zu Punkt 1

Das Programm läuft in einem LOOP (Endlosschleife) und sollte ohne Probleme funktionieren. Das

Hovercraft ist jetzt mit dem Analogstick steuerbar.

if (inputAcceleration < inputDirection) {

optimizedPWMFunction(inputDirection, inputAcceleration, 13, 11); } else {

optimizedPWMFunction(inputAcceleration, inputDirection, 11, 13); }

Page 22: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

21 | S e i t e

Projektergebnis Das Projekt war in jeglicher Hinsicht erfolgreich. Das Hovercraft wurde zusammengebaut und alle

Komponenten sind funktionstüchtig. Die Steuerung über den Analogstick ist ein wenig

gewöhnungsbedürftig, weil das Hovercraft schwebt und somit nicht einfach zu stoppen ist, jedoch

mit ein wenig Fahrtraining zu bezwingen.

Die Erweiterung von dem Ultraschallsensor wurde erfolgreich eingebunden und tätigt die

gewünschten Reaktionen bei den jeweiligen Szenarien. Beispielsweise fährt man absichtlich in

Richtung einer Wand, dann fährt das Hovercraft automatisch vor der Kollision Rückwärts.

Die Art des Praktikums sich Stück für Stück an die Programmierung heran zu arbeiten und während

dessen das Hovercraft zusammen zubauen hat einen guten Lernerfolg gehabt und sehr viel Spaß

gemacht.

Das praktische Arbeiten mit Lötkolben und konkreten Bauteilen war eine gute Erfahrung und eine

Abwechslung zu dem üblichen Lernmethoden und Projekten.

Die Arduinotechnik mit den einzelnen Shields ist sehr interessant und birgt viele

Anwendungsmöglichkeiten. Es gibt mittlerweile viele verschiedene, von Hobbybastlern erstellte,

Shields und durch die Arduinoboards und Zusatzkomponenten ist es eine gute Möglichkeit sich auch

privat mit Schaltungen, Microcontrollern und Programmierungen zu beschäftigen.

Page 23: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

22 | S e i t e

Bilderverzeichnis Abbildung 1 - Hovercraft ......................................................................................................................... 3

Abbildung 2 - Akku .................................................................................................................................. 4

Abbildung 3 - Motor ................................................................................................................................ 4

Abbildung 4 - Unterseite ......................................................................................................................... 5

Abbildung 5 - Fahrtenregler .................................................................................................................... 5

Abbildung 6 - Schwenkarm und Rotor .................................................................................................... 6

Abbildung 7 - Servomotor ....................................................................................................................... 6

Abbildung 8 - Analogstick ........................................................................................................................ 7

Abbildung 9 - Arduino UNO ..................................................................................................................... 8

Abbildung 10 - Arduinoboard, Schaltplatine, Ultraschallsensor ............................................................. 8

Abbildung 11 – Schaltplan des Hovercrafts ............................................................................................. 9

Abbildung 12 - Fernsteuerung ............................................................................................................... 11

Abbildung 13 - Spannungsteiler ............................................................................................................ 11

Abbildung 14 - Lenkprinzip .................................................................................................................... 12

Abbildung 15 - Servo PWM ................................................................................................................... 13

Abbildung 16 - Ping))) Sensor ................................................................................................................ 15

Abbildung 17 - Echo-Laufzeit-Verfahren ............................................................................................... 16

Abbildung 18 - Sensor Schemata ........................................................................................................... 17

Abbildung 19 - Schaltplan mit Ultraschallsensor................................................................................... 17

Abbildung 7 - http://www.conrad.de/ce/de/product/205760/ET-SERVO-17G-205236/SHOP_AREA_19773&promotionareaSearchDetail=005 Abbildung 15 - http://wiki.rc-network.de/Servo Abbildung 17 - http://de.wikipedia.org/wiki/Ultraschall Abbildung 18 - http://www.parallax.com/Portals/0/Downloads/docs/prod/acc/28015-PING-v1.6.pdf

Literaturverzeichnis http://arduino.cc/ http://www.parallax.com/Portals/0/Downloads/docs/prod/acc/28015-PING-v1.6.pdf http://wiki.rc-network.de/Servo http://de.wikipedia.org/wiki/Ultraschall http://de.wikipedia.org/wiki/Arduino-Plattform http://de.wikipedia.org/wiki/H%C3%B6rfl%C3%A4che http://www.prolab.tu-berlin.de/projekte/roboter/downloads/referate/ultraschall/referat.pdf http://www.pulsotronic.de/shop/pdf-all-de/normen/Ultraschall_Sensoren.pdf

Genutzte Programme EAGLE - Version: 5.10.0

Library für EAGLE o http://www.opencircuits.com/SFE_Footprint_Library_Eagle

Arduino 1.0 Programmierumgebung von http://arduino.cc/ Microsoft Word 2010 Windows 7 – Paint

Page 24: Hovercraft - HRW FabLabfablab.hochschule-ruhr-west.de/picturetogether/fablab/content/e39/... · Hovercraft Erweiterung ... Design des Schwenkarms von Robert Reichert Hergestellt mit

Projektdokumentation - Hovercraft

23 | S e i t e

Anhang Arduino Hovercraft Quellcode mit Kommentaren Modelcraft B4230: Motorcontroller

Aufgabenteilung

Vorwort – Jan Eberwein ______________________________________________________ 2

Danksagung ____________________________________________________________________ 2

Hinweise ______________________________________________________________________ 2

Einführung Hovercraft _______________________________________________________ 3

Projektthema: Hovercraft – Thorsten Tatarek ________________________________________ 3

Hovercraft Bauteile – Thorsten Tatarek______________________________________________ 3

Arduino Entwicklerumgebung – Thorsten Tatarek _____________________________________ 8

Ablauf des Praktikums – Thorsten Tatarek ___________________________________________ 9

Schaltungsaufbau – Jan Eberwein __________________________________________________ 9

Steuerung des Hovercrafts – Jan Eberwein __________________________________________ 11

Einführung der Programmierung – Jan Eberwein _____________________________________ 12

Optimierung: Zwei PWM Signale parallel senden – Jan Eberwein ____________________ 14

Hovercraft Erweiterung – Ultraschall __________________________________________ 15

Was ist Ultraschall / Theorie – Thorsten Tatarek _____________________________________ 15

Sensormechanik und Schaltungsaufbau – Jan Eberwein _______________________________ 17

Programmierung – Jan Eberwein __________________________________________________ 18

Anwendung der Sensorinformation – Jan Eberwein ___________________________________ 19

Programmablauf – Jan Eberwein _____________________________________________ 20

Projektergebnis – Thorsten Tatarek ___________________________________________ 21


Top Related