SDP3x Airspeed Sensor Broken on CANbus

Using Arduplane 4.0.9 and the latest canbus firmware it seems the math for this airspeed sensor is off. I either get zero for my airspeed or NaN showing up in mission planner.

Has anyone else seen this? Is anyone else trying to use the SDP3x on CAN bus?

The only two fields used from the RawAirData message are differential_pressure and static_air_temperature. The others are deliberately marked as nan as the sensor has no way to know the right value and nan is the UAVCAN marker for “don’t know” for floats.
In your screen shot both of those required fields are OK.
I fly a dual airspeed setup myself, with a DLVR on CAN and a SDP3x on I2C, and the SDP3x driver is working fine.
Can you post a log showing your issue?

Sure thing. I should be able to post it shortly. Do you want anything other than the .bin? Any CANgui captures?

Hey Tridge, I’ve attached a short .bin file and my f303 Can node parameters. I really appreciate you taking a look. Thanks a lot. Canbus_params.txt (1.7 KB) sdp3x_can_issue.BIN (985.1 KB)

Hardware: mRo X21-777 Software: ArduPlane V4.1.0beta4 (3de5ca6e)

Hello @tridge ,
I want to install dual airspeed sensor on my quadplane . Could you please advice me how to do setting on Mission planner parameter to make it up and running. Thank you…

@Autonomost thanks for the logs! I found the problem. The SDP3x needs a barometric pressure reading to do its corrections. You AP_Periph node looks like it doesn’t have a baro (it needs to be a local baro).
I’ve done a PR here:


that makes it use the uncorrected pressure if there is no baro. That should work, but it won’t be as accurate as you would get if you have a baro.

Thanks a lot! I’ll compile this in tomorrow and test it out.

When you say it needs a local baro - if I had something else on CAN with a baro then it would work? I take it CAN devices can’t communicate with the baro on the autopilot?

In regards to accuracy - how off will it potentially be?

they can’t at the moment, but that could be added in the future

as long as you aren’t flying at very high altitudes it should be fine. The impact will be that the required ARSPD_RATIO will vary (slowly) with altitude.

Perfect. Seems like this will work just fine then.

Last thing, when you say “very high” altitudes what sort of bound are you putting on that. Greater than a few thousand feet?

I will work on getting a baro onto the CAN bus in the meantime.

Thanks a lot tridge!

it would need to be on the same can node, so an i2c baro. We don’t yet take the baro pressure from a different node