Aus Raspberry Pi Geek 01/2024

Stoppuhr für einen Drohnen-Parcours

© Sergey Jarochkin / 123RF.com

Hab dich!

Martin Mohr

Um ein Objekt zu erfassen, das sich dreidimensional im Raum bewegt, eignet sich eine normale Lichtschranke nur bedingt. Abhilfe schafft eine Flächenlichtschranke.

Um die Zeit zu ermitteln, die eine Drohne zum Bewältigen eines Parcours benötigt, muss man einfach nur die Zeit stoppen. Eine einfache Stoppuhr lässt sich schnell programmieren. Einfacher und genauer wäre es, die Start- und Stoppzeitpunkte automatisch zu erfassen. Ein ideales Hilfsmittel dafür wäre eine Lichtschranke, die beim Durchfliegen die Stoppuhr startet beziehungsweise anhält.

Aber ganz so einfach ist das nicht, denn die Drohne kann sich ja in alle drei Richtungen im Raum bewegen. Deswegen fällt der Einsatz einer normalen Lichtschranke schon einmal aus. Genau für diesen Anwendungsfall wurden Flächenlichtschranken erfunden. Sie erfassen, ob sich etwas durch eine Fläche im Raum bewegt. Solche Flächenlichtschranken kommen oft zum Überwachen von Aufzugtüren zum Einsatz. Sie haben allerdings den Nachteil, außerordentlich teuer zu sein. Sollte unser Projekt schon an den Kosten für die Hardware scheitern?

Nach einiger Überlegung kam der Autor auf eine deutlich günstigere Lösung. Die Idee dahinter besteht darin, mehrere relativ günstige Lichtschranken so anzuordnen, dass es gelingt, damit eine Drohne im Flug zu erfassen. Üblicherweise fliegt sie in horizontaler Lage. Indem wir jetzt unsere Lichtschranken vertikal mit geringem Abstand an einen einfachen Rahmen montieren, machen wir es der Drohne nahezu unmöglich, sich zwischen den Sensoren hindurchzumogeln. Um eine bessere Vorstellung von dem zu bekommen, was wir genau vorhaben, werfen Sie bitte einen Blick auf Abbildung 1.

Abbildung 1: Der provisorische Testaufbau der Flächenlichtschranke mit Fischertechnik-Komponenten.

Abbildung 1: Der provisorische Testaufbau der Flächenlichtschranke mit Fischertechnik-Komponenten.

Testaufbau

Unser erster Testaufbau zeigt, wie das Konzept prinzipiell funktioniert. Dazu verwenden wir Fischertechnik-Bauteile, an denen wir Lichtschranken mit Kabelbindern befestigen. Klappt mit dem Provisorium alles wie vorgesehen, ersetzt ein Rahmen aus Aluprofilen die Bausteine, an dem die Lichtschranken mit Befestigungswinkeln montiert werden.

Zum Messen der Zeit verwenden wir einen ESP32-Mikrocontroller, den wir mit MicroPython programmieren. Der Artikel “Kleine Schlange” [1] beschreibt die Grundlagen zu MicroPython und zeigt auch, wie Sie den ESP32 flashen müssen, damit er MicroPython versteht. Der ESP32 ist mit einem kleinen Display [2] verbunden, das die gemessene Zeit anzeigt. Für die Lichtschranken verwenden wir den relativ günstigen Infrarot-Sensor E18-D80NK (Abbildung 2), der im Fünferpack gerade einmal 23 Euro kostet [3].

Abbildung 2: Der relativ günstige Infrarot-Sensor E18-D80NK kostet im Fünferpack gerade einmal 23 Euro. Quelle: Amazon

Abbildung 2: Der relativ günstige Infrarot-Sensor E18-D80NK kostet im Fünferpack gerade einmal 23 Euro. Quelle: Amazon

Die Lichtschranken montieren wir in einem Abstand von etwa zehn Zentimetern an unseren Rahmen und stellen sie so ein, dass sie gerade noch auslösen, wenn sich ein Objekt unten durch den Rahmen bewegt. Zum Einstellen der Lichtschranken versorgen wir sie einfach über die rote (5 Volt) und die blaue (0 Volt) Leitung mit Spannung. Die eingebaute LED zeigt an, ob die Lichtschranke ausgelöst hat.

Über die kleine Stellschraube an der Unterseite des Sensors lässt sich die Empfindlichkeit und damit die Reichweite des Moduls justieren. Die Lichtschranken verfügen über einen Open-Collector-Ausgang. Dabei schaltet ein NPN-Transistor (Collector) die Ausgangsspannung auf 0 Volt, sobald er aktiviert wird. Ansonsten fällt der Ausgang hochohmig aus.

Dieses Verhalten bringt gleich zwei Vorteile für unseren Testaufbau mit sich. Zum einen können wir von außen mit einem 10K-Widerstand vorgeben, mit welcher Spannung geschaltet werden soll. Der ESP32 arbeitet nur mit 3,3 Volt – 5 Volt am Eingang würden ihn zerstören. Zum anderen lassen sich mehrere dieser Ausgänge einfach parallel schalten, der Aufbau verhält sich dann wie eine logische ODER-Verknüpfung.

Bezogen auf unseren Aufbau bedeutet das: Sobald eine oder auch mehrere Lichtschranken auslösen, springt der Eingang am Mikrocontroller auf 0 Volt um. Wir müssen dazu nur alle gleichfarbigen Leitungen der Lichtschranken miteinander verbinden. Abbildung 3 zeigt den kompletten Schaltplan zum Testaufbau.

Abbildung 3: Der Schaltplan für unseren Testaufbau.

Abbildung 3: Der Schaltplan für unseren Testaufbau.

Im Großen und Ganzen ist hier das ESP32-Dev-Board mit den Verbindungen zum Display zu sehen (Abbildung 4). Der 10K-Widerstand dient dazu, den Open-Collector-Ausgängen der Lichtschranken ein sauberes 3,3-Volt-Signal zu liefern. Zu guter Letzt gibt es noch einen Kondensator, der sicherstellt, dass sich der ESP32 jederzeit gefahrlos automatisch flashen lässt.

Abbildung 4: Das ESP32-Dev-Board samt Display haben wir auf einem Breadboard montiert.

Abbildung 4: Das ESP32-Dev-Board samt Display haben wir auf einem Breadboard montiert.

Programm

Wie eingangs erwähnt, verwenden wir für unser Testprogramm MicroPython. Grob umrissen soll die Stoppuhr starten, sobald die Drohne das erste Mal durch die Lichtschranken fliegt. Kommt Sie ein zweites Mal vorbei, soll die Zeit gestoppt werden und auf dem Display erscheinen.

So weit, so gut – jetzt haben wir allerdings ein kleines Problem mit der Physik: Die Drohne wird bei einem Durchflug nie immer genau nur ein Signal erzeugen. Je nachdem, in welcher Lage sie durch die Lichtschranke fliegt, können dabei auch sehr viele Impulse ausgelöst werden. Daher müssen wir uns Gedanken machen, wie wir mit diesen zusätzlichen Störimpulsen umgehen.

Die einfachste Methode besteht darin, nur den ersten Impuls zum Start der Stoppuhr auszuwerten und danach für eine gewisse Zeit weitere Impulse nicht mehr zu berücksichtigen. Beim Stoppen der Uhr können wir genauso verfahren. Der erste Impuls stoppt die Zeit, danach zeigt das Display das Resultat an. Hier warten wir fünf Sekunden, bevor wir einen Neustart der Messung zulassen. Diese Zeit sollte reichen, um das Ergebnis sicher ablesen zu können. Anschließend starten wir durch ein manuelles Auslösen der Lichtschranke die Messung erneut. Dieses Vorgehen sollte erste einmal funktionieren.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben