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