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
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.
- 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
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
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
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.
@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
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.
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!
@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).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.