PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Messergebnis vom SRF02 richtig interpretieren



toju80
27.03.2008, 20:34
Hallo zusammen,

ich hoffe ihr könnt mir bei folgender Frage/Problem helfen!
Und zwar ist es mir nicht ganz klar wie der SRF02 sein Ergebnis ausgibt?!?

Der Sensor wird von einem µC über die RS-232 (ist richtig initialisiert!) angesteuert (ID: 0x00, Befehlscode: 0x54) und das Ergebnis direkt aufm Terminal ausgegeben.
Wenn ich es richtig verstanden hab, müsste jetzt das Ergebnis in zwei Bytes (zuerst das High-Byte?!?) in cm ausgegeben werden?!?

Als Ergebnis bekomme ich für 86cm H-Byte (erstes Byte)=250dec und L-Byte (zweites Byte)=87dec, für 47cm H-Byte=248 und L-Byte 62, für 34cm H-Byte=250 und L-Byte=32!

Weiss nicht so recht wie ich das interpretieren soll! Wer kann mir helfen?

Beste Grüße und vielen Dank;)…

linux_80
27.03.2008, 21:03
Hallo,

schon mal im Wiki gesucht:
https://www.roboternetz.de/wissen/index.php/Ultraschallsensor_SRF02_am_RN-Board

toju80
27.03.2008, 21:08
Hallo linux_80.

klar habe ich da schon gesucht. Aber wie das Ergebnis zu interpretieren ist, ist mir leider immer noch nicht klar:(....

uwegw
27.03.2008, 21:22
Irgendwie kommen mir deine Messwerte komisch vor. Das Ergebnis berechnet sich als H*256+L. Da kommt dann mit deinen Werten was im Bereich von 63000 raus. Irgendwas passt da noch nicht...

PS: die Lowbytes sehen ja schon mal fast richtig aus. Nur der 47cm ist ein Ausreißer (Messfehler?), die beiden anderen sind im Rahmen der Messungenauigkeit schon so in Ordnung. Das Highbyte müsste bei Entfernungen unter 256cm aber immer Null sein!

linux_80
27.03.2008, 21:26
Aus den Werten von Register 2 und 3 muss man eine 16Bit Integer draus machen, das ergibt dann die Entfernung in der Einheit mit der man die Messung gestartet hat.

Das mit der Einheit sollte passen, bei RS232 ist $54 für cm.

Hast Du die 2 Stop-Bits berücksichtigt ?

toju80
27.03.2008, 21:38
hmm irgendwas stimmt da wohl wirklich nicht!
Hab mich auch schon gewundert warum der Wert des ersten Bytes (H-Byte) so groß ist.
Ja messe in cm (Befehlscode: 0x54).
ch muss doch lediglich den Sensor richtig adressieren und den entsprechenden Befehlscode senden und bekomme dann zwei Bytes mit dem richtigen Ergebnis zurück oder?!? Dieses habe ich wie gesagt über ein Terminalprogramm ausgegeben und die oben genannten Ergebnisse bekommen.
Müsste nicht für z.B. 100cm im H-Byte 00000000b stehen und im L-Byte 01100100b?!? Oder habe ich ein grundsätzliches Verständnisproblem?

linux_80
27.03.2008, 21:40
Hab grad mein Post oben umgebaut,
mit der Frage zu den Stop-bits.

toju80
27.03.2008, 21:44
jep die 2 Stopbits sind gesetzt! Hab vorher die Kommunikation auch sicherheitshalber getestet => Kommunikation funktioniert einwandfrei! Nur die Ergebnisse sind für mich nicht verständlich!?!

toju80
28.03.2008, 10:56
Hallo,

ich habe gerade die Pegel von dem SRF02 mit dem Oszilloskop überprüft. Die Pegel waren absolut wie erwartet! => Fehler bei der Übertragung der Daten an das Terminal-Programm…
Vermutung: Man kann den SRF02 nicht direkt über einen MAX-232 mit dem PC verbinden?!?
Also werde ich im nächsten Schritt wieder die Daten über den µC auslesen…

Noch ne Frage zu der Genauigkeit des SRF02. Nach ersten Tests (mit Oszilloskop) scheint mir im Bereich von 20-100cm mindestens ein Fehler von 5-10% aufzutreten! Kann das jemand bestätigen bzw. welche Genauigkeit ist zu erwarten?

ikarus_177
28.03.2008, 18:43
bezueglich genauigkeit: ich habe gehört, dass ultraschallsensoren bei weitem nicht so genau gehen wie ir-sensoren.

ist es möglich, die genauigkeit irgendwie zu verbessern?

lg
ikarus_177

uwegw
28.03.2008, 20:04
Meine SRF05 und SRF08 messen auf etwa ein bis zwei Zentimeter genau. Und die Abweichung des low-Bytes deiner Messwerte liegt ja auch in diesem Bereich.

Aber wie hast du die Messwerte mit dem Oszi ermittelt???

toju80
28.03.2008, 21:15
Hi,

ich habe mit meinem µC die entsprechende ID und Befehlscode gesendet (s. oben) und dann die Antwort mit dem Oszi an dem Tx vom SRF02 ausgelesen. Dadurch kann man sich die einzelnen Bits genau anschauen und auf das entsprechende Ergebnis schließen. (Bei einer Baudrate von 9600 ist jedes Bit ungefähr 100µs lang).

Mir ist aber leider immer noch nicht ganz klar warum mein Terminalprogramm so n „Mist“ rausgibt?!?

uwegw
28.03.2008, 22:46
Ach so, nen DSO.
Also passen die gesendeten Bitmuster nicht zur Anzeige am PC?