Projekt 82: 3D-Schwenkeinheit für einen LiDAR-Lite v3
![](/wiki/images/thumb/5/5c/Projekt_82_EndBild.jpg/230px-Projekt_82_EndBild.jpg)
Autoren: Pia Dommen; Luca Riering
Betreuer: Daniel Klein
→ 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 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 mechanischen 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 Teilen aus einem 3D-Druck und den elektronischen Komponenten zusammengesetzt werden. Zur Verbindung der Teile werden Schraub-, Kleb- und LÖtverbindungen 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 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.
![](/wiki/images/thumb/c/c0/Projekt_82_V-Modell.png/300px-Projekt_82_V-Modell.png)
Um das Projekt konkreter zu planen, wurde außerdem das V-Modell 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ür die 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).Für den Riemen wurde sich für das Material PLA (Polylactide) entschieden, da dieses elastischer ist als das ABS.
Die folgenden Eigenschaften zeigen, dass PLA (Datenblatt).
Acrylnitril-Butadien-Styrol (ABS) | Polylactide (PLA) |
---|---|
hohe Zugfestigkeit 1681,5 MPa | hohe Zugfestigkeit 2346,5 MPa |
hohe Oberflächenqualität | hohe Oberflächenqualität |
hohe Druckgeschwindigkeit sind möglich | hohe Druckgeschwindigkeit sind möglich |
geringe Biegefestigkeit 70,5 MPa | höhere Biegefestigkeit 103,0 MPa |
gute Haftung am Druckbett | schlechte Haftung am Druckbett |
geringes spezifisches Gewicht 1,10 g/cm³ | geringes spezifisches Gewicht 1,24 g/cm³ |
niedrige Schmelztemperatur 225 - 245˚C |
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. ![]() |
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. ![]() |
Das Bild zeigt den Druckvorgang bei dem Drucken des Riemens mit dem Material PLA. |
3. |
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. |
Bei dem zweiten und dritten Zahnrad handelt es sich um die Verbindung über den Riemen, der Bauteile Encoder und Schrittmotor. |
5. |
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. |
An dieser Befestigung wird der LiDAR-Sensor mit der Halterung verbunden. |
7. |
Diese Stange mit Grundplatte dient der Befestigung des LiDAR Sensor und der Verbindung mit dem Servomotor. Die Verbindungsform ist eine Übergangspassung. |
8. |
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. |
9. |
Der Riemen sorgt für die kraftschlüssige Verbindung zwischen dem Encoder, dem Schrittmotor und der Halterung des Sensors. |
10. ![]() |
Dies ist eine erste Übersicht über die Bauteile aus dem 3D-Drucker, diese werden im nächsten Schritt zusammengebaut. |
11. ![]() |
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. ![]() |
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. |
13. ![]() |
Beim zweiten Prototypen ist die Befestigungsplatte erneuert worden. Lessons Learned |
- Elektrisch
![](/wiki/images/thumb/6/62/Projekt82_Steckplatine.jpg/300px-Projekt82_Steckplatine.jpg)
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)
![](/wiki/images/thumb/6/65/Projekt_82_Blockschaltbild.png/592px-Projekt_82_Blockschaltbild.png)
Die Schwenkeinheit wird von einem Arduino UNO gesteuert. Dazu wird ein Schritt- und ein Servomotor verwendet. Für eine genauere Messung der aktuellen Position wird ein Drehgeber (Encoder) ausgelesen. Der Schrittmotor wird über einen Motortreiber versorgt und gesteuert. Der Motortreiber wird über die 5V Steuerspannung versorgt, sodass der Treiber Leistung zum regulierten Steuern des Schrittmotors hat. Zusätzlich hat der Motortreiber einen weiteren PIN für die Versorgungsspannung des Schrittmotors. Diese Spannung sollte zwischen 4.5 und 13.5V liegen. Da der Schrittmotor mindestens 7V Versorgungsspannung benötigt, bietet sich eine Spannung größer 7V an. Diese Versorgung erfolgt im Regelfall durch einen Akku. Beim aktuellen Prototyp erfolgt die Versorgung allerdings über den Vin PIN des Arduino UNO. Die Kommunikation zum Motortreiber und damit auch zum Motor ist unidirektional. Kommuniziert wird über 4 digitale Outputs, zwei davon PWM, welche die Informationen an den Treiber leiten, der diese verwertet und den Motor steuert. Mit dem Servomotor wird ebenfalls unidirektional kommuniziert. Dazu wird über einen digitalen PWM Output Informationen übertragen. Die Spannungsversorgung läuft über das 5V Netz des Arduino. Die Kommunikation zum Drehgeber (Encoder) ist bidirektional und läuft über 4 digitale I/Os. Drei davon, um die Information vom Drehgeber (Encoder) anzufordern und einen, um die Information zu empfangen. Dies geschieht getaktet, womit sich die 10 Bit Information, über ein Standard I/O abfragen lässt. Die aktuellen Positionen der Motoren werden über zwei digitale Outputs an den Arduino des Projektes 81 übertragen.
- 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,8° 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:
![](/wiki/images/thumb/d/d1/Projekt_82_Simulink_Encoder_Block.PNG/1000px-Projekt_82_Simulink_Encoder_Block.PNG.jpeg)
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
Das Ergebnis ist eine gut funktionierende Schwenkeinheit, welche sowohl die Rotation um die horizontale als auch die vertikale Achse vollführt, sowie genaue Positionswerte zurückgibt. Der Auslenkungswinkel um die vertikale Achse ist sehr exakt und erfüllt die Anforderung. Die Positionsgenauigkeit des Servomotors ist nicht so exakt. Im weiteren Entwicklungsverlauf würde es sich lohnen einen performanteren Servomotor für mehr Geld zu kaufen. Die gedruckten Bauteile erfüllen ihren Zweck und sind für Prototypen gut geeignet. Bei einem finalen Modell sollten die Plastikteile durch Robustere mit einer langen Lebensdauer ersetzt werden.
Zusammenfassung
Lessons Learned
Bei der Konstruktion und Anpassung von 3D Objekten haben wir gelernt mit Solid Works zu arbeiten und Dateien für den 3D-Druck zu erstellen. Besonders die Anpassung der Befestigungsplatte hat uns gezeigt wie man Bauteile effizienter und sauber konstruieren kann. Beim Drucken der 3D-Teile haben wir gelernt, dasss die Drucklagen beim 3D-Druck nach oben ungenauer werden, weswegen sich beim 3D-Druck der Gedanke über das richtige Auslegen der Bauteile oft lohnt, um eine höhere Genauigkeit zu erzielen. Wir haben auch gelernt flexible Bauteile, welche eine sehr hohe Verformbarkeit aufweisen müssen, nach Möglichkeit nicht zu Drucken, sondern zu Bestellen. Im Verlaufe des Projektes haben wir gelernt, dass man bestimmte Teilaufgaben hätte auslagern können. Bei der Verbindung über den Zahnriemen hätte man sich an einen erfahrenen Betrieb wenden oder eventuell fertige Bauteile kaufen können. Dadurch hätten wir unseren Zeitplan besser Eingehalten und es hätte wahrscheinlicher eine Zusammenführung gegeben. Bei der Programmierung haben wir gelernt, dass es theoretisch möglich ist das Projekt in Simulink zu programmieren, was uns auch relativ gut gelungen ist, jedoch ist es in der Arduino Software wesentlich einfacher. Die Strukturierung von Code ist wesentlich einfacher und man kann auf bereits vorhandene Bibliotheken oder Code-Snippets zurückgreifen.
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
- 3D-Drucker RepRap X400
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)