mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ultraschallmessung zu ungenau


Autor: Joe Joe (anfaenger2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, realisiere gerade eine Abstandsmessung mit einem HC-SR04 (nachbau 
von Devantech srf04?) der an einem Atmega32 hängt.
Der sensor hat einen Triggereingang und einen Echoausgang, die 
Entfernung berechnet man mithilfe der Laufzeit des Echosignals und der 
halben Schallgeschwindigkeit oder die Laufzeit in mikrosec. /58.
Der Quellcode ist in Bascom geschrieben und mithilfe vo pulsein pulseout 
steuere ich den Sensor an.
Es klappt auch ich bekomme werte vom Sensor zurück, soweit so gut.
Leider komme ich nicht auf die richtigen Abstände wenn ich die 
Signallaufzeit * 344M/s /2 nehme auch die Laufzeit /58 bringt keine 
Verbesserung, ich dachte es würde am Pulsein Signal liegen es wird ja in 
10us ausgegeben, habe also diese Laufzeit also esrstmal *10 genommen, 
auch nichts.
Habe mir dan die Formel so umgestellt das ich bei einer Messunch von 
20cm auf den richtigen Abstand komme, dachte ich sei schon am Ziel, die 
Werte sahen vielversprächend aus. Doch dann musste ich feststellen, dass 
sobbald ich Distanz von 20 auf z.B. 70cm verschiebe die Ergebnisse nicht 
mehr ganz richtig waren, eine Toleranz von 2-3cm hab ich immer oft auch 
mehr.
Ich habe versucht die Variablen zur Berechnung der Laufzeitz zu 
vergrößern, also die Laufzeit des Signals nicht nur *172 sodern mal 
*1000000... und dieses Ergebniss dann so zu teilen, dass ich auf die 
entsprechende Entfernung komme, habe den Sensor auch auf verschiedene 
Entfernungen kalibriert, keine verbesserung.
Ich könnte mir höchstens vorstellen das es an der Tacktfrequenz meines 
Mega32 liegt, er läft auf etwas über 14MHz, kann das denn soeine 
ungenauigkeit bedingen?
Habe auch versucht ihn auf 1MHz laufen zu lassen, half auch nichts.
Muss dazu sagen das ich mit Bascom und einem USBAVP arbeite, da das ja 
nicht direkt geht habe ich AVRDUDE bei Bascom benutzt um programmieren 
zu können.
Jetzt kann ich aber leider nichtmehr an die Fusebits ran um diese 
entsprechend der Frequenz zu ändern.
Danke für die Hilfe.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst einen Timer verwenden um zum Ziel zu kommen. In Bascom wird das 
mit Zeitkritischen Anwendungen sonst nix.

Eine weitere Möglichkeit, die allerdings eine Kalibration erforderlich 
macht wäre die Lineare Interpolation.

Joe Joe schrieb:
> Jetzt kann ich aber leider nichtmehr an die Fusebits ran um diese
> entsprechend der Frequenz zu ändern.

Dann solltest du dich entweder um eine besser Programmierumgebung 
bemühen oder nicht die billigsten Microcontroller verwenden...

Und bitte bemüh dich mal richtig zu schreiben. Da wird mir ganz übel 
wenn ich mir deine Rechtschreibung (oder das was davon übrig geblieben 
ist) anschaue. Das hat auch was mit Höflichkeit hier im Netz zu tun. 
Dankeschön =)

Autor: Arne W. (blaueled)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie Michael schon geschrieben hat, solltest du für dein Vorhaben auf 
jeden Fall einen Timer nutzen.

Wenn du deinen timer auf etwa 5,82us einstellst, dann hast du genau 
einen mm Abstand pro Timerauslösung und sparst dir die ganze Rechnerei. 
Dann Zählst du einfach, wieoft dein Timer ausgelöst hat, bis der 
Echoausgang ein Signal ausgibt.

So richtig wird für mich nicht klar, wie du es im Moment zu lösen 
versuchst.

Die Fuses einzustellen ist elementar und ein externer Quarz wäre wegen 
der höheren Frequenz und damit besseren Genauigkeit wünschenswert.

Viel Glück

Autor: Joe Joe (anfaenger2010)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,
ich bin leider noch ein blutiger Anfänger in Sachen AVR und Bascom.
Ich muss mich erstmal etwas mit dem Timer beschäftigen, um mit ihm die 
länge des High-Signal am Echoausgang des Ultraschllmodules zu messen.
Ich sehe jedoch jetzt schon, dass es nicht ganz so leicht wird, wie mit 
dem Pulsein Befehl.
Jedenfalls weiss ich jetzt, woher die beschriebene Ungenauigkeit 
herrühren könnte.
Mich wudert nur, dass ich bereits einige Bascom Quellcodes gesehen habe, 
die genau wie ich, die Signallänge am Echoausgang mithilfe des Pulsein 
Befehles bewekstelligt haben.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu kommt noch, dass deine Annahme, dass die 
Ausbreitungsgeschwindigkeit konstant wäre, nicht stimmt. Durch 
Temperaturschwankungen verändert sich die.

Kalibrieren solltest du immer bei der größten Entfernung, nicht bei der 
kleinsten!

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die größten Probleme sind zum einen die Temperatur, die Luftfeuchte, die 
anderen Bestandteile der Luft usw.

Ein andere weiterer Punkt sind Fehler durch Reflektion, Beugung/ 
Brechung bzw. Streung. Gerade wenn Du mit einem Sender und einem 
Empfänger arbeitest vergrößert sich dieser Fehler.

Nich zu vergessen dass die gesamt Messmethode nur 2 dimensional 
funktioniert....

Viel Erfolg :-)

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.