LIDAR Höhenmesser

Tue 29 August 2017

arduino, Elektronik, Fliegen, Sprachausgabe

Übersetzungen: EN

Hier wird kurz die Funktion eines LIDAR Höhenmessers mit Audioansage für die UL-Fliegerei erläutert.

HINWEIS: Dies ist noch eine Baustelle und das Gerät noch nicht fertig, Wer mag, darf gern ab und zu vorbei schauen.

Bei diesem Hobbyprojekt handelt es sich um einen Prototypen einer Idee und nicht um ein fertiges Produkt. Insbesondere die Flugsicherheit darf bei der Benutzung niemals vernachlässigt werden, es handelt sich nur um ein Informationsgerät welches unvorhersagbar falsche Werte ausgeben kann! Ich kann keinerlei Verantwortung für den Nachbau und die Benutzung eines solchen Geräts übernehmen. Nachbau und Verwendung erfolgen auf eigenes Risiko!!!

Allgemeines

Beim Betrieben des Flugsports kommt man immer wieder einmal ins Grübeln über die eigene Landetechnik. Gerade wenn man mehrere Flugzeugklassen (z.B. Segelflugzeuge und Ultraleicht) fliegt, sind andere Schwerpunkte bei der Landung zu erkennen. Allein schon der Unterschied zwischen den im motorgetriebenen Flug üblichen Wöbklappen (Flower-Klappen) und den im Segelflug gebräuchlichen Bremsklappen (Schempp-Hirth-Klappen) ist in der Wirkungsweise und dem Flugverhalten in der Landung immens.

Daher beneidet man schnell die Verkehrsflieger um die automatische Computerstimme, die ihnen während des Landeanflugs zu aktuelle Höhe über Grund zuruft. Ziel dieses Projekts ist es, diese durch einfach zu beschaffende Technik auch dem Hobbypiloten zur Verfügung zu stellen.

Funktionsbeschreibung

Mittels eines käuflich zu erwerbenden vollintegrierten Moduls der Firma Garmin, sind heute Laserentfernungsmesser recht einfach in Microcontroller-Anwendungen zu integrieren

Wo es früher nur den berühmten "Disto" gab, kann man heute für kleines Geld ein Modul erwerben, dass (angeblich) Entfernungen bis zu 40m erkennen kann. Dieses Wunderwerk der Hochintegration misst die Laufzeit eines Laserimpulses und errechnet daraus die Entfernung zu einem Objekt, in diesem Fall idealerweise dem Boden.

Schaltplan des LIDAR Höhenmessers

Schaltplan des Hoehenmessers

Das PWM-Signal des μCs wird durch R1/C8 geglättet und somit zu einem normalen Audiosignal gewandelt.

Wirklich interessant ist in dieser Schaltung nur, dass der Audio-Ausgang vollständig differentiell ausgeführt werden kann. Wenn Tr1 bestückt und C10/C11 weg gelassen werden, so kann man einen 600 Ω-Übertrager verwenden, um das Signal zu symmetrieren. Den Übertrager könnte man notfalls auch aus einem alten Telefon bekommen, im konkreten Falle wurde er aber bei einem Einzelhandelsversender beschafft.
Dieser Ausgang kann dann am z.B. am Funkgerät an den AUX-Eingang und Masse angeschlossen werden, somit ergibt sich eine Art Stromschleife die wesentlich weniger von elektromagnetischer Einstrahlung betroffen wird.
Alternativ kann auch Tr1 wegelassen werden und stattdessen C10/C11 bestückt werden, dann erhält man einen normalen asymmetrischen Tonausgang, welcher dann eher störanfällig ist. Damit entfält jedoch der Vorteil der erhöhten Störicherheit.

Um einen Betrieb mit zwei Betriebsspannungen (positiv und negativ) zu vermeiden, wird ausgenutzt, dass der Ruhepegel des unsigned PWM-Signals sowieso bei 50%, d.H. bei etwa 2.5V liegt. So wird die zweite Seiten des Übertragers auch auf 2.5V gehalten, damit wird auch eine Gleichspannungsbelastung und evtl. Sättigung des Kerns vermieden. Das erfolgt über den zweiten OPV in U3, welcher mittels eine Spannungsteilers bei ca. 2.5V gehalten wird.

Mechanischer Aufbau

An die mechanische Umsetzung werden gerade bei diesem Projekt mehrere Anforderungen gestellt.

  1. Einfache Montage: Wenige Löcher im Rumpf
  2. Regensicherheit: Potentielles Regenwasser soll möglichst nicht eindringen können
  3. Niedriger Luftwiederstand: Der Einbau des Geräts an das Luftsportgerät sollte keinen unnötigen Kraftstofmehraufwand verursachen

Aussenansicht

Daher wurde ein Geäuse mittels OpenSCAD entworfen, welches auf einer hohlen Topfenform basiert. Diese solle einen recht geringen Luftwiderstand haben. Linsen des LIDAR sind in zwei Öffnungen im Boden des Gehäuses untergebracht, welches plan ist. Dieses wird dann bei der Endmontage mittels einer d&umml;nnen Acrylglasplatte (hier ist noch zu testen, ob diese bei der Wellenlänge des Lasers ausreichend transparent ist).

Uebersicht des Zusammenbaus

Im Innenren sind acht Dome angebracht, auf welche das LIDAR-Modul und die Leiterplatte aufgeschraubt werden können.

Das Ganze wird bei Montage mit vier Schrauben am Luftsportgerät fixiert.

Code für den Microrechner

Die Aufgabe des Micocontrollers ist es, die I2C-Kommunikation mit dem LIDAR-Modul zu halten und gleichzeitig dies ermittelte Höhe in Sprachansagen umzusetzen.

Um schneller zu Ergebnissen zu kommen, wurde ein Aurdino-Nano als Prototypenplattform genutzt. Hiermit war die Implementation der I2C-Kommunikation durch die von Garmin gelieferte Bibliothek sehr einfach.

Spannender gestaltet sich die Sprachausgabe auf einem einfachen 8bit Microcontroller ohne externem Speicher. Natürlich könnte man z.B. über SPI eine externes Flash-ROM nutzen, aber die Herausforderung war die Minimierung der Bauteilanzahl.

Die neuste Generation der Software verwendet ein sehr traditionsreiches Verfahren der Sprachcodierung: LPC (Linear Predictive Coding), welches schon im heute historischen Speak&Spell verwendet wurde. Die Arduino Bibliothek "Talkie" implementiert einen Bitstream-Decoder, welcher TMS 5220 Code interpretiert und als Audio per PWM ausgibt.

Zur Herstellung solcher Audiodaten wird das Programm BlueWizard (https://github.com/patrick99e99/BlueWizard) für Mac oder plattformunabhängig mein Python-Port PythonWizard (https://github.com/ptwz/python_wizard) verwendet. Die Erstellung der Sprachsamples an sich erfolgt in MacOS über den sehr felxiblen "say" Befehl.

Ebenso ist es nicht ganz trivial, aus den Messwerten des LIDAR eine stetige, möglichst wenig zitternde Höheninformation zu machen. Dies geschieht momentan so, dass ein Burst von bis zu 15 Messungen in einem Zeitfenster von 1/3 s ausgelöst werden. Messwerte unter 10cm und über 50 Metern werden direkt verworfen. Diese werden nach der Größe absteigend sortiert. Sind mindestens vier Werte gültig, so wird der drittgrößte Wert benutzt. Dieser wird dann in Fuß umgerechnet und an die Sprachausgabe übergeben.
Beim ersten Flug mit dem Gerät wurden alle Rohmesserte ausgegeben, um die vorigen Algorithmen noch zu verbessern.

Ergebnisse des ersten Fluges

Das obige Bild zeigt die durch den beschriebenen Filteralgorithmus nachträglich ausgewerteten Höhen bei einer Landung. Das Profil sieht deshalb so seltsam aus, da sich vor dem Flugplatz eine Waldkante, ein Tal und eine Böschung befinden. All diese Geländemerkmale werden hier schön abgebildet.

Downloads

Alle Quellcodes stehen unter https://github.com/ptwz/lidar_altimeter zur Verfügung.