anfaenger201
03.08.2010, 15:35
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.
[/u]
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.
[/u]