平衡车加速度传感器方案:姿态控制
两轮自平衡车能站住不倒,靠的就是一套反应够快的姿态检测系统。核心部件——加速度传感器和陀螺仪组成的IMU模块,每秒采集上百次数据,告诉控制器车身现在是什么角度、往哪边倾斜。选错传感器,平衡车要么晃个不停,要么直接栽跟头。
平衡车姿态检测原理
平衡车的控制逻辑其实很简单:车身向前倾,轮子就往前跑;向后仰,轮子就往后退。跑的速度和倾斜角度成正比,这样就能把车"顶"回平衡位置。这个控制周期一般在5-10毫秒,传感器数据更新慢了根本来不及反应。
姿态检测需要两个信息:倾角和角速度。倾角由加速度传感器测出来——重力在传感器三个轴上的分量能算出当前倾斜了多少度。但有个问题:加速度传感器怕震动。车轮一转、路面颠簸,测出来的角度就跳来跳去。这时候就需要陀螺仪补充角速度数据,用卡尔曼滤波或互补滤波把两个信号融合,得到既稳定又快速响应的姿态角。
加速度传感器选型要点
量程选择
平衡车正常工作时倾角很少超过±30°,但启动、急停、过坎时瞬时角度可能飙到45°以上。加速度传感器量程建议选±4g到±8g,太小容易饱和,太大又会牺牲精度。MPU6050默认±2g可配置到±16g,BMI160支持±2g到±16g,这个范围够用了。
精度与分辨率
角度精度0.1°以内算比较好的水平。14-16位ADC的传感器基本能满足,比如ICM20602内置16位ADC,理论上分辨能力在±2g量程下能达到0.06mg/LSB。当然实际精度还得看标定和滤波算法。
响应速度
输出数据速率(ODR)至少要1kHz,也就是每毫秒一个数据。BMI160在加速器模式下ODR可达1600Hz,MPU6050最高1kHz。低于这个速度,控制周期就得拉长,平衡稳定性下降。
接口与封装
I2C接口最常见,接线简单。SPI接口传输更快,适合对时延敏感的场合。封装方面,LGA和QFN用得最多,手工焊接有点麻烦,打样阶段可以考虑买转接板。
常用IMU型号推荐
| 型号 | 加速度量程 | 陀螺仪量程 | ADC位数 | 接口 | 参考价格 |
|---|---|---|---|---|---|
| MPU6050 | ±2/4/8/16g | ±250~2000°/s | 16位 | I2C | ¥5-8 |
| BMI160 | ±2/4/8/16g | ±125~2000°/s | 16位 | I2C/SPI | ¥15-20 |
| ICM20602 | ±2/4/8/16g | ±250~2000°/s | 16位 | I2C/SPI | ¥20-30 |
| LSM6DS3 | ±2/4/8/16g | ±125~2000°/s | 16位 | I2C/SPI | ¥10-15 |
MPU6050是老牌方案,资料多、价格低,新手入门首选。缺点是已停产,市面上多为翻新或克隆芯片。BMI160是博世的新一代产品,功耗低、性能好,适合量产项目。ICM20602是TDK InvenSense的产品,性能接近BMI160,稳定性不错。LSM6DS3来自意法半导体,性价比适中。
姿态控制算法
互补滤波
最简单实用的融合算法。加速度传感器算出的角度低频特性好,陀螺仪积分得到的角度高频响应快。互补滤波就是各取所长,用一个系数把两者加权融合。公式大概是这样:
角度 = α × (角度 + 陀螺仪角速度 × dt) + (1-α) × 加速度计角度
α通常取0.95-0.98,dt是采样周期。代码不到十行,STM32F103跑起来毫无压力。
卡尔曼滤波
比互补滤波复杂,但效果更好。把姿态角和陀螺仪零偏都当作状态变量,通过预测和更新两个步骤迭代计算。对传感器噪声和漂移有更好的抑制作用,代价是运算量稍大。平衡车这个应用场景,互补滤波其实够用了,没必要杀鸡用牛刀。
PID控制
姿态角算出来后,用PID控制器把角度误差转成电机PWM输出。平衡车一般用串级PID:内环控制角速度,外环控制角度。调试时先把内环调稳,再调外环。参数整定是个细致活,P太大会震荡,D太大系统响应迟钝。
实际应用案例
某客户开发的载重平衡车,载重50kg,最高时速18km/h。IMU选的是BMI160,通过SPI连接到STM32F405。采样率设为1kHz,用互补滤波融合姿态。控制周期5ms,串级PID参数经过台架测试反复整定。最终实现原地静止稳定、爬坡15°、过减速带不倒车。
这个项目遇到过一个坑:车身共振频率正好在15Hz左右,陀螺仪原始数据在这个频率上有明显毛刺。后来在滤波环节加了个陷波滤波器,问题才解决。所以说传感器选好了不算完,信号处理同样关键。
常见问题
平衡车原地抖动
多半是D参数太大或者传感器数据抖动。检查一下原始数据是否稳定,必要时加大低通滤波强度。另外机械装配间隙太大也会引起类似问题,轴承、电机座这些地方不能晃。
平衡车启动就倒
先确认陀螺仪和加速度传感器的安装方向是否和代码一致。再检查零偏是否校准,上电时车子必须静止放在水平地面上。有些IMU上电瞬间的数据不可靠,建议丢弃前100个采样点。
行驶中方向跑偏
单电机驱动引起的。两个电机参数不可能完全一致,需要在软件里做左右轮速度补偿。另外检查车身重心是否居中,电池位置偏了也会跑偏。
选型建议
入门学习:MPU6050模块 + Arduino,成本几十块,网上例程一堆。
产品开发:BMI160或ICM20602 + STM32F4,性能稳定、供货可靠。
高端应用:考虑用六轴或九轴IMU外加独立的磁力计,支持航向角锁定,适合载重车、物流机器人。
传感器只是姿态系统的一部分,选型时还要考虑控制器的运算能力、电机的响应速度、机械结构的刚性。木桶效应在这里体现得淋漓尽致——最慢的那个环节决定了整车性能。
如有选型疑问或需要技术支持,欢迎联系我们:IMU传感器产品页。