Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise21:feuerloeschfahrzeugpublic:start

Feuerlöschroboter

Gliederung und Inhalte

Die Projektdokumentation orientiert sich grob an einer wissenschaftlichen Arbeit mit Einleitung, Methodenteil, Ergebnissen und Fazit. Zur besseren Übersichtlichkeit sollte die Seite durch Überschriften gegliedert werden. Die folgenden Inhalte sind vertreten:

  • Einleitung
  • Methoden und Umsetzung
  • Ergebnis und Diskussion
  • Code und Rohdaten

Themenbeschreibung

Unser Roboter hat die Aufgabe Menschenleben zu retten. Wie? indem er Feuer erkennt und systematisch ein Programm abläuft um dieses zu Löschen. Der Roboter soll in seinem Umfeld gut klar kommen, sprich Gegenstände umfahren können damit er nicht von seiner eigentlichen Aufgabe verhindert wird. Das Programm soll wie folgt ablaufen: Der Roboter dreht sich in einem Kreis, dabei werden unsere Infrarot Sensoren angeschaltet um ein gegebenes Feuer erkennen zu können. Ist ein Feuer Erkannt worden bewegt sich der Roboter auf dieses Feuer hinzu. Sobald der Abstand vom Feuer und Roboter ungefähr 5-10cm Beträgt bleibt der Roboter stehen und beginnt mit einer Pumpe Wasser aus einem Behälter zu Pumpen. Dabei wird ein Servomotor angeschaltet der den Wasserstrahl einen bestimmten Winkelbereich abfahren lässt.

Andere Projekte die unserem Roboter ähneln, können weiter oben in der Projektplannung nachgeguckt werden.

Methoden/Umsetzung

Überblick über das Gesamtsystem:

Der Roboter besteht aus 4 Baugruppen, aber erstmal eine gesamten Überblick über die Konstruktion unseres Roboters

Bild 1: Überblick

Der Motor

Bild 2: Stepper-Motoren von Hinten

Der Motor hat die Aufgabe den Roboter in Bewegung zu versetzen.

Die Sensoren

Bild 3: Sensoren: IR und UV

Damit der Roboter in seiner Umgebung gut klarkommen kann werden ingesamt 3 Sensoren genutzt. Diese Sensoren sind an der Spitze des Roboters befestigt. Es wird ein UV-Sensor genutzt um Abstände zwischen dem Roboter und verschiedenen Hindernissen messen zu können und zwei Infrarot Sensoren damit der Roboter ein Feuer erkennen kann.

Die Pumpe

Bild 4: Servo verbunden mit einem Wasserschaluch von der Pumpe

Die Pumpe hat die Aufgabe Wasser aus einem Behälter durch einen Schlauch auf das Feuer zu befördern.

Der Servo

Bild 5: Servo verbunden mit einem Wasserschlauch von der Pumpe

Der Servomotor dient der Verteilung des Wassers. Der Servo fährt einen bestimmten Winkelbereich ab. Auf dem Servo wird der Wasserschlauch befestigt.

Einzelne Abschnitte zur Beschreibung von Details der einzelnen Systembestandteile

Aufbau der Karosserie:

Vorne: Sensoren (US und IR), Servo verbunden mit einem Schlauch

Mitte: Schaltplatte, Akku

Hinten: Pumpe, Wasserbehälter

Unten: Stepper-Motoren, ein frei beweglicher Reifen (Rolle)

Ansteuerung der Stepper-Motoren:

Damit sich unser Roboter bewegen kann haben wir 2 Motoren genutzt. An jedem Motor haben wir einen Reifen befestigt. Diese Motoren sind sogenannte Stepper-Motoren. Der Name kommt von der Funktionsweise da der Motor nicht eine konstante Drehung absolviert, sondern in einem „Step“ also wie ein Schritt sich voran bewegt. Die Motoren sind einzelne Komponenten, das heißt jeder Motor benötigt eine eigene Anweisung. Damit der Roboter geradeaus fahren kann müssen die Motoren miteinander Synchrongeschalten werden. Die „Steps“ werden im Code implementiert und im Loop wiederholt, so fährt der Roboter geradeaus. Damit das ganze funktionieren kann müssen auch sogenannte Treiber in die Schaltplatte mit eingebunden werden. Diese dienen der Kommunikation mit den Motoren. Unsere Anweisungen aus dem Code werden von dem Treiber umgewandelt in Informationen für den Motor und die Informationen nutzt um eine Bewegung durchzuführen Treiber:

Die Schaltung für einen Stepper Motor sieht wie folgt aus:

Bild : Schaltung von einem Stepper-Motor

Die Schaltung haben wir dann so umgesetzt:

Bild: Schaltung

Abstand X zu einem Gegenstand messen und diese Umfahren:

Unser Roboter soll in seinem Umfeld von Gegenständen oder anderen Hindernissen nicht behindert werden. Dafür haben wir einen UV-Sonsor an die spitze unserer Karosserie geklebt und mit der Schaltplatte und dem Arduino verbunden. Der UV-sensor ist in der lage Abstände zu messen und diese auf der Konsole am Computer wiederzugeben. Damit unserer Roboter einen Gegenstand umfährt wird der US-Sensor angeschaltet und die Werte werden in einer If-Schleife mit einem von uns festgelegtem Wert verglichen. Dieser Wert entsüricht 10cm. Sollte es dazu kommen, dass der gemessene Abstand vom US-Sensor kleiner wird als 10cm bekommt der Roboter einen Befehl die Stepper-Motoren einen Step von 500 Einheiten Rückwärts fahren zu lassen. Nach dem rückwärtsfahren wird nur ein Motor angeschaltet um den Roboter um 45° zu drehen. Nach vollendetem Wendemanöver fährt der Roboter weiter gerade aus und das Programm läuft weiter.

Können wir bitte einen konkreten Entfernungswert statt X haben?

Bild : Veranschaulichung des oben beschriebenen Ablaufs

Die Fliessdiagramme sind sehr hilfreich, um die Inhalte schneller zu verstehen, sehr gut! Gibt es konkrete Werde statt X und Y? So wäre es besser. Wenn nicht, wäre eine Erklärung notwendig, wofür genau X und Y stehen, wie werden sie definiert/berechnet.

Erkennung vom Feuer:

Anfangs haben wir einen speziellen Feuersensor benutzt, der extra dafür gemacht ist ein Feuer zu erkennen. Durch Testungen konnten wir herausfinden, dass dieser ein Feuer bei einem Streuwinkel von 15° und Maximal 250cm weit weg erkennen kann. Leider hatten wir von diesen Sensoren nur ein Exemplar, dementsprechend mussten wir auf Infrarot Sensoren Umschwingen. Diese Sensoren waren deutlich schwächer, konnten jedoch trotzdem die Infrarot Strahlen erkennen und erhöhte Werte auf der Konsole ausgeben wenn ein Feuer in der Nähe sich befindet.

Algorithmus zur Fortbewegung zu einem Feuer (Lichtverfolger):

Damit unser Roboter dem Feuer hinterher fahren kann haben wir uns eine, zwar in der Theorie funktionierende, jedoch schwierig in der Praxis umsetzbare Methode überlegt. Beide Infrarot Sensoren können Werte Messen und ausgeben. Aus den gemessenen Werten wird eine Differenz gebildet von dem das Ergebnis dem Roboter sagt auf welcher Seite sich das Feuer befindet.

Beispiel

Der Roboter fährt gerade aus und misst über die IR Sensoren Werte. Die gemessenen Werte sind:

IR Links (gemessener Wert) = 40

IR Rechts (gemessener Wert) = 352

Aus diesen Werten bildet der Roboter eine Differenz:

Differenz = IR Rechts - IR Links

        = 352       - 40
        
        = 312
        

Das ist noch unvollendet, oder? Bzw. ich hab nicht ganz verstanden, was das bedeutet.

Ist Ergebnis der Differenz der gemessenen Werte kleiner als -X (von uns festgelegter Wert), so befindet sich das Feuer auf der linken Seite, ist der Wert größer als +X auf der Anderen. Befindet sich der Wert zwischen diesen beiden Werten, so weiß der Roboter, dass sich das Feuer vor ihm befindet und muss so seinen Kurs nicht mehr ändern.

X haben wir in unserem Code auf 30 gesetzt und als Orientierung genutzt. Für dieses vorgerechnete Beispiel wüsste der Roboter durch diese Berechnung, dass das Feuer sich auf der rechten Seite befindet, da das Ergebnis der Differenz größer als 30 ist.

Bild : Veranschaulichung des oben beschriebenen Ablaufs

Vorgang um das Feuer zu löschen:

Kommt unser Roboter nah genug an ein Feuer so wird das Fahren eingestellt und das Löschprogramm startet. Das ganze basiert weiterhin auf den Messwerten der Infrarot Sensoren. Sind die gemessenen Werte über einem von uns gegeben Wert X - in unserem Fall 200, für sowohl der Rechte als auch der Linke Sensor, so weiß der Roboter, dass das Feuer sich unmittelbar in seiner Nähe befindet. Der Servo und die Pumpe werden angeschaltet und ausgerichtet und Wasser Marsch! Wir haben es nicht hinbekommen durch Sensoren, den genauen Standort des Feuers zu bestimmen, der Servo fährt also einen Bereich ab in dem Vermutet wird wo das Feuer sich befindet. Der Wasserstrahl wird also nicht auf das Feuer gerichtet sondern löscht in einem Bereich indem das Feuer sich befindet.

Damit die Pumpe funktioniert und in unserer Steckplatte genug Strom empfangen kann mussten wir eine MOSFET-Schaltung bauen.

Diese Abbildung habt ihr nicht selbst erstellt. Ihr benötigt dann eine Quellenangabe (Link zur entsprechender Seite reicht).

Die Schaltung sieht in Realität so aus:

Bild : MOSFET-Schaltung mit angedeuteter Pumpe, da jene nicht im Programm enthalten war.

Die Kombination aller einzelner Teile sieht die gesamte Schaltung so aus:

Bild : Realistische Darstellung der Schaltung des Roboters

Technische Daten, Bauteile, Pins, etc.

Verwendete Bauteile

Bauteile Anzahl
Karosserie (Holzplatte) 1
UV Sensor 1
IR Sensor 2
Stepper-Motor 2
Treiber 2
Steckplatte 1
Reifen 2
Drehreifen 1
Arduino 1-4
Kabel Beliebig
12V Pumpe 1
Schlauch 2
MOSFET Spannungsregler 1
Servomotor 1
Steckplatte 1

Pin Belegung

Belegung Pin
Servo 12
UV Sensor 11/10
12V Pumpe 7
Servomotor 1 6/5
Servomotor 2 4/3
IR Sensor 1 A1
IR Sensor 2 A6

Ergebnis und Diskussion

Um unsere Ergebnisse zu demonstrieren haben wir uns dazu entschieden Videos der jeweiligen Aufgaben unseres Roboters zu zeigen.

Umfahren von Gegenständen

Feuer Löschen

Reagieren auf Richtung des Feuers

Löschvorgang inklusive Fahren

Ausblick

Was Funktioniert?

Fahren, Löschen und die Feuererkennung klappen.

Was funktioniert nicht?

Die Drehung ist zu ungenau. Sie findet statt, aber es kann immer noch zu Zusammenstößen kommen. Dem Arduino ist es nicht möglich Messung und fahren zu kombinieren. Zusätzlich sind die Phototransistoren zu schwach für eine genaue Messung. Meist nimmt der Roboter die Flamme nicht wahr, demnach erfolgt ein Löschversuch nur unter „perfekten“ Abstandsbedingungen. Außerdem besitzt die Pumpe nicht genügend Leistung, um einen durchgängigen Strahl zu erzeugen. Die gepumpten Wassertropfen reichen nicht aus das Teelicht zu ersticken. Jeder einzelne Abschnitt funktioniert eigenständig, das heißt, dass der Roboter ein Feuerlöschen kann, wenn eins direkt vor ihm steht, er kann ein Feuer erkennen wenn wir ihm ein Feuer vor die Sensoren halten und er kann Gegenstände umfahren. Wenn aber alle Prozesse im Programm gleichzeitig abgespielt werden ist der Roboter überfordert.

Entwicklungsmöglichkeiten

Wir könnten eine Sirene und eine richtige Verkleidung für die Schaltungen einbauen. Wir haben momentan nur eine Provisorische Abdeckung, welche zwar passt aber dem Roboter nicht das gewünschte Aussehen verleiht. Zusätzlich dazu könnten wir die Phototransistoren durch richtige Feuersensoren ersetzen. Mit der dadurch geschaffene Messgenauigkeit ist es uns nun möglich die Löschgenauigkeit zu erhöhen, da wir nun genauer Abstände abschätzen können und so auch den Servo abhängig davon arbeiten lassen könnten.

Code und Rohdaten

projektewise21/feuerloeschfahrzeugpublic/start.txt · Zuletzt geändert: 2022/05/14 19:27 von d.golovko