8、总结与展望
超声自平衡小车的基本版已经完成,在制作过程中与我之前用MPU6050制作的小平衡车相比有以下几点体会:
a、在用TT马达的情况下,如果系统使用同一组电池供电,电机一启动Arduino与MPU6050立即死机,或者MPU6050的数据受干扰极为严重,不可使用。解决办法是用另一组电池单独给L298N供电,并且L298N要选择带光耦隔离的。但同样的使用TT马达的情况下,用超声波测距方案,系统仅用一组电池即可,而且L298N也无需光耦隔离,系统很稳定。
b、超声波传感器的选择要选择最小测量周期短的模块,第一次我使用的是US-015 超声波测距模块,US-015是目前市场上分辨率最高,重复测量一致性最好的超声波测距模块,US-015的分辨率高于1mm,可达0.5mm,测距精度高,重复测量一致性好,测距稳定可靠。但他的最小测量周期大于10ms,而且对输出数据经常有跳动(这是由于它的灵敏度很高,在近距离时超声波在模块与地面之间的来回反射的二次信号都能被检测到),为此在地面垫上一个地毯吸收了部分能量的超声波,才能稳定工作。在第二版中更换了HC-SR04超声波模块,这个模块的测距精度虽然只有3mm,但它的最小测量周期仅略大于3ms。但这种模块市场上有两种,一种没有晶体,一种是带晶体的,带晶体的很不稳定,建议大家不要选择。
c、小车的平衡稳定性与多种因素有关,建议在结构上,重心越低越好。
d、另外,我还做了一个对比测试,数据见下表:
误差绝对值是指小车在一段时间内,实测距离与设定平衡点距离误差绝对值的平均值;滤波是指程序中对超声波测量的距离滤波或不滤波直接使用;循环周期是程序中的延时时间,超声波测量需要大约704us,一个周期大约为3.84ms,程序处理时间大约为136us,实测波形图如下。
超声测距波形图:
3ms延时的一个周期波形图:
通过以上对比分析,当一个循环周期大于20ms时,小车很难长时间保持平衡了,另外重心的升高,平衡的稳定性明显变差。
e、下一步选择具有测速功能的小车底盘,实现上下坡、下台阶等复杂动作,不为别的,只是证明超声自平衡小车这个方案是没有严重的缺陷的。因为自平衡小车本身就有很多局限性,譬如他能下台阶就不能上台阶吧,也不能在极不平坦的路上行走等等。
f、最后,我想说明一下,自平衡小车虽然简单,但也是一个麻雀虽小五脏俱全的项目,譬如小车的结构设计、电机的响应、扭矩的大小、小车的轮胎的选择、PID的调参等等都会影响到小车的平衡稳定性。我们在网上看到的资料大都是说传感器、程序和调参,在结构设计、电机的选择(明确的参数数据对比)等方面都很欠缺或不完整,没有充分的说服力。很多新人就想学校的实验课程一样,仅仅照别人的做法做了一遍,没有太大的收获,特别是碰到问题不知道如何深入分析。大家在DIY的过程中都做出点自己的东西,无论成功与失败,哪怕做一些经验和教训的总结也是对大家的贡献。希望大家在DIY这个乐园里无拘无束的、自由自在的、快快乐乐的玩耍!!!