PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschallwandler



HansP
18.11.2018, 18:13
Liebe Community,

im Rahmen meiner Bachelorarbeit beschäftige ich
mich mit der Entwicklung eines neuen Ultraschall-Durchflusssensors. Hierfür bin
ich auch auf der Suche nach einem passenden Ultraschallwandler bzw. nach
einem Piezoelement.
Ich weiß, dass man Flüssigkeiten hauptsächlich mit dem Laufzeitdifferenz-Verfahren misst und dass man Frequenzen im MHz-Bereich benutzt.
Einen Ultraschallwandler gibt es allerdings in vielen Frequenzbereichen zu kaufen.

Die Frage ist jetzt von was die Frequenz abhängt? Also benutzte ich 1 MHz oder 5 MHz?
Hängt es von der Flüssigkeit, der Eindringtiefe oder dem Rohrdurchmesser ab?

Ich verstehe diese Zusammenhänge noch nicht so ganz und konnte nichts in der Fachliteratur finden.

Viele Grüße
Hans

Ceos
19.11.2018, 07:12
ich weis jetzt nicht wie weit du schon vorgearbeitet hast in deiner Arbeit und welche Methode zum messen du verwenden willst, aber die Frequenz die du verwendest ist doch bestenfalls zweitrangig oder?

Je höher die Frequenz, um so schneller kannst du messen, effektiv könntest du auch 2 Mikrofone und einen Hammer nehmen um die flow geschwindigkeit beim üblichen verfahren zu messen oder?

Hauptsache dein ADC ist schnell genug damit du den Schall komplett abtasten kannst.

Machst du die Arbeit bei einer Firma? Dann solltest du erstmal Hersteller für Piezowandler raussuchen, einen wählen der ein relativ breites Programm hat und von dem auch Samples einfach zu beziehen sind. Dann kannst du deinen Chef bitten Samples zu bestellen und herausfinden welcher Wandler dir die besten Signale liefert.

Aber wie gesagt keine Ahnung wie weit du bist und welchen Ansatz du verfolgst, also kann ich nur rumraten :)

PS: Mit zweitrangig meine ich nciht unwichtig, klar kommt es auf das Material an das du durchschallen willst um beste ERgebnisse zu bekommen, daher rate ich dazu einfach zu probieren oder mathematisch ranzugehen :D (Dichte und Dicke des Rohrmaterial, Dichte der Flüssigkeit ... ich geh mal von Flüssigkeit aus ... Auslöschungseffekte, stehende Welle etc.)

Und vll. gibt es noch bessere Ansätze von denen ich noch nicht gehört habe bei denen die Freuqenz tatsächlich eine Rolle spielt :D

PPS: Da ich der Informatiker in unserem Team bin habe ich mal meine Kollegen mit mehr Fachwissen gefragt .... mit 2Mhz liegst du schon gut, Argument hier war dass Körperschall bei höherer Frequenz besser gedämpft wird und der Wandler damit auch weniger Nachschwingt bzw. du weniger Schall über das Rohr als durch das Medium transportierst

Aber jetzt komm doch erstmal mit deiner geplanten Messmethode um die Ecke :D

HansP
19.11.2018, 11:46
Vielen Dank Ceos für die schelle Antwort.

Die Arbeit mache ich bei einer Firma.
Es soll ein Inline-Sensor werden nach dem Laufzeitdifferenz-verfahren.
33795

Die zu messenden Medien sind Flüssigkeiten mit wenigen oder keinen Fremdkörpern/Luftblasen.
Der Innendurchmesser des Kunststoffschlauchs/rohrs soll ca. 3 mm sein.

Auf die Antwort von Herstellern bezüglich eines Piezoelements warte ich noch.

Ok danke, gut zu wissen, dass dieser MHz-Bereich richtig ist.

Ja genau ich versuche jetzt das mathematisch anzugehen und schaue wie das alles Zusammenhängt (Frequenz, Schallintensität, Eigenfrequenz des Schwingers, usw.)
Ich fühle mich etwas überrumpelt mit dem Informationsberg aus der Fachlitratur.

Ich werde berichten wenn ich weiß wie ich genauer vorgehe.

Moppi
19.11.2018, 12:26
Hallo HansP,

Ultraschall-Durchflussmesser sollen prinzipiell nicht für die Volumenstrommessung von destilliertem Wasser oder Trinkwasser geeignet sein. Eine Erfassung von reinen Flüssigkeiten soll nur möglich sein, wenn diese belüftet werden und Bläschen bilden.

Guckst Du bitte hier: https://www.omega.de/prodinfo/ultraschall-durchflussmesser.html

MfG
Moppi

HansP
19.11.2018, 13:06
Hallo Moppi,

das gilt nur für Ultraschallsensoren, die mit dem Doppler-Verfahren arbeiten, also die Frequenzverschiebung als Maß für den Durchfluss nutzen.

Bei dem Laufzeitdifferenz-Verfahren wird die unterschiedliche Laufzeit von Ultrschallsignalen verwendet. Das Signal mit dem Strom bewegt sich schneller als das Signal gegen den Strom. Partikel und Luftblasen verursachen dann eher Störsignale.

Gruß
Hans

Moppi
19.11.2018, 13:26
Dann ist gut. Wollte nur nicht, dass Du dich vergaloppierst.

Ceos
20.11.2018, 06:48
Dann ist gut. Wollte nur nicht, dass Du dich vergaloppierst.

Einer der Gründe weswegen ich vorher nach dem Ansatz gefragt habe :D

außerdem ist es ja seine Arbeit und ich wollte dem Lernprozess nicht zu weit vorweggreifen :P

Viel Erfolg dabei, bei uns wars bisher immer nur das Kaloriemetrische Verfahren, weil "einfacher"

HansP
21.11.2018, 08:33
Es ist so, dass tatsächlich auch das Kalorimetrische Verfahren zur Auswahl steht.
Ich soll mich aber jetzt 2 Wochen mit beiden Verfahren beschäftigen und erörtern welches Verfahren am vielversprechensden für das Unternehmen ist.

Noch eine Frage zum Verständnis.
Wenn ich das jetzt richtig verstanden habe, darf die Wellenlänge maximal so groß sein wie der Durchmesser des Rohres oder?
Wenn die Wellenlänge größer wäre als das Rohr würde man nichts messen?

Ceos
21.11.2018, 11:11
darf die Wellenlänge maximal so groß sein wie der Durchmesser des Rohres oder

Sinnvollerweise ja, da kommt es aber auch auf das Medium an wegen der Schallgeshwindigkeit durch das Medium ... bei 2Mhz sollte man aber DEUTLICH darunter liegen, hier spielt der Körperschall eher eine Rolle.

Kurzgeasgt beim Kaloriemetrischen Verfahren kannst du nur einen relativen Flow messen, du baust den Sensor ein, machst dann eine Kalibrierung für min und max und bekommst dann einen Prozentwert zwischen den Grenzen.

Beim Ultraschallverfahren bin ich mir da zwar nicht 100% sicher aber ich denke damit kann man absolute Geschwindigkeitswerte bekommen. Und bei bekanntem Querschnitt kann man dann bequem auf die Menge umrechnen ohne vorher eine Kalibirierfahrt zu machen.

fliesskomma
17.02.2019, 16:49
Hallo Hans,
grundsätzlich, zur Anwendung von Ultraschallsensoren, gibt es Zusammenhänge von Frequenz, Schalleistung/Wirkungsgrad und dem "Klingeln", also das Nachschwingen auf der Resonanzfrequenz.

Viele Entfernungsmessungsverfahren arbeiten nach dem Hüllkurvenverfahren. Damit ist die zeitlicheZuordnung zwischen Sende-, und Empfangssignal schwierig. Vertut sich der Hüllkurvendemodulator, gibt es Abweichungen mit einem Vielfachen einer Periode. Also bei 1MHz Transducern wären das 1, 2, n µs. Das ist auch rausrechenbar. Die billigen 40kHz Transducer beispielsweise brauchen etwa 8 Sendeimpulse, damit das Sendesignal ordentlich beim Empfanger ankommt. Der Empfangstransducer sieht dann 60-70 Schwingungen, die aussehen, wie ein gestrecktes Spermium. Die Hüllkurvenmessung erfolgt am Kopf des Spermiums für etwa 10 Perioden. Bei diesen 40kHz ist der Periodenversatz bei Fehlmessungen 25µs. Fragt sich, womit sich besser umgehen läßt...

Wählst Du Transducer, die weniger nachklingeln (kleiner Resonanz-Güte), brauchen diese mehr Sendeleistung und mehr Empfangsverstärkung. Transducer gleicher Resonanzgüte aber mit höherer Frequenz haben auf jeden fall geringere zeitliche Abweichungen.

Im Laufzeitdifferenzverfahren überlagert die Strömungsfrequenz die Schallgeschwindigkeit von 1500m/s. Strömt das Wasser mit 1 m/s, mißt Du in Hin/Rückrichtung 1499m/s und 1501m/s, also eine Diff von 2m/s, also mußt Du auf 1 Promille genau messen. Für einen Meter benötigt der Schall 1/1500 s = 6,7ms. Die auf 1 Promille aufgelöst = 6,7µs. Die max Auflösung des Arduino mit 62,5ns ist 9,3 mal besser. Das letzte Bit kippt immer, daher bleiben 4,7. Das könnte gerade so gehen. Allerdings, wenn Deine Meßstrecke 10cm und Deine Meßuntergrenze 10cm/s sein sollen, braucht Du die 100-fache Speed beim messen. Und mit dem Arduino? Selbst bei guter low level Programmierung übersteigts die physikalischen Möglichkeiten.

Die Signalerzeugung habe ich Dir im anderen Thread beschrieben. Die Auswertung,... puhh. Das Schnellste was der ATmega328p kann, funktioniert über den Input-Capture. Aber schneller als 1,25µs-Pulse messen habe ich noch nicht geschafft. Und da ist das Jitter schon so groß, wie der Impuls selbst. Vlt gehts mit einem STM32 Prozessor besser (Maple Mini). Der läuft mit 72MHz Takt, glaube ich. Und der läuft auch unter der Arduino IDE.

Wenn Du magst, halte mich auf dem Laufenden. Es interessiert mich.

Viele Grüße, Rainer

HansP
01.03.2019, 06:58
Hallo fliesskomma,

Danke für deine Antwort.
Ich habe schon einen Versuchsaufbau gemacht.
Auf Grund des Aufwands messe ich jetzt die Frequenzdifferenz und nicht direkt die Laufzeit. Das heißt ein Frequenzgenerator steuert den US-Sender an, das empfangene Signal am US-Empfänger wird über einen Operationsverstärker wieder zurück zum Frequenzgenerator geleitet und dient diesem als neues Triggersignal. So entsteht ein Kreislauf. Die Frequenz dieses Signaldurchlaufs befindet sich zwischen 20 kHz und 30 kHz und wird mit einem Frequenzzähler oder am Oszi erfasst.
Letztendlich ist das ja auch die Laufzeit. Denn mit steigender Strömungsgeschwindigkeit steigt die Geschwindigkeit des US-Signals und die Frequenz des Signalkreislaufs steigt. Umgekehrt sinkt sie.

Also die Physik dahinter habe ich bereits nachgewiesen, allerdings gibt es starke Schwankungen, deren Ursache noch nicht geklärt ist. Mein Eindruck ist, dass der Frequenzgenerator selbst eine Kurve durchläuft. Also auch bei stehender Flüssigkeit schwankt die Frequenz des Signalskreislaufs. Hängt vielleicht auch mit der Betriebstemperatur zusammen.

Ich habe noch eine Woche Zeit um dahinter zu kommen. Um von einem Durchflussmesser sprechen zu können, müsste ich einen bestimmten Messwert einer bestimmten Durchflussmenge zuordnen können. Aber genau das, funktioniert noch nicht richtig.

Am Wochenende wollte ich das mit Arduino versuchen. Die Laufzeit möchte ich aufaddieren. Also, dass man z.B 1000 Mal das Signal in Strömungsrichtung sendet und die Gesamtzeit misst, minus 1000 Mal gegen die Strömungsrichtung.

Viele Grüße
Hans

Ceos
01.03.2019, 08:13
Ich überlege gerade, ob man das Signal der beiden Messunge nicht irgendwie gegeneinander schalten kann. Ob man da irgendwie das Time of Flight Prinzip enwenden könnte um mehr Auflösung zu bekommen?!

EDIT: Wie empfängst und wertest du denn im Moment das Signal aus?!

EDIT2: Oder vielleicht eine Phasenauswertung!? Aber das ist dann wieder Medienabhängig oder?!

EDIT3: Habe gerade mit einem Kollegen ein wenig theoretisiert ... Phasenauswertung wäre eine Möglichkeit zur Steigerung der Messgenauigkeit, aber technisch nur äußerst aufwendig realisierbar (die Phasendifferenz ist ja abhängig von der Schallgeschwindigkeit im Medium ... wir haben zwar einen konstanten Abstand, aber damit die Messung der Phase nicht ebenfalls von Rauschen beeinflusst werden würde, müsste man eigentlich CW messen und das ginge dann nur mit mit einem MIMO Ansatz)

fliesskomma
01.03.2019, 13:39
Hallo Hans,
das Generatorsignal durchläuft also Sendetransducer-Medium-Empfangstransducer-Verstärker und triggert dann wieder den Ursprungs-Generator?

Was macht der Generator denn, bei einem Triggersignal? Abbrechen und triggersynchron weiter? Oder wie ne PLL solange rumeiern, bis die Frequenz zusammen mit dem Trigger einen Nulldurchgang zeigt? Bei letzterem hättest Du eine Regelschleife die durch Schallgeschwindigkeit und Strömungsgeometrie auf eine passende Frequenz einrastet. Mit all den Regelcharakteristiken, die so ein Regelkreis nunmal aufwirft.

Ich vermute mal, Du machst letzteres. Das ist aber keine Frequenzmessung, das ist vertrakter. Ich erkläre mal...

Du schreibst ganz richtig, mit steigender Strömungsgeschwindigkeit, steigt die Frequenz und vice-versa. Du beschreibst damit einen instationären Geschwindigkeitszustand und damit eine Beschleunigung. Die Frequenz verhält sich also wie die erste Ableitung zur Geschwindigkeit.

Was Du mit Deiner Frequenznachregelung machst, ist letzlich eine Phasenmessung. Und per Regelung hälst Du die Phase auf einem gemäß der Nyquist-Schwingbedingung, günstigen Wert. Würdest Du den Regelkreis an der Triggerung unterbrechen, könntest Du mit dem Oszi am US-ReceiverTransducerVerstärker Dein Eingangssignal um die Laufzeit, phasenverschoben wiederfinden. Allerdings ist die Phasenverschiebung winzigst.

Ich rechne mal
Angenommen Länge der Meßstrecke L=0,2m, F = 30kHz, C(w)=1500m/s, V(w0) = 0m/s, V(w1) = 0,2m/s, V(w2)=1m/s

Durchlaufzeit t(0) für V(w0):
Wellenlänge Lamda = (1500m/s )/ (30000Hz) = 50mm
Da L ein Vielfaches von 50mm ist, kommt am Ende das Signal nach 4 Perioden mit Phasenversatz von 0 Grad wieder raus.
Die Verzögerung beträgt t(0) = L / C(w) = 133,3333µs

Durchlaufzeit t(1) für V(w1):
Strömungsrichtung von 0,2m/s in Meßrichtung -> Die Schallaufzeit sinkt
t(1) = L / (C(w) + V(w1) = 133,1556µs

Durchlaufzeit t(2) für V(w2):
t(1) = 133,2445µs

Die Skalierung wäre also 133,3333µs - 133,2445µs = 888 Nanosekunden je m/s Strömungsgeschwindigkeit.
Der 16MHz Arduino mit 62,5ns ticks, wären das 888/62,5 = 14,2, oder anders herum eine Strömungsgeschwindigkeits- Auflösung von 1/14,2 = 0,071 m/s

Um diese Auflösung hinzubekommen, brauchts meines Erachtens den Input Capture Eingang des Arduinos. Der hat den Vorzug daß er im Falle eine externen Triggerung den momentanen Wert des Timer1 sofort zwischenspeichert. Der ATmega328 hat aber nur einen davon. Also mußt Du ne externe Logik aufbauen die ein Triggersignal z.B. bei jedem neg. Nulldurchgang der Generatorfrequenz an den InputCapture durchläßt. Der InputCapture registriert, speichert den aktuellen Timer1-Wert zwischen. Anschließend sichert sich Deine Software den Timerwert aus dem Register:
timer1Value[2 * i] = ICR1;
Dann schnell die externe Logic mit anderen AusgangsPortBits umschalten, daß sie fortan nicht mehr die Generatorfrequenz auf den InputCapturePin schaltet, sondern daß Empfangssignal. Das Empfangssignal muß natürlich triggerfähig (Rechteck) konditioniert sein. (Fachbegriff für Deinen Bachelor: Signalkonditionierungsabschnitt)
Und dann mißt Du eine ganze Reihe von Empfangsnulldurchgängen, sagen wir für eine Millisekunde und speichest die Werte in einem Array. Heißt 30 Triggerwerte bei 30 kHz. ...Weil angenommen, daß in dieser kurzen Zeit keine Strömungsbeschleunigung stattfindet. Dann wirst Du feststellen, wenn Du vom ersten Empfangstriggerwert eine Sendeperiode abziehst, vom nächsten 2 Perioden und so weiter, bleibt jedesmal der Phasenversatz übrig. Also mach das, bilde den Mittelwert aus den Phasenvesätzen und rechne das nach obigen Mustern auf die Flußgeschwindigkeit um.

Beim Timer1 gibts zu beachten, es sind unsigned integer werte (uint16_t). Und wenn, um die Differenz zu bilden der frühere, vom späteren Wert abgezogen wird, stimmt das Ergebnis immer noch, wenn der Timer zwischendurch max. einen Überlauf hatte. Also hier nie mit schlichtem int arbeiten.

Willst Du aber bei Deiner Regelschleife bleiben, mußt Du anstatt nach den Werten t(0), t(1), t(2), nach f(0), f(1), f(2) auflösen, für die sich bei Deiner Meßgeometrie immer der selbe Phasenwert ergibt.

Das ist jetzt aber Deine Aufgabe.

In welchem Fachbereich schreibst Du Deinen Bachelor denn?

Man muß heute ja aufpassen, sonst kann man zumindest kein Politiker mehr werden, wenn Teilergebnisse der eigenen Arbeit im Web gefunden werden. *lach*

Ich wünsche Dir auf jeden Fall viel Erfolg bei allem und berichte mal, bitte dann.
Bedenke immer, der Beweis, ob ein Weg geht, oder ob er auch nicht geht hat akadisch gesehen den selben Wert. Nur wirtschaftlich nicht. Will sagen, beweise lieber akurat und begründet was warum nicht funktioniert und führe dann Plan B auf, der ja Deinen Bachelorumfang überschritten hätte, als beides halbherzig- und doch nicht zum gewünschten Erfolgserlebnis zu bringen. Sprechs am Besten mit Deinem Betreuer ab. Wenns ein wirklicher Wissenschaftler ist, wird er Dir genau das sagen.

Gruß, Rainer

HansP
10.03.2019, 15:00
Hallo, hatte kaum Zeit letzte Woche, habe die Bachelorarbeit jetzt fertig geschrieben und morgen wird gedruckt.
Leider bin ich nicht mehr dazu gekommen, mich weiter mit dem Arduino zu beschäftigen.

@Ceos: Ich werte das aus in Exel-Tabellen. Die Messgeräte haben leider noch keine Computer-Schnittstelle.
Das ist sehr zeitaufwendig tausende von Werten in Exel-Tabellen einzutragen :/

@fliesskomma:

das Generatorsignal durchläuft also Sendetransducer-Medium-Empfangstransducer-Verstärker und triggert dann wieder den Ursprungs-Generator?
Genau, auf der fallenden Flanke des Binärsignals, das vom OPV kommt, triggert der Frequenzgenerator erneut den Ultraschallsender.

Danke für deinen Aufwand.

Ich habe es zwar nicht geschafft einen Messwert einer bestimmten Durchflussmenge zuzuordnen, aber andere wichtige Erkenntnisse herausgefunden.
Die Temperatur des Wassers spielt eine sehr wichtige Rolle, da sich mit steigender Temperatur, Schallgeschwindigkeit ändert. Ca. 2 m/s pro 1°C.
Dementsprechend ändert sich dann auch die Signallaufzeit und die Triggerfrequenz. Dieser Faktor ist mir leider erst am Freitag aufgefallen, aber ich habe es zum Glück noch geschafft, diese Versuche mit in die Bachelorarbeit zu schreiben.
Auf meiner Bachelorarbeit wird dann jemand anders nach mir aufbauen können, vielleicht eher aus dem Bereich Elektrotechnik. Ich bin Maschinenbauer ;)


Ich habe mir schon überlegt, nach meiner BA daran weiter zu forschen um vielleicht wirklich einen Durchflusssensor zu entwickeln.Die Messgeräte sind allerdings etwas teuer.
Die Materialkosten für den Durchflusssensor sind eher gering.
Aber trotzdem fängt ein aktueller Ultraschall-Durchflusssensor zum Kaufen erst ab 2000 € an.


Gruß und danke für die Unterstützung
Hans