robo_alex
29.12.2009, 18:37
Hallo Leute,
Habe mir einen Ultraschallabstandssensor nach diesem (http://www.roboterwelt.de/images/usmod/usmod.gif)Schaltplan gebaut. Sender und Empfänger funktionieren soweit auch ganz gut.
Probleme hab ich, dass er bei der Entfernungsmessung Probleme beim Auswerten der Signallaufzeit hab. Mein Code sieht derzeit so aus:
Config Timer1 = Timer , Prescale = 256
Config Timer0 = Timer , Prescale = 1
On Timer0 Stop_us
Config Adc = Single , Prescaler = Auto
Start Adc
Enable Timer1
Enable Timer0
Enable Interrupts
While Timer1 < 1000
Empf_wert = Getadc(0)
If Empf_wert > Ewert_max And Timer1 > 70 Then
Counter_dist = Timer1
Ewert_max = Empf_wert
End If
Wend
If Ewert_max < 500 Then
Print "kein Hindernis"
Else
Dist = Counter_dist * 0.000032
Dist = Dist * 343
Dist = Dist / 2
End If
Print Dist
Das Prinzip Hinter der Messung soll sein, dass der Zeitpunkt des stärksten Echos Festgehalten wird, welches doch die Signallaufzeit darstellen müsste.
Leider kommen bei den Messungen realtiv willkürliche Ergebnisse raus. (Meistens im Bereich von 60cm, egal wie weit er vor dem Hindernis, einer Wand, steht) Was mach ich falsch/hab ich nicht beachtet?
mfg
Alex
Habe mir einen Ultraschallabstandssensor nach diesem (http://www.roboterwelt.de/images/usmod/usmod.gif)Schaltplan gebaut. Sender und Empfänger funktionieren soweit auch ganz gut.
Probleme hab ich, dass er bei der Entfernungsmessung Probleme beim Auswerten der Signallaufzeit hab. Mein Code sieht derzeit so aus:
Config Timer1 = Timer , Prescale = 256
Config Timer0 = Timer , Prescale = 1
On Timer0 Stop_us
Config Adc = Single , Prescaler = Auto
Start Adc
Enable Timer1
Enable Timer0
Enable Interrupts
While Timer1 < 1000
Empf_wert = Getadc(0)
If Empf_wert > Ewert_max And Timer1 > 70 Then
Counter_dist = Timer1
Ewert_max = Empf_wert
End If
Wend
If Ewert_max < 500 Then
Print "kein Hindernis"
Else
Dist = Counter_dist * 0.000032
Dist = Dist * 343
Dist = Dist / 2
End If
Print Dist
Das Prinzip Hinter der Messung soll sein, dass der Zeitpunkt des stärksten Echos Festgehalten wird, welches doch die Signallaufzeit darstellen müsste.
Leider kommen bei den Messungen realtiv willkürliche Ergebnisse raus. (Meistens im Bereich von 60cm, egal wie weit er vor dem Hindernis, einer Wand, steht) Was mach ich falsch/hab ich nicht beachtet?
mfg
Alex