paparazzi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Paparazzi-devel] Critical behaviour of baro_ms5611_i2c


From: Rolf Nöllenburg
Subject: [Paparazzi-devel] Critical behaviour of baro_ms5611_i2c
Date: Sat, 02 Feb 2013 14:10:26 +0100

Hi

I just discovered a severe problem (luckily on the desk) with the module 
baro_ms5611_i2c: the communication via i2c can get faulty which leeds to 
estimator_z = nan and it DOES NOT RECOVER!!!

This happens not very often, approx. once in 20 min. 

I think that the problem is starts with a zero in D2. This leads to messages in 
the log-file like the following:

2174.155 11 ESTIMATOR 1.195065 0.513844
2174.174 11 BARO_MS5611 7803588 8440836 1001.38 38.9
2174.269 11 BARO_MS5611 7803430 0 -2230.73 -242.71
2174.369 11 BARO_MS5611 7803606 8440764 1001.38 38.89
2174.397 11 ESTIMATOR nan nan
2174.465 11 BARO_MS5611 7803424 8440874 1001.34 38.9
2174.566 11 BARO_MS5611 7803488 8440640 1001.34 38.89
2174.684 11 ESTIMATOR nan nan

A pressure of -2230.73 is obviously too much (or little) for the hight 
calculation...

My system:
- Paparazzi version v4.2.0_stable-5-gc3a1496-dirty
- YAPA 2
- Drotek IMU (mpu6050, hms5883, ms5611) on i2c1
- PERIODIC_FREQUENCY=AHRS_PROPAGATE_FREQUENCY=AHRS_CORRECT_FREQUENCY=60Hz
- baro_ms5611_periodic=baro_ms5611_d1=baro_ms5611_d2=10Hz

I am working on a fix via something like this starting in line 211 of 
baro_ms5611_i2c.c:

      /* avoid glitches in d2 
      if (ms5611_d2 < 1000000) {
        ms5611_d2 = ms5611_d2_prev;
      } else {
        ms5611_d2_prev = ms5611_d2;
      }

I tried this with a fixed replacement-value of 7000000 instead of 
ms5611_d2_prev and it looks promising (estimator_z jumps to about 200m and 
recovers within 1 second). I just need some testing ...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]