AM 14: Mäher-Interface

Aus HSHL Mechatronik
Version vom 14. Januar 2017, 13:11 Uhr von Alexander Soschnikow (Diskussion | Beiträge) (→‎Software-Treiber)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom Fachpraktikum Elektrotechnik im 5. Semester Mechatronik in Kooperation mit dem Masterstudiengang Business and Systems Engineering absolviert wurde. Das Projekt beinhaltet den Aufbau und die Inbetriebnahme eines voll funktionsfähigen autonomen Mähroboters, wobei der ArduMower zum Vorbild genommen wurde. Um so ein Großprojekt innerhalb eines Semesters bewältigen zu können, wurde es in viele kleinere Teilprojekte für Zwei- bis Drei-Personen-Gruppen aufgegliedert. Ein Teilprojekt ist das Mäher-Interface. Mit dem Mäher-Interface soll eine Mensch-Mäher-Schnittstelle geschaffen werden, die leicht zu handhaben ist. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht.


Autoren: Matthias Maas, Alexander Soschnikow

Betreuer: Prof. Schneider


Aufgabe

Mäher-Interface zur manuellen Eingabe der Befehle


Erwartungen an die Projektlösung

  • Einarbeitung in die bestehenden Ardumowers-Unterlagen
  • Planung und Beschaffung der Bauteile gemäß Lastenheft
  • Einbau und Inbetriebnahme des Interfaces
  • Basisfunktionen
    • Mähen
    • Zurück zur Ladestation
    • Begrenzungsdraht lernen
    • Kartografierung neu beginnen
  • Test der Funktion
  • Erstellen Sie ein faszinierendes Video, welches die Funktion visualisiert.
  • Test und wiss. Dokumentation

Schwierigkeitsgrad

  • Mechanik: *
  • Elektrotechnik: *
  • Informatik: *

Projektdurchführung

Projektplan

Das Teilprojekt Mäher-Interface gliedert sich in folgende Phasen:


1. Phase : Sichten des Lastenheftes auf relevante Anforderungen

2. Phase : Entwicklung einer Idee und Heraussuchen benötigter Bauteile

3. Phase : Beschaffung der Bauteile durch die Hochschule

4. Phase : Zusammenbau und Testen der Bauteile

5. Phase : Entwicklung eines Software-Treibers zur Verwendung im ArduMower

6. Phase : Integration und Test am ArduMower (Diese Phase musste entfallen, da bis jetzt kein funktionsfähiger ArduMower vorhanden ist.)

Verwendete Bauteile

Um alle Anforderungen bestmöglichst in einem System zu vereinen, wurden folgende Bauteile ausgesucht:

Keyfob 4-Button RF Remote Control

Dieses Bauteil stellt eine einfache Fernbedienung mit vier Tastern dar. Bei dem Drücken eines Tasters wird ein entsprechendes Signal über eine 315 MHz Funkverbindung ausgesendet. Jeder Tastendruck wird dabei optisch durch das Aufleuchten einer roten LED an der Fernbedienung angezeigt.

Link : http://www.exp-tech.de/keyfob-4-button-rf-remote-control-315mhz

Simple RF T4 Receiver

Dieses Bauteil ist eine zur Fernbedienung gehörende Platine, die das Funksignal empfängt. Die Platine wird über sieben Pins angesteuert. Zwei Pins sind zur Spannungsversorgung, wobei die Platine mit 5 - 10 V auskommt. Vier Pins versorgen den ArduMower mit digitalen Signalen, die entwerder 0 V oder 5 V annehmen können (D0, D1, D2 und D3). Der letzte Pin (VT) kann als Interruptquelle am ArduMower verwendet werden, da sein Signal jedes mal eine steigende Flanke erzeugt, wenn sich einer der Datensignale ändert.

Von der Platine gibt es drei Abwandlungen. Die Version "Momentary" setzt den entsprechenden Pin nur auf ein hohes Spannungsniveau, solange der zugehörige Taster gedrückt ist. Bei der Version "Selector" kann immer nur eins der vier Datensignale auf einem hohen Spannungsniveau sein und bei der Version "Toggle", für die sich das Team Mäher-Interface entschieden hat, werden entsprechende Signale durch Tastenbetätigung hin- und hergeschaltet. So wird eine Zustandsspeicherung auf der Platine möglich.

Link : http://www.exp-tech.de/simple-rf-t4-receiver-315mhz-toggle-type

Ergebnis

Hardware Aufbau

Um die Funk-Platine mit der Hauptplatine des ArduMowers zu verbinden, müssen lediglich zwei Kabel, die im Rahmen des Praktikums selbst gelötet wurden, angeschlossen werden. Ein zweiadriges Kabel (rot,schwarz) verbindet die Spannungsversorgungspins der Funk-Platine mit 5 V und GND von der Hauptplatine des ArduMowers. Ein zweites, vieradriges Datenkabel verbindet die Datenausgänge der Funk-Platine mit vier beliebigen Pins der Hauptplatine. Einzige Voraussetzung ist hierbei, dass die verwendeten Pins als digitale Eingänge eingestellbar sind und nebeneinander liegen müssen.

Verbindung zwischen der Funk-Platine und der Hauptplatine des ArduMowers


Um mit den angeschafften Bauteilen möglichst viele Funktionen realisieren zu können, wurden die ersten drei Taster der Fernbedienung (A,B und C) dazu angedacht, um einen Befehl vorzuwählen. Nachdem ein Befehl eingestellt wurde, wird dieser mit dem Taster D bestätigt. Dadurch ist es möglich, mit vier Tastern 2^3 = 8 Befehle einzugeben. Jeder Tastenkombination muss nur noch eine Mäher-Aktion zugeordnet werden.


Eingabeschema für das Mäher-Interface. Dabei wird jeder Tasterkombination eine Mäher-Aktion zugeordnet

Software-Treiber

Um eine möglichst einfache Integration in das Hauptprojekt zu gewährleisten, wurde die softwareseitige Logik in einem Modul, bestehend aus jeweils einer Source- und Header-Datei, gekapselt. Zur Benutzung dieses Moduls muss lediglich die Header-Datei im Hauptprojekt inkludiert werden. Danach kann die implementierte Funktion NaechsterFunkBefehl() innerhalb der ArduMower-Software aufgerufen werden, um den nächsten Befehl, der übertragen wurde, auszulesen.


Die Funktion arbeitet wie folgt:

Da die Speicherung eines gewissen Zustandes unumgänglich ist, wenn man die ganze Programmlogik in einer Funktion belassen möchte, werden zunächst statische Variablen angelegt und mit 0 initialisert. Diese Variablen behalten ihren Wert zwischen den einzelnen Funktionsaufrufen. Bei dem ersten Funktionsaufruf werden die Pins, an denen die Funk-Platine angeschlossen wurde, als digitale Eingänge konfiguriert und Pullup-Widerstände abgeschaltet. Anschließend wird ein Flag gesetzt, damit diese Aktion kein zweites Mal wiederholt wird. Danach wird der Wert des D-Tasters ausgelesen. Wenn sich dieser vom vorherigen Wert unterscheidet, wurde der D-Taster zwischenzeitlich betätigt (die Art der Funk-Platine ist "Toggle"). In diesem Fall werden die restlichen Pins ausgelesen und daraus der Befehl berechnet und zurückgegeben. Wenn der D-Taster seinen Wert nicht geändert hat, wurde noch kein vollständiger Befehl eingegeben. In diesem Fall gibt die Funktion "KEIN_BEFEHL" zurück.

Gültige Befehle haben die Nummern 0-7. Zur Benutzung wurden in der Header-Datei dazu Makros angelegt, so kann durch die Konstante BEFEHL_0 auf den Befehl mit der Nummer 0 zugegriffen werden. Bei der Integration in das Hauptprojekt werden den Befehlen Aktionen des ArduMowers zugeordnet. Da 8 Befehle zur Verfügung stehen, können durch dieses Interface viele Mäh-Funktionen angestoßen werden.


Der Programmablaufplan dazu sieht wie folgt aus:

Programmablaufplan des Softwaretreibers

Zusammenfasung

Im Rahmen des GET-Fachpraktikums wurde innerhalb des Teilprojektes Mäher-Interface ein Konzept zur Bedienung des ArduMowers erstellt und implementiert. Benötigte Bauteile wurden ausgesucht und an einer Arduino-Platine getestet. Dazu wurde ein spezielles Kabel gelötet. Zur einfachen Benutzung wurde ein Software-Treiber erstellt, mit dem eingegebene Befehle auf eine einfache Art und Weise im Programm ausgelesen werden können.

Bei der Bearbeitung dieses Teilprojektes wurde systematisches Arbeiten im Team und das Zusammenarbeiten mit anderen Teams und der Projektleitung geübt, zum Beispiel durch das Einhalten eines vorgegebenen Zeitplans. Die Schwierigkeiten eines Großprojektes, wo viele Teams parallel an verschiedenen Aufgabenfeldern, die oft auch voneinander abhängen, arbeiten, haben die Erfahrung der Teammitglieder bereichert, sodass bewusst geworden ist, dass Kommunikation der Schlüssel zum Erfolg ist.

Ausblick

Da von Anfang an darauf geachtet wurde, dass dieses Teilprojekt möglichst einfach in den ArduMower zu integrieren ist, wird die Inbetriebname am ArduMower keine Probleme darstellen.

Unterlagen

Medium:FunkInterface.h

Medium:FunkInterface.c


→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 16/17)