Projekt 82: 3D-Schwenkeinheit für einen LiDAR-Lite v3
Autoren: Pia Dommen; Luca Riering
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)
Aufgabe
Realisierung eines Prototypen einer Schwenkeinheit für den LiDAR-Lite v3 Sensor des Carolo Cup Wagens (Projekt 81) mit Hilfe einer Baugruppe aus 3D-Bauteilen und einem Arduino UNO Mikrocontoller. Es soll eine „3D-Schwenkeinheit für einen LiDAR-Lite v3“ entwickelt und konstruiert werden. Die Tätigkeiten gliedern sich in diesem Projekt wie folgt:
-mechanischer Aufbau
-elektronischer Anschluss
-Umsetzung der Messung mit selbst entwickelter Software auf dem Arduino UNO
Erwartungen an die Projektlösung
- Planung einer stabilen mechanische Konstruktion der 3D-Schwenkeinheit
- Messung des horizontalen und vertikalen Rotationswinkels auf +-1° genau (z.B. Drehgeber)
- Beschaffung der Materialien
- Realisierung des Aufbaus und der Elektronik
- Schnittstelle der 3D-Schwenkeinheit zu Arduino, Matlab und Simulink
- Inbetriebnahme der Schwenkeinheit
- Softwareentwicklung nach HSHL Standard in SVN
- Darstellung der Funktion des LiDARs in einem YouTube Video
- Test und wissenschaftliche Dokumentation
- Live Vorführung während der Abschlusspräsentation
Hinweis: Projekt 81 beschäftigt sich mit der Datenauswertung des LiDAR. Sprechen Sie die Schnittstellen frühzeitig ab.
Einleitung
Dieser Wiki Artikel der Studenten Pia Dommen und Luca Riering behandelt den Bau eines Prototypen einer 3D-Schwenkeinheit für einen LiDAR-Lite v3 (siehe Bild) im Rahmen des GET-Fachpraktikums WS 18/19: Fachpraktikum Elektrotechnik (MTR) aus dem 5. Semester Mechatronik und stellt eine nachhaltige Dokumentation über die Vorgehensweise der Bearbeitung des Projektes dar. Für den neuen LiDAR des Carolo Cup Wagens muss eine drehbare Halterung konstruiert und hergestellt werden. Dies beinhaltet die Konstruktion der Halterung, sowie den Zusammenbau der einzelnen 3D gedruckten Bauteile. Wie auch die Ansteuerung des Servo-Motors und des Schrittmotors über den Arduino. Diese Motoren sollen sich in angepasster Geschwindigkeit und Genauigkeit (+-1° genau) rotieren lassen und über einen Drehgeber überwacht werden. Der Umgang mit diesem Mikrocontroller wurde durch das Praktikum vermittelt. Durch dieses Projekt wurden die erlangten Fähigkeiten vertieft. Der grundlegende Aufbau und die Umsetzung dieses Projektes wird in den nachfolgenden Punkten genauer betrachtet und erklärt. Des Weiteren befinden sich alle Inhalte und Dokumente zu diesem Projekt in dem dazugehörigen SVN-Verzeichnis.
Projekt
Anforderungsanalyse
Lasten-/Pflichtenheft
Lasten | Pflichten |
---|---|
1. Planung einer stabilen mechanische Konstruktion der 3D-Schwenkeinheit | Bereits existierende Konstruktionen betrachten. Geeignetste Konstruktion auswählen um mit Hilfe von Solid Works für die Ziele des Projektes verändern. |
2. Überprüfung und Steuerung des vertikalen Rotationswinkels auf +-1° genau (z.B. Drehgeber) und Steuerung des vertikalen Rotationswinkels | Die Rotation der vertikalen Achse soll von einem Schrittmotor resultieren und von einem 1024PPR Encoder überwacht werden. Die Rotation, um die horizontale Achse soll mittels Servomotor realisiert werden. |
3. Beschaffung der Materialien | Eine BOM an den Verantwortlichen der Carolo Cup AG übermitteln. |
4. Realisierung des Aufbaus und der Elektronik | Der Aufbau soll aus gedruckten eilen aus einem 3D-Druck und den elektronischen Komponenten zusammengesetzt werden. Zur Verbindung der Teile werden Schraub-, Kleb- und Lotverbindungen verwendet. |
5. Schnittstelle der 3D-Schwenkeinheit zu Arduino, Matlab und Simulink | Als Programmierungsumgebungen werden die Arduino IDE und Matlab/Simulink verwendet. In der Arduino IDE wird auf die Bibliotheken Servo.h und Stepper.h zugegriffen. In Simulink werden die Bausteine des Arduino-Simulink Add-Ons verwendet. |
6. Inbetriebnahme der Schwenkeinheit | Die Inbetriebnahme erfolgt unter Verwendung der in Punkt 5 genannten Softwareumgebungen. Elektrisch wird ein Netzteil und ein Messgerät verwendet. |
7. Softwareentwicklung nach HSHL Standard in SVN | Die Software wird nach den in Informatik 1 und 2 gelernten Inhalten zur Programmierung gestaltet. |
8. Darstellung der Funktion des LiDARs in einem YouTube Video | Das YouTube-Video, das den Wiki-Artikel unterstützen soll, wird mittels Windows Movie Maker erstellt und unter Verwendung eines gmail-Accounts auf YouTube hochgeladen. |
9. Test und wissenschaftliche Dokumentation | Die wissenschaftliche Dokumentation erfolgt im SVN Projektorder sowie im Wiki-Artikel des Projekts. |
10. Live Vorführung während der Abschlusspräsentation | Für die Abschlusspräsentation werden Plakate gestaltet, Flyer ausliegen und eine Diashow mit Bildern auf einem Laptop gezeigt. Dies soll die Präsentation unterstützen. |
Um den ersten Einblick über die Erwartungen zu bekommen die dieses Projekt zu erfüllen hat, wurde ein Lasten- und Pflichtenheft verwendet. Auf der Seite der Pflichten sind hier die verwendeten Ressourcen niedergeschrieben worden. Mit diesem Lasten- und Pflichtenheft kann nun zur Projektplanung übergegangen werden.
Projektplan
Der erste Schritt dieses Projekt zu strukturieren war, einen Projektplan zu erstellen. Hierfür wurde eine Gantt-Chart (Bild oben) erstellt. Durch ein Gantt-Chart kann gut die Abhängigkeit der Vorgänger und Nachfolger visualisiert werden. Der Umgang mit dieser Form der Projektplanung wurde im 3. Semester des Mechatronik-Studium im Modul Steuerungskompetenzen erlernt. Für die Erstellung dieses Planes wurde zunächst die grobe Einteilung des Wasserfall-Modelles genutzt. Hier wird in die Planung, die Definition, der Entwurf, die Implementierung, das Testen und den Einsatz/Wartung eingeteilt. Um das Projekt mit den einzelnen Bearbeitungsstufen weiter einzuteilen, wurden zunächst alle anfallenden Aufgaben niedergeschrieben und dann in die richtigen Phasen unterteilt. Die zeitliche Abfolge wurde dann durch Erfahrungswerte aus der Praxis geschätzt. Auch wurde hierbei auf den im Modulhandbuch vorgeschriebenen Workload geachtet.
(BILD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
Um das Projekt konkreter zu planen, wurde außerdem das V-Modell (siehe Bild) verwendet. Diese Art der Projektplanung wurde auch im 3. Semester im Modul der Steuerungskompetenz erlernt. Insbesondere eignet sich das V-Modell beim Strukturieren von mechatronischen Systemen, da dort die drei Teilbereiche der Mechatronik zur Geltung kommen. Die Mechanik, die Elektronik und die Softwareentwicklung.
Während des Projektes sind ein paar Abweichungen zum vorher erstellten Projektplan entstanden. Die Platte für den Drehgeber, die an die Grundplatte geschraubt werden sollte, passte von den Maßen nicht perfekt, weswegen sich dazu entschieden wurde die Grundplatte erneut zu drucken. Das gleich Gilt für die LiDAR Halterung, da der Servo nicht perfekt passte. Da wir zu diesem Zeitpunkt beschlossen neue Teile zu drucken, entschieden wir uns ebenfalls dafürdie Befestigung des LiDARs über einen Zylinder zu lösen. Die Fertigstellung des Projektes verschob sich damit ein wenig nach hinten.
Nach der Strukturierung des Projekts wird nun ein Überblick über die benötigten Komponenten gegeben. Diese sind in der Tabelle aufgelistet.
Bill of materials (BOM) | Anbieter | Preis (Stand: November 2018) | Artikelbezeichnung | Link |
---|---|---|---|---|
Slip Ring - Schleifring mit 6 Drähten (2A) | Exp-tech | 16,66€ | EXP-R15-047 | Slip Ring |
Drehgeber 1024PPR | Mouser | 32,78€ | 652-EMS22A50-C20-LS6 | |
Schrittmotor | Eckstein | 12,95€ | ACT 11HS5406 | |
Motortreiber 4,5 – 13V | Reichelt | 5,60€ | DEBO MOTODRIVER3 |
Projektdurchführung
Die gesamte Durchführung dieses Projektes wird in die drei Teilbereiche der Mechatronik unterteilt. Der Elektronik, der Mechanik und der Informatik.
- Mechanisch
Die erste Überlegung bei der Erstellung des mechanischen Teils des Projektes war es welches Material für die Erstellung der Schwenkeinheit verwendet werden kann. Es wurde sich für den 3D-Druck entschieden, dieser hat den Vorteil das Bauteile kostengünstig und schnell erstellt werden können, was sich für die Erstellung eines Prototypen bestens eignet. Der 3D-Druck ist eine additive Fertigung. Ein festes Material, Filament wird durch den Extruder aufgewärmt und auf das Druckbett aufgetragen. Dies geschieht Schicht für Schicht, durch diese schichtweise Herstellung können dreidimensionale Gegenstände gedruckt werden. Nach Absprache mit der Firma Trilux dürfen die Bauteile auf dem 3D-Drucker der Firma gedruckt werden. Es musste sich im nächsten Schritt über das Filament informiert werden. Besonders der Riemen stellte sich als schwierig heraus, da dieser elastisch sein muss um der dynamischen Belastung des Schrittmotors standzuhalten.
Für alle Bauteile wird das ABS (Acrylnitril-Butadien-Styrol) verwendet, dieses hat die folgenden Eigenschaften (aus dem Datenblatt entnommen):
-hohe Zugfestigkeit- 1681,5 MPa
-Hohe Oberflächenqualität
-hohe Druckgeschwindigkeit sind möglich
-geringe biegefestigkeit-70,5 MPa
-gute Haftung am Druckbett
-geringes spezifisches Gewicht - 1,10
-niedrige schmelztemp-225 - 245˚C
Für den Riemen wurde sich für das Material PLA (Polymilchsäure) entschieden, da dieses elastischer ist als das ABS.
Die folgenden Eigenschaften zeigen, dass PLA (Datenblatt):
-hohe Zugfestigkeit- 2346,5 MPa
-Hohe Oberflächenqualität
-hohe Druckgeschwindigkeit sind möglich
-höhere Biegefestigkeit- 103,0 MPa
-schlechte Haftung am Druckbett
-geringes spezifisches Gewicht - 1,24
Die Auswahl des Filaments für den 3D-Druck fiel aufgrund der fest vorgegebenen Eigenschaften auf ABS. Dieses Filament wurde für alle Bauteile außer den Riemen genutzt.
Für diese Auswahl des Materials wurden zunächst die benötigten Anforderungen betrachtet, um dadurch ein geeignetes Material aufzufinden.
Die Anforderungen für die Bauteile, sind zum einen das die Bauteile eine geringe Dichte und somit auch ein geringes Gewicht haben, zum anderen ist eine hohe Festigkeit der Bauteile wichtig. Die Festigkeit der Bauteile ist von Nöten, da durch den Riemen viel Zugspannung auf die gesamte Baugruppe wirkt. Dieser Kraft müssen alle Bauteile standhalten. Um nach dem 3D-Druck ein ansprechendes Ergebnis und maßhaltige Bauteile zu bekommen, ist die Schmelztemperatur wichtig, diese sollte unter 280°C liegen, da der 3D-Drucker nur bis zu dieser Temperatur das Material erhitzen kann. Für eine hohe Oberflächenqualität sollte ein Material ausgewählt werden, dass eine hohe Haftung am Druckbett hat. Denn hohe diese Haftung würden die Teile zum einen nicht maßhaltig werden, da das Material „verrutscht“ und zum anderen würde die Oberfläche nicht ansprechend sein.
Diese Eigenschaften beinhaltet das ABS, wodurch sich dafür entschieden wurde. Ein weiteres Betrachtetes Filament war das PLA. Dieses Filament eignet sich jedoch nur eingeschränkt für die 3D-Schwenkeinheit, da es elastischer ist und sich schlechter drucken lässt, durch eine schlechte Haftung auf dem Druckbett. Das PLA eignet sich hingegen gut für den Riemen, diese benötigt eine hohe Biegefestigkeit. Das PLA hat ebenso wie das ABS ein geringes spezifisches Gewicht.
Fertigung der Bauteile
Bild | Beschreibung |
---|---|
1. 3D-Drucker | Die konstruierten Bauteile für das Projekt sind auf einem 3d Drucker gedruckt worden. Diese Art der Bauteil-Erstellung ist besonders für Prototypen wie in diesem Projekt geeignet. Da die Herstellung kostengünstig und besonders schnell ist. |
2. 3D-Druck des Riemens | Das Bild zeigt den Druckvorgang bei dem Drucken des Riemens mit dem Material PLA. |
3. Zahnrad Halterung LiDAR-Sensor | Das Zahnrad, das zwischen dem Slip-Ring und der Haltung für den LiDAR-Sensor angebracht ist, hat eine Stabilisierung in den Zwischenräumen. Dort sind kleine Stege eingebracht, diese haben die Aufgabe den Riemen zu führen. |
4. Zahnrad Encoder, Zahnrad Schrittmotor | Bei dem zweiten und dritten Zahnrad handelt es sich um die Verbindung über den Riemen, der Bauteile Encoder und Schrittmotor. |
5. Halterung LiDAR-Sensor | Dieses Bauteil ist die Halterung des LiDAR-Sensors. Unter der Halterung ist der Slip-
Ring angebracht, damit die Kabel sich bewegen können. Oben in der Nut ist der Servo-Motor verbaut, der für die vertikale Schwenkrichtung erforderlich ist. |
6. Befestigung des Sensors an der Halterung | An dieser Befestigung wird der LiDAR-Sensor mit der Halterung verbunden. |
7. Befestigungsplatte | An dieser Befestigungsplatte werden alle Bauteile festgeschraubt. Die beiden Aussparungen sind zum einen für den Schrittmotor und zum anderen für den Slip-Ring. |
8. Riemen | Der Riemen sorgt für die kraftschlüssige Verbindung zwischen dem Encoder, dem Schrittmotor und der Halterung des Sensors. |
9. Halterung Encoder | An dieser Halterung wird der Encoder befestigt. |
10. Einzelnen 3D-Druckteile | Dies ist eine erste Übersicht über die Bauteile aus dem 3D-Drucker, diese werden im nächsten Schritt zusammengebaut. |
11. Zwischenschritt des Zusammenbaues | Dies sind die ersten zusammengebauten Ergebnisse, hier werden die drei Zahnräder Befestigung und die „Befestigung des Sensors an der Halterung“ an den LiDAR angebracht. Der Schrittmotor wurde mit der „Befestigungsplatte“ verbunden. |
12. Mechanische Baugruppe im fertigen Zustand | Das Bild zeigt den mechanischen Aufbau im Endzustand, einige elektronische Arbeiten wurden außerdem schon erledigt. Dazu gehören das Löten der Anschlüsse und eine erste Verkabelung. |
- Elektrisch
Fritzing Skizze
EMS22A - Non-Contacting Absolute Encoder (Datenblatt)
Arduino (Offizielle Website)
Schrittmotor(Produkt auf der offizielle Website des Herstellers)
Motortreiber (Dokumentation)
Schleifring(Datenblatt)
Servo-Motor(Datenblatt)
(LiDAR)
- Programmierung
Funktion zum Auslesen des Encoders in der Arduino IDE:
void Encoder() { digitalWrite(PIN_CS, HIGH); digitalWrite(PIN_CS, LOW); pos_Encoder = 0; for (int i=0; i<10; i++) { digitalWrite(PIN_CLOCK, LOW); digitalWrite(PIN_CLOCK, HIGH); byte b = digitalRead(PIN_DATA) == HIGH ? 1 : 0; pos_Encoder += b * pow(2, 10-(i+1)); } for (int i=0; i<6; i++) { //status bits des Encoders "überspringen" digitalWrite(PIN_CLOCK, LOW); digitalWrite(PIN_CLOCK, HIGH); } digitalWrite(PIN_CLOCK, LOW); digitalWrite(PIN_CLOCK, HIGH); Serial.println(pos_Encoder); }
Mit einer positiven Flanke auf den Eingang "CS" des Encoders wird die Kommunikation angetriggert.
Mit einer negativen Flanke auf den Eingang "Clock" des Encoders wird angefordert, dass der Encoder über den "Data" Ausgang einen Wert der 16 Bit Datenübertragung überträgt.
"In" den ersten 10 Bit steht die aktuelle Position des Encoders in Dezimal 2^10 = 1024. Das entspricht einer Auflösung von 360/1024 = 0,3515625. Diese 10 Bits werden von der ersten for-Schleife gelesen und zu einer Dezimalzahl zusammengerechnet. Die letzten 6 Bit die der Encoder überträgt, sind Zustands- oder auch Status-Bits. Für dieses Projekt ist das Auslesen dieser Bits nicht notwendig, daher werden diese mit der zweiten for-Schleife übersprungen.
Simulink-Code
Wir haben uns ebenfalls mit der Programmierung in Simulink befasst. Der Servo wird beispielsweise alle 200 Schritte um 1° bewegt. Der Schrittmotor dreht sich permanent im Kreis und der Encoder ließt permanent einen Wert aus. Der Encoder wird mittels eines Stateflow-Blockes ausgelesen, der wie folgt aussieht:
Letztendlich haben wir uns dafür entschieden die Schwenkeinheit mit der Arduino IDE zu programmieren, da der Code für uns übersichtlicher ist. Ein Grund dafür ist, das es für die Arduino IDE die Bibliothek Stepper.h gibt. Eine ähnliche Bibliothek für Simulink gibt es leider nicht. Außerdem ist es bei der Arduino IDE einfacher die Zyklen in der loop-Funktion nachzuvollziehen.
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
YouTube Video
Weblinks
- LIDAR-Lite v3 - 3D-Scan
- Projekt 81: Inbetriebnahme und Objekttracking des LiDAR-Lite_v3
- Controlling a Stepper Motor without stepper.h
Literatur
1. Buch HSHL-Bibliothek: Die elektronische Welt mit Arduino entdecken, Autor: Bartmann,Erik
2. Buch HSHL-Bibliothek: Arduino - Physical Computing für Bastler, Designer und Geeks, Autor: Mauel Odendahl; Julian Finn; Alex Wegner
3. Buch HSHL-Bibliothek: Arduino : Praxiseinstieg. Behandelt Arduino 1.0, Autor: Thomas, Brühlmann
4. Buch HSHL-Bibliothek: Arduino-Workshops : eine praktische Einführung mit 65 Projekten, Autor: Bartmann,Erik
5. Buch HSHL-Bibliothek: Handbuch der Robotik-Einsatz intelligenter Roboter, Autor: Mathias Haun
6. Buch HSHL-Bibliothek: Die elektronische Welt mit Arduino entdecken, Autor: John Boxall
7 Buch: Buch zu 3D-Druck: 3D-Druck-Verfahrensauswahl und Wirtschaftlichkeit Entscheidungsunterstützung für unternehmen ISBN:978-3-658-15196-6
---
→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)