Two i2C sonars on Rover

Hi,

Maybe someone can give me a hint on how to connect two Maxbotix i2c sonars to Pixhawk? I tried changing the default address of one sonar on the sonar itself and than on Mission Planner as well (RNGFND2_ADDR parameter), but than it just does not work (cannot hear that silent “clicks”).

Hi,

I can’t really help other than generic comments:

  • with I2C all your peripherals need to have different addresses (if they are on the same bus, which in Pixhawk all external I2C devices are), so you are correct in changing the address for a second sonar
  • have you tried connecting just the sonar with the changed I2C address (and change RNGFND_ADDR)? Does it work?

Sorry for late answer, have been experimenting a bit.

No, the sonar does not work if the address is changed.

I am trying to implement the similiar workaround that is done with Lightware I2C devices with changed address and building custom firmware.

Maybe anyone know, how to differ sonar firing times, for sonars not to “see” each other, like it is done with analog sonars …???

Ah we are always using the default address: https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarI2CXL.cpp#L40

You can open an issue in our GitHub, but I can’t give any guarantee when it will be fixed.

Regarding firing times, I think we don’t do that even for analog sonars, but I might be wrong. Driver instances are independent and it won’t be easy to synchronize them in a good way - it’s possible to do, but probably not in a very clean way.

I am rewriting now the driver myself, if I’ll succeed I’ll push my code to github than.

Thanks for help!

1 Like

Hi

I try use two rangefinder I2C Maxbotix.I I changed second sensor adress but pixhawk only works with 0x70 ,112" default address.

Did You solve problem?

Thanks
Pawel