PX4 / PX4-Autopilot

PX4 Autopilot Software
https://px4.io
BSD 3-Clause "New" or "Revised" License
8.5k stars 13.51k forks source link

NXP_FMUK66_v3 - VTOL - Airspeed sensor not recognized #14053

Closed dk7xe closed 4 years ago

dk7xe commented 4 years ago

Describe the bug Holybro PX4 Airspeed sensor not recognized on NXP_FMUK66_v3 with current master / stable release. Airframe: Caipiroshka Duo Tailsitter

To Reproduce Steps to reproduce the behavior:

  1. Drone switched on with Airspeed sensor connected to I2C/NFC port
  2. check Sensor tab in QGC. No airspeed sensor
  3. start mavlik console and enter 'ms5611 start'
  4. message: 'WARN [ms5611] no device on bus x' (2 lines; one for bus 1 another bus 2)

Expected behavior Airspeed sensor is recogniced by PX4 sw

Log Files and Screenshots Always provide a link to the flight log file: Log of v1.10.1 stable - https://logs.px4.io/plot_app?log=d69f0576-9a6f-468f-820b-78af9c5b3264 Log of master - https://logs.px4.io/plot_app?log=1392a9b4-48d5-4f2b-be14-8f0720ce4d59

20200129_110040

Drone (please complete the following information):

Additional context Airspeed sensor is working on an old NXP_FMUK66_v2 board with FW of 2018. Sensor was connected to 3 different NXP_FMUK66_v3 with different FW states (master, stable 1.9.0, stable 1.10.1) but none recognized the sensor. Airspeed sensor was working on NXP_FMUK66_v3 20th of Nov 2019. Something might get broken afterwards. I2C LED board is working on the I2C/NFC connector.

davids5 commented 4 years ago

@dk7xe the ms5611 is a baro. The Holybro sensor is an MS4525. Have you tried staring that driver ms4525_airspeed start -a ? The code is condition on fixed wing and vtol to start the driver here all the changes in that code are years ago. If you send me the sensor I can help debug it.

davids5 commented 4 years ago

@dk7xe You can troubleshoot it with i2cdetect -b <bus number> It should show up when blogged in. at 0x28.

#define I2C_ADDRESS_MS4525DO 0x28 /**< 7-bit address. Depends on the order code (this is for code "I") */

dk7xe commented 4 years ago

Hi David,

result of i2cdetect image

and airspeed start image

It looks like that the driver is not started automatically. And yes it's a VTOL airframe.

After starting the driver manually i got image ..but still no entry on the Sensor Setup tab.

dagar commented 4 years ago

The airspeed circuit breaker parameter CBRK_AIRSPD_CHK` is set. Can you reset it (set to 0), reboot, and try again?

dk7xe commented 4 years ago

Setting CBRK_AIRSPD_CHK back to 0 solved the problem. Either this needs to be described in the user documentation (@hamishwillee at least a warning that if CBRK_AIRSPD_CHK is set,, The sensor driver is not started and no calibration can be done ) OR CBRK_AIRSSPD_CHK should not prevent having the sensor in use if present.

dk7xe commented 4 years ago

i have closed this now because the error is solved for me. But please update documentation accordingly.

hamishwillee commented 4 years ago

Hi @dk7xe , @dagar

Are we sure this is not a code bug?

The circuit breaker should remove the airspeed sensor prearm checks, but I would expect the sensor still to be started, and that if it can be started for it to be possible that it is calibrated.

@dagar can you confirm what the circuit breaker should do?

If this is not a code bug we might update param docs as follows (and add note here):

Circuit breaker for airspeed sensor

Comment: Setting this parameter to 162128 will disable the check for an airspeed sensor. The sensor driver will not be started and no calibration can therefore be done. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK

dagar commented 4 years ago

Are we sure this is not a code bug?

Debatable perhaps, but currently a feature. https://github.com/PX4/Firmware/blob/1acb947124dfbbe1019d27d4e9ec41997d68e7f7/ROMFS/px4fmu_common/init.d/rc.sensors#L23-L44

This was done to minimize all the misc sensor probing at startup. Many of these differential pressure sensors don't have WHOAMI registers, so we can end up with conflicts when i2c addresses overlap.

The other part that's a bit weird is QGC uses the circuit breaker value to hide the calibration screen. This should probably be done via mavlink SYS_STATUS (https://mavlink.io/en/messages/common.html#SYS_STATUS) or similar.

hamishwillee commented 4 years ago

OK. I'll leave the code debate and any QGC update for you. Yes, perhaps we should have an airspeed sensor status in https://mavlink.io/en/messages/common.html#MAV_SYS_STATUS_SENSOR

@dk7xe are you happy with proposed docs update?

Circuit breaker for airspeed sensor

Comment: Setting this parameter to 162128 will disable the check for an airspeed sensor. The sensor driver will not be started and no calibration can therefore be done. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK

hamishwillee commented 4 years ago

OK. PR created for the parameter. I also updated vtol without airspeed sensor doc: https://github.com/PX4/px4_user_guide/commit/44b5efb428b6e0c820bf348a1d0ddf8c73edb1de

dk7xe commented 4 years ago

It's not a bug, it's a feature.. nice. sarcasm off ;)