Forum: Mikrocontroller und Digitale Elektronik Berechnung der Entfernung mit SRF02


von Paulchen (Gast)


Angehängte Dateien:

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

von STK500-Besitzer (Gast)


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.

von Paulchen (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.