Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise1617:magneteerspublic:start

Magneteers Dokumentation

Einleitung

Der Roboter unserer Gruppe fährt autonom im Raum umher und sammelt auf seinem Weg Metall auf, welches er in einer kleinen Box, befestigt auf dem Rücken des Roboters, ablegt. Stehen ihm Hindernisse im Weg, prallt er von diesen ab und fährt in eine andere Richtung weiter. Das Aufsammeln macht er mit Hilfe eines Elektromagneten, der an einem Kransystem befestigt ist. Anfangs wollten wir durch eine Waage messen, wie viel Metall der Roboter bereits gesammelt hat, haben dies dann aber doch aus konstruktionsbedingten Gründen verworfen. Wir wollten den Roboter möglichst geländetauglich gestalten, weshalb er starke Getriebemotoren und einen Kettenantrieb bekommen hat.

Aufbau

Der Roboter besteht aus einer runden Platte, die eine große, rechteckige Aussparung hat, in der sich der Kran bewegen kann. Am Ende der Aussparung befindet sich eine Box, in die das Metall fallen gelassen wird. Der Kran selbst besteht aus einem Elektromagneten, einer Feder (Wird später näher erläutert), einem elektrischen Kontakt, der sich schließen und öffnen kann, sowie einem Steppermotor, um den Kran anzuziehen.

Da der Elektromagnet auf Dauer sehr heiß werden kann, haben wir uns entschieden einen Lüfter anzubauen, der ihn durchgehend beim Fahren kühlt. Zur Verbesserung des Effekts haben wir am Elektromagneten noch ein Kühlelement befestigt, damit die Hitze besser abgegeben werden kann.

Der Roboter besitzt unterhalb der Platte zwei starke Getriebemotoren, die die Ketten des Roboters antreiben.

Vorne dran befinden sich 3 Abstands-Buttons, die über ein Holzgerüst gedrückt werden, wenn der Roboter gegen ein Objekt fährt.

Wir haben uns entschieden zwei Akkumulatoren zu verwenden, da der Elektromagnet sehr viel Strom verbraucht und der Roboter sonst nicht lange genug fahren könnte. Ein Akku betreibt somit nur den Elektromagneten, der andere die restlichen Bauelemente. Über einen Schalter lässt sich der zweite Akku und somit der Arduino und alles was durch ihn gesteuert wird ein- bzw. ausschalten.

Der zweite Arduino dient lediglich dazu, 3 LED's zu steuern, für die kein Platz mehr am Ersten war.

Die Panzerketten sind selbst durch einen privaten 3D-Drucker ausgedruckt und an den Roboter angepasst.

Bauen des Elektromagneten

  • Erste Idee für das Magnetsystem: Mechanisch

Ein Permanentmagnet liegt in einer Box und zieht unterhalb von ihr das Metall an. Er wird zum Abwerfen des Metalls mechanisch durch einen Motor hochgezogen und so von dem Metall getrennt. → Das Metall fällt ab.

Die Idee haben wir allerdings relativ schnell verworfen, da wwir die Mechanik dahinter etwas zu kompliziert fanden und uns der Magnet durch die Box zu sehr abgeschwächt wurde.

  • Zweite Idee: Permanentmagnetfeld ausgleichen

Das Magnetfeld des Permanentmagenten wird durch einen kurzen Stromstoß durch eine Spule aufgehoben, wodurch das Metall abfällt:

Der Versuch diese Idee umzusetzen hat uns einige Zeit in Anspruch genommen. Anfangs hatten wir uns ausgerechnet, wieviele Windungen wir bei wieviel Spannung brauchen, um ein Magnetfeld zu erzeugen, das stark genug ist um den Permanentmagneten auszugleichen.

Wir hatten die Stärke des Magnetfeldes unseres Permanentmagneten, sowie die Permeabilität unseres Ferritkerns gegeben. Damit wollten wir im Vorraus bestimmen, wie stark unser Strom sein muss, um das Magnetfeld auszugleichen. Wir haben diese Formel verwendet:

Und berechnet, dass wir etwa 2 Ampère bei 100 Windungen und einer Länge von etwa 7 cm benötigen. Wie sich nach dem Wickeln der Spule allerdings herausgestellt hat, gilt diese Formel nur für das Magnetfeld innerhalb der Spule und nicht für das Streufeld, welches dann genutzt werden würde um das Metall zu sammeln. Dieses fällt um einiges schwächer aus und hat auch nach mehreren Wickel-versuchen (Unterschiedliche Windungsanzahl, andere Kerne und unterschiedliche Drahtdurchmesser) nicht zum Erfolg geführt. Eines der größten Probleme war die massive Hitzeentwicklung, die die Spule in ein paar Sekunden auf über 60°C gebracht hat.

Das stärkste Magnetfeld unserer Spule haben wir letztendlich erreicht, indem wir die Enden einer schon gewickelten Drahtspule mit möglichst hohem Drahtdurchmesser genommen haben. Dadurch hatte die Spule einen deutlich kleineren Widerstand und somit eine geringere Hitzeentwicklung. Zusätzlich haben wir uns aus der Metallwerkstatt einen Eisenbolzen besorgt, der eine wesentlich höhere Permeabilität besitzt als der Ferritkern und die anderen Kerne, die wir vorher verwendet haben. Die Kraft kam angeschaltet schon ansatzweise an die Kraft unseres Permanentmagneten heran (konnte etwa ein Kilogramm Metall bei Idealbedingungen anheben), konnte das Feld allerdings nicht ausgleichen (Ca. 13Kg Zuggewicht).

Das führte uns dann letztendlich zu unserer jetzigen Lösung:

  • Dritte Idee: Reiner Elektromagnet

Unsere endgültige Lösung besteht nun nur noch aus einem Elektromagneten, der durch den Arduino an- und ausgeschaltet werden kann. Er läuft durchgehend beim Fahren und wird ausgeschaltet, um das Metall abzuladen. Da der Magnet nun nicht wie erwartet höchstens eine Sekunde an ist, sondern über einen längeren Zeitraum läuft, mussten wir uns mit der Hitze beschäftigen, die entstehen kann. Dazu haben wir die Abwärme berechnet. Der Widerstand der Spule beträgt 1,6 Ω und es fließen etwa 5 Ampère. Nach der Formel für die Verlustleistung P=R*I^2, erwärmt sich der Magnet mit einer Leistung von etwa 40W, also 40 Joule pro Sekunde. Die Wärmekapazität von Kupfer beträgt 385 J/(KG*K). Das bedeutet, dass einem Kilogramm Kupfer 385 Joule Energie zugeführt werden müssen, damit es sich um 1°C erwärmt. Demnach, braucht eine nur 1/5 so schwere Spule aus Kupfer auch nur 1/5 der Energie für die selbe Erwärmung. Dadurch hat sich ergeben, dass die etwa 200g schwere Spule etwas mehr als 2 Sekunden braucht, um sich um 1°C zu erhitzen. Dies vernachlässigt natürlich den steigenden Widerstand der Spule bei höheren Temperaturen, jedoch resultiert das in einer nur geringen Abweichung von unserem Ergebnis, welches ja sowieso nur als Orientierungswert gedacht war.

Um das zu reduzieren haben wir ein Kühlelement an der Spule angebracht, welches die Oberfläche erhöht und somit eine größere Hitzeabgabe ermöglicht. Dazu haben wir noch einen Lüfter angeschlossen, der die Spule durchgehend bei Betrieb kühlt. Damit haben wir erreicht, dass man den Roboter bedenkenlos mindestens 10 Minuten durchgehend laufen lassen kann.

Orientierung im Raum

Durch die 3 Buttons an der Vorderseite des Roboters kann er Objekte Wahrnehmen. Wird ein Button gedrückt, fährt er erst eine kleine Strecke rückwärts, um sich dann frei um einen zufälligen Winkel zwischen 90° und 270° zu drehen. Hat er sich gedreht, fährt der Roboter weiter geradeaus, bis er erneut gegen ein Objekt stößt. Um ihn wenigstens ein bisschen effizienter zu gestalten, haben wir die Winkel direkt um 180° ausgeschlossen, da er sonst genau den Weg zurückfahren würde, den er gekommen ist. Der Roboter speichert sich jeden Punkt, an dem er gegen etwas gestoßen ist, merkt sich also ungefähr seine Position im Raum. Dies macht er, indem er die Zeit nimmt, die er bis dorthin gefahren ist, sowie seinen aktuellen Winkel von der x-Achse aus gesehen. Ursprünglich hatten wir geplant, mit diesen Daten einen Algorithmus zu schreiben, der es dem Roboter ermöglicht, den Raum effizient nach Metall abzusuchen und möglichst wenig über Stellen zu fahren, die er schon abgesammelt hat. Dadurch wäre die Effizienz immens erhöht worden, worauf später noch eingegangen wird. Außerdem hätte der Roboter mithilfe dieser Informationen zu seinem Startpunkt zurückkehren können, um dort z.B. sein gesammeltes Material abzuladen.

Probleme dabei sind allerdings, dass es Ungenauigkeiten beim Fahren gibt. Um herauszufinden, wielange sich der Roboter drehen muss um einen bestimmten Winkel zu erreichen, haben wir ihn für 2 Minuten im Kreis drehen lassen und bei jeder vollen Umdrehung die Zeit gestoppt. Dabei konnte man allerdings schon sehen, dass er immer ein wenig vom Weg abkommt und die Zeiten jedes mal um ein paar Millisekunden verschieden waren.

Dies hängt auch stark vom Untergrund ab, auf dem der Roboter fährt.

Diese Fehler Summieren sich natürlich je länger der Roboter fährt, wodurch die Position nur eine Annäherung ist.

Diese Probleme waren der Hauptgrund warum der intelligente Absuchalgorithmus und das Zurückkehren zum Startpunkt nicht implementiert wurden. Die Abweichungen von der berechneten Position zu der tatsächlichen Position würden nach wenigen Minuten schon im Meterbereich liegen, was die Werte für eine präzise Navigierung leider wertlos macht.

Bauteile/Pin Belegung

2x Arduino 2x Getriebemotor 1x Getriebechip 1x Steppermotor + Chip 1x Lüfter 3x Abstands-Buttons 2x Mosfet (zum Steuern des Lüfters und der Spule)

Pins:

Ergebnis und Diskussion

Wir haben in Processing einmal simuliert, wie der Roboter im Raum umherfährt und wielange er braucht um diesen abzufahren. Dafür haben wir die Simulation in einem 3×3 Meter Raum ausgeführt und nach 25 Minuten gestoppt. Herausgekommen ist dieses Bild:

Man kann sehen, dass er selbst nach 25 Minuten den Raum nicht komplett abgefahren hat, was an dem rein zufälligen Fahrverhalten liegt.

Um das zu verbessern hatten wir uns überlegt, uns an dem Staubsauer-Roboter „Roomba“ zu orientieren, der sich erst in Spiralen fortbewegt, sobald er auf ein Objekt stößt, an diesem langfährt und nach einiger Zeit wieder in den Raum zurückfährt. Fährt er dann lange genug gerade aus, fängt er erneut an Spiralen zu drehen. Ungefähr so:

Insgesamt sind wir sehr zufrieden mit dem Ergebnis. Der Roboter sammelt zuverlässig kleine und große Metallstücke auf seinem Weg ein, und bleibt praktisch nie an Hindernissen stecken/hängen, was im Grunde genau das war, was wir uns vorgenommen haben. Jedoch ist uns auch bewusst, dass unser Roboter nicht besonders effizient ist, im Aufsammeln sowie im Stromverbrauch.

Wie erwähnt, hat insbesondere der Magnet einen hohen Stromverbrauch, weswegen der Akku den Magneten maximal 30 Minuten betreiben kann. Möglichkeiten zum Wiederaufladen der Akkus haben wir ergründet, jedoch ist alles was wir uns vorgestellt haben daran gescheitert, dass die Akkus eine relativ komplizierte Schalttechnik benötigen, um beim Aufladen nicht zu explodieren. Diese zu kombinieren mit Solarpanelen o.Ä., hat unsere Fähigkeiten überstiegen.

Auch das Aufsammeln könnte definitiv besser sein. Wie im obigen Bild zu sehen, braucht der Roboter sehr lange, um auch nur eine kleine Fläche abzusammeln. Gelöst worden wäre dieses Problem mit einem intelligenten Absuchalgorithmus, den wir aber wegen der weiter oben genannten Gründe nicht implementieren konnten. Im Vergleich zu dem „Roomba“, entspricht unser Roboter etwa den Roombas der ersten Generation, welche auch ohne intelligente Steuerung den Raum nach dem Zufallsprinzip abfahren. Theoretisch gesehen hat unser Roboter nur eine einzige Form der Sensorik, seine Drucksensoren vorne. Im Vergleich dazu, besitzen die neueren Roombas zusätzlich Infrarotsensoren und sogar WiFi Empfänger, mit denen sie mit ihrer Docking-Station und Smartphones kommunizieren können. Diese zusätzlichen Sensoren erlauben diesen neueren Roombas, bessere Algorithmen zu verwenden, die die zusätzlichen Information nutzen, um mit maximaler Effizienz den Boden von Staub und Schmutz zu reinigen. Im Vergleich zu diesen Roombas, ist unser Roboter natürlich klar unterlegen. Allerdings sind wir stolz, dass unser Endprodukt es wenigstens mit den älteren Roombas aufnehmen kann.

Programmcode

projektewise1617/magneteerspublic/start.txt · Zuletzt geändert: 2017/05/18 17:11 von c.jaedicke