Projekt 21: Nachbau eines LittleBot
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 | Verarbeitund 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 | Scheiden 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 |
Mechanischer Teil
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 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 worden werden, dieser Sachverhalt dauerte 6 Wochen und somit waren alle angesetzten offizielle und inoffziellen Puffer weit überzogen worden. Das Dach des Karosserieoberteils 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. Den 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. Diesen wurde aus diesem Grund verbaut, obwohl er nicht in der aktuellen Funktion verwendet wird. Ebenso könnte man an Stelle der Infrarotsensoren verschiedene Aktoren oder Sensoren anbringen. Softwaretechnisch kann das Programm mit 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. Es gibt viele Möglichkeiten diesen Alleskönner zu optimieren oder umzubauen.
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: 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
- Bitte beachten Sie das Änderungen erst ab dem 01.03.2017 stattfinden können........Vielen Dank für Ihr Verständnis
→ zurück zum Hauptartikel: WS 17/18: Fachpraktikum Elektrotechnik (MTR)