超声自平衡小车(新手入门自平衡小车最佳方案)
本帖最后由 wujingyu 于 2020-1-30 22:30 编辑超声自平衡小车
最新超级简单的实现:
ATtiny13A + Mixly编程 实现的超声自平衡小车(2020年1月13日)
1、项目概述(5楼)http://www.geek-workshop.com/forum.php?mod=viewthread&tid=12538&page=1#pid84275
2、项目方案(5楼)http://www.geek-workshop.com/forum.php?mod=viewthread&tid=12538&page=1#pid84275
3、硬件设计(7楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84279
4、器材采购(8楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84280
5、程序设计(20楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84678
6、调试流程(21楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84694
7、照片与视频展示(23楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84735
8、总结(24楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=84760
9、后记(31楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=85273
10、高档底盘的超声自平衡车(http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=89348)
超声自平衡小车QQ群:1035774689
原创之星的奖品(95楼)http://www.geek-workshop.com/forum.php?mod=redirect&goto=findpost&ptid=12538&pid=89995
本帖最后由 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使得平衡点设定值减小,直到小车能够长时间稳定为止。
本帖最后由 wujingyu 于 2015-3-5 10:30 编辑
增加了一个4键遥控模块,结构稍微调整了一下 本帖最后由 wujingyu 于 2015-2-11 19:02 编辑
wujingyu 发表于 2015-2-11 09:25 static/image/common/back.gif
冤枉卖家了,都是杜邦线惹的祸(一边不通,示波器的地线没接上,是感应信号),现在幅度和频率基本上对了 ...
下午把手上的几个码盘都测了一下,效果还是不好,在电源上加了两个电容,稍微有所改观,见下图:
卖家的说明见下图
对比后觉得还是码盘的问题(码盘有毛刺,或边缘不整齐,但肯定不是示波器的问题)
针对这种情况又下单了,明天发货,后天到手,见下图
期待着!!! 本帖最后由 wujingyu 于 2015-3-23 14:42 编辑
5、程序设计
程序源代码:
程序很简单,总共不到90行,有不明之处请留言,或到QQ群中交流。 这是在带AB相输出测速,好电机底盘上的超声自平衡小车
下面是MPU6050的,用了两组电池、光耦隔离电机驱动
视频效果
http://v.youku.com/v_show/id_XOTE5MjE4ODgw.html 真的挺棒的,想问一下LZ的车子对自身平衡有什么特殊要求吗? xia0chun 发表于 2015-1-26 09:47 static/image/common/back.gif
真的挺棒的,想问一下LZ的车子对自身平衡有什么特殊要求吗?
没什么特殊的要求,在板子上我加了一个电位器,用于调节设定平衡点的距离的 弄个教程出来 本帖最后由 wujingyu 于 2015-3-23 14:27 编辑
1、项目概述
2014年底在网上看到各种制作自平衡小车的帖子,也跟着做了起来。因为第一次做,心里没底,也就没有投入过多的资金,一切按照最小配置进行,所以选择“TT马达”,俗称“香蕉电机”的小车底盘。在等快递送货期间,才看到各种说用“香蕉电机”做自平衡小车的问题,最大的问题就是电机启动对传感器和单片机的干扰问题,还有就是平衡的稳定性不好等问题。在我以Arduino + MPU6050 + L298N为核心做完后,闲得没事干,就想做一款成本低,易上手,最小配置和最基本功能的自平衡小车,其目的就是给那些没有什么经验的刚入行的新手们提供一个入门的解决方案。所以这个项目的目标有以下几点:
a、成本低;
b、目标功能明确,就是实现小车的自平衡;
c、系统稳定可靠;
d、调试、操作方便简单。
2、项目方案
基于上述目标,本方案采用超声波测距模块作为小车平衡状态的检测,免去了对加速度、陀螺仪传感器的理解和复杂处理算法。小车的平衡控制仍然采用网络上流行的Arduino开源硬件,再加上电机驱动模块 L298N,电机仍然采用TT马达(香蕉电机)。
该方案为了降低成本,采用电位器调整设定小车的平衡参数,不使用蓝牙无线模块或有线串口在线调整参数。
用超声波测距的方式实现的自平衡小车,网络上有人提出这种方案无法在坡度变化的斜坡上保持平衡,这种说法经过我的实践,是有解决方案的,这个问题我将在后面进行阐述。
平衡控制的算法还是采用平衡车中经典的PD算法。 关键是 距离对应加速度的算法~ 本帖最后由 wujingyu 于 2015-5-2 10:04 编辑
3、硬件设计
硬件设计比较简单,以Arduino Nano为核心控制模块,采用HC-SR04超声波测距模块,L298N电机驱动模块,供电采用7.4V/2200mAh锂电池。图中三个10K电位器分别用于平衡点设置、PD算法中Kp和Kd系数设置的调整。
电路原理图如下所示:
图中J1为HC-SR04超声波测距模块,J2、J3为L298N模块,Arduino Nano为核心控制模块,MG1、MG2分别为左右电机。
与之前用香蕉电机+MPU6050做的自平衡小车相比较要简单很多,在MPU6050方案中,用了两块电池,其中一块单独用于电机供电,而且L298N必须用光耦隔离的。
而用超声波做的自平衡小车,虽然用的是TT马达(俗称香蕉电机),但仅一块电池供电,L298N电机驱动模块也没有光耦隔离,从最终调试后的效果上看,还比前者更稳定。
成品照:
材料清单
这个材料清单比较完整,是带遥控器的。 本帖最后由 wujingyu 于 2015-3-23 14:37 编辑
4、器材采购
a、Arduino Nano模块
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=43200544633&_u=g79shmu5a7a
b、HC-SR04 超声波模块
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=37890502535&_u=g79shmu19ea
注意,HC-SR04超声波模块,淘宝上有两种,我们用的是这种不带晶体的,还有种带晶体(见下图)3.80元左右不要买,在近距离不稳定,另外测量的最小周期要稍长一些。
c、L298N电机驱动模块
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=37335052756&_u=g79shmudeb2
d、TT马达及固定件
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=38723696685&_u=g79shmu0af1
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=41934135444&_u=g79shmuc393
e、电池及充电器
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=16743115569&_u=g79shmu6216
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=38720199428&_u=g79shmu44fe
http://item.taobao.com/item.htm?spm=a1z0k.7385961.1997985097.d4918997.j2e9dW&id=38751984177&_u=g79shmu98aa
这个真的很好!!记号一下 wujingyu 发表于 2015-1-26 13:43 static/image/common/back.gif
根据zwltanf的“弄个教程出来”的建议,陆续发一些相关技术资料,如果感兴趣的人多,再发一些关键的调试相关 ...
刚才突然想到,这个给小车前后均加装超声波传感器,是不是在上坡也可以正常运行呢? 楼主是直接7.4V接到arduino上? 本帖最后由 wujingyu 于 2015-1-26 16:58 编辑
wo123 发表于 2015-1-26 16:36 static/image/common/back.gif
楼主是直接7.4V接到arduino上?
是的,Arduino模块有稳压电路,支持外部的3.8~12VDC供电 顶一下!!! 认真的学习中 楼主好强大!求教程