mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ultraschall: Fragen zur Auswertung


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich versuche mich immer noch an der Entfernungsmessung.
Hardware, sowohl Sende als auch Empfangsteil funktionieren.

Zum Ablauf des Programms:

zum Zeitpunkt 0 wird ein Signal ausgesandt.
gleichzeitig beginnt die Aufzeichnung des ADC-Wertes

250µs später wird die Aussendung gestoppt
ADC zeichnet nun für ca 35ms den Signalverlauf auf

Ich hab also 140 Messwerte, die ich mal in einem Diagramm
veranschaulicht habe (3 unterschiedliche Entfernungen)

So jetzt habe ich ein paar Schwierigkeiten mit der Auswertung der
Lauf-Zeit:

1. Wie man sehen kann ist am Anfang des Signalverlaufs immer ein
starker Anstieg zu erkennen. Das kommt wohl vom direkten Übersprechen
des Senders auf den Emfpänger. Aber normal müsste ja dann nahezu bei 0
ein Maximum liegen, da ist ja auch der Empfänger eingeschaltet. Warum
dauert es immer ca 750µs ein Maximum? (Rechnerisch wäre bei 3cm Abstand
Sender->Empfängerkapsel ein Wert von ca 200µs real) Dauert es etwas bis
der Sender das Signal aussendet? Falls ja, wo kann ich dann einen
rechnerischen Nullpunkt setzen?

2. Das reflektierte Signal erkenne ich an einem weiteren großen Maxima.
Je größer die Entfernung desto kleiner auf das Maxima. (Kann man schön
in den Diagramm erkennen). Wo aber genau setze ich den Punkt der
Laufzeit? Also am Maxima oder an dessen "Fußpunkt"?

3. Wie mach ich die Auswertung möglichst einfach für einen µC?
Momentan hab ich erste Versuche gestartet das Array einfach nach dem
größten Maxima zu suchen. Das erste Maxima hab ich dabei ignoriert.
Hat da jemand vielleicht eine bessere Idee.

4. Wie Werte ich kleine Abstände aus? Es entsteht wie im Diagramm
ersichtlich ein "breites" Maximum, wie erkenne ich da eine
Signallaufzeit?

Das wär mal fürs erste...
Vielen Dank bereits im Vorraus

MfG Hias

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennst Du --> http://www.eddiem.com/projects/chirp/chirp.htm
Eventuell gibts da ein paar Ideen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schallgeschwindigkeit in Luft ist doch annähernd bekannt. Bei
welchen Messwerten liegen die berechneten Antworten für die drei
Abstände in deinen Experimenten?

Du könntest auch gepulste Signale aussenden und nur die Antwort mit der
gleichen Pulsabfolge berücksichtigen.

Autor: HomerS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
- singular: maximum
- plural :  maxima

als klugscheissender Einstieg.

Deine Messwerte sehen doch gut aus. Daß kein einzelner Peak entsteht
wird wohl an Reflexionen liegen. Empfang erst aktivieren wenn Sendung
vorrüber.

ts

Autor: HomerS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
- singula: --**fu**
ts

Autor: Hias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mein Problem is grundsätzlich wo muss ich die Messung beginnen?
Die Aussendung des Signal beginnt ja dem Signalverlauf zufolge nicht
bei 0. Messe ich von zwischen den beiden Maxima?

@HomerS:
Du sagst den Empfang erst aktivieren wenn Sendung vorrüber...
Wann ist die Aussendung vorüber? Beim ersten Maximum oder wenn das
Signal wieder auf Null liegt. (Nicht ganz Null-Grund Diode)

Danke
Hias

Autor: Malte Ibs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hias,

mach doch eine schöne Meßreihe mit exakt bekannten Abständen. Dann
trägst du die Meßwerte in ein Diagramm ein, machst eine
Ausgleichsgerade durch die Maxima und schaust, wo sie die y-Achse
kreuzt.

Du kannst auch die einzelnen Meßkurven geeignet nebeneinander plotten,
dann kannst du schon visuell einiges darüber lernen, was mit deinem
Signal bei unterschiedlichen Entfernungen passiert.
Google mal nach "Reflexionsseismik".

Gruß
Malte

Autor: Qwerty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch mal mit US rumgespielt, die Auswertung allerdings in
Hardware durch Filterung und einen Schmitt-Trigger "vorbereitet".
Funktionierte ganz ordentlich. Man hat dann eben kein analoges
Eingangssignal mehr, sondern wartet auf eine Flanke vom ST, was die
Auswertung extrem vereinfacht.

Den Nahbereich habe ich einfach so definiert: Messung "in den freien
Raum", d.h. ohne Echos. Dann sieht man im empfangenen Signal nur das
direkte Übersprechen beim Senden. Diese Zeit habe ich gemessen und mit
einem kleinen Zuschlag versehen in die Software eingebaut. Der
Empfänger wurde dann erst nach Ablauf dieser Zeit "scharf"
geschaltet. Daraus ergibt sich dann auch die minimal erfassbare
Entfernung (Laufzeit zum Objekt und zurück muss größer sein als die
eingebaute Totzeit). Im absoluten Nahbereich (wenige cm) ist dieses
einfache Verfahren daher nicht unbedingt brauchbar, aber 20 cm bis 1-2
Meter hat gut funktioniert.

Autor: Hias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Qwerty:
Das hört sich gut an.
Hast du da einen Schaltplan oder Quellen?

Ansonsten werd ich mal eine Messreihe aufbauen, wenn keiner weitere
Infos weiß. Und mit dem Nahbereich werd ich wohl auch ein wenig
Tricksen müssen.

Welche genauigkeit erreicht man eigentlich mit US? +- 5cm oder mehr?

Dankeschön!
Hias

Autor: Chris O. (lupin_iii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zumindest zu 1 kann ich etwas sagen. Ich habe mal etwas mit diesen
standard 40kHz Sender Empfängern experimentiert. Mit einem
Mikrokontroller habe ich wählen können, wieviele 40kHz-Schwingungen
(von 2 aufwärts) gesendet werden. Der Empfänger (und der µC Ausgang für
das Sendesignal) war direkt am Oszi angeschlossen.

Die maximale Amplitude hat der Empfänger erst nach mindestens 25
Schwingungen gehabt, was schonmal einen Offset von 0,6ms ergibt. Das
passt recht gut zu deinen 750-200µs. Wenn man das nicht in der
Berechnung berücksichtigt, macht das einen Unterschied von 20cm in der
Entfernungsmessung. Du wirst den Entfernungsmesser mit einer Testreihe
eichen müssen (der Unterschied ist ja unabhängig von der Entfernung
konstant).

Das größere Problem, das ich gesehen habe, ist das empfangene Signal
wie du es in Punkt 2 ansprichst. Oft erzeugt ein Gegenstand, der 20-30°
neben der Senderichtung aber dafür näher ist, eine höhere Amplitude als
eine Wand etwas weiter dahinter, sogar wenn man diese genau
rechtwinkelig trifft.

Was ich außerdem gemerkt habe: in einem Raum (25m²) ändert jede
Bewegung das empfange Signal ziemlich stark, sogar wenn man sich hinter
dem Sender/Empfänger befindet. Teilweise kann man mit einer einfachen
Handbewegung durch Reflexionen neue Maxima erzeugen bzw. ander
auslöschen. Da noch das richtige Signal für einen herauszufinden, sieht
ziemlich schwierig aus.

Autor: Thilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne das Problem von Füllstandsmessungen. Die 'Blockdistanz' (der
Peak am Anfang) resultiert aus den Materialien in denen Sender und
Empfänger untegebracht sind. Je härter dieses Material, desto kürzer
die Blockdistanz, das Ändert sich auch bei Alterung dieses Materials.
Die Temperatur geht auch zu einem wesentlichen Anteil in die Berechnung
ein (Googeln!). Dann treten Störechos (je nach Beschaffenheit des
Messobjektes) auf, die ausgeblendet werden müssen. Hierzu ist jeweils
eine individuelle Einstellung notwendig! Dieses Thema ist von ziemlich
vielen Parametern abhängig, da hat so mancher schon seine Doktorarbeit
drüber geschrieben!

Autor: Qwerty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hias: Meinen Schaltplan finde ich nicht mehr, aber er war sehr stark
von diesem hier inspiriert:

http://www.roboterwelt.de/info/schalt/usmodul/index.htm

Den 40-kHz-Sender kann man natürlich auch im uC realisieren. Ich hatte
dann hinten den letzten Buffer-OP gegen einen Komparator in
Schmitt-Trigger-Beschaltung getauscht, mit abgleichbarem Schwellwert.
Hintergrund war, dass ich keinen ADC im uC hatte und diesen auch nicht
mit komplexer Signalformauswertung auslasten wollte. So habe ich nur
mit einem Capture-Interrupt die Flanken der Echos ausgewertet.

Leider konnte ich die fertige Schaltung aus Zeitmangel nie in einem
kleinen Roboter (für den sie mal gedacht war) testen. Für eine Art
"presence sensing" im Bereich zwischen 20 und 70 cm hätte es aber
sicher auf alle Fälle gereicht (mit recht exakter Entfernungsangabe,
aber fehlender horizontaler Auflösung durch den weiten
Erfassungsbereich).

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.