mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ultraschall Anemometer zu x-ten


Autor: Manni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ultraschall Anemometer zu X-ten,

Bin gerade dabei ein Anemometer aufzubauen, das eine Auflösung von 
kleiner 0,1 m/s haben soll. Die übliche Schaltung mit Ultraschall 
Transmitter und Receiver. Um die geforderte Genauigkeit zu erreichen ist 
die exakte Phasenlage des Receiversignals gegenüber des 
Transmittersignals zu ermitteln. Dies geht relativ einfach mit einem 
Phasendetektor, aufgebaut aus zwei Exclusive-Or Gattern (LS86) und 
nachgeschalteten Tiefpass-Filter (siehe Skizze). Die Sinus- und Cosinus 
Komponente (Spannung) wird mit den AD-Inputs gemessen und durch eine 
einfache ARCTAN2 Funktion kann der Phasenwinkel (0 – 2 PI) ermittelt. 
Das Ding funktioniert soweit so gut - ganz leichter Windstoß durch 
Pusten entlang der Transmitter-Receiver-Strecke und der Phasenwinkel 
ändert sich drastisch. Ambiguities (>2PI) müssen noch durch 
Laufzeitmessungen ermittelt werden.

Jetzt meine Frage: Derzeit verwende ich im ATmega32 eine sehr aufwendige 
Timerroutine um die beiden um 90 Grad verschobenen 40 kHz Signale zu 
erzeugen, z. Zt. mit Compare on Match Interrupt von Timer2, der aber in 
der Interrupt-Routine sehr viel Rechenzeit verschlingt. Hat einer eine 
Idee, wie ich diese beiden Signale „elegant“ erzeugen kann, auch unter 
Berücksichtigung meines verwendeten 8 MHz Quarzes ?

Schon mal Dank von meiner Seite !

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Manni,


wie schnell kannst Du einen Timer zum PLL machen?

Dann bräuchtest Du nur
a) das Sendesignal
b) das "Local Oscillator"-Signal" zum Mischen
c) das LO-Signal immer so in der Phase drehen, daß die Spannung am 
Tiefpaß Vdd/2 wird. Dann kannst Du die A/D-Wandlung sogar vereinfachen 
und den Komparator einsetzen.

Und wenn Du den Tiefpaß durch einen Integrator ersetzt, dann ist die 
minimale meßbare Luiftgeschwindigkeit nur noch eine Frage der Meßzeit.

Danke für die Idee, kann ich brauchen zum Update meiner 
Uralt-Wheatstone-Meßbrücke Inkavi.


P.S.: Wieso verschlingt der Compare Match Interrupt so viel Zeit? Die 
beiden Ausgangssignale sollten sich doch ganz ohne Interrupt erzeugen 
lassen.


Ciao
Wolfgang Horn

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hat Wolfgang Recht. Einen 8-bit-Timer mit PWM-Ausgang, Teiler /1 und 
den Compare-Match auf 127 einstellen. Interrupt braucht's keinen, der 
PWM läuft auch ohne. Das sollte eine Frequenz von 31250Hz, 
Tastverhältnis 50% ergeben, wenn ich nicht irre.

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wolfgang:

Danke für die guten Tips: Die Idee mit dem Einstellen der Phase bis 
Vdd/2 werde ich mal ausprobieren. Aber das mit dem Integrator habe ich 
nicht ganz verstanden. Vielleicht kannst du hier noch mal nachhaken, wie 
du das meinst.

@Sonic
OK, das mit der PWM ist auch eine Lösung, aber nur für EIN Signal, ich 
brauche aber noch das zweite um 90 Grad phasenverschobene Signal. Ob ich 
das mit einem zweiten anzuschmeissenden Timer hinkriege, habe ich noch 
nicht ausprobiert.

Aber mein Initialproblem ist immer noch da: Wie bekomme ich die beiden 
phasenverschobenen 40 KHz Signale (Leveshifting jeweils nach 6.25 us) 
aus PD0 und PD1 raus, und kann parallel (quasi off-line) noch dazu die 
A/D inputs lesen?

Vielleicht hat ja doch noch jemand eine Idee.

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erzeuge einen einphasigen Takt mit 160kHz und spendiere deiner Schaltung 
noch einen 74HC74. Mit dem kannst du die beiden Phasenverschobenen 
Signale erzeugen. Q des ersten FF mit D des zweiten und /Q des zweiten 
mit D des ersten verbinden. Den 160kHz Takt auf beide CLK.

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Uwe

Ja, da habe ich auch schon drüber nachgedacht. Problem ist nur, dass die 
160 KHz bei einem 8 MHz Quarz ein bischen viel verlangt ist (2.5 clocks 
für T/2).

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls die Frequenz 167kHz sein darf, waere es dann Clock/48. Ein kleines 
CPLD, zB Max3064 bietet sich da an. Sonst, falls die Frequenz stimmen 
muss, ein PLL, oder ein DDS.

rene

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Manni,

zum Integrator, mehr nebenbei, weil ich keinen Sinn in einer Auflösung 
sehe, die deutlich feiner auflöst als die Fehler durch andere Einflüsse 
wie Temperaturänderungen, Wirbel und Mehrfachausbreitung.

Wenn Du zwischen Mischer und AD-Wandler einen RC-Tiefpaß schaltest, dann 
bestimmt die Auflösung des AD-Wandlers die Auflösung Deiner 
Ausbreitungsgeschwindigkeit.

Benutzt Du vor dem Komparator aber einen Integrator, der die Differenz 
des Mischersignals von Vdd/2 integriert, dann triggert auch die kleinste 
Differenz irgendwann den Komparator.

Du: "...phasenverschobene Signal. Ob ich das mit einem zweiten 
anzuschmeissenden Timer"

Zweiter Timer? Es genügt ein Timer mit zwei Output-Compare-Registern.

Du: "Problem ist nur, dass die 160 KHz bei einem 8 MHz Quarz ein bischen 
viel verlangt ist (2.5 clocks für T/2)."

Huh? 8MHz/160 kHz = 50.


Ciao
Wolfgang Horn

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Manni,

mit dem Meßprinzip für nen Anemometer bin ich mal schwer bruchgelandet. 
Bei nem kontinuierlich abgestrahlten 40kHz Signal sind für die 
Phasenverschiebung zwischen Sender und Empfänger im wesentlichen die 
Reflektionen des Schalls an Gegenständen der Umgebung maßgebend. Du 
kannst das einfach ausprobieren: Der gemessene Pasenwinkel ändert sich 
auch dramatisch, wenn Du, statt zu pusten, einfach die Hand in die Nähe 
der Meßstrecke bringst.

Cheers
Detlef

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Manni,

hast du dich mit den 2,5 Takten nicht verrechnet? Bei mir ist 
8MHz/160kHz=50. Und 25 lässt sich mit Timer 1 leicht einstellen. Mit der 
Toggle-Funktion erhältst du 160kHz ohne CPU-Belastung.

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst mal vielen Dank für die guten Tips und Hinweise !!

@Uwe
Ja natürlich, ich habe mich da "nur leicht" verrechnet, was Wolfgang 
auch schon angemerkt hat. Mit den Settings des "Compare Output Mode" auf 
Toggle OC1A/B ist das natürlich leicht zu bewerksteligen.

Beim Layout meiner Platine habe ich nur einen Gedankenfehler gemacht und 
den gewünschten Ausgangstakt nicht auf PD4/5 gelegt, sondern auf PD6/7 
und das ganze über eine Interrupt Routine gesteuert habe. Eigene 
Dummheit --> Handbuch lesen ist halt immer noch eine notwendige Tugend 
(leider nicht nur hinreichend) !

Werde das ganze jetzt mal mit Kupferlackdraht "reparieren und die S/W 
umschreiben. Vielen Dank für den Tip.

@Detlef
In den Beschreibungen der professionellen Instrumente hab ich auch schon 
davon gelesen, das man für ein "Free Field of View" sorgen sollte. Aber 
davon kann ich bei meinem fliegenden Meßaufbau nicht direkt sprechen. 
Trotzdem habe ich bei einem TX -> RX Abstand von 20 cm (und das auch 
noch flach auf dem Tisch) ein absolut sauberes Phasensignal, auch wenn 
ich in der Nähe "rumbastle". Kann mit das auch nicht so recht erkären, 
aber vielleicht hab ich ja was neues "erfunden". Klar, wenn ich mit der 
Hand dazwischen fahre, gibts nur Murks.

Ich werde das trotzdem noch mal weiter verfolgen und mal ein Scope Bild 
hier rein stellen, wie die Phaseninformation stabil da steht.

Danke an alle und
Gruß
Manni

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Manni,

will nicht nur unken, finde ich gut, was Du machst. Die Zeit, in der 
Ultraschallanemometer keine 1500E mehr kosten dürfen, ist da! Aber die 
Dinge sind nicht einfach:

Ne kurze Rechnung: 0.1m/s Windgeschwindigkeit bringt Dir auf 20cm 
Meßstrecke ca. 182ns (Nanosekunden!) Laufzeitunterschied zur Windstille. 
Bei 40kHz schiebt sich Deine Phase damit um 2.6°, das ist nicht viel. 
Umgekehrt formuliert: Wenn sich die Phase durch Anwesenheit von 
Gegenständen auf dem Scope sichtbar ändert, versaut Dir das jede 
Windgeschwindigkeitsmessung.

Noch nen schwieriger Punkt: Temperaturabhängigkeit der Messung. Man muß 
entweder Temperatur/Meßstreckenlänge sehr genau kennen oder die 
Meßstrecke in Hin- und Rückrichtung betreiben.

Ich baue seit geraumer Weile an nem Ultraschallanemometer für mein Boot. 
Phasenmessung habe ich verworfen wg. Reflektionen und bin auf direkte 
Laufzeitmessung umgestiegen. Aber auch das sehr problematisch bei den 
nötigen Genauigkeiten.

Gute Nacht
Detlef

Autor: Ultra (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgenwelche Updates zu dem Beitrag?
Wäre interessant zu wissen was daraus geowrden ist.
Wäre hat dazu noch links um tiefer in die materie einzusteigen?
Würde sowas auch gerne bauen.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehr guter Beitrag mit tief gehender Beschreibung der Sachverhalte.

http://www.technik.ba-ravensburg.de/~lau/ultrascha...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.