Dual airspeed sensor problem

Hi, I’m using two mRo I2C Digital Airspeed Sensor MS4525DO on a quadplane.
If I connect only one of these two sensors, on each sensor, I read 10-11m/s on a constant air flow, so both sensor a giving the same speed.

The problem: If I connect the two sensors, I read 10-11m/s on one sensor and 2-4m/s on the other
If I disconnect the one which read 10-11m/s, I get a lower value from the other sensor: 5-6m/s

Very strange:

  • The sensor which read 10-11m/s is always the same one even if I change the ARSPD_PRIMARY value or if I change the ARSPDx_BUS, ARSPDx_TUBE_ORDER, change the position of the I2C plug on the I2C hub
  • when I set ARSPD2_USE and ARSPD2_TYPE to 0, I still read more than 20m/s if I blew in the pitot tube of the both sensors

I’ve used theses parameters:
|ARSPD_AUTOCAL|0|
|ARSPD_BUS|1|
|ARSPD_PIN|0|
|ARSPD_PRIMARY|0|
|ARSPD_PSI_RANGE|1|
|ARSPD_RATIO|2|
|ARSPD_SKIP_CAL|0|
|ARSPD_TUBE_ORDER|2|
|ARSPD_TYPE|1|
|ARSPD_USE|1|
|ARSPD2_AUTOCAL|0|
|ARSPD2_BUS|1|
|ARSPD2_PIN|0|
|ARSPD2_PSI_RANGE|1|
|ARSPD2_RATIO|2|
|ARSPD2_SKIP_CAL|0|
|ARSPD2_TUBE_ORDR|2|
|ARSPD2_TYPE|1|
|ARSPD2_USE|1|

Might you need to put the second 4525DSO on a second I2C bus?

I don’t believe the system is able to automatically assign I2C addresses, and unless you got a sensor with an alternate address, I’d foresee interference of some sort.

Thanks Evan, what to you mean by second I2C bus ?
I’m using a pixhawk 2.1 cube

You mean the I2C bus on GPS ports ?

Yes, GPS 1 Specifically.

GPS 2 uses the same bus as the I2C 2 port.

Hi, I’ve tried to connect one sensor on I2C1 (GPS1), the other on I2C2 :

  • If only one sensor is connected, both sensors are working

-The ARSPD_PRIMARY has no effet on the sensor which is used for mission planner air speed, the one connected on GPS1 is always used

  • changing the value of ARSPDx_BUS has no effect also

  • If the GPS1 sensor is disconnected, the air speed value is zero and blowing into the sensor connected on I2C2 has no effect on the air speed

For each test I have rebooted the flight controller

I hate to run in circles, but could you post a new parameter file with your latest configuration?

I also run dual airspeed sensors, but they’re different types (UAVCAN + 4525DSO, or 4525DSO + SDP33) so it may be more odd than I think.

Here is the parameter file
T4 dual airspeed.param (14.8 KB)
he quadplane is not flying for the moment
which airspeed sensor is UAVCAN ?

Okay, so Port I2C2 corresponds to bus 0 (This was once the internal bus of the Pixhawk 1).

So you should have ARSPD_BUS = 0 (This should be your primary, connected to I2C2, so set ARSPD_PRIMARY = 0)
and ARSPD2_BUS = 1 (This will be your secondary, connected to GPS1 I2C pins).
When you’ve a chance to try that, let me know what happens.

The UAVCAN sensor is one I’m working on (well, testing) with @olliw42 as part of his UC4H project.

I’ve tried these settings, mission planner is reading the one connected on GPS1, if I disconnect this one, MP is reading zero even if I blew into the pitot connected to I2C2

I’m beginning to run out of things to try - nonetheless, I would finally try swapping the two sensors and retesting the same behavior.

At last, enable Log_disarmed ( = 1) and provide the DataFlash log resulting from the above test. If it’s something wrong with the background logic, that should show it.

EDIT: Here are some instructions if you’ve not used DataFlash logs before.

Thanks for your help, here is the dataflash https://www.dropbox.com/s/dawpy1id63ta7x5/00000003.BIN?dl=0
, I blew 5 second (20-25m/s) into the one connected to GPS1 then wait 10s and disconnect the GPS1 plug and blew into the second sensor during 5s

Well, this is unexpected.

It is difficult to tell whether it is seeing the two separate sensors or not, as the differences in traces may be due to offset sampling times . . . Regardless, it seems that the data from one is being applied to both ARSPD and ARSPD2, as both respond to the first impulse, and fail with removal of GPS1.

I did a quick test on a Pixhawk 2.1 . . . . And setting ARSPD_BUS to any value resulted in seeing the sensor data.
In other words, the “Bus to search for the sensor on” is soft at the most generous definition, and perhaps entirely false. I wonder if ignoring this is how they got around the I2C2 confusion . . .

Either way, it would appear this is a genuine issue. I’ll poke around the code to see if there’s an obvious cause.

Thanks Evan, I hope that the next plane version will solve this problem …

Hi Evan,
Do you know if this issue has been solved on 3.9.8 ?
What sensors can you suggest me to have dual airspeed sensors working reliably on Arduplane ?

Thanks