Projekt 82: 3D-Schwenkeinheit für einen LiDAR-Lite v3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
3D-Schwenkeinheit

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

  1. Planung einer stabilen mechanische Konstruktion der 3D-Schwenkeinheit
  2. Messung des horizontalen und vertikalen Rotationswinkels auf +-1° genau (z.B. Drehgeber)
  3. Beschaffung der Materialien
  4. Realisierung des Aufbaus und der Elektronik
  5. Schnittstelle der 3D-Schwenkeinheit zu Arduino, Matlab und Simulink
  6. Inbetriebnahme der Schwenkeinheit
  7. Softwareentwicklung nach HSHL Standard in SVN
  8. Darstellung der Funktion des LiDARs in einem YouTube Video
  9. Test und wissenschaftliche Dokumentation
  10. 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

Gantt-Diagramm

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.

V-Modell

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

Drehgeber

Schrittmotor Eckstein 12,95€ ACT 11HS5406

Schrittmotor

Motortreiber 4,5 – 13V Reichelt 5,60€ DEBO MOTODRIVER3

Motortreiber




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.
3D-Drucker
3D-Drucker
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
3D-Druck des Riemens
3D-Druck des Riemens
Das Bild zeigt den Druckvorgang bei dem Drucken des Riemens mit dem Material PLA.
3.
Zahnrad Halterung LiDAR-Sensor
Zahnrad Halterung LiDAR-Sensor
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 Encoder
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
Halterung LiDAR-Sensor
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
Befestigung des Sensors an der Halterung
Befestigung des Sensors an der Halterung
An dieser Befestigung wird der LiDAR-Sensor mit der Halterung verbunden.
7.
Befestigungsplatte
Befestigungsplatte
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
Riemen
Riemen
Der Riemen sorgt für die kraftschlüssige Verbindung zwischen dem Encoder, dem Schrittmotor und der Halterung des Sensors.
9.
Einzelteile des 3D-Drucks
Einzelteile des 3D-Drucks
Einzelnen 3D-Druckteile
Dies ist eine erste Übersicht über die Bauteile aus dem 3D-Drucker, diese werden im nächsten Schritt zusammengebaut.
10.
Zwischenschritt Zusammenbau
Zwischenschritt Zusammenbau
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.
11.
Mechanische Baugruppe im fertigen Zustand
Mechanische Baugruppe im fertigen Zustand
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)







Blockschaltbild









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

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:

Encoder-Stateflow-Diagramm in Simulink












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

Screenshots der Bauteile in Solidworks
Screenshots der Bauteile in Solidworks




















lessons learnd: stange: 2 versuche einmal liegend einmal stehen; stehend die wiederholgenauigkeit bei jeder Lage daher pro lage ungenauer und liegend weniger lagen riemen: hohe genauigkeit nötig weil sonst hängen bleiben um das zu beheben haben.

Projektunterlagen

YouTube Video

Weblinks

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)