daviid
25.08.2010, 23:13
Hallöchen,
Ich hab seite heute folgenden US-Sensor:
http://www.watterott.com/de/Parallax-PING-Ultrashall-Entfernungsmesser
Hier das Datenblatt: http://www.pololu.com/file/0J214/PING_documentation.pdf
Hört sich alles nich so schwer an, es gibt auch einen ähnlichen Sensor, den Srf05 über den es einen Artikel im RN-Wissen zur Auswertung gibt:
http://www.rn-wissen.de/index.php/Ultraschall_SRF05_an_RN-MiniControl
Hab den Code teilweise übernommen, so sieht er aus:
$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 19200
Declare Sub Serial0charmatch()
Config Serialin = Buffered , Size = 30 , Bytematch = 13
Enable Interrupts
Const Cmconstant = 2260
Dim Cmdistance As Word
Dim Zeitmessung As Word
Config Portd.2 = Output
Print "Startup"
'Hauptschleife
Do
Portd.2 = 0 'Port Low
Pulseout Portd , 2 , 20 'Min. 10uS Impuls senden
Pulsein Zeitmessung , Pind , 2 , 1
'Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
Cmdistance = Zeitmessung * Cmconstant 'Umrechnen in Zentimeter
Print "Zeit: " ; Zeitmessung ; " Entfernung: " ; Cmdistance ; " cm"
Portd.2 = 0
Wait 1
Loop
End
Sub Serial0charmatch()
Local Incoming_data As String * 30
'Daten vom Buffer auslesen
Input Incoming_data
'Ausgelesene Daten zurück schicken
Print Incoming_data
End Sub
Sollte nach meinem Verständnis eigentlich funktionieren, nur was mir nicht klar ist, in was für einer Einheit Pulsin das Ergebnis liefert.
Aber das ist auchmal egal, hauptsache es sollte überhaupt was gemessen werden.
Allerdings funktioniert die Messung ein einziges mal, und danach kommt auf der RS232 Schnittstelle immer nurnoch 0 an.
Hat jemand ne Idee warum das nur einmal geht, und die Zeit ändert sich auch und wird kleiner je näher ich was an den Sensor ranstell.
Und vor allem wie muss ich vom Pulsin Ergebnis in CM umrechnen würde mich interresieren.
Gruß
Ich hab seite heute folgenden US-Sensor:
http://www.watterott.com/de/Parallax-PING-Ultrashall-Entfernungsmesser
Hier das Datenblatt: http://www.pololu.com/file/0J214/PING_documentation.pdf
Hört sich alles nich so schwer an, es gibt auch einen ähnlichen Sensor, den Srf05 über den es einen Artikel im RN-Wissen zur Auswertung gibt:
http://www.rn-wissen.de/index.php/Ultraschall_SRF05_an_RN-MiniControl
Hab den Code teilweise übernommen, so sieht er aus:
$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 19200
Declare Sub Serial0charmatch()
Config Serialin = Buffered , Size = 30 , Bytematch = 13
Enable Interrupts
Const Cmconstant = 2260
Dim Cmdistance As Word
Dim Zeitmessung As Word
Config Portd.2 = Output
Print "Startup"
'Hauptschleife
Do
Portd.2 = 0 'Port Low
Pulseout Portd , 2 , 20 'Min. 10uS Impuls senden
Pulsein Zeitmessung , Pind , 2 , 1
'Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
Cmdistance = Zeitmessung * Cmconstant 'Umrechnen in Zentimeter
Print "Zeit: " ; Zeitmessung ; " Entfernung: " ; Cmdistance ; " cm"
Portd.2 = 0
Wait 1
Loop
End
Sub Serial0charmatch()
Local Incoming_data As String * 30
'Daten vom Buffer auslesen
Input Incoming_data
'Ausgelesene Daten zurück schicken
Print Incoming_data
End Sub
Sollte nach meinem Verständnis eigentlich funktionieren, nur was mir nicht klar ist, in was für einer Einheit Pulsin das Ergebnis liefert.
Aber das ist auchmal egal, hauptsache es sollte überhaupt was gemessen werden.
Allerdings funktioniert die Messung ein einziges mal, und danach kommt auf der RS232 Schnittstelle immer nurnoch 0 an.
Hat jemand ne Idee warum das nur einmal geht, und die Zeit ändert sich auch und wird kleiner je näher ich was an den Sensor ranstell.
Und vor allem wie muss ich vom Pulsin Ergebnis in CM umrechnen würde mich interresieren.
Gruß