7、照片与视频
视频地址:http://player.youku.com/player.php/sid/XOTA3NDAzODM2/v.swf
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这个乐园里无拘无束的、自由自在的、快快乐乐的玩耍!!!
9、后记
在完成上述工作之后,又进行了一些不成系统的零散实验性的工作。第一项工作是在上述平台上增加了一个具有AB相编码输出的测速单元,将小车的速度控制作为最终目标,以调整平衡设定距离来控制小车的速度为手段,这样就可实现超声自平衡小车在变化的坡度上保持动态稳定平衡。
小车平衡算法一般有两种:一种是平衡(角度或距离)PID + 速度PID;另一种是,速度PIDà平衡PID。这第二种就是用速度PID的输出去改变平衡PID的目标值。要实现超声自平衡小车在变化的坡度上保持动态稳定平衡,就必须采用这第二种控制算法。
另外,网络上有些人利用控制电机的PWM输出值,代替测速单元,近似的给出小车的速度。对于此问题我也简单的测试和分析过,现简要谈谈我对这一问题的看法:这种方式在一定的条件下是可以近似替代的,前提是在水平的地面上,地面不能有影响小车运动的各种障碍物,第三个是小车的响应不能太滞后。如果这三条不能满足,此方案不可取。
这项工作的验证比较简单,就是在有测速单元的小车上,同时增加PWM输出模拟测速,将两个测速的结果输出,对输出的数据画出曲线,就可直观的看出两者的差距。
另一项工作是,在原有的平台上增加了一个升压模块,将L298N的Vin由以前的7.4V提高到12V,小车的稳定性有一定的改观,关于这一点一是通过观察就可感觉到平衡的稳定性有所提高,另外通过数据分析也可明显的得出结论。在两种电压(注意,此时的Kp、Kd、PB等参数都要做相应的调整,使得每种电压下都是最佳状态)下,将PID的输出值(这个值是在输出限制在255以内之前的值),观察超过255的频数就可得出结论,如果超过255,在输出之前被限制了,就说明这次调整是不到位的。
第三项工作是增加了一个四通道遥控开关,实现了小车的前进、后退、左转、右转功能,这项工作中就利用PWM的输出近似得出小车的速度。这个遥控开关也很便宜,虽然只有A、B、C、D四个按键,但可以轻易的做到八个有效状态的控制。这八个状态分别为:A、B、C、D、AB、CD、AC、BD。
第四项工作正在准备中,想做一款稍大的,带AB测速输出的超声自平衡车。实现上下坡、下台阶等各种复杂的功能。
遥控超声自平衡小车视频
视频地址:http://player.youku.com/player.php/sid/XOTA3NDAzODQw/v.swf
坡度动态改变时的超声自平衡小车视频(拆了门板做的测试)
视频地址:http://player.youku.com/player.php/sid/XODkzMzQ5Njc2/v.swf
这是在带AB相输出测速,好电机底盘上的超声自平衡小车
下面是MPU6050的,用了两组电池、光耦隔离电机驱动
视频效果
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |