Berechnung der Entfernung mit SRF02

Gast #7134947
Lesenswert?

Hallo
Im Datenbaltt des SRF02 (deutsche Übersetzung) wird die Berechnung der 
Entfernung mit dieser Formel berechnet:

Entfernung = (Register 2 + 256) + Register 3

(Siehe Anhang)

In einer Doku von Heinrich wird eine andere Formel verwendet:

Entfernung = 255 x HByte + LByte

Zur Messung verwende ich diesen Code_
1
i2c_start(srf02);      // I2C Slaveadresse übergeben ( Schreibzugriff )
2
  i2c_write(0);          // Register 0 wählen ( Befehls_Register )
3
  i2c_write(0x51);        // Messung starten in cm
4
  i2c_stop();
5
  _delay_ms(65);          // 65ms Wartezeit bis Messung fertig
6
  i2c_start(srf02);      // I2C Slaveadresse übergeben
7
  i2c_write(2);          // zum auswählen von Register 2 ( Reichweiten
8
  i2c_start(srf02+1);      // I2C Slaveadresse übergeben ( +1 = Lesezugriff )
9
  messung_high = i2c_readAck();  // Register 2 (high) lesen
10
  messung_low = i2c_readNak();  // Register 3 (low)  lesen und stop
11
  messung = (( messung_high << 8) + messung_low);
12
  i2c_stop();
Damit kann ich die Entfernung ziemlich ganau messen. Ein überprüfung 
ergab ca. 20 cm unterschied.
Welche Formel bzw. Berechnung ist den nun korrekt? Leider habe ich im 
Netz nichts dazu gefunden.
Hat jemand Erfahrung damit?
LG Paulchen
Angehängte Dateien:
Gast #7135262
Lesenswert?

Paulchen schrieb:
> Welche Formel bzw. Berechnung ist den nun korrekt? Leider habe ich im
> Netz nichts dazu gefunden.

Die hier:
> Entfernung = 256 x HByte + LByte
> messung = (( messung_high << 8) + messung_low);
ist das selbe.

Mit beiden Methoden wandelt man zwei Bytes in ein Word (16 Bit) um.
Die "255 x HByte" ist auch falsch.

Die andere enthält einen Tippfehler ("+" statt "*").
Einfach mal drüber nachdenken, was da passiert, anstatt es einfach nur 
dumm abzupinseln.
Gast #7135698
Lesenswert?

Da nach zu urteilen habe ich das richtige verwendet. Habe darüber 
nachgedacht, Bin bloss so erstaunt das der Fehler solange gehalten hat.

STK500-Besitzer schrieb:
> Die andere enthält einen Tippfehler ("+" statt "*").
> Einfach mal drüber nachdenken, was da passiert, anstatt es einfach nur
> dumm abzupinseln.

Habe darüber nachgedacht und nachgerechnet. Mit diesem Fehler ergibt 
sich ein Wert der viel zu gross ist. Deshalb meine Nachfrage.
Danke für die Info.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren