Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektews2013:feuerwehr1:start

Autonomer Kerzenlöscher mit Wärmebildkamera

Ein Projekt von Fabian Ruben und Lukas Ehrler

Ziel unseres Projekts war die Planung, Konstruktion und Programmierung eines fahrenden Roboters (Curiosity)der dazu in der Lage ist Kerzen in einer Ebene zu finden und diese zu löschen. Die Steuerung soll anhand der Daten einer angebrachten Wärmebildkamera erfolgen, wobei diese sowohl die Richtung vorgeben als auch die Löschroutine einleiten soll. Da die Kerze wärmer als der umliegende Raum ist, orientiert sich die gesamte Steuerung am wärmsten Pixel. Des weiteren soll der Roboter Hindernisse wie Stuhlbeine in seinem Weg erkennen und umfahren können.

Einleitung

Curiosity liest Daten aus seinem primären Sensor (Wärmebildkamera) aus, um in deren Abhängigkeit sein Ziel anzusteuern und es zu löschen. Hierzu werden die Messungen der Kamera zuerst in Gradzahlen umgerechnet, und dann in einem Array gespeichert, welches Aufschluss darüber gibt wo im Raum sich die stäkste Hitzequelle (Kerze) im Verhältniss zum Roboter befindet. Seine Aufgabe ist nun durch Ansteuerung seiner beiden Motoren jene Kerze präzise anzufahren und zu realisieren wenn es in Reichweite seiner Löschvorrichtung kommt. Ist dies der Fall wird Curiosity stoppen und seine Löschroutine auslösen und solange eingeschaltet lassen bis die Kerze gelöscht ist. Sobald der Löschvorgang abgeschlossen ist, wird Curiosity wieder nach der wärmsten Hitzequelle suchen und diese anfahren um sie zu löschen. Sollte bei diesem Vorgang ein unerwartetes Hinderniss wie zum Beispiel ein Stuhlbein den Weg zum Ziel versperren wird der Roboter gegen jenes Hindernis fahren, was die Drucksensoren an der Front des Chassis aktiviert. Ist dies der Fall wird ein vorgeschriebenes Ausweichmanöver initialisiert um das Hinderniss zu umfahren und in Folge dessen wird der Weg zur Kerze wieder aufgenommen bis die Löschroutine aktiviert wird.

Baugruppen

Teensy 3.0 (Rot)
Die Wärmebildkamera(Orange)
Löschanlage(Blau)
Motorcontroller(Grün)
Endschalter(Braun)
Servos (Violett)
Li-Ion Akku (Gelb)
Antrieb
Karosserie

Teensy 3.0 (Rot)

Als Gehirn des Roboters haben wir uns aus mehreren Gründen für den Teensy 3.0 entschieden. Zum einen arbeiten seine Ein- und Ausgänge mit 3,3V Spannung (3,3V Logic Level), was näher an den für die Wärmebildkamera benötigten 2,6V ist als z.B. die meisten Arduinos, die mit 5V arbeiten. Zum anderen besitzt er einen 32Bit ARM-Cortex-M4 Prozessor (MK20DX128VLH5 von Freescale), der mit 48MHz läuft. Somit ist der Teensy 3.0 auch weitaus leistungsfähiger als die meisten Arduinos, was für die Berechnung des Wärmebildes und die Steuerung des Roboters von Vorteil ist. Währenddessen hält sich die Platine des Teensy trotzdem sehr Kompakt, sodass er problemlos in den Roboter integriert werden konnte. Zusätzlich besitzt er einen 3,3V Spannungswandler, so kann er mit 5V betrieben werden und versorgt sich selbst und andere Bauteile mit dieser Spannung mit Strom. Zum Programmieren kann die Arduino Plattform mit dem Add-On Teensyduino verwendet werden, dafür steht wie bei Arduinos ein USB-Anschluss zur Verfügung. Der Bootloader ist außerhalb des integrierten Speichers abgelegt, sodass mehr Platz für das Programm selbst vorhanden ist.

Die Wärmebildkamera (Orange)

Als Wärmebildkamera kommt ein sogenannter MLX90620 von Melexis zum Einsatz, wobei es sich um einen Sensor mit 16×4 Pixeln handelt. Die einzelnen Pixel sind kontaktlose Temperatursensoren, die die Infrarotstrahlung messen und sich gemeinsam auf einem Chip befinden. Mit 64 Pixeln ist die Auflösung zwar begrenzt es lässt sich aber gegenüber einem Infrarot Temperatursensor, der nur einen Punkt messen kann, eine ganze Fläche abtasten ist dabei aber wesentlich günstiger als eine Wärmebildkamera mit hoher Auflösung. Das Scannen einer Fläche ermöglicht es unserem Roboter die Kerze schneller zu finden und sie dann vor der Kamera zu zentrieren um sie zu löschen. Die Temperaturwerte der einzelnen Sensoren werden zusammen mit dem Temperaturwert des Gehäuses der Wärmebildkamera über den sogenannten I²C- Bus an den Mikrokontroller geschickt. Dort werden die Daten auf Gradzahlen umgerechnet um dann in einem Array gespeichert zu werden. Da Selbsterwärmung des Sensors zu falschen Ergebnissen führen würde muss die Gehäusetemperatur dabei mit einberechnet werden, sowie die Produktionsbedingte Abweichung von der Norm, welche von Sensorpin zu Sensor Pin variiert. Da man in der digitalen Elektronik definierte Zustände braucht wie 0V für eine logische 0 und in dem Falle 2,6V oder 3,3V für eine logische 1 werden sogenannte Pull-Up Widerstände eingesetzt, die den Zustand dauerhaft auf eine 1 legen, indem sie einen Eingang über den Widerstand an die Versorgungsspannung legen. Wenn der Mikrokontroller nun 0V an den die Wärmebildkamera anlegt verhindert der Pull-Up Widerstand einen Kurzschluss zwischen 0V und der anliegenden Spannung. Dabei sind die 0V nun „näher dran“, da zwischen ihnen und dem Eingang kein Widerstand liegt. Der Zustand schaltet somit auf 0 um. Zusätzlich ist eine Schutzschaltung nötig, die die vorhandenen 3,3V auf 2,6V begrenzt, um die Wärmebildkamera nicht zu beschädigen. Hierfür haben wir eine Diode benutzt über die die Spannung um 0,7V abfällt und einen Widerstand der dafür sorgt, dass auch ohne Last der Kamera die Spannung nicht über 2,6V steigt und diese beschädigt. Da nun über den Widerstand immer ein Strom fließt gibt es keine Leerlaufspannung mehr in dem Sinne und die Spannung bleibt stabil. Desweiteren gehört zur Schutzschaltung ein kleiner Kondensator, der Spannungspitzen aufnehmen kann und somit auch die Kamera vor Überspannung schützt. Das Gehäuse der Kamera besitzt hinten 4 Anschlüsse von denen 2 für die Datenübertragung über I²C zuständig sind (SCL und SDA - Serial Clock und Serial Data) und 2 für die Stromversorgung (Vdd und GND - + und -). An der Vorderseite ist ein schwarzer Zylinder zu sehen, der die seitlich Einstreuung minimiert und darin ist eine Germaniumlinse zu sehen die die Wärme bricht wie Glas das Licht.

Löschanlage (Blau)

Die Hauptbestandteil der Löschanlage unseres Roboters ist ein PC-Lüfter mit den Abmessungen 12×12 cm. Diesen haben wir gewählt da er mit wenig Platzproblemen am Roboter montierbar ist und die Kerze auf eine unkomplizierte Weise löschen kann. Das Problem dabei war, dass er erst bei 12V mit voller Leistung drehen kann, was benötigt wird um die Kerze aus 10-20 cm Entfernung zu löschen. Deshalb kommt bei der Löschanlage ein sogenannter Boost-Regler (Blau markierte Platine) zum Einsatz, der die Spannung des Li-Ion Akkus (7,4V) in höhere 12V umwandelt. Da hier nun höherer Strom fließt wird der Strom über einen MOSFET (Transistor) geschaltet (Bauteil unterhalb der Platine), um den Teensy nicht zu beschädigen, da dieser den Lüfter nicht mit Strom versorgen könnte. Hier wird also ein Transistor als Schalter eingesetzt, der über einen digitalen Pin des Teensy ein- und ausgeschaltet werden. Um ihn im Normalzustand ausgeschaltet zu lassen wird noch ein Pull-Down (siehe Pull-Up in Wärmebildkamera) Widerstand angebracht, der den zu schaltenden Pin des Transistors auf 0V legt und somit ausschaltet. Wenn der Teensy nun Spannung an den Pin anlegt schaltet der MOSFET ein und somit auch der Boost-Regler, der damit dem Lüfter mit Strom versorgt.

Motorcontroller (Grün)

Bei dem von uns gewählten Motorcontroller handelt es sich um eine H-Brückenschaltung für Gleichstrommotoren. Die Platine kommt fertig aufgebaut und besitzt alles was benötigt wird, um zwei Motoren stufenlos in der Geschwindigkeit zu regeln und auch die Drehrichtung bestimmen zu können. Außerdem besitzt die Schaltung einen 5V Spannungswandler, mit dem auch der Teensy versorgt werden kann. Die 6 Eingangspins des Kontrollers sind für 2 Motoren vorgesehen, jeweils 3 Anschlüsse für einen, die über den Mikrokontroller angesteuert werden. 2 davon bestimmen die Richtung indem einer auf eine logische 1 und der andere auf eine logische 0 gelegt wird bzw. umgekehrt für eine andere Drehrichtung. Über den dritten Anschluss kann die Geschwindigkeit über die Pulsweite (PWM = Pulsweitenmodulation) festgelegt werden. Das Signal hierfür wird mit einer hohen Frequenz ein- und ausgeschaltet. Wenn das Signal länger an ist als aus dreht der Motor schneller bzw. langsamer wenn das Signal länger aus ist als an. Das H im Namen H-Brücke kommt daher, dass das Schaltbild dafür die Form eines Hs ergibt. Bei diesem Prinzip werden immer schräg gegenüberliegende Transistoren eingeschaltet um den Motor durch Umpolung in die ein oder die andere Richtung drehen zu lassen. Der eine Transistor verbindet den Motor dabei mit dem Minuspol der andere mit dem Pluspol und umgekehrt um die Richtung zu ändern. Dieses Prinzip ist dabei gleichzeitig geschützt gegen die hohen Ströme, die durch den nach dem ausschalten nachlaufenden Motor erzeugt werden und sonst Halbleiter zerstören können. Diese H-Brückenschaltung ist hier in doppelter Ausführung in einem IC mit dem L298N integriert. Auf der Platine sind die anderen für die Schaltung benötigten Komponenten verbaut, wie zum Beispiel Kondensatoren, die Spannungslücken ausgleichen, die durch den Betrieb induktiver Lasten wie zum Beispiel Elektromotoren entstehen können. Der 5V Spannungswandler ist für die Stromversorgung des Logikteils verantwortlich, kann aber wie bereits erwähnt auch den Mikrokontroller mit 5V versorgen. Die 7,4V Nennspannung des Akkus wären für beides zu hoch und könnten ICs beschädigen.

Endschalter (Braun)

Als Sensoren für Hindernisse haben wir 2 Endschalter verbaut, von denen einer oder beide ausgelöst werden, sobald der Roboter gegen ein Hindernis fährt. Damit kann ein geplanter Bewegungsablauf ausgelöst werden wie z.B. Wenden. Die Schalter verbinden einen digitalen Pin vom Mikrokontroller mit dem Minuspol. Hier wird ein in den Teensy integrierter Pull-Up verwendet, damit fällt der Pull-Up Widerstand in der Schaltung weg.

Servos (Violett)

An unserem Roboter ist ein Servo verbaut, um um Beispiel die Wärmebildkamera nach unten neigen zu können. Das Servo wird mit 5V Spannung versorgt und mit einem PWM-Signal vom Mikrokontroller angesteuert. Es übersetzt dann das Signal in einen Winkel und dreht sich in die gewünschte Position zwischen 0 und 180 Grad.

Li-Ion Akku (Gelb)

Der Li-Ion Akku den wir verwenden hat 2200mAh und eine Entladerate von 20C. Das bedeutet er kann unter Last das zwanzigfache seine Kapazität an Strom abgeben. Das ist bei unserem Roboter zwar nicht nötig, man sollte bei Elektromotoren jedoch immer mit mehr Strom rechnen da diese für kurze Zeitpunkte sehr viel Strom ziehen können. Die Platine die auf dem Akku zu sehen ist, ist eine Schutzschaltung, die vor niedriger Spannung des Akkus warnt und auslöst, sobald der Akku geladen werden sollte. Er wird an das sogenannte Balancerkabel des Akkus angeschlossen. Dieses Kabel ist in erster Linie dafür da, beim Laden alle Zellen überwachen zu können statt nur den ganzen Akku.

Antrieb

Als Antrieb verwenden wir zwei Getriebemotoren, die man sich in verschiedenen Übersetzungen zusammenbauen und so bestimmen kann, ob man mehr Kraft oder Geschwindigkeit haben möchte. An die Getriebegehäuse haben wir dann noch optische Drehsensoren angebaut, um Umdrehungen des Rades zählen zu können, jedoch haben wir dieses Verfahren Der Bewegung letztendlich ausgeklammert, da es für unseren Roboter nicht notwendig ist.

Karosserie

Als Karosserie verwendeten wir ebenfalls eine Sperrholzplatte, an welcher wir die zwei Getriebemotoren befestigt haben und an welchen sich wiederrum jeweils ein Rad befindet. Als Vorderrad kommt ein frei drehbares Rad zum Einsatz. Den Lüfter haben wir mit Draht an der Platte befestigt. Der Akku wird ebenfalls mit Klett befestigt und ist so jederzeit abnehmbar. Die Wärmebildkamera ist am Servo befestigt und lässt sich so nach oben oder unten schwenken. Das Servo selbst wird mit einer Halterung aus Holz überhalb des Lüfters befestigt. Die Endschalter sind vorne in die Holzplatte geschraubt und dann verbindet eine Holzlatte beide Schalter um Hindernisse auf voller Breite der Vorderseite zu erkennen.

Ausgeklammert

Während des Entwicklungsprozesesses wurden verschiedene Teilprobleme ausgeklammert, Ideen verworfen und alternative Lösungsansätze gefunden. Hier einige Funktionen die es nicht in den finalen Roboter geschafft haben:

Hinderniserkennung mit Ultraschall/Infrarot

Wir haben eine genauere Hindernisserkennung mittels Ultraschall/Infrarot ausgeklammert, da uns diese Lösung als verhältnissmäßig zu aufwändig erschien. Anstattdessen haben wir Drucksensoren an der Front des Roboters angebracht. Werden diese ausgelöst fährt Curiosity ein kurzes Stück zurück, dreht sich, korrigiert seine Position und dreht sich wieder in Richtung der angesteuerten Hitzequelle

Zählung der Schritte/Genaue Bewegung mit Schrittmotoren

Ursprünglich hatten wir in die Karosserie ein System verbaut, welches mittels Phototransistor und LED die Umdrehungen jedes einzelnen Motors zählt. Theoretisch wäre der Roboter somit in der Lage zu wissen wo er sich im Raum befindet - im Verhältniss zu seinem Startpunkt. Er könnte also beispielsweise nach getaner Arbeit an seinen Startpunkt zurückkehren. Letztendlich haben wir dieses System nicht integriert da die Steuerung des Roboters in Echtzeit anhand der Daten aus der Wärmebildkamera erfolgt. Die derzeitige Position im Bezug auf den Startpunkt ist dabei unerheblich. Somit sahen wir keinen praktischen nutzen mehr in diesem einfachen Schrittzähler. Anstatt an seinen Startpunkt zurückzukehren sucht Curiosity nach erfolgreichem Löschen einfach wieder die stärkste Hitzequelle in Reichweite. Da eine genaue Messung der Schritte bzw. Abstände nicht nötig ist, entschieden wir uns für Drehmotoren da diese Leistungsfähiger sind.

360* Scan

Aus Zeitgründen unterließen wir einen Scan des kompletten Raumes, da dieser nicht zwangsläufig notwendig ist. Es würden zwar nähere Hitzequellen außerhalb des Sichtradius zuerst angefahren jedoch würde es eventuell Probleme mit der Zentrierung der Hitzequelle, wie wir sie derzeit haben, geben. Im derzeitigen Entwicklungsstand kann es vorkommen, dass die Reihenfolge der angefahrenen Ziele nicht die effizienteste ist, jedoch werden früher oder später alle löschbaren Hitzequellen erfasst.

Fazit

Als wir anfingen Curiosity zu bauen, legten wir unser Hauptaugenmerk zuerst auf das bauen der Karosserie und auf die Programmierung des Antriebs.Der Roboter sollte in der Lage sein seine Drehmotoren anzusteuern, damit wir sie später in Abhängigkeit zu der Wärmebildkamera bringen konnten. Hier war das erste Problem auf das wir stießen, dass wir aufgrund unserer Motorenwahl einen Motorcontroller(H-Brücke) benötigten um Drehrichtung und Geschwindigkeit der Motoren zu bestimmen. Hätten wir uns stattdessen für einen Stepper-Motor enschieden, hätten wir dieses Bauteil nicht benötigt, auch einige Schritte in der Programmierung wären weggefallen. Als die Motoren liefen bauten wir die Karosserie aus dünnen Holzplatten und befestigten an ihr sogleich das Fahrwerk. Auch einen Schrittzähler, bestehend aus einem Phototransistor und einer LED, bauten wir in das Getriebe ein, er erwies sich später jedoch als überflüssig. Wir fuhren fort mit dem Programmieren der Wärmebildkamera und dem Löten ihrer Platine. Nachdem die Daten aus der Kamera korrekt in Grad umgerechnet und über die Serielle Schnittstelle als Array an den Computer weitergegeben wurden konnten wir eine grafische Darstellung für die 64 Pixel schreiben. Dies geschah mit Processing(Java). Als wir die Steuerung von den gelieferten Daten abhängig machten, konnte unser Roboter Hitzequellen anfahren.Auch die Löschvorrichtung regelten wir mit den Daten. Ist der heißeste wahrgenommene Pixel wärmer als 180 Grad, ist also die Flamme der Kerze ca. 10cm entfernt so aktiviert sich die Löschroutine. Der Roboter bleibt stehen und aktiviert den Lüfter so lange bis die Wärmequelle erloschen ist. Sobald dies geschehen ist ändert der Roboter seinen Blickwinkel und sucht nach der nächsten Wärmequelle. Am Ende integrierten wir noch einen festen Bewegungsablauf ,,Evasion„ welcher ausgelöst wird sobald der Roboter mit einem Hinderniss kollidiert.

Sicherheitshinweise

Falls ihr nun vor habt den Roboter nachzubauen gibt es einige Dinge, die beachtet werden sollten. In erster Linie sollte auf den sachgerechten Umgang mit Li-Ion bzw. Li-Po Akkus geachtet werden, da diese bei falsche Ladung bzw. Entladung Feuer fangen können. Beachtet deshalb immer, dass diese nur in den dafür vorgesehenen Ladegeräten geladen werden dürfen. Dabei sollten auch immer die allgemeinen Sicherheitshinweise des Akkuherstellers zum jeweiligen Akku beachtet werden. Es gilt den Akku beim Laden nicht unbeaufsichtigt zu lassen! Wenn ein Akku beim Aufladen verdächtig heiß wird sofort die Ladung unterbrechen! Desweiteren sollten die Akkuzellen nicht kurzgeschlossen werden. Da diese dazu fähig sind hohe Ströme abzugeben würden die Kontakte sofort beginnen zu schmelzen bzw. die Kabel könnten durch Überhitzung Feuer fangen und der Akku selbst wird ebenfalls extrem heiß. Schützt den Akku auch vor mechanischer Belastung da es bei Verformung im Inneren des Akkus zu Kurzschlüssen kommen kann. Ein weiteres Risiko beim Arbeiten mit dem Roboter entsteht durch das Arbeiten mit der verwendeten Hitzequelle, z.B. ein Teelicht, das gelöscht werden soll. Das Teelicht sollte auf einem feuerfesten Untergrund stehen und es sollten sich keine brennbaren Sachen neben oder über dem Teelicht befinden, um ein Brandrisiko zu minimieren. Sollte es zu einer Fehlfunktion des Roboters kommen, sodass das Teelicht sich unter ihm befindet sollte der Roboter sofort von Hand in Sicherheit gebracht werden bzw. das Teelicht gelöscht werden um einen Brand am Roboter zu verhindern. Auch hier besteht wieder die Gefahr, dass der Akku Feuer fängt. Aus diesem Grund sollte der Roboter im Betrieb nie unbeaufsichtigt bleiben! Falls es trotz den getroffenen Sicherheitsmaßnahmen noch Unsicherheiten gibt kann ein Feuerlöscher bereitgehalten werden, dieser sollte allerdings nur im schlimmsten Notfall eingesetzt werden. Eine weitere Gefahr entsteht beim Arbeiten mit dem Lüfter, da dieser sehr schnell dreht und die Lüfterblätter scharfkantig sein können. Deshalb ist es ratsam Lüftergitter beidseitig am Lüfter anzubringen, um Verletzungsgefahr zu minimieren. Um sicher zu stellen dass die Wärmebildkamera keine bleibenden Schäden davon trägt, wird empfohlen sie nur am Gehäuse anzufassen. Beim berühren mehrerer Pins kann es zu Kurzschlüssen aufgrund eines aufgeladenen Körpers kommen. Außerdem sollte beim Umbauen darauf geachtet werden, dass keine Stromquellen an den Roboter angeschlossen sind.

Entsorgung: Beim Entsorgen von den Akkus bitte darauf achten, dass diese nicht im Hausmüll entsorgt werden dürfen und es dafür an verschiedenen z.B. Verkaufsstellen ausgewiesene Behälter gibt. Außerdem sollte darauf geachtet werden, dass Elektronik mit z.B. bleihaltigem Lötzinn ebenfalls nicht im Hausmüll entsorgt werden darf.

projektews2013/feuerwehr1/start.txt · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)