Projekt 21: Nachbau eines LittleBot

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

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.


  1. Recherche
  2. Konzepterstellung
  3. Software testen
  4. CAD-Zeichnung Fahrgestell + Räder
  5. 3D-Druck Fahrgestell + Räder
  6. Zusammenbau Fahrgestell und el. Bauteile
  7. Programm schreiben
  8. Test
  9. Programm anpassen
  10. Test
  11. CAD-Zeichnung Karosserie Oberteil + Sensorhalter
  12. 3D-Druck Karosserie Oberteil + Sensorhalter
  13. Hochzeit
  14. Gesamte Funktion testen
  15. Anpassungen vornehmen
  16. 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

Abb. 2 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

Abb. 3 Motorhalterung

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 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

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.







Elektronische Bauteile

Abb. 6 Fritzingskizze

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

Abb. 7 Infrarotsensoreinstellung

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

Abb. 8 Programmablaufplan

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


Anhang



Korrektur/Feedback



→ zurück zum Hauptartikel: WS 17/18: Fachpraktikum Elektrotechnik (MTR)