Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise19:arrangerpublic:start

Projekt-Dokumentation

Abbildung 1: Der Roboter GirlyRob

Themenbeschreibung und Überblick

Der Roboter unterscheidet zwischen metallischen und nicht-metallischen Gegenständen, wie zum Beispiel zwischen einer Schraube und einem Stück Holz. Er „wartet“ darauf, dass ihm ein Gegenstand gegeben wird und erkennt, sobald ein Gegenstand auf ihm abgelegt wurde. Das geschieht mittels eines Sensors und eines Mikroschalters. Sensoren sind Schnittstellen zwischen der Umgebung des Roboters und dem Roboter selbst, welche Informationen über das Umfeld des Roboters anhand von gemessenen Werten geben. Ein Mikroschalter (Drucktaster), der auf dem Roboter befestigt ist, nimmt den Druck wahr, sobald etwas auf ihm abgelegt wurde. Durch einen Sensor, den dahinter liegenden Metallsensor (erkennt Metall), kann anschließend gemessen werden, ob es sich bei dem abgelegten Gegenstand um „Metall“ oder „Nicht-Metall“ handelt, beispielsweise um ein Stück Metall oder ein Stück Holz. Der Mikroschalter ist dabei der Auslöser, damit der Roboter registriert, dass ein Gegenstand zum „Untersuchen“ bereitliegt. Die Messung startet daraufhin. Nachdem die Messung mithilfe des Metallsensors durchgeführt wurde, kommt die „Reaktion“ des Roboters auf das Ergebnis. Je nachdem, was gemessen wurde, reagiert der Roboter anders: Beim Ergebnis „Metall“ fährt der Roboter ein paar Schritte nach vorne, beim Ergebnis „Nicht-Metall“ fährt er ein paar Schritte nach hinten. Anschließend „wartet“ er auf weitere Gegenstände, die ihm gegeben werden, welche er untersuchen und darauf reagieren kann.

Die wichtigsten Eigenschaften des Roboters lassen sich so zusammenfassen:

  • Wahrnehmen von Gegenständen (durch Druck) mittels des Mikroschalters
  • Erkennung von Metall mittels des Metallsensors & Ergebnis, ob es sich um metallische oder nicht-metallische Gegenstände handelt
  • Fahrbewegung nach vorne
  • Fahrbewegung nach hinten

Konstruktion, Methoden und Umsetzung

Materialien

Folgende Bauteile wurden verwendet:

  • 1x Arduino Nano
  • 2x Stepper-Treiber-Modul
  • 2x Stepper (Räder)
  • 1x Mikroschalter (Drucktaster)
  • 1x Metallsensor
  • 1x Holzplatte
  • Kabel zum Verbinden
  • 2x Mini-Kondensator

Die Konstruktion des Roboters besteht aus einer viereckigen Holzplatte (Basis). An dieser sind zwei Schrittmotoren befestigt, an welchen die beiden Hinterräder angebracht sind. Vorne mittig gibt es noch ein frei bewegliches drittes Frontrad. Die beiden Schrittmotoren sind jeweils an einem Stepper-Treiber-Modul am Mikrocontroller Arduino Nano angeschlossen. An den Pins (Schnittstellen) des Arduinos sind die beiden Schrittmotoren, der induktive Sensor (Metallsensor) und der Mikroschalter (Drucktaster) verbunden. Der Akku wird ebenfalls an den Arduino gesteckt. Mittels des Programm-Codes (Programm, welches die Befehle enthält, die der Roboter ausführen soll) wird der Roboter gesteuert. Zwei Mini-Kondensatoren, welche die Spannung anpassen, (damit elektrische Ladungen nicht unkontrolliert übertragen werden) sind ebenfalls an den Treiber-Modulen des Arduinos verbunden.

Abbildung 2: Skizze des Roboters GirlyRob (Seitliche Ansicht)
Abbildung 3: Roboter GirlyRob mit Baulementen
Abbildung 4: Stepper und Verbindungen zu Stepper-Treiber-Modulen

Schaltplan

Abbildung 5: Schaltplan des Roboters GirlyRob
Abbildung 6: Verbindungen zwischen Arduino Nano und Stepper, Metallsensor und Mikroschalter

Messung und Erkennung von Metall

Sobald ein Gegenstand auf dem Mikroschalter abgelegt wird, wird der Hebel aktiviert. Der Hebel reagiert dabei auf den Druck und senkt sich, wodurch ein Signal an den Metallsensor übertragen wird, dass dieser mit der Messung starten kann. Mit induktiven Sensoren lassen sich metallische Objekte zuverlässig bestimmen. Der Metallsensor misst das Material des Gegenstands. Er erkennt, ob es sich um Metall handelt oder nicht.

Abbildung 7: Der Metallsensor erkennt Metall

Interrupts

In dem Programm wurden sogenannte Interrupts verwendet. Die Aufgabe von Interrupts ist es, zu gewährleisten, dass der Roboter auf wichtige Ereignisse reagiert. Interrupts sind Unterbrechungen des Programmcodes. Sobald ein bestimmtes Signal erkannt wird, unterbricht der Prozessor das, was er gerade tut und führt einen anderen Code (eine Funktion) aus, der extra dafür geschrieben wurde. Nachdem dieser ausgeführt wurde, „springt“ der Prozessor an die Stelle, wo der Interrupt war und führt weiter den restlichen Programmcode aus.

In unserem Fall bedeutet das: Der Roboter wartet, bis er das Signal registriert, dass der Mikroschalter nach unten gedrückt und damit aktiviert wurde (indem ein Gegenstand auf ihm abgelegt worden ist). Der Interrupt, also die Unterbrechung tritt jetzt ein: Der Metallsensor startet mit der Messung. Dabei misst er, ob es sich bei dem Gegenstand um Metall handelt. Anschließend führt er weiter den Programmcode aus, er fährt also je nach Ergebnis nach vorne oder nach hinten.

Zweifache "if-Bedingung"

Die Funktion, die dabei aufgerufen wird, ist mit einer sogenannten zweifachen „if-Bedingung“ verknüpft. Das bedeutet, kommt bei gedrücktem Mikroschalter als Ergebnis „Metall“ heraus, wird die Bedingung erfüllt („true“) und der Roboter fährt nach vorne, registriert der Metallsensor bei gedrücktem Mikroschalter dagegen kein Metall, wird die Bedingung nicht erfüllt („false“) und der Roboter fährt nach hinten.

Hier noch einmal zur Veranschaulichung die zweifache „if-Bedingung“:

Erklärung:

„Mikroschalter ist gedrückt und Metall wurde erkannt ⇒ Bedingung ist erfüllt ⇒ Roboter fährt nach vorne“

ODER

„Mikroschalter ist gedrückt und es wurde kein Metall erkannt ⇒ Bedingung ist nicht erfüllt ⇒ Roboter fährt nach hinten“

Ergebnis

Der Roboter registriert, wenn ein Gegenstand auf ihm abgelegt wurde und er kann die Messung durchführen. Er unterscheidet zwischen Metall und Nicht-Metall und fährt bei Metall nach vorne, bei Nicht-Metall nach hinten. Die Hauptaufgabe des Roboters wurde somit erfüllt. Leider ist der Code noch nicht ganz ausgereift: Denn der Roboter registriert, nachdem einmal bereits Metall erkannt wurde, alle weiteren Gegenstände weiter als Metall. Daher fährt er bei jedem weiteren Gegenstand nach vorne, auch bei Nicht-Metall. Woran das liegt und welche Lösung es dafür gibt, muss weiter untersucht werden.

Ausblick

Der Code müsste überarbeitet werden und verbessert werden. Der Fehler muss gefunden werden, warum der Roboter nach einmaliger Metallbestimmung nur noch „Metall“ als Ergebnis hat und nur noch nach vorne fährt. Das Ziel wäre, dass der Roboter zuverlässig zwischen Metall und Nicht-Metall unterscheiden kann. Die Frage ist dabei auch, ob das Problem am Metallsensor selbst liegen könnte und ob irgendein anderer „Leiter“ in dessen näheren Umgebung als Metall registriert wird. Weiterhin könnte man noch einen Greifarm sowie zwei kleine Boxen bauen und die Ursprungsidee, nämlich, dass der Roboter die Gegenstände auch sortieren könnte, wiederaufnehmen.

Code

projektewise19/arrangerpublic/start.txt · Zuletzt geändert: 2020/04/07 14:41 von d.golovko