Hello drone maniacs ;)
I have really strange problem and trust me, before I decided to create this topic I spent extreme big amount of time to find a solution... for now without success. Maybe with your help we can change it ?
What is the problem ?
My drone in LAND flight mode is not disarming correctly when he reach ground. Motors finally will stop spinning but after random amount of time (not just after landing like they should).
What causes the problem ?
After investigation and digging in AC source code I found guilty - Barometer Climb Rate.
file ArduCopter/land_detector.pde, line 16
bool climb_rate_low = (abs(climb_rate) < LAND_DETECTOR_CLIMBRATE_MAX) && (abs(baro_climbrate) < LAND_DETECTOR_BARO_CLIMBRATE_MAX);
Absolute value of climb rate should be below 150 (cm/s). As you suppose in my case this value is greater most of the time (which you will see in logs that I attached).
I use additional sonar (mb1240) so you can compare barometer attitude with it to see the difference.
What I did to try fix the problem?
All test were made WITHOUT PROPELLERS at HOME, drone was moved always by me.
1) Clear EEPROM and load again 3.2.1 firmware
2) Created new foam to prevent overheating (found post that this can help)
3) I made a ton of tests
4) Took APM outside(drone frame) for tests (no vibrations, baro problem still exist)
If I'm lucky for enough amount of time climb rate will be lower then 150 and drone will be disarmed but luck is not exactly what expected from APM :). My only idea for now to "fix" this issue is build new firmware with higher LAND_DETECTOR_BARO_CLIMBRATE_MAX value but this is a last resort. Before I do this I prefer ask YOU guys, maybe you will have some better idea...