Projekt 33: Lego Mindstorms Rocket Launcher: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 176: Zeile 176:


=== Auswahl einer Entwicklungsumgebung===
=== Auswahl einer Entwicklungsumgebung===
Die folgende Anleitung zum programmieren des EV3 mit Matlab/Simulink wurde dem Wiki – Artikel des Projektes Nummer 10 aus dem WS 13/14 entnommen.
[http://193.175.248.171/wiki/index.php/Projekt_10:_Lego_Mindstorms_Sumo_Competition#Auswahl_einer_Entwicklungsumgebung]


Bei der Programmierung mit Matlab haben wir das [https://wiki.qut.edu.au/display/cyphy/QUT+EV3+MATLAB+toolkit Matlab Toolkit der QUT] genutzt.
Für die Entwicklung der Software des EV3-Rocket-Launchers wurde zum einen die Entwicklungsumgebung des Lego Mindstorms EV3 und zum anderen Matlab/Simulink genutzt.
Für den jetzigen Aufbau sind beide Entwicklungsumgebungen völlig ausreichend. Zur Weiterentwicklung empfiehlt sich jedoch Matlab/Simulink zur einfachen Integration neuer Komponenten.


Hierzu werden verschiedene Prärequisiten benötigt:
Programmbeispiele, welche sowohl in der EV3 Software als auch in Matlab/Simulink programmiert wurden, können [http://193.175.248.171/wiki/index.php/Datei:EV3_Programm.zip hier] direkt heruntergeladen werden. Diese sind auf den oben genannten Aufbau des Rocket Launchers ausgelegt.


#Konfiguration des Matlab Mexx Compilers (hierzu wird das [http://www.mathworks.de/support/compilers/R2013a/index.html?sec=win64 Microsoft Windows SDK 7.1] benötigt
==Anschauungsmaterial==
#Download der Matlab Code Dateien von der Seite des Matlab EV3 Toolkits
#Die hidapi.dll muss vor der Verwendung unter Umständen neu kompiliert werden (bei Windows 32 Bit Benutzern oder wenn Matlab die DLL nicht öffnen kann


=== Verbindung zum EV3 erstellen ===
Das kurze Präsentationsvideo kann [http://youtube.com/XXX hier] in unserem YouTube-Kanal angeschaut werden.
 
Sofern die oben genannten Punkte erfüllt sind, ist es möglich eine USB Verbindung zwischen Matlab und EV3 herzustellen.
 
Dazu nutzen wir den Befehl "b = Brick('ioType','usb')". Auf der Toolkit Website findet man weitere Befehle und Programmbeispiele.
 
=== Erstellen des Programmes ===
 
=== Programmbeispiele ===
 
Programmbeispiele, welche sowohl in der EV3 Software als auch in Matlab/Simulink programmiert wurden, können [http://193.175.248.171/wiki/index.php/Datei:EV3_Programm.zip hier] direkt heruntergeladen werden.
 
Sie sind auf den oben genannten Aufbau des Rocket Launchers ausgelegt.
 
==Link zum Video==
 
Das kurze Präsentationsvideo kann hier in unserem YouTube Kanal angeschaut werden.


==Fazit/Reflexion==
==Fazit/Reflexion==


Die in der Einführung definierten Ziele wurden erreicht, es wurde ein sehr leicht zu implementierender Lego EV3 Rocket Launcher gebaut.
Die in der Einführung definierten Ziele wurden erreicht, es wurde ein sehr leicht zu implementierender Lego EV3-Rocket-Launcher gebaut.
Zusätzlich kann die Platine Dank der Steckverbindung leicht vom restlichen Aufbau getrennt und ggf. repariert oder für andere Verscuhe verwendet werden.
Zusätzlich kann die Platine Dank der Steckverbindung leicht vom restlichen Aufbau getrennt und ggf. repariert oder für andere Versuche verwendet werden.


Die Ansteuerung erfolgt über einen der vier Motor Ports des EV3 und wird über +0-100% Motorleistung angesteuert, womit die restlichen drei Motor Ports zur freien Verfügung stehen. Ob wie in unserem Projekt nun zwei Ports für eine X- und Y-Achse verwendet, oder ein Fahrbarer Untersatz erbaut wird, wobei z.B. zwei Ketten als Antrieb und eine Y-Achsen Verstellung denkbar wären, bleibt dem Nutzer des EV3 Rocket Launcher überlassen.
Die Ansteuerung erfolgt über einen der vier Motor Ports des EV3 und wird über +0-100% Motorleistung angesteuert, womit die restlichen drei Motor Ports zur freien Verfügung stehen. In diesem Fall wurden zwei freie Motor Ports für die horizontale und vertikale Bewegung verwendet.


Die Auslösezeit eines Schusses bei 100% Motorleistung etwa 2,75 Sekunden dauert.
Die Auslösezeit zwischen zwei Schüssen liegt bei etwa 2,75 Sekunden (100% Motorleistung).


Potentielle Verbesserungen und Erweiterungen werden im Ausblick formuliert.
Potentielle Verbesserungen und Erweiterungen werden im Ausblick formuliert.
Zeile 220: Zeile 201:
Für die zukünftige Verwendung des EV3 Rocket Launchers sind folgenden Optimierungen bzw. Erweiterungen denkbar:
Für die zukünftige Verwendung des EV3 Rocket Launchers sind folgenden Optimierungen bzw. Erweiterungen denkbar:


1. Einbindung des im Schusskopf vorhandenen Schalters zur exakten Erkennung des beendeten Schusses.  
1. Einbindung des in der Abschussvorrichtung vorhandenen Schalters zur exakten Erkennung des beendeten Schusses.  
Hierbei handelt es sich um einen Schließerkontakt, der zu Beginn des Schussvorganges betätigt ist. Während sich die Feder der Schussvorrichtung durch die Rotation des Motors spannt, wird der Kontakt am Schalter unterbrochen.
Hierbei handelt es sich um einen Schließerkontakt, der zu Beginn des Schussvorganges betätigt ist. Während sich die Feder der Schussvorrichtung durch die Rotation des Motors spannt, wird der Kontakt am Schalter unterbrochen.
Sobald der Schuss beendet ist, wird der Kontakt wieder geschlossen und es liegt wieder Spannung an der „Signalleitung“ an.  
Sobald der Schuss beendet ist, wird der Kontakt wieder geschlossen und es liegt wieder Spannung an der „Signalleitung“ an.  
Diese Idee wurde aus Zeitgründen noch nicht umgesetzt. Es ist möglich, einen seperaten Sensorport für diese Optimierung zu verwenden, und über eine Zeitverzögerung nur den Spannungsfluss bei Beendigung des Schusses auszuwerten.  
Diese Idee wurde aus Zeitgründen noch nicht umgesetzt. Es ist möglich, einen seperaten Sensorport für diese Optimierung zu verwenden, und über eine Zeitverzögerung nur den Spannungsfluss bei Beendigung des Schusses auszuwerten.  
Eine komplexere Lösung könnte das Bearbeiten des Signals über den I²C Bus des Motorports sein.
Eine komplexere Lösung könnte das Bearbeiten des Signals über den I²C Bus des Motorports sein.
Ziel dieser Optimierung wäre ein immer konstanter und komplett beendeter Schussvorgang. Bei der Verwendung der Zeitangabe für einen Schussvorgang von ~2.75 Sekunden bei 100% Motorleistung besteht die Gefahr, dass sich die Zeitunterschiede aufaddieren und somit nach einer gewissen Anzahl an Schüssen ohne manueller Nullkalibierung eine Zeit von 2.75Sekunden nicht mehr für einen kompletten Schussvorgang ausreicht.
Ziel dieser Optimierung wäre ein immer konstanter und komplett beendeter Schussvorgang. Bei der Verwendung der Zeitangabe für einen Schussvorgang von ~2.75 Sekunden bei 100% Motorleistung besteht die Gefahr, dass sich die Zeitunterschiede aufaddieren und somit nach einer gewissen Anzahl an Schüssen ohne manueller Nullkalibrierung eine Zeit von 2.75 Sekunden nicht mehr für einen kompletten Schussvorgang ausreicht.
 
2. Die horizontale Bewegung kann ebenfalls durch ein bewegliches Modell realisiert werden. Denkbar wäre die Nutzung von zwei unabhängig ansteuerbaren Rädern und einem frei beweglichen Stützpunkt. Vorteile einer solchen Umsetzung sind die hohe Mobilität und das Verhindern einer axialen Überdehnung der Kabel. Nachteil dieser Umsetzung ist, dass die Konstruktion praktisch nur noch ferngesteuert werden kann. Grund dafür ist die starre Anbindung des Steuerelements.


2. Eine weitere Optimierung wäre eine Nullkalibrierung der X- und Y-Achse bei Neustart des Modells. Nur somit könnte man eine Weiterverwendung für z.B. visuelle Zielverfolgung realisieren. Die Drehwinkelsensoren der EV3 Motoren beginnen nach Neustart immer bei 0° und  
3. Eine Nullkalibrierung der X- und Y-Achse bei Neustart des Modells. Nur somit könnte man eine Weiterverwendung für z.B. visuelle Zielverfolgung realisieren. Die Drehwinkelsensoren der EV3 Motoren beginnen nach Neustart immer bei 0° und  
Eine Kalibrierung nur über Software durch anfahren von Anschlägen ist Aufgrund der über 720° Bewegungsfreiheit der X-Achse nicht möglich, da diese Achse keinen „Hard-Stop“ besitzt.  
Eine Kalibrierung nur über Software durch anfahren von Anschlägen ist Aufgrund der über 720° Bewegungsfreiheit der X-Achse nicht möglich, da diese Achse keinen „Hard-Stop“ besitzt.  


3. Die dritte Erweiterung wäre das Kombinieren des EV3 Rocket Launchers mit einer Kamera, sodass z.B. ein roter Ballon verfolgt und in der Luft über Flugbahnberechnung abgeschossen werden kann.
4. Das Kombinieren des EV3-Rocket-Launchers mit einer Kamera, sodass z.B. ein roter Ballon verfolgt und in der Luft über Flugbahnberechnung abgeschossen werden kann.
Die Flugbahn der Pfeile ist sehr stark abhängig von der Kraft und Art wie die Pfeile auf den Rocket Launcher gesteckt werden, weshalb auch hierfür eine möglichst Einheitliche Lösung gefunden werden muss.
Die Flugbahn der Pfeile ist sehr stark abhängig von der Kraft und Art wie die Pfeile auf den Rocket Launcher gesteckt werden, weshalb auch hierfür eine möglichst Einheitliche Lösung gefunden werden muss.

Version vom 20. Januar 2015, 11:24 Uhr


Autoren: Fabian Lehnert, Tim Dienwiebel, Reinhold Fischer
Betreuer: Prof. Schneider

USB Rocket Launcher
USB Rocket Launcher

Aufgabe

Konstruieren und bauen Sie einen zweiachsigen Rocket-Launcher und nehmen Sie diesen mit LM NXT/EV3 in Betrieb.


Erwartungen an Ihre Projektlösung

  • Analysieren Sie die Funktionsweise eines USB-Rocket-Launchers.
  • Entwickeln Sie einen Rocket-Launcher für NXT und EV3.
  • Konstruieren Sie das Gerät und lassen Sie es ggf. fertigen.
  • Beschaffen Sie die notwendigen Bauteile.
  • Binden Sie den Rocket Launscher an einen NXT oder EV3 an.
  • Ansteuerung der Motoren in 2 Achsen.
  • Auslesen von internen Lagesensoren zur Bestimmung der Ausrichtung des Racketenwerfers.
  • Sequentielles Auslösen von 4 Schüssen.
  • Ansteuerung via Matlab und Simulink.
  • Wiss. Dokumentation der Lösung und Funktionsnachweis
  • Live Vorführung während der Abschlusspräsentation


Schwierigkeitsgrad

Anspruchsvoll (***)

Weiterführende Links


→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 14/15)

Dokumentation

Einführung

Dieses Projekt bildet den Grundstein für zukünftige Projekte und wurde innerhalb des GET Fachpraktikums im 5. Semester des Mechatronik Studiengangs bearbeitet. Aufgabe war es, einen für gewöhnlich nur über PC-Software ansteuerbaren USB Rocket Launcher in ein EV3 System einzubinden. Der volle Funktionsumfang von einer zweiachsigen Beweglichkeit und der Abschussfunktion von 4 Pfeilen musste unbedingt erhalten bleiben. Des Weiteren wurde Teamintern sehr viel Wert darauf gelegt, dass die Lösung sehr leicht und unkompliziert in folgende, weiterführende Lego EV3/NXT Projekte implementiert werden kann. Außerdem wurde auf eine einfache und benutzerfreundliche Wartung und Instandhaltung geachtet.

Projektziel

Das Ziel des Projekt 33 EV3 Rocket Launcher ist es, einen zweiachsigen Rocket Launcher zu entwerfen und zu erbauen, welcher über den EV3 ansteuerbar und über Matlab/Simulin programmierbar ist.

Projektdurchführung

Verwendete Komponente

Für dieses Projekt wurden in erster Linie das Lego MINDSTORMS education EV3 Basis-Set (45544) und das Ergänzungs-Set (45560) sowie der USB-Raketenwerfer 'Thunder' verwendet. Außerdem wurden Elemente zum Bau einer Platine verwendet. Diese sind im Kapitel 'Elektrischer Aufbau und Komponenten' aufgeführt.


Mechanischer Aufbau

Abb.1: EV3 Rocket Launcher Projektergebnis von Vorne
Abb.2: EV3 Rocket Launcher Projektergebnis von Hinten

In Abbildung 1 und 2 ist der fertige Aufbau des USB-Rocket-Launchers zu sehen. Die Bauanleitung ist dem Wiki-Bericht unter „Konstruktion des EV3-Rocket-Launchers“ angehängt. Zu erkennen sind die unveränderte Abschussvorrichtung des USB-Rocket-Launchers [1] sowie die über einen Lego-Konstrukt geschützte, selbst entworfene, gefertigte und bestückte Platine [2]. Die Ultiboard sowie die Gerber Dateien zur Fertigung der Platine sind dem Artikel ebenfalls unter "Schaltplan und Platine" angehängt. Des Weiteren ist die Steckverbindung zwischen der Abschussvorrichtung und der Adapterplatine zu sehen [3], sodass man für eine eventuelle Reparatur bequem die komplette Platine abnehmen kann, ohne löten zu müssen. Um Beschädigungen an den Lötstellen vorzubeugen, wurde eine Zugentlastung der Kabel aus Lego-Komponenten realisiert [4]. Die NXT-Buchse [5] wurde Zentral platziert, sodass sie die Beweglichkeit nicht einschränkt. Die Bedienung erfolgt übe die Pfeiltasten der EV3 Steuerung [6]. Die Programmierung kann sowohl über die EV3 Software, als auch über Matlab/Simulink erfolgen. Eine Ansteuerung über die EV3-App von einem Mobilen Endgerät ist ebenfalls möglich. Diese erfordert keine Programmvorgabe. Die Beispielprogramme in EV3 und Matlab/Simulink sind dem Wiki-Bericht unter „Programmbeispiele“ angehängt.


Elektrischer Aufbau und Komponenten

Die verbauten elektrischen Bauteile sind der nachfolgenden Tabelle zu entnehmen

Bauteil Genaue Bezeichnung Anzahl Beschaffung/Lagerort
Platine 1 H. Ramesohl Fertigung über Gerber Datei
Diode IN5818 CDILII43 1 Bestellen
Widerstand 220 Ohm 5% (rt/rt/bn/gd) 2 Bestellen
Transistor BD435 1 Bestellen
NXT Buchse Lego NXT Anschlussbuchse 1 Mechatronik Lager Gebäude L3 Fach 9A2
Steckverbindung 5 Polig, Nr. 110803 1 Mechatronik Lager Gebäude L3 Fach 8C6
LED Integriert im Rocket Launcher 1


Ideenfindung

Aufgrund einer Strombegrenzung eines USB 2.0 Ports auf maximal 500mA bei 5V Versorgungsspannung, bewegt sich die Stromaufnahme eines Motors auch bei maximal 500mA.

Dieser Quelle ist zu entnehmen, dass ein EV3 Motorport bis zu 995mA liefert, wenn ein EV3 Motor auf 100% Leistung läuft aber komplett mechanisch blockiert wird. Somit liefert ein EV3 Motor Port genügend Leistung um den Motor des aus dem USB-Rocket-Launcher entnommenen Abschussvorrichtung anzusteuern.

Nach Recherchen zu der Pin-Belegung eines EV3 Motor Ports (siehe Tabelle 2) wurde eine Transistorschaltung als kompakte und einfache Lösung entworfen. Die Verwendung einer Transistorschaltung, um über ein PWM Signal einen Motor anzusteuern, wurde im dritten Versuch des GET Fachpraktikums (5. Semester Mechatronik) behandelt.

Tabelle 2 zeigt Signale und Spannungen, welche man an einem EV3 Motor Port abgreifen kann.


Pin Nummer Farbe / Farbkürzel Signal / Belegung
1 weiß / ws PWM Signal, 5V, 0-100%, Frequenz: ~13kHz
2 schwarz / sw Masse / GND
3 rot / rt Masse / GND
4 grün / gn Versorgungsspannung Vcc = 4,9V
5 gelb / ge I²C Leitung
6 blau / bl I²C Leitung

Konstruktion des EV3-Rocket-Launchers

Abb.3: Schussvorrichtung mit Lego Käfig

Um die Schussvorrichtung des originalen USB Rocket Launchers in eine Lego Konstruktion perfekt einbinden zu können, musste die Schussvorrichtung zuerst vom Rest des USB Rocket Launchers getrennt werden. Das Verwendete Teil ist in Abbildung 3 zu sehen.

Zur optimalen Einbindung in die Bauteile des EV3 Grundbaukastens wurde der originale Rocket Launcher auseinander geschraubt und der obere Teil [1] mitsamt des Neigungszahnrades [2] in einen Lego Käfig [3] verbaut. Die Kabel des in der Schussvorrichtung verbauten Motors (Farben + = Rot, - = Orange) sowie der LED (Farben + = Violett, - = Schwarz) wurden hinten durch einen eingesägten Schlitz aus der Schussvorrichtung geführt und mit einem 5-poligen Stecker verlötet [4]. Die Platine befindet sich zum Schutz in einem seperaten Käfig [5] welcher auf dem Lego Schussvorrichtungskäfig sitzt und leicht entfernt werden kann.

Die Bauanleitung für das Lego Mindstorms EV3 Modell ist hier hinterlegt.

Schaltplan und Platine

Im Anschluss an den Schaltplanentwurf (siehe Abbildung 4) und den ersten Versuchen und Tests der chaltung auf einem Steckboard, wurde eine Platine mit Hilfe von Multisim und Ultiboard entworfen. Das Entwerfen, Exportieren und Fertigen einer Platine wurde im ersten Versuch des GET Fachpraktikums im 5. Semester behandelt und somit innerhalb des Projektes vertieft.

Das Platinenlayout als Screenshot der Ultiboard Dateien kann unter diesem Link eingesehen werden. Zusätzlich können die Gerber - Dateien können hier heruntergeladen werden.

Abb.4: Schaltplan der Platine

Auswahl einer Entwicklungsumgebung

Für die Entwicklung der Software des EV3-Rocket-Launchers wurde zum einen die Entwicklungsumgebung des Lego Mindstorms EV3 und zum anderen Matlab/Simulink genutzt. Für den jetzigen Aufbau sind beide Entwicklungsumgebungen völlig ausreichend. Zur Weiterentwicklung empfiehlt sich jedoch Matlab/Simulink zur einfachen Integration neuer Komponenten.

Programmbeispiele, welche sowohl in der EV3 Software als auch in Matlab/Simulink programmiert wurden, können hier direkt heruntergeladen werden. Diese sind auf den oben genannten Aufbau des Rocket Launchers ausgelegt.

Anschauungsmaterial

Das kurze Präsentationsvideo kann hier in unserem YouTube-Kanal angeschaut werden.

Fazit/Reflexion

Die in der Einführung definierten Ziele wurden erreicht, es wurde ein sehr leicht zu implementierender Lego EV3-Rocket-Launcher gebaut. Zusätzlich kann die Platine Dank der Steckverbindung leicht vom restlichen Aufbau getrennt und ggf. repariert oder für andere Versuche verwendet werden.

Die Ansteuerung erfolgt über einen der vier Motor Ports des EV3 und wird über +0-100% Motorleistung angesteuert, womit die restlichen drei Motor Ports zur freien Verfügung stehen. In diesem Fall wurden zwei freie Motor Ports für die horizontale und vertikale Bewegung verwendet.

Die Auslösezeit zwischen zwei Schüssen liegt bei etwa 2,75 Sekunden (100% Motorleistung).

Potentielle Verbesserungen und Erweiterungen werden im Ausblick formuliert.

Ausblick

Für die zukünftige Verwendung des EV3 Rocket Launchers sind folgenden Optimierungen bzw. Erweiterungen denkbar:

1. Einbindung des in der Abschussvorrichtung vorhandenen Schalters zur exakten Erkennung des beendeten Schusses. Hierbei handelt es sich um einen Schließerkontakt, der zu Beginn des Schussvorganges betätigt ist. Während sich die Feder der Schussvorrichtung durch die Rotation des Motors spannt, wird der Kontakt am Schalter unterbrochen. Sobald der Schuss beendet ist, wird der Kontakt wieder geschlossen und es liegt wieder Spannung an der „Signalleitung“ an. Diese Idee wurde aus Zeitgründen noch nicht umgesetzt. Es ist möglich, einen seperaten Sensorport für diese Optimierung zu verwenden, und über eine Zeitverzögerung nur den Spannungsfluss bei Beendigung des Schusses auszuwerten. Eine komplexere Lösung könnte das Bearbeiten des Signals über den I²C Bus des Motorports sein. Ziel dieser Optimierung wäre ein immer konstanter und komplett beendeter Schussvorgang. Bei der Verwendung der Zeitangabe für einen Schussvorgang von ~2.75 Sekunden bei 100% Motorleistung besteht die Gefahr, dass sich die Zeitunterschiede aufaddieren und somit nach einer gewissen Anzahl an Schüssen ohne manueller Nullkalibrierung eine Zeit von 2.75 Sekunden nicht mehr für einen kompletten Schussvorgang ausreicht.

2. Die horizontale Bewegung kann ebenfalls durch ein bewegliches Modell realisiert werden. Denkbar wäre die Nutzung von zwei unabhängig ansteuerbaren Rädern und einem frei beweglichen Stützpunkt. Vorteile einer solchen Umsetzung sind die hohe Mobilität und das Verhindern einer axialen Überdehnung der Kabel. Nachteil dieser Umsetzung ist, dass die Konstruktion praktisch nur noch ferngesteuert werden kann. Grund dafür ist die starre Anbindung des Steuerelements.

3. Eine Nullkalibrierung der X- und Y-Achse bei Neustart des Modells. Nur somit könnte man eine Weiterverwendung für z.B. visuelle Zielverfolgung realisieren. Die Drehwinkelsensoren der EV3 Motoren beginnen nach Neustart immer bei 0° und Eine Kalibrierung nur über Software durch anfahren von Anschlägen ist Aufgrund der über 720° Bewegungsfreiheit der X-Achse nicht möglich, da diese Achse keinen „Hard-Stop“ besitzt.

4. Das Kombinieren des EV3-Rocket-Launchers mit einer Kamera, sodass z.B. ein roter Ballon verfolgt und in der Luft über Flugbahnberechnung abgeschossen werden kann. Die Flugbahn der Pfeile ist sehr stark abhängig von der Kraft und Art wie die Pfeile auf den Rocket Launcher gesteckt werden, weshalb auch hierfür eine möglichst Einheitliche Lösung gefunden werden muss.