马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 ezk 于 2015-12-4 06:36 编辑
长话短说, 如果出现Bad accel health 的问题(USB供电不会有问题), 飞控完全断电, 等3-5分钟, 温度越低等待时间越长, 再次通电, 就有可能修复badaccel 的问题 (就是给飞控完全放电)。或者把IMU2给禁用,INS_USE2设置为0 。 在新版的EFK 开启的时候, 有问题的IMU2可能导致EKF错误。
问题是LSM303D断电后没有快速彻底放电导致。
自己体验 在低温<10C 情况下断电后快速通电通电(有可能炸鸡之后, 也有可能快速换电池), IMU2(LSM303D) 输出是一个衡量, MPU6K输出正常, EKF(有可能)会出错(有可能会影响飞行)。通电后飞控提示BADAccel health, (可能)无法arm, (可能)无法起飞。 有的时候可以起飞但是飞行姿态混乱, 很容易导致炸鸡。 这种问题在APM mega 2560 版本上不存在, mega 版本没有IMU2。我自己没时间深入测试。
图1 是IMU1的输出, 图2 是IMU1 和IMU2 的输出, IMU2 就是一条直线
这里不考虑虚焊问题, 只考虑PX4 设计问题和软件问题。 PX4国产克隆2.4.5 to 2.4.6可 有这个问题。 原厂开发者声明正版pix已经修复。如何硬件修改修复, 移除Q601 R620, R621 设置为220R,连到 VDD 3V3 Sensor 而不是Q621.
原作者希望在3.3.3 版本中, 初始化的时候 延迟5秒给3.3V sensor 供电, 然后重新设置SPI。并且在之后的硬件版本中是使用第3个IMU。
原文来自 http://diydrones.com/forum/topics/solution-proposal-for-pixhawk-imu2-related-bad-accell-health Thanks to Dmitry Prokhorov’s step by step diagnosis.
软件问题 FMU 如何修复 通过命令行 NSH CLI用 fmu sensor_reset 命令修复 (给传感器供电断路, 例如fmusensor_reset 20 // 就是给传感器断电20ms, 可以在飞控初始化的时候就给传感器断电), 但是这样会导致SPI不能用, 需要手工修复代码https://github.com/dipspb/PX4Firmware/commit/a9ea2c6edd8067df71b63d498bc0b53ada253ad8 sensor_reset 没有在pix 初始化代码中, 就是因为这个SPI的bug, reset 后SCK/MOSI/MISOpin 没有再次被enable。
www.googledrive.com/host/0B0jCplplFZvUa1ctdXJPTXBDZWs/ArduCopter-3.2.1-IMU2-discharge-fix.px4 作者自己修改的固件,fmusensor_reset 5000;。
硬件问题 (最终修复https://github.com/PX4/Hardware/pull/33) 原文作者提出是LSM303D不正常的断电然后马上通电导致的问题。 将Q601 替换在C和E中间焊一个220ohm电阻。 或者在C506上并联一个电阻 Sensor 供电通过Q601 控制 是一个BJT三极管
原作者的详细测试 1. 断电后20ms 电容(LSM303D?)放电直接不够, 应该要至少1秒时间断电后再通电。 这种情况作者已经测试了20ms断电的固件,IMU2还是不正常, 但作者下一步是测试1s断电时间。 2. 温度测试。 作者测试2台pix。 1台通过作者自己修改的固件(应该是1s 版本)室温22C下测试全部正常,相同的一台pix, 作者手工模拟在1s内断开再接上电池, 原厂固件IMU2不正常(应该再次出现 bad accel)。 接下来作者用1s断电固件进行低温测试, 把飞控丢冰箱,1s断电固件 表现时好时坏。 回归到室温后用1s 固件测试imu2又再次输出正常。可见温度对飞控IMU2 有严重影响, 1s sensor 复位可能时间不够。 3. 作者再次进行低温测试+5S sensor 复位(断电)。 5s 复位+低温测试, imu2 输出正常。 4. 作者测试C506 低温/室温放电情况, 2种情况就差20mV 5秒内。 可见低温对电容影响不大。 5. MOSFET测试。不知道怎么说请看原文。 作者的大概意思就是可靠修复这问题 只能改硬件设置, 作者也不知道如何修改能有可靠的解决方法。 6. 作者测试硬件修复, 在C506 上并联一个220ohm的电阻, 低温测试通过IMU2输出正常。 作者额外评论, 软件修复可能在3.3.3 版本出现。 另外一个硬件修复方法:焊下 Q601, 在E和C之间焊一个电阻。
作者额外讨论: http://forum.pololu.com/viewtopic.php?f=29&t=9230#p43168 有人发帖讨论 LM303D在某些突然掉电的情况下, 它3个轴会输出一个常量。 解决方法完整断电5秒, 让Vcc自动掉到0. 作者进一部测试断电后 3V3 sensor 供电 rail 掉电情况, 1分钟后 测量还有 0.344V。 把BJT 的Q601换为MOSFET。应为 Q601Vce(sat)=0.25 ~0.4V, 3V3 sensor 供电不可能低于这个值。
IMU2 推荐禁用, IMU2温度漂移比较厉害。在温度比较低的环境下推荐只适用IMU1
|