极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wujingyu

超声自平衡小车(新手入门自平衡小车最佳方案)

  [复制链接]
 楼主| 发表于 2015-1-27 09:27:24 | 显示全部楼层
wacha1221 发表于 2015-1-27 02:05
楼主好强大!求教程

请问你需要什么样的教程,能列出几个目录或问题吗?根据你的需要我尽量满足你的要求。
回复 支持 反对

使用道具 举报

发表于 2015-1-31 09:47:38 | 显示全部楼层
请问这个代码有吗?还有的是我不懂那个电位器调节是对于那个传感器调节的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-31 13:48:20 | 显示全部楼层
简单侣图 发表于 2015-1-31 09:47
请问这个代码有吗?还有的是我不懂那个电位器调节是对于那个传感器调节的

电位器是微调平衡角度设定值的
回复 支持 反对

使用道具 举报

发表于 2015-1-31 15:43:35 | 显示全部楼层
wujingyu 发表于 2015-1-31 13:48
电位器是微调平衡角度设定值的

不太懂,线路是接哪里的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-31 16:58:26 来自手机 | 显示全部楼层
本帖最后由 wujingyu 于 2015-3-23 14:42 编辑

5、程序设计

程序源代码:


程序很简单,总共不到90行,有不明之处请留言,或到QQ群中交流。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-1-31 20:05:04 | 显示全部楼层
本帖最后由 wujingyu 于 2015-3-23 14:48 编辑

6、调试流程

最新版超声平衡小车装配完毕后如下图所示。


串口调试助手程序


a、准备工作

将Kp与Kd调为0,调整方法是,旋转电位器后,按下Arduino模块上的复位键调整方可有效。调整后用串口调试助手(sscom42.exe)发送“F”命令,读取超声自平衡小车参数的设定值。在使用串口调试助手前,首先选择串口调试助手对应的串口号,设置好波特率,方可发送上述命令读取超声自平衡小车参数的设定值,操作界面如下图所示。

第一个数据为平衡点设定值,第二个数据为Kp,第三个数据为Kd。

b、超声波测距测试

发送相应“L”命令,读取超声波的测距值,注意,这里不是实际的mm或cm值,而是对应距离来回的传播时间值,是单片机内部计时的输出值。

操作界面如下图所示。

第一个数为超声波测距模块的直接输出值,第二个数为一阶滤波后的值。改变超声波测距模块与被测界面的距离,这两个值会发生相应的改变,距离近,测得的值变小,距离远测得的值就增大。


c、寻找物理平衡点

在Kp、Kd为0时,用手寻找自平衡小车的物理平衡点,同时用“L”命令(500ms定时发送)读取超声波测量的返回值,确定平衡点的返回值,并记录下来。


d、平衡点PB的设定

调整PB电位器,并在Arduino复位后,用“F”命令读取超声自平衡小车参数的设定值,使得第一个返回的数据与上述确定的物理平衡点相一致。

e、判断电机运转方向是否正确

在完成上述调整后,逐渐增大Kp(请记住,每次调整后,都必须复位Arduino模块,调整才能生效),看到电机能够动作时,停止调整Kp。这时将超声波模块一端稍稍下压(也就是使超声波探头与地面距离缩短),观察两个电机的转动方向,往前(超声波测距模块一端为前)转测试正确的,往后转则说明相应的电机两根线接反了,将接反的线调换过来即可。


f、Kp参数整定

在电机接线正确后,再逐渐增大Kp,使得小车能够来回有点摆动即可进入调整Kd参数阶段。


g、Kd参数整定

在调整完Kp后,逐渐增大Kd,使得摆动消失,如果继续增大Kd,小车会出现明显的抖动,此时将Kd往回调整,使得抖动消失即可。


h、平衡点PB的进一步调整

在上述参数调整完毕后,小车一般就能保持平衡了,如果出现小车往一边跑的现象,可通过调整PB电位器加以修正。如果小车往前跑(超声波模块一端为前),调整PB使得平衡点设定值增大;如果小车往后跑,调整PB使得平衡点设定值减小,直到小车能够长时间稳定为止。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-1-31 23:01:58 | 显示全部楼层
好的,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-1 13:22:28 | 显示全部楼层
本帖最后由 wujingyu 于 2015-3-23 15:11 编辑

7、照片与视频



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-1 20:31:38 | 显示全部楼层
本帖最后由 wujingyu 于 2015-3-23 15:03 编辑

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这个乐园里无拘无束的、自由自在的、快快乐乐的玩耍!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-4 06:32:54 来自手机 | 显示全部楼层
本帖最后由 wujingyu 于 2015-3-23 14:59 编辑

加“全棉地毯”是由于US-015的超声波测距模块在一般的反射面情况下,并且超声测量周期小于40ms时,返回值经常出现异常,我用示波器观察的波形与返回的实测数据是完全一致的。现附上波形示意图如下:


在实测过程中,我发现在超声波的探测面朝上工作时,我用小块的障碍物测试时,并不出现上述现象。我分析可能是由于朝下时,反射面比较大,可能是超声波在小车与地面之间来回反射造成的某种干扰,后来我就想到用“全棉地毯”吸收部分超声波能量,避免来回反射造成测距的干扰。因为测量周期大于40ms的话,整个调整就反应不过来了。

这里告诉大家,任何事、或者任何方案都有可能会出现一些意想不到的问题的。当时选择US-015是考虑到它的测距精度高,探测精度0.1cm+1%。

今天我换上HC-SR04模块,这个模块的探测精度要差一些,给的指标是3mm。但我通过测试发现,就在桌面和其他普通界面不存在US-015的那种问题,而且测量周期在小于4ms的情况下都能稳定工作。

这就是今天发的照片跟以前的差别所在:1、小车运行的地面不同;2、超声波测距模块已经更换了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-2-6 19:57:53 | 显示全部楼层
wujingyu 发表于 2015-2-1 20:31
没人关注,我这里就自问自答吧

加“全棉地毯”是由于US-015的超声波测距模块在一般的反射面情况下,并 ...

请问可以说一下你是怎么把这个小车的架构做出来的,可以拍一个反面的小车图片吗?谢了
回复 支持 反对

使用道具 举报

发表于 2015-2-6 19:58:55 | 显示全部楼层
wujingyu 发表于 2015-2-4 06:32
请问谁有不用测速码盘保持平衡车长时间稳定的方案?

请问哪一种测速传感器比较好
回复 支持 反对

使用道具 举报

发表于 2015-2-6 23:23:26 | 显示全部楼层
wujingyu 发表于 2015-1-31 13:48
电位器是微调平衡角度设定值的

我不知道不加电位器可以吗?电位器怎么样开始调,有点迷茫,虽然我是自动化的,学过自动控制和现代控制理论,还是不太懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-7 17:09:00 | 显示全部楼层
简单侣图 发表于 2015-2-6 23:23
我不知道不加电位器可以吗?电位器怎么样开始调,有点迷茫,虽然我是自动化的,学过自动控制和现代控制理 ...

不加电位器可以的,就是通过修改程序中设定的参数调整,或者通过串口(有线或无线)在线实时调整设定参数。我现在正在改进,等新版本出来了再发相关资料。
回复 支持 反对

使用道具 举报

发表于 2015-2-7 17:30:09 | 显示全部楼层
wujingyu 发表于 2015-2-7 17:09
不加电位器可以的,就是通过修改程序中设定的参数调整,或者通过串口(有线或无线)在线实时调整设定参数 ...

好的,谢谢解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 20:50 , Processed in 0.041821 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表