Projekt 21: Nachbau eines LittleBot: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(56 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
Betreuer: [[Benutzer:Mirekgoebel| Prof. Dr.-Ing. Mirek Göbel]] | Betreuer: [[Benutzer:Mirekgoebel| Prof. Dr.-Ing. Mirek Göbel]] | ||
[[Datei:sirketer.jpg|right|500px]] | [[Datei:sirketer.jpg|right|500px]] | ||
Zeile 17: | Zeile 16: | ||
=Aufgabe= | =Aufgabe= | ||
Die Aufgabe bestand im "Nachbau des LittleBot" und die damit verbundene Entwicklung und Produktion. Anhaltspunkte für den Grundaufbau waren nicht gegeben, bis auf einige Video z.B. [https://www.youtube.com/watch?v=gqeDTKAuCDc YouTube-Video]. Zur Umsetzung des Projektes gehörten in groben Zügen die Wahl der Hardware und Software, die zu der auszuführenden Funktion des LittleBot passen mussten und dessen Verzahnung gekoppelt mit der Umsetzung. | Die Aufgabe bestand im "Nachbau des LittleBot" und die damit verbundene Entwicklung und Produktion. Anhaltspunkte für den Grundaufbau waren nicht gegeben, bis auf einige Video z.B. [https://www.youtube.com/watch?v=gqeDTKAuCDc YouTube-Video]. Zur Umsetzung des Projektes gehörten in groben Zügen die Wahl der Hardware und Software, die zu der auszuführenden Funktion des LittleBot passen mussten und dessen Verzahnung gekoppelt mit der Umsetzung. | ||
=Konzepterstellung= | =Konzepterstellung= | ||
Die ersten Schritte bestanden in der Recherche von externen Erfahrungen und folgend wurde die Funktion der Linienverfolgung (weißer Grund, schwarze Linie)ausgewählt, die mittels zwei Infrarotsensoren durchgeführt werden sollten. Der mechanische Aufbau war additiv zu fertigen. Die Erstellung des zugehörigen 3D Modell sollte mittels der Software [http://www.solidworks.de/ SolidWorks] erfolgen. Die Lenkung und Bewegung ist durch zwei parallele und einzeln angetriebe Motoren realisiert werden. Für die nötige Dreipunktauflage dient eine Halbkugel am Heck des Bots. Als zentrale Steuereinheit setzen wir den Mikrocontroller Arduino UNO REV 3 ein. Der Bot sollte außerdem eine autonome Energieversorgung bekommen. | Die ersten Schritte bestanden in der Recherche von externen Erfahrungen und folgend wurde die Funktion der Linienverfolgung (weißer Grund, schwarze Linie) ausgewählt, die mittels zwei Infrarotsensoren durchgeführt werden sollten. Der mechanische Aufbau war additiv zu fertigen. Die Erstellung des zugehörigen 3D Modell sollte mittels der Software [http://www.solidworks.de/ SolidWorks] erfolgen. Die Lenkung und Bewegung ist durch zwei parallele und einzeln angetriebe Motoren realisiert werden. Für die nötige Dreipunktauflage dient eine Halbkugel am Heck des Bots. Als zentrale Steuereinheit setzen wir den Mikrocontroller Arduino UNO REV 3 ein. Der Bot sollte außerdem eine autonome Energieversorgung bekommen. | ||
=Video= | =Video= | ||
Im [https://youtu.be/LJBEAcovJPY Video] ist der funktionierender Bot zu sehen, dieser verfolgt wie gewünscht die die schwarzen Linien die auf dem weißen Regalboden aufgeklebt worden sind. Erwähnenswert ist hierbei, dass die Regaloberfläche gesäubert und nicht durch einen Schmierfilm (z.B. Fingerfett durch Montage) benetzt worden ist, da sonst der nötige Kontakt Räder zum Boden nicht gegeben ist. | Im [https://youtu.be/LJBEAcovJPY Video] ist der funktionierender Bot zu sehen, dieser verfolgt wie gewünscht die die schwarzen Linien die auf dem weißen Regalboden aufgeklebt worden sind. Erwähnenswert ist hierbei, dass die Regaloberfläche gesäubert und nicht durch einen Schmierfilm (z.B. Fingerfett durch Montage) benetzt worden ist, da sonst der nötige Kontakt der Räder zum Boden nicht gegeben ist. | ||
Zeile 35: | Zeile 37: | ||
*Ultraschallsensor angeschlossen | *Ultraschallsensor angeschlossen | ||
* Dokumentation abgeschlossen | * Dokumentation abgeschlossen | ||
=Projektplan= | =Projektplan= | ||
Die einzelnen Punkte können als Meilensteine angesehen werden. Ein weitere übersichtliche Darstellung bietet das Gantt-Chart(siehe [[#Anhang|Anhang]]). Zu beachten ist, dass das Fahrgestell als Fundament für den Little Bot dient. In diesem Zusammenhang musten alle weiteren Bauteile daran angepasst werden, wie in Abbildung | Die einzelnen Punkte können als Meilensteine angesehen werden. Ein weitere übersichtliche Darstellung bietet das Gantt-Chart(siehe [[#Anhang|Anhang]]). Zu beachten ist, dass das Fahrgestell als Fundament für den Little Bot dient. In diesem Zusammenhang musten alle weiteren Bauteile daran angepasst werden, wie in [[#Fahrgestell|Abbildung 2]] zu sehen ist. Die Karosserie hält den Clip der Infrarotsensoren und die Ultraschallsensoren, hat aber sonst keine tragende Funktion. | ||
Zeile 60: | Zeile 63: | ||
= | =Bauteilliste= | ||
{| class="mw-datatable" | {| class="mw-datatable" | ||
! style="font-weight: bold;" | | ! style="font-weight: bold;" | Pos.: | ||
! style="font-weight: bold;" | Gesamtmenge [Stück]: | ! style="font-weight: bold;" | Gesamtmenge [Stück]: | ||
! style="font-weight: bold;" | Bezeichnung: | ! style="font-weight: bold;" | Bezeichnung: | ||
Zeile 157: | Zeile 160: | ||
=Werkzeugliste= | |||
= | |||
{| class="mw-datatable" | {| class="mw-datatable" | ||
! style="font-weight: bold;" | | ! style="font-weight: bold;" |Pos.: | ||
! style="font-weight: bold;" | Bezeichnung: | ! style="font-weight: bold;" | Bezeichnung: | ||
! style="font-weight: bold;" |Verwendungszweck: | ! style="font-weight: bold;" |Verwendungszweck: | ||
Zeile 169: | Zeile 169: | ||
|1 | |1 | ||
| Seitenschneider | | Seitenschneider | ||
| | | Verarbeitung der Leitungen | ||
|- | |- | ||
|2 | |2 | ||
Zeile 186: | Zeile 186: | ||
|5 | |5 | ||
|[https://de.wikipedia.org/wiki/Schere Schere] | |[https://de.wikipedia.org/wiki/Schere Schere] | ||
| | | Schneiden von Klebeband | ||
|- | |- | ||
|6 | |6 | ||
Zeile 205: | Zeile 205: | ||
|- | |- | ||
|10 | |10 | ||
|feine Zange(Schnabel-/Spießzange) oder Pinzette | |feine Zange (Schnabel-/Spießzange) oder Pinzette | ||
|für besseres Handling | |für besseres Handling | ||
|- | |- | ||
Zeile 221: | Zeile 221: | ||
|} | |} | ||
= | |||
=Mechanische Komponenten= | |||
Es ist kein bestehendes 3D-Modell verwendet worden. Das bedeutet, die Zeichnungen zur Produktion der Einzelteile sind weitestgehend ohne Vorgaben erstellt worden. Durch Schätzung anhand der Recherche, einigt sich die Konstruktion auf eine Kantenlänge des kubischen Körpers von 100mm und die ungefähre Anordnung der Räder. | Es ist kein bestehendes 3D-Modell verwendet worden. Das bedeutet, die Zeichnungen zur Produktion der Einzelteile sind weitestgehend ohne Vorgaben erstellt worden. Durch Schätzung anhand der Recherche, einigt sich die Konstruktion auf eine Kantenlänge des kubischen Körpers von 100mm und die ungefähre Anordnung der Räder. | ||
Zeile 265: | Zeile 267: | ||
==Sensorhalter== | ==Sensorhalter== | ||
An der Karosserieoberteilfront kann über das bereits beschriebene Aufnahmesystem ein [[Datei:Sensorhalter.JPG|mini|Abb. 5 Sensorhalter]] angebracht werden. Die Infrarotsensoren sind an diesen mittels | An der Karosserieoberteilfront kann über das bereits beschriebene Aufnahmesystem ein [[Datei:Sensorhalter.JPG|mini|Abb. 5 Sensorhalter]] angebracht werden. Die Infrarotsensoren sind an diesen Halter, mittels einer M3 Schraube/Mutter und 2 Unterlegscheiben, angebracht. Durch das Langloch in der Befestigung sind die Sensoren höhenverstellbar. | ||
Zeile 280: | Zeile 283: | ||
=Elektronische Bauteile= | =Elektronische Bauteile= | ||
[[Datei:Fritzingskizze_Sir_Keter.jpg|mini|right|Abb. 6 Fritzingskizze]] Die [[#Anschlusstabelle|Anschlusstabelle]] zeigt in der ersten Spalte die verwendeten Bauteile, in der mittleren Spalte den Pin und in der rechten Spalte befindet sich die Art des Anschlusses (z.B. Gnd, Vcc), auf Angabe von Leitungsfarben wurden hier verzichtet, ist zukünftig aber empfehlenswert, da es die Fehlersuche entscheidend erleichtert. | [[Datei:Fritzingskizze_Sir_Keter.jpg|mini|right|Abb. 6 Fritzingskizze]] Die [[#Anschlusstabelle|Anschlusstabelle]] zeigt in der ersten Spalte die verwendeten Bauteile, in der mittleren Spalte den Pin und in der rechten Spalte befindet sich die Art des Anschlusses (z.B. Gnd, Vcc), auf Angabe von Leitungsfarben wurden hier verzichtet, ist zukünftig aber empfehlenswert, da es die Fehlersuche entscheidend erleichtert. | ||
Zeile 292: | Zeile 301: | ||
==Motoren== | ==Motoren== | ||
Die Motoren sind im Sinne des Namens keine voll kontinuierlich drehenden Servomotoren, sondern schlichte DC-Motoren mit einer vorgeschalteten H-Brücke. Die Software gekoppelt mit der includierten Servo-Bibliothek (siehe Quellcode:“ include <Servo.h> //arduino library“) kann diese Art von Motoren mit einem Geschwindigkeitsbereich von 0 bis 90 in Drehrichtung „rechts“ ansteuern, wobei hier die 0 die maximale Geschwindigkeit darstellt und die 90 den Stillstand des Motors bedeutet. Der verwendete Befehl lautet „NameServo.write(xx)“ (siehe Quellcode). In Drehrichtung „links“ ist die maximale Geschwindigkeit mit den Wert 180 beziehungsweise der Stillstand wiederum mit dem Wert 90 einstellbar. Die Motoren müssen auf einen Stillstand eingestellt werden. Dabei wird der Motor angeschlossen und mit dem Befehl „NameServo.write(90)“ angesprochen. Das Potentiometer unter dem Motor muss solange gedreht werden bis der Motor stillsteht. Hierbei sollte erwähnt werden, dass diese Einstellmöglichkeit ein wenig Spiel hat. Durch die oben erwähnte Software kann dies aber ohne weiteres korrigiert werden. Die Einstellung des Motors am Potentiometer sollte vor Einbau erfolgen. | Die Motoren sind im Sinne des Namens keine voll kontinuierlich drehenden Servomotoren, sondern schlichte DC-Motoren mit einer vorgeschalteten H-Brücke. Die Software gekoppelt mit der includierten Servo-Bibliothek (siehe Quellcode:“ include <Servo.h> //arduino library“) kann diese Art von Motoren mit einem Geschwindigkeitsbereich von 0 bis 90 in Drehrichtung „rechts“ ansteuern, wobei hier die 0 die maximale Geschwindigkeit darstellt und die 90 den Stillstand des Motors bedeutet. Der verwendete Befehl lautet „NameServo.write(xx)“ (siehe Quellcode). In Drehrichtung „links“ ist die maximale Geschwindigkeit mit den Wert 180 beziehungsweise der Stillstand wiederum mit dem Wert 90 einstellbar. Die Motoren müssen auf einen Stillstand eingestellt werden. Dabei wird der Motor angeschlossen und mit dem Befehl „NameServo.write(90)“ angesprochen. Das Potentiometer unter dem Motor muss solange gedreht werden bis der Motor stillsteht. Hierbei sollte erwähnt werden, dass diese Einstellmöglichkeit ein wenig Spiel hat. Durch die oben erwähnte Software kann dies aber ohne weiteres korrigiert werden. Die Einstellung des Motors am Potentiometer sollte vor Einbau erfolgen. | ||
Zeile 300: | Zeile 313: | ||
==Infrarotsensoren== | ==Infrarotsensoren== | ||
[[Datei: IR-Einstellung.jpg|mini|right|Abb. 7 Infrarotsensoreinstellung]] Die [https://de.wikipedia.org/wiki/Infrarotstrahlung Infrarotsensoren] müssen vor dem Einbau eingestellt werden. Die Einstellung wird über ist über die Höhe der Sensorhalterung und primär über das Potentiometer auf dem | [[Datei: IR-Einstellung.jpg|mini|right|Abb. 7 Infrarotsensoreinstellung]] Die [https://de.wikipedia.org/wiki/Infrarotstrahlung Infrarotsensoren] müssen vor dem Einbau eingestellt werden. Die Einstellung wird über ist über die Höhe der Sensorhalterung und primär über das Potentiometer auf dem Sensor vorgenommen. Die Einstellung nach dem kompletten Zusammenbau aller Bauteile ist möglich, jedoch nur unter erschwerten Bedingungen. Die Einstellung erfolgt auf einem weißen Blattpapier, welches mit einem schwarzen Klebestreifen versehen ist (Abbildung 7). Die Sensoren sind über das Arduinoboard mit +5V versorgt. Das analoge Signal ist auf einen der sechs möglichen Steckplätze (A0 - A5) angeschlossen worden. Mit dem Befehl „variablenName=analogRead (Pin für analoge Signale)“ kann das analoge Signal erfasst werden. Gleichzeitig kann mit dem Befehl „Serial.print(variablenName)“ die Ausgabe des Sensorwerte über den Monitor der Software visuell überwacht werden. Hierbei werden nach der Kalibrierung bei der Farbe Schwarz Werte von ca. 1000 erreicht und bei der Farbe Weiß Werte von unter 50. Zusätzlich kann durch ein grünes und rotes Signal am Sensor optisch (Abb. 7) unterschieden werden, in welcher Schaltstellung die Sensoren sich befindet, bei der Farbe Weiß leuchten beide LEDs. | ||
Zeile 314: | Zeile 327: | ||
==Anschlusstabelle== | |||
{| class="mw-datatable" | |||
{| | ! style="font-weight: bold;" |Bauteil | ||
! | ! style="font-weight: bold;" |PIN | ||
! style="font-weight: bold;" |GND | |||
! style="font-weight: bold;" |5V | |||
! style="font-weight: bold;" |Verwendungszweck: | |||
|- | |- | ||
| | | Infrarotsensor links | ||
| A0 | | A0 | ||
| x | | x | ||
| x | | x | ||
| analoges | | analoges Ausgangssignal schwarz oder weiss | ||
|- | |- | ||
|Infrarotsensor rechts | |Infrarotsensor rechts | ||
Zeile 333: | Zeile 346: | ||
| x | | x | ||
| x | | x | ||
| analoges | | analoges Ausgangssignal schwarz oder weiss | ||
|- | |- | ||
|Motor links | |Motor links | ||
Zeile 359: | Zeile 372: | ||
|Echo-Signal | |Echo-Signal | ||
|} | |} | ||
Zeile 421: | Zeile 435: | ||
} | } | ||
</code> | </code> | ||
=Ergebnis= | =Ergebnis= | ||
::* Hardware Bauteile wurde beschafft | ::* Hardware Bauteile wurde beschafft | ||
::* CAD-Zeichnungen erfolgreich erstellt | ::* CAD-Zeichnungen erfolgreich erstellt | ||
::* 3D-Druck der CAD-Teile wurden im zweiten Anlauf erfolgreich gedruckt | ::* 3D-Druck der CAD-Teile wurden im zweiten Anlauf erfolgreich gedruckt | ||
::* Programmcode erfolgreich geschrieben und angepasst | ::* Programmcode erfolgreich geschrieben und angepasst | ||
::* Linieverfolgung funktioniert | ::* Linieverfolgung funktioniert | ||
::*Ultraschallsensor wurde nicht angeschlossen | ::* Ultraschallsensor wurde nicht angeschlossen | ||
::* Dokumentation wurde erfolgreich abgeschlossen | ::* Dokumentation wurde erfolgreich abgeschlossen | ||
=Fazit= | =Fazit= | ||
Auf Grund der unzureichenden Qualität des ersten 3D-Druck ist die Produktion des Aufbaus im zweiten Anlauf auf einem privaten 3D-Drucker durchgeführt worden | Auf Grund der unzureichenden Qualität des ersten 3D-Druck ist die Produktion des Aufbaus im zweiten Anlauf auf einem privaten 3D-Drucker durchgeführt werden, dieser Sachverhalt dauerte 6 Wochen und somit waren alle angesetzten offizielle und inoffiziellen Puffer weit überzogen worden. Das Dach des [[#Karosserieoberteil| Karosserieoberteil]] musste aufgebohrt werden, damit das Arduino-Board während der Versuche ohne Abnehmen des Oberteils an den PC angeschlossen werden kann. Die Gewichtsverteilung auf dem Unterteil erwies sich als Problem, da die Konstruktion in Leichtbauweise entwickelt wurde und somit Gewicht des Mikrokontrollers und der 4 x AA Batterien die Achse der Halbkugel angriff. Wir lösten das Problem wie im [[#Fahrgestell| Absatz der Motorhalterung]] beschrieben mit einem Bleigewicht, welches direkt über den Motoren angebracht wurde. Ansonsten war die Verzahnung der einzelnen Abschnitte essentiell gewesen. Durch den Umstand, dass die Lieferzeiten über die Hochschule sehr lang waren, sind jegliche Materialien privat bezahlt worden. Die Arbeiten fanden in vollen zeitlichen Umfang im privaten Bereich statt, da nur am Ende des Semester vermehrt Werkstattzeiten angeboten wurden. Sonst wäre das Projekt nicht in Sollzeit erfolgreich beendet worden. Der Ultraschallsensor wurde nicht angeschlossen, da die Funktion es nicht erforderte, in der [[#Anschlusstabelle| Anschlusstabelle]] haben wir jedoch mögliche Anschlüsse vermerkt. Der Ultraschallsensor nimmt des weiteren ästhetische Eigenschaften ein. Die Zusammenarbeit in dem Projekt von beiden Studenten geschah auf Augenhöhe. | ||
=Ausblick= | =Ausblick= | ||
Die Funktionen des Bots können noch erweitert werden. Eine Möglichkeit wäre den Ultraschallsensor zum Einsatz zu bringen. | Die Funktionen des Bots können noch erweitert werden. Eine Möglichkeit wäre den Ultraschallsensor zum Einsatz zu bringen. Ebenso könnte man an Stelle der Infrarotsensoren andere Sensoren anbringen. Das Programm könnte mit der Software Simulink realisiert werden, dies bedarf nur softwaretechnische Veränderungen, die Verdrahtung und die Hardware kann bestehen bleiben. Eine weitere Idee wäre den Arduino über ein Bluetooth Modul mit dem Handy fernzusteuern und gleichzeitig die Daten von dem Ultraschallsensor am Handy auszugeben. Auf dem Dach den Karosserieoberteil könnte man ein Kamera installiern um bei der Linienerfolgung das Gelände zu erkunden, dabei sollte aber beachtet werden das das ArduinoUno Board dafür zu "schwach" ist und stattdessen ein Raspberry Pi installiert werden sollte. Es gibt viele Möglichkeiten mit diesen "Alleskönnerboard" bestehende Projekte zu optimieren oder neu Projekte zu schaffen. | ||
Zeile 444: | Zeile 462: | ||
::* [https://www.youtube.com/watch?v=y-yh7weJWYI Arduino Industrial Automation] | ::* [https://www.youtube.com/watch?v=y-yh7weJWYI Arduino Industrial Automation] | ||
::* [https://www.youtube.com/watch?v=2igPl-MTfTQ TOP 5 Arduino Projects] | ::* [https://www.youtube.com/watch?v=2igPl-MTfTQ TOP 5 Arduino Projects] | ||
=Literaturvorschläge= | =Literaturvorschläge= | ||
::* Buch HSHL-Bibliothek:[https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8856&query_desc=kw%2Cwrdl%3A%20Die%20elektronische%20Welt%20mit%20Arduino%20entdecken Die elektronische Welt mit Arduino entdecken | ::* Buch HSHL-Bibliothek:[https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8856&query_desc=kw%2Cwrdl%3A%20Die%20elektronische%20Welt%20mit%20Arduino%20entdecken Die elektronische Welt mit Arduino entdecken, Autor: Bartmann,Erik] | ||
::* Buch HSHL-Bibliothek:[https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8901 Arduino - Physical Computing für Bastler, Designer und Geeks | ::* Buch HSHL-Bibliothek:[https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8901 Arduino - Physical Computing für Bastler, Designer und Geeks, Autor: Mauel Odendahl; Julian Finn; Alex Wegner] | ||
::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=9400 Arduino : Praxiseinstieg. Behandelt Arduino 1.0 | ::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=9400 Arduino : Praxiseinstieg. Behandelt Arduino 1.0, Autor: Thomas, Brühlmann] | ||
::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=10891 Arduino-Workshops : eine praktische Einführung mit 65 Projekten | ::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=10891 Arduino-Workshops : eine praktische Einführung mit 65 Projekten, Autor: Bartmann,Erik] | ||
::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8856&query_desc=kw%2Cwrdl%3A%20Die%20elektronische%20Welt%20mit%20Arduino%20entdecken Die elektronische Welt mit Arduino entdecken | ::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=1406&query_desc=kw%2Cwrdl%3A%20Roboter Handbuch der Robotik-Einsatz intelligenter Roboter, Autor: Mathias Haun] | ||
::* Buch HSHL-Bibliothek: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=8856&query_desc=kw%2Cwrdl%3A%20Die%20elektronische%20Welt%20mit%20Arduino%20entdecken Die elektronische Welt mit Arduino entdecken, Autor: John Boxall] | |||
=Anhang= | =Anhang= | ||
::* CAD-Dateien im Projektarchiv-SVN unter „LittleBot“(Nr. 21) hinterlegt | ::* CAD-Dateien im Projektarchiv-SVN unter „LittleBot“ (Nr. 21) hinterlegt | ||
::* [[:Datei:Programmablaufplan.pdf|Programmablaufplan]] | ::* [[:Datei:Programmablaufplan.pdf|Programmablaufplan]] | ||
::* [[:Datei: | ::* [[:Datei:Gantt Chartx.png|Gantt-Chart]] | ||
::* [[:Datei:Fahrgestell1.png|Fahrgestell auf Arbeitsfläche von SolidWorks]] | ::* [[:Datei:Fahrgestell1.png|Fahrgestell auf Arbeitsfläche von SolidWorks]] | ||
::* [[:Datei:Kugel.JPG|Kugel als zweite Achse]] | ::* [[:Datei:Kugel.JPG|Kugel als zweite Achse]] | ||
Zeile 466: | Zeile 485: | ||
::* [[:Datei:Schaltplan-IR sensor.png|Schaltplan Infrarotsensor vom Hersteller]] | ::* [[:Datei:Schaltplan-IR sensor.png|Schaltplan Infrarotsensor vom Hersteller]] | ||
::* [https://youtu.be/LJBEAcovJPY Video] | ::* [https://youtu.be/LJBEAcovJPY Video] | ||
=Korrektur/Feedback= | =Korrektur/Feedback= | ||
::* | ::* | ||
::* | ::* | ||
Aktuelle Version vom 21. März 2018, 21:44 Uhr
Im Rahmen des GET-Fachpraktikums im fünften Semester des Studiengangs Mechatronik an der Hochschule Hamm-Lippstadt dokumentiert dieser Wiki-Artikel das Projekt „Nachbau des Little Bot“. Ebenso kann dieses Dokument als Anleitung zum Nachbau oder für die Entwicklung weiterer Funktionen in zukünftigen Projekten dienen. Der Name unseres Aufbaus ist „Sir Keter“.
Autor: Björn Kohle und Johannes Becker
Betreuer: Prof. Dr.-Ing. Mirek Göbel
Aufgabe
Die Aufgabe bestand im "Nachbau des LittleBot" und die damit verbundene Entwicklung und Produktion. Anhaltspunkte für den Grundaufbau waren nicht gegeben, bis auf einige Video z.B. YouTube-Video. Zur Umsetzung des Projektes gehörten in groben Zügen die Wahl der Hardware und Software, die zu der auszuführenden Funktion des LittleBot passen mussten und dessen Verzahnung gekoppelt mit der Umsetzung.
Konzepterstellung
Die ersten Schritte bestanden in der Recherche von externen Erfahrungen und folgend wurde die Funktion der Linienverfolgung (weißer Grund, schwarze Linie) ausgewählt, die mittels zwei Infrarotsensoren durchgeführt werden sollten. Der mechanische Aufbau war additiv zu fertigen. Die Erstellung des zugehörigen 3D Modell sollte mittels der Software SolidWorks erfolgen. Die Lenkung und Bewegung ist durch zwei parallele und einzeln angetriebe Motoren realisiert werden. Für die nötige Dreipunktauflage dient eine Halbkugel am Heck des Bots. Als zentrale Steuereinheit setzen wir den Mikrocontroller Arduino UNO REV 3 ein. Der Bot sollte außerdem eine autonome Energieversorgung bekommen.
Video
Im Video ist der funktionierender Bot zu sehen, dieser verfolgt wie gewünscht die die schwarzen Linien die auf dem weißen Regalboden aufgeklebt worden sind. Erwähnenswert ist hierbei, dass die Regaloberfläche gesäubert und nicht durch einen Schmierfilm (z.B. Fingerfett durch Montage) benetzt worden ist, da sonst der nötige Kontakt der Räder zum Boden nicht gegeben ist.
Erwartung an die Projektlösung
- Hardware Bauteile beschaffen
- CAD-Zeichnungen erstellen
- 3D-Druck der CAD-Teile
- Programmcode geschrieben
- Linieverfolgung funktioniert
- Ultraschallsensor angeschlossen
- Dokumentation abgeschlossen
Projektplan
Die einzelnen Punkte können als Meilensteine angesehen werden. Ein weitere übersichtliche Darstellung bietet das Gantt-Chart(siehe Anhang). Zu beachten ist, dass das Fahrgestell als Fundament für den Little Bot dient. In diesem Zusammenhang musten alle weiteren Bauteile daran angepasst werden, wie in Abbildung 2 zu sehen ist. Die Karosserie hält den Clip der Infrarotsensoren und die Ultraschallsensoren, hat aber sonst keine tragende Funktion.
- Recherche
- Konzepterstellung
- Software testen
- CAD-Zeichnung Fahrgestell + Räder
- 3D-Druck Fahrgestell + Räder
- Zusammenbau Fahrgestell und el. Bauteile
- Programm schreiben
- Test
- Programm anpassen
- Test
- CAD-Zeichnung Karosserie Oberteil + Sensorhalter
- 3D-Druck Karosserie Oberteil + Sensorhalter
- Hochzeit
- Gesamte Funktion testen
- Anpassungen vornehmen
- Dokumentation
Bauteilliste
Pos.: | Gesamtmenge [Stück]: | Bezeichnung: | möglicher Bestellort: | Gesamtpreis in €: |
---|---|---|---|---|
1 | 1 | Diverse Leitungen 0,25 mm² - 0,5 mm² aus Eigenbedarf | Amazon.de | 29,95 |
2 | 1 | HC-SR04 Ultraschallsensor | Amazon.de | 3,99 |
3 | 2 | FS90R Continuous Micro Servo + Befestigungsmaterial für Reifen | Amazon.de | 14,00 |
4 | 1 | Arduino Uno Rev3 | innet24.de | 19,99 |
5 | 2 | Infrarot-Sensor | Amazon.de | 9,08 |
6 | 1 | Batteriefach | Amazon.de | 3,49 |
7 | 4 | 4 x AA Batterie | Amazon.de | 6,49 |
8 | 1 | DC Hohlstecker 2,1 x 5,5 mm / 2,5 x5,5 Hohlbuchse abgewinkelt kurz | hi-fi-expert.de | 3,48 |
9 | 1 | Lötzinn | Amazon.de | 11,94 |
10 | 1 | Hardcase für Arduino Uno Board | Amazon.de | 6,71 |
11 | 4 | Tesa Isolierband schwarz ("Elektrikertape") | OBI | 6,36 |
12 | 1 | Regalboden weiss 800 x 500 Fahrbahn | OBI | 5,99 |
13 | 1 | Filz-Zuschnitt | OBI | 2,39 |
14 | 1 | diverses Kleinmaterial z.B. Schrumpfschlauch, Dichtungsring als Profil für Reifen |
Werkzeugliste
Pos.: | Bezeichnung: | Verwendungszweck: |
---|---|---|
1 | Seitenschneider | Verarbeitung der Leitungen |
2 | Lötkolben (elektrisch/Gas) | Verbinden der Leitungen/Kontakte |
3 | Leiterplattenhalter | fixieren der Leiterplatten oder Leitungen, erleichtertes Handling beim Löten |
4 | Heißklebepistole | Befestigung von Bauteilen |
5 | Schere | Schneiden von Klebeband |
6 | Laptop oder PC | Programmierung des Arduino mit jeweiliger Software und Erstellung des 3D Modells |
7 | Heißluftfön | Bearbeitung der Schrumpfschläuche |
8 | Multimeter | Messen von Spannung, Durchgang oder Widerständen |
9 | Oszilloskop | z.B. um die Frequenz zu messen/Frequenzform erkennen |
10 | feine Zange (Schnabel-/Spießzange) oder Pinzette | für besseres Handling |
11 | kleiner Schlitz-/Kreuzschraubendreher für M1/M2/M3 | |
12 | Datenleitung PC --> Arduinoboard | |
13 | 3D Drucker | zur Produktion des Aufbaus |
Mechanische Komponenten
Es ist kein bestehendes 3D-Modell verwendet worden. Das bedeutet, die Zeichnungen zur Produktion der Einzelteile sind weitestgehend ohne Vorgaben erstellt worden. Durch Schätzung anhand der Recherche, einigt sich die Konstruktion auf eine Kantenlänge des kubischen Körpers von 100mm und die ungefähre Anordnung der Räder.
Fahrgestell
Das Fahrgestell (Abb. 2) ist von der Konstruktion am aufwendigsten gewesen. Hier waren verschiedene Bauteile einzupassen. Zum Beispiel mussten passgenaue Einschubfächer für den Mikrokontroller und das Batteriefach geschaffen werden. Ebenso sind die Motoren mit Hilfe einer Halterung darauf montiert worden. Zur werkzeugfreien Montage und Demontage der Karosserie ist ein Clip angebracht worden und ein Steg, der als Feder für ein Nut-Feder- System mit der Karosserie dient, eingeplant worden.
Motorhalterung
Zur Befestigung
der Motoren ist eine Halterung konstruiert worden. In dieser werden die Motoren eingelegt und verschraubt. Zur Leitungsverlegung sind seitlich, wie in Abbildung 3 zu sehen ist, Öffnungen vorgesehen worden. Die Halterung ist in den vorgesehenen Aussparungen mit dem Fahrgestell verklebt worden. Aufgrund der Lage des Batteriefachs im Heck ist die Gewichtsverteilung unvorteilhaft. Aus diesem Grund ist an der Motorhalterung ein Fach vorgesehen worden, welches mit einem selbstgegossenen Bleigewicht von 250g versehen worden ist.
Karosserieoberteil
Das Karosserieoberteil
(Abb. 4) deckt die komplette Elektronik ab und schützt diese. Es ist leicht aufsteckbar und liegt durch die Nut, des Nut-Feder-Systems mit dem Fahrgestell, immer positionsgleich. Ein Clip am Fahrgestell arretiert das Karosserieoberteil nach und beim Aufstecken. In der Front des Oberteils ist ein Gesicht angedeutet worden, in dem ein Ultraschallsensor als Augen eingesetzt worden ist. Im Bereich des Mundes sind 2 Bohrungen und ein Langloch einkonstruiert worden, an denen der Sensorhalter mit den Infrarotsensoren angebracht werden können.
Sensorhalter
An der Karosserieoberteilfront kann über das bereits beschriebene Aufnahmesystem ein
angebracht werden. Die Infrarotsensoren sind an diesen Halter, mittels einer M3 Schraube/Mutter und 2 Unterlegscheiben, angebracht. Durch das Langloch in der Befestigung sind die Sensoren höhenverstellbar.
Elektronische Bauteile
Die Anschlusstabelle zeigt in der ersten Spalte die verwendeten Bauteile, in der mittleren Spalte den Pin und in der rechten Spalte befindet sich die Art des Anschlusses (z.B. Gnd, Vcc), auf Angabe von Leitungsfarben wurden hier verzichtet, ist zukünftig aber empfehlenswert, da es die Fehlersuche entscheidend erleichtert.
Motoren
Die Motoren sind im Sinne des Namens keine voll kontinuierlich drehenden Servomotoren, sondern schlichte DC-Motoren mit einer vorgeschalteten H-Brücke. Die Software gekoppelt mit der includierten Servo-Bibliothek (siehe Quellcode:“ include <Servo.h> //arduino library“) kann diese Art von Motoren mit einem Geschwindigkeitsbereich von 0 bis 90 in Drehrichtung „rechts“ ansteuern, wobei hier die 0 die maximale Geschwindigkeit darstellt und die 90 den Stillstand des Motors bedeutet. Der verwendete Befehl lautet „NameServo.write(xx)“ (siehe Quellcode). In Drehrichtung „links“ ist die maximale Geschwindigkeit mit den Wert 180 beziehungsweise der Stillstand wiederum mit dem Wert 90 einstellbar. Die Motoren müssen auf einen Stillstand eingestellt werden. Dabei wird der Motor angeschlossen und mit dem Befehl „NameServo.write(90)“ angesprochen. Das Potentiometer unter dem Motor muss solange gedreht werden bis der Motor stillsteht. Hierbei sollte erwähnt werden, dass diese Einstellmöglichkeit ein wenig Spiel hat. Durch die oben erwähnte Software kann dies aber ohne weiteres korrigiert werden. Die Einstellung des Motors am Potentiometer sollte vor Einbau erfolgen.
Infrarotsensoren
Die Infrarotsensoren müssen vor dem Einbau eingestellt werden. Die Einstellung wird über ist über die Höhe der Sensorhalterung und primär über das Potentiometer auf dem Sensor vorgenommen. Die Einstellung nach dem kompletten Zusammenbau aller Bauteile ist möglich, jedoch nur unter erschwerten Bedingungen. Die Einstellung erfolgt auf einem weißen Blattpapier, welches mit einem schwarzen Klebestreifen versehen ist (Abbildung 7). Die Sensoren sind über das Arduinoboard mit +5V versorgt. Das analoge Signal ist auf einen der sechs möglichen Steckplätze (A0 - A5) angeschlossen worden. Mit dem Befehl „variablenName=analogRead (Pin für analoge Signale)“ kann das analoge Signal erfasst werden. Gleichzeitig kann mit dem Befehl „Serial.print(variablenName)“ die Ausgabe des Sensorwerte über den Monitor der Software visuell überwacht werden. Hierbei werden nach der Kalibrierung bei der Farbe Schwarz Werte von ca. 1000 erreicht und bei der Farbe Weiß Werte von unter 50. Zusätzlich kann durch ein grünes und rotes Signal am Sensor optisch (Abb. 7) unterschieden werden, in welcher Schaltstellung die Sensoren sich befindet, bei der Farbe Weiß leuchten beide LEDs.
Anschlusstabelle
Bauteil | PIN | GND | 5V | Verwendungszweck: |
---|---|---|---|---|
Infrarotsensor links | A0 | x | x | analoges Ausgangssignal schwarz oder weiss |
Infrarotsensor rechts | A1 | x | x | analoges Ausgangssignal schwarz oder weiss |
Motor links | 9 | x | x | Motorsignal für Anlauf |
Motor rechts | 10 | x | x | Motorsignal für Anlauf |
Ultraschallsensor | 5 | x | x | Trigger-Signal |
Ultraschallsensor | 4 | Echo-Signal |
Quellcode
Folgend ist der Quellcode angegeben und in der Abbildung 8 (rechts) ist der Programmablaufplan hinterlegt, damit die einzelnen Programmschritte besser vollzogen werden können. Der Programmablaufplan wäre bei der geringen Komplexität und Länge des Programms nicht nötig gewesen aber der Vollständigkeit halber und der Übersichtsfreundlichkeit ist der Programmablaufplan konstruiert worden.
#include <Servo.h> //arduino library
Servo ml;
Servo mr;
int messre=0;
int messli=0;
const int threshold = 500;
void setup()
{
Serial.begin(9600);
ml.attach(9); //motor links pin 9 in fahrrichtung
mr.attach(10); //motor rechts pin 10 in fahrrichtung
}
void loop()
{
//Messung
messre=analogRead(A1); // A1 rechte Messung
messli=analogRead(A0); // A0 inke Messung
// nach links lenken
if (messli>threshold && messre<threshold ) // nach rechts gegenlenken
{
ml.write( 90);
mr.write(40);
}
//Messung
messre=analogRead(A1); // A1 rechte Messung
messli=analogRead(A0); // A0 inke Messung
// nach rechts lenken
if (messli<threshold && messre>threshold)
{
ml.write( 180);
mr.write(85);
}
//Messung
messre=analogRead(A1); // A1 rechte Messung
messli=analogRead(A0); // A0 inke Messung
// fahre geradeaus
if(( messli< threshold && messre< threshold) || (messli>threshold && messre>threshold) )
{
ml.write( 180);
mr.write(40);
}
}
Ergebnis
- Hardware Bauteile wurde beschafft
- CAD-Zeichnungen erfolgreich erstellt
- 3D-Druck der CAD-Teile wurden im zweiten Anlauf erfolgreich gedruckt
- Programmcode erfolgreich geschrieben und angepasst
- Linieverfolgung funktioniert
- Ultraschallsensor wurde nicht angeschlossen
- Dokumentation wurde erfolgreich abgeschlossen
Fazit
Auf Grund der unzureichenden Qualität des ersten 3D-Druck ist die Produktion des Aufbaus im zweiten Anlauf auf einem privaten 3D-Drucker durchgeführt werden, dieser Sachverhalt dauerte 6 Wochen und somit waren alle angesetzten offizielle und inoffiziellen Puffer weit überzogen worden. Das Dach des Karosserieoberteil musste aufgebohrt werden, damit das Arduino-Board während der Versuche ohne Abnehmen des Oberteils an den PC angeschlossen werden kann. Die Gewichtsverteilung auf dem Unterteil erwies sich als Problem, da die Konstruktion in Leichtbauweise entwickelt wurde und somit Gewicht des Mikrokontrollers und der 4 x AA Batterien die Achse der Halbkugel angriff. Wir lösten das Problem wie im Absatz der Motorhalterung beschrieben mit einem Bleigewicht, welches direkt über den Motoren angebracht wurde. Ansonsten war die Verzahnung der einzelnen Abschnitte essentiell gewesen. Durch den Umstand, dass die Lieferzeiten über die Hochschule sehr lang waren, sind jegliche Materialien privat bezahlt worden. Die Arbeiten fanden in vollen zeitlichen Umfang im privaten Bereich statt, da nur am Ende des Semester vermehrt Werkstattzeiten angeboten wurden. Sonst wäre das Projekt nicht in Sollzeit erfolgreich beendet worden. Der Ultraschallsensor wurde nicht angeschlossen, da die Funktion es nicht erforderte, in der Anschlusstabelle haben wir jedoch mögliche Anschlüsse vermerkt. Der Ultraschallsensor nimmt des weiteren ästhetische Eigenschaften ein. Die Zusammenarbeit in dem Projekt von beiden Studenten geschah auf Augenhöhe.
Ausblick
Die Funktionen des Bots können noch erweitert werden. Eine Möglichkeit wäre den Ultraschallsensor zum Einsatz zu bringen. Ebenso könnte man an Stelle der Infrarotsensoren andere Sensoren anbringen. Das Programm könnte mit der Software Simulink realisiert werden, dies bedarf nur softwaretechnische Veränderungen, die Verdrahtung und die Hardware kann bestehen bleiben. Eine weitere Idee wäre den Arduino über ein Bluetooth Modul mit dem Handy fernzusteuern und gleichzeitig die Daten von dem Ultraschallsensor am Handy auszugeben. Auf dem Dach den Karosserieoberteil könnte man ein Kamera installiern um bei der Linienerfolgung das Gelände zu erkunden, dabei sollte aber beachtet werden das das ArduinoUno Board dafür zu "schwach" ist und stattdessen ein Raspberry Pi installiert werden sollte. Es gibt viele Möglichkeiten mit diesen "Alleskönnerboard" bestehende Projekte zu optimieren oder neu Projekte zu schaffen.
Weiterführende Weblinks
Literaturvorschläge
- Buch HSHL-Bibliothek:Die elektronische Welt mit Arduino entdecken, Autor: Bartmann,Erik
- Buch HSHL-Bibliothek:Arduino - Physical Computing für Bastler, Designer und Geeks, Autor: Mauel Odendahl; Julian Finn; Alex Wegner
- Buch HSHL-Bibliothek: Arduino : Praxiseinstieg. Behandelt Arduino 1.0, Autor: Thomas, Brühlmann
- Buch HSHL-Bibliothek: Arduino-Workshops : eine praktische Einführung mit 65 Projekten, Autor: Bartmann,Erik
- Buch HSHL-Bibliothek: Handbuch der Robotik-Einsatz intelligenter Roboter, Autor: Mathias Haun
- Buch HSHL-Bibliothek: Die elektronische Welt mit Arduino entdecken, Autor: John Boxall
Anhang
- CAD-Dateien im Projektarchiv-SVN unter „LittleBot“ (Nr. 21) hinterlegt
- Programmablaufplan
- Gantt-Chart
- Fahrgestell auf Arbeitsfläche von SolidWorks
- Kugel als zweite Achse
- Rad
- Sensorhalter
- Clip
- Datenblattultraschalsensor
- Schaltplan Infrarotsensor vom Hersteller
- Video
Korrektur/Feedback
→ zurück zum Hauptartikel: WS 17/18: Fachpraktikum Elektrotechnik (MTR)