exaware
28.01.2011, 18:23
Hallo zusammen,
erstmal wünsche ich allen schonmal ein erholsames Wochenende. Nun zu meinem Problem. Ich benutze auf meinem Bot den US SRF02 und kommuniziere mit diesem per I2C. Die Messwerte sind soweit in Ordnung, aber sobald der Abstand zwischen Sensor und Objekt unter 15 cm liegt, bekomme ich total falsche Werte, zwischen 0 und 255 kann jeder Wert auftreten. Dann habe ich mir die Messwerte in µS schicken lassen, gleiches Problem. Ich denke das ist ein Problem vom Sensor. Ich weiß das der Sensor nicht weniger als 15cm messen kann, aber normalerweise sollte in solchen Fällen eine 0 verschickt werden, damit man auch erkennnen kann dass die Entfernung kleiner 15 cm beträgt.
Ist das bei euch auch so und gibt es eine Möglichkeit dieses Problem zu lösen?
Hier mal meine Funktion (ich benötige nur das lowbyte)
uint8_t get_distance(void)
{
uint8_t highbyte,lowbyte;
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(0);
i2c_write(81);
i2c_stop();
uint8_t temp=255;
while(temp==255)
{
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(0);
i2c_stop();
i2c_rep_start(SRF02_ADRESSE+I2C_READ);
temp = i2c_readNak();
i2c_stop();
}
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(2);
i2c_stop();
i2c_rep_start(SRF02_ADRESSE+I2C_READ);
highbyte = i2c_readAck();
lowbyte = i2c_readNak();
i2c_stop();
return lowbyte;
}
Habe bereits gegoogelt aber konnte nichts hilfsreiches finden.
Bin gespannt auf eure Vorschläge. Danke.
erstmal wünsche ich allen schonmal ein erholsames Wochenende. Nun zu meinem Problem. Ich benutze auf meinem Bot den US SRF02 und kommuniziere mit diesem per I2C. Die Messwerte sind soweit in Ordnung, aber sobald der Abstand zwischen Sensor und Objekt unter 15 cm liegt, bekomme ich total falsche Werte, zwischen 0 und 255 kann jeder Wert auftreten. Dann habe ich mir die Messwerte in µS schicken lassen, gleiches Problem. Ich denke das ist ein Problem vom Sensor. Ich weiß das der Sensor nicht weniger als 15cm messen kann, aber normalerweise sollte in solchen Fällen eine 0 verschickt werden, damit man auch erkennnen kann dass die Entfernung kleiner 15 cm beträgt.
Ist das bei euch auch so und gibt es eine Möglichkeit dieses Problem zu lösen?
Hier mal meine Funktion (ich benötige nur das lowbyte)
uint8_t get_distance(void)
{
uint8_t highbyte,lowbyte;
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(0);
i2c_write(81);
i2c_stop();
uint8_t temp=255;
while(temp==255)
{
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(0);
i2c_stop();
i2c_rep_start(SRF02_ADRESSE+I2C_READ);
temp = i2c_readNak();
i2c_stop();
}
i2c_start_wait(SRF02_ADRESSE+I2C_WRITE);
i2c_write(2);
i2c_stop();
i2c_rep_start(SRF02_ADRESSE+I2C_READ);
highbyte = i2c_readAck();
lowbyte = i2c_readNak();
i2c_stop();
return lowbyte;
}
Habe bereits gegoogelt aber konnte nichts hilfsreiches finden.
Bin gespannt auf eure Vorschläge. Danke.