Bericht

{autotoc addNumbering=true|addNumberingToc=true}

Physikalische Grundlagen


Der Ultraschall breitet sich in Luft aus, somit verändert sich seine Ausbreitungsgeschwindigkeit, wenn sich die Luft bewegt.
Zunächst soll nur die Ausbreitung in einer Dimension betrachtet werden.
Ist \[c\] die Schallgeschwindigkeit in Luft und \[v\] die Geschwindigkeit der Luft/des Windes in Ausbreitungsrichtung des Schalls, so ergibt sich eine resultierende Ausbreitungsgeschwindigkeit von \[c+v\]. Ist die Windgeschwindigkeit entgegen der Ausbreitungsrichtung so ergibt sich analog eine Ausbreitungsgeschwindigkeit von \[c-v\]. Misst man nun die Laufzeiten \[t_{hin}\] und \[t_{rueck}\] des Ultraschalls auf einer gegebenen Strecke in beide Richtungen ergibt sich folgendes Gleichungssystem:

\[t_{hin}=\frac{d}{c+v}\]


\[t_{rueck}=\frac{d}{c-v}\]


Ist die Entfernung \[d\] der beiden Ultraschallsensoren bekannt, so können Schall- und Windgeschwindigkeit berechnet werden:

\[v=\frac{d}{2}\cdot (\frac{1}{t_{hin}}+\frac{1}{t_{rueck}})\]


\[v=\frac{d}{2}\cdot (\frac{1}{t_{hin}}-\frac{1}{t_{rueck}})\]


Die Messung in beide Richtungen hat den Vorteil dass die Schallgeschwindigkeit berechnet werden kann und nicht bekannt sein muss. Dies ist insofern von Vorteil dass die Schallgeschwindigkeit stark von der Temperatur abhängt und somit nicht genau bekannt ist. Zusätzlich kann dadurch mit der berechneten Schallgeschwindigkeit ebenfalls die Umgebungstemperatur berechnet werden:

\[T=\frac{c^2}{402,3}\cdot \frac{s^2K}{m^2}\]


Diese Formel ist eine Näherung, die in der Nähe der Raumtemperatur gilt¹.

Um die komplette horizontale Windgeschwindigkeit zu ermitteln sind zwei linear unabhängige Messungen durchzuführen. Um die Berechnung möglichst einfach zu gestalten, werden zwei senkrecht aufeinander stehende Messstrecken verwendet. Dafür werden dann insgesamt vier Ultraschallsensoren benötigt, jeweils zwei für eine Messstrecke. Misst man die Hin-und Rücklaufzeiten des Schalls auf beiden Messstrecken, ergeben sich somit zwei Windkomponenten und , aus denen dann mit und den Betrag der Windgeschwindigkeit und deren Richtung bestimmen kann.

Messung mit dem SRF02


Die ersten Versuche zur Windmessung wurden mit dem SRF02 durchgeführt. Mit zwei SRF02, wobei einer als Sender und der andere als Empfänger dient, kann die Laufzeit von Ultraschall (hier 40kHz) gemessen werden. Dabei muss dem Sender der Befehl gegeben werden, dass er einen Impuls senden soll und möglichst gleichzeitig dem Empfänger der Befehl, dass er auf einen ankommenden Impuls warten soll. Anschließend ist es möglich die gemessene Laufzeit vom Empfänger zu erfragen. Die Auflösung der Laufzeit beträgt 1µs, jedoch ist die Messung deutlich weniger genau als die Auflösung und varriert ja nach Entfernung. Bei einer Distanz von Sender und Empfänger von 2m beträgt die Genauigkeit ca. 20µs.

Testaufbau


Zum Testen der SRF02 auf Tauglichkeit für die Windmessung wurden zwei Sensoren jeweils an den beiden Enden einer 2m langen Stange befestigt und beide Sensoren wurden mit einem Arduino DFRduino Pro Mini (ATmega328p) Board verbunden. Zur Winderzeugung wurden ein Ventillator und einige CPU-Lüfter verwendet.

Kalibrierung und Probleme


Die Ansteuerung der SRF02 erfolgte über I²C, daher war eine Messung der Zeit, die zwischen zwei I²C Befehlen, in diesem Fall zwischen dem Sendebefehl und dem Empfangsbefehl, vergeht zu messen, da diese zur gemessenen Laufzeit addiert werden muss. Die Messung ergab einen Delay von 329µs. Nach Einrechnung dieses Delays blieb ein konstanter Offset der Windgeschwindigkeit bei ca. 0.7 m/s und eine Schwankung von 0.1 m/s bei einer Mittelung über fünf Messwerte. Die Berechnung der Schallgeschwindigkeit ergab ebenfalls schlechte Messwerte mit konstanten Fehlern bei ca. 10%. Diese konstanten Messfehler sind zwar durch Plausibilitätsmessungen/bzw. weitere Kalibrierung entfernbar, jedoch ergeben sich auch noch andere Probleme.

Die Ursache dieser Messfehler liegt vermutlich bei der unterschiedlichen Verarbeitung und bei der Art der Messung, nämlich der Impulslaufzeitmessung. Das Problem bei dieser Methode ist, dass die Ultraschallempfänger erst einschwingen müssen und somit nur einen langsamen Amplitudenanstieg besitzen. Je nach Empfangsintensität können somit unterschiedliche Laufzeiten gemessen werden, weil erst ein späterer Wellenberg erkannt wird. Schwankungen von einer Periodendauer (25µs) sind also durchaus möglich, aber keinesfalls tolerabel.

Die Unflexibilität aufgrund der fertigen Messapparatur der SRF02 und die Ungenauigkeit, bzw. Anfälligkeit auf häufig auftretende Störfaktoren wie Seitenwind und Temperatur machen eine Windmessung mit akzeptabler Genauigkeit unmöglich. Daher wurde entschlossen die Messsensoren selbst zu entwickeln und aufzubauen.

Messung mit UST-40R bzw. UST-40T


Die UST-40R (Empfänger) und UST-40T (Sender) sind Ultraschallempfäger- bzw. Sender ohne jeglichen Mikrochip oder Messeinrichtung und bieten somit größtmögliche Flexibilität. Die UST-40 arbeiten bei einer Frequenz von 40kHz und bei einer maximalen Spannung von 10V, somit reicht die Sendeleistung für die Windmessung leicht aus.

Messprinzip


Nachdem aus o.g. Gründen eine Impulslaufzeitmessung nicht sinnvoll ist, wurde versucht eine Messung aufgrund von Phasendifferenzen des Sendesignals und des Empfangssignals zu implementieren.

Der Vorteil dieser Messung ist, dass der Empfänger genügend Zeit zum Einschwingen hat, bevor eine Messung durchgeführt wird, da die Zeit, wann die Phasenmessung stattfindet variabel ist. Somit wird verhindert dass gröbere Messfehler durch Intensitätsschwankungen verursacht werden. Ein weiterer Vorteil ist, dass die Phasendifferenzmessung mit dem verfügbaren DFRduino Pro Mini (ATmega328p) sehr genau und einfach durchführbar ist. Zuletzt kann die Phasendifferenzmessung auch auf deutlich kleineren Strecken durchgeführt werden, wegen der erhöhten Genauigkeit.

Der Nachteil jedoch ist, dass die Messung nur innerhalb einer Periode, also 25µs, eindeutig ist. Außerhalb dieses Bereiches kann aber wieder eine Impulsdauermessungdurchgeführt werden, um zu ermitteln in welcher Periode die Phase gemessen wird.

Im Rahmen der Praxis wird sowohl der Algorithmus zur Phasendifferenzmessung als auch zur Impulslaufzeitmessung implementiert.

Aufbau des Senders


Der Sender gestaltet sich erfreulicherweise sehr einfach. Mit Hilfe des 8-bit Timers des DFRduino Pro Mini (ATmega328p) werden zwei um 180° phasenverschobene 40kHz Rechteckssignale erzeugt, was aufgrund der Hardwareimplementierung des Timers keine weitere Rechenzeit benötigt. Diese beiden Signale werden einfach mit den beiden Polen des UST-40T verbunden, welcher somit ein 40kHz Ultraschallsignal erzeugt. Der Grund für die zwei gegenläufigen Rechteckssignale ist, dass damit eine höhere Sendeleistung wie mit nur einem Rechteckssignal erreicht werden kann, da der Empfänger durch die Phasenverschiebung ein 10 Vpp Signal sieht. Andernfalls wäre ohne Verstärkung nur ein 5 Vpp Signal möglich.

Aufbau des Empfängers


Nicht viel schwieriger gestaltet sich der Empfänger. Um mit dem DFRduino Pro Mini (ATmega328p) die Phase zu messen wird der Interrupt-Capture Eingang ICR1 des Mirkokontrollers verwendet, welcher steigende oder fallende Flanken am Eingang auf einen Taktzyklus also 62.5ns genau lesen kann. Dafür wird ein belastbares 5V Reckteckssignal benötigt. Um dies zu erreichen werden die beiden Füße des UST-40R an einen Operationsverstärker, welcher als Komparator geschalten ist gehängt. Dadurch wird aus dem empfangenen Sinussignal ein Rechteckssignal mit +5V max gewonnen, welches nach einem Einweggleichrichter direkt an den ICR1 Eingang des Mikrokontrollers angeschlossen wird. Hinzu kommt ein Entladewiderstand, der direkt zwischen den beiden Füße des Empfängers angebracht wird. Dieser ist nötig, da sich die Piezokristalle in den Sensoren mit der Zeit aufladen und somit die Messungen nach einiger Zeit verfälschen würden.

Aufbau der gesamten Schaltung


Für den kompletten Messaufbau werden, wie oben erklärt, zwei Messstrecken mit jeweils zwei Sendern und Empfängern benötigt. Einige Messungen ergaben, dass sich UST-40R und UST-40T ohne größere Einschränkungen sowohl als Sender als auch als Empfänger eignen. Somit sind nur zwei Sensoren pro Messstrecke vonnöten.

Der komplette Aufbau mit beiden Messstrecken gestaltete sich aber etwas schwieriger als erwartet. Die endgültige Schaltung besteht nun aus zwei 4-Bit Multiplexern HCF4052, einem Operationsverstärker TL072, dem DFRduino Pro Mini (ATmega328p) und einem Spannungswandler TC7660, welcher die Stromversorgung von +5V/-5V für den Operationsverstärker erzeugt. Die insgesamt acht Füße der UST-40 Sensoren werden an die Eingänge der Multiplexer geschalten und die Ausgänge der Multiplexer werden an den Operationsverstärker geschlossen, so dass je nach Wunsch der richtige Empfänger zum Operationsverstärker durchgeschalten werden kann. Zusätzlich ist jeder Sensor mit zwei Füßen des DFRduino Pro Mini (ATmega328p) verbunden, an denen das PWM-Signal zum erzeugen des Sendesignals erzeugt werden kann.

Die mechanische Anbringung der beiden Messstrecken ist durch zwei rechtwinklig aufeinander stehenden Balsahölzer realisiert. Somit ergibt sich ein Kreuz mit 25,2 cm Breite und Höhe auf welchem die Messung durchgeführt werden kann. Die Balsahölzer eignen sich besonders gut für den Zeppelin aufgrund ihres geringen Gewichts.

Kalibrierung


Die Kalibrierung des Windmessers geschieht in Windstille. Nachdem die Phasenmessung sehr empfindlich ist, sollte der Windmesser vor jedem Flug kalibriert werden. Die Kalibrierung erfolgt durch eine hohe Anzahl von hintereinander durchgeführten Phasenmessungen. Mit Hilfe der Umgebungstemperatur \[T\], welche der Messeinrichtung beim Start der Kalibrierung übergeben werden muss, kann die Schallgeschwindigkeit \[c\] und somit die Solllaufzeit \[T_{soll}=\frac{d}{c}\], wobei \[d\] der bekannte Abstand der Sensoren ist, bestimmt werden, auf welche die Messeinrichtung dann kalibriert wird.

Technische Daten

Windgeschwindigkeit Messbereich -10 m/s ... 10 m/s
  Genauigkeit ±0,2 m/s
Windrichtung Messbereich 0° ... 359°
  Genauigkeit ±5°

 

Protokoll über serielle Schnittstelle


Der Sender kann über die serielle Schnittstelle angesteuert werden und hat folgende Modi:

Modus Befehl (ASCII Zeichen) Rückgabe
Ausgeschaltet \0 oder '0' oder 'o'  
Kalibrierung 'c' + 2Byte (int) Temperatur  
Impulsmessung 'b' Laufend: 4 * 4Byte (float): Schallgeschwindigkeit [m/s], Windgeschwindigkeit [m/s], Windrichtung [°], Temperatur [K]
Phasenmessung 'p' Laufend: 4 * 4Byte (float): Schallgeschwindigkeit [m/s], Windgeschwindigkeit [m/s], Windrichtung [°], Temperatur [K]
Impulsmessung ASCII Ausgabe 'v' Laufende Ausgabe von Schallgeschwindigkeit, Windgeschwindigkeit, Windrichtung und Temperatur in lesbarer ASCII Form
Pashenmessung ASCII Ausgabe 'q' Laufende Ausgabe von Schallgeschwindigkeit, Windgeschwindigkeit, Windrichtung und Temperatur in lesbarer ASCII Form

 

Der fertige Windmesser

Der fertige Windmesser


¹ http://de.wikipedia.org/wiki/Schallgeschwindigkeit