找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11141|回复: 10
收起左侧

低成本、低档自平衡小车历程(超声自平衡小车)

  [复制链接]
ID:113207 发表于 2016-4-11 02:04 | 显示全部楼层 |阅读模式
第二阶段目标:

如标题所述,真正的入门级平衡车,真的低成本,不用陀螺仪和加速度传感器,用超声波测距实现平衡的小车!!!
见 114# 介绍!!!

第一阶段总结:
1# 第一版详细资料。

42# MPU6050-DMP输出稳定性测试,DMP每次启动后均要20秒左右后角度输出才稳定,使用者要注意此问题!!!

43# 第二版小车,硬件做了块PCB底板,换了一个全光耦隔离的L298N模块,这个版本做两款软件:一是单侧码盘测速,另一是用PWM输出值取代测速码盘,效果也不错。

50# 蓝牙手机控制助手,编写了一个简单的安卓控制平衡小车的程序。

56# 自平衡小车参数整定方法,针对前面一些经验和教训,总结了参数调整中的一些问题。

63# 不用MPU6050的DMP输出,采用原始数据一阶互补滤波解算角度,也不用PID库,直接编写PID计算,效率更高,稳定性与控制效果也更好。

65# 第三版源代码,测试数据和最新视频效果。

2014.12.4

以下为原1#贴内容

一、基本材料
1、Arduino Pro Mini模块
2、CP2102模块
3、MPU6050模块
4、CH06蓝牙模块
5、L298N驱动模块
6、测速传感器模块
7、小车底盘
194937gbph1w8h46xobrr8.jpg

二、硬件设计
1、Arduino Pro Mini + MPU6050测试验证
Arduino Pro Mini模块与MPU6050模块的连线图见前面图片,即:SDA接A4,SCL接A5,VCC接VCC,GND接GND,INT接2。
下载:i2cdevlib-master(https://github.com/jrowberg/i2cdevlib
****MPU6050库的安装方法*************************
a. 下载arduino编译器,目前版本为1.0.5。
b. 下载MPU6050库。进入“https://github.com/jrowberg/i2cdevlib”,点击“zip”即可。
c. 安装。将上一步下载的“I2Cdev”、“MPU6050”两个文件夹拷贝到“arduino-1.0.5libraries”目录下。
运行arduino可以在例子中看到MPU6050。OK!

2、硬件原理图
Arduino-Pro-Mini-schematic.pdf (37.43 KB, 下载次数: 13)
回复

使用道具 举报

ID:113207 发表于 2016-4-11 02:09 | 显示全部楼层
我测速模块烧了,今天修改了一下程序,用PWM的值取代测速码盘,效果也不错!
明天试另一方案:用6050模块的加速度积分取代测速信号检测,作为速度PID的输入,看看效果如何?如果成功,下次在用6050的方位角信息来控制小车的两轮均衡运转,或者控制小车的转向。
MPU6050-DMP输出稳定性测试
在以往调节平衡小车的过程中,发现小车的平衡角不断改变(不是物理的改变,而是测量结果的改变),造成的结果,就是小车往一边跑,如果不及时修正角度设定值,小车就自己倒下了。
上两张测试结果图
165444qaxh4l8n0h0hjhyn.png
165554td83k3u72pmujj9j.png
从测试结果来看,倾斜角大约需要20多秒才能稳定下来,方位角虽然在20秒左右稳定下来了,但输出始终在小幅漂移。

---------------------

新款的小车,做了块PCB底板,换了一个带六路光耦隔离的L298N模块,上两张图片
171406dkkisb2s3b23232g.jpg
PCB底板上安装有:Arduino ProMini模块、MPU6050模块、蓝牙模块、低压差5V稳压、电池及充电线插座。
171517tvbws85h4ds31hav.jpg
整机取消了测速码盘,下面安装了一组电池共底板上各部分供电,最上面的一组电池共L298N模块供电。
172730gaqjtadydizjtqti.jpg
172752v63kq4xxaxx1xxnl.jpg


摆动是在平衡之前,也就是开始你的小车用手扶着,松开就倒,但你逐渐增大Kp后,再松开手,就会发现它来回摆动了,这时就已经初步成功站立了,然后再逐渐增大Kd……


给自己的小车编了个简单的安卓手机蓝牙控制程序,先上界面(本人水平有限仅能做这种特简单的界面):
205640ze3nta72ukw7j7fb.jpg
再上源程序和APK安装程序
WJY_DIY_APK.rar (509.36 KB, 下载次数: 20)
回复

使用道具 举报

ID:113207 发表于 2016-4-11 02:50 | 显示全部楼层
自平衡小车参数整定方法

1、将Kp、Ki、Kd、Sp、Si、Sd均设为零。
2、用支架将自平衡小车支起,处于水平状态。
3、在程序每次输出小车实际角度的同时,输出Arduino的系统时间[用millis()函数],下载并运行程序用串口调试助手记录系统时间与MPU6050的角度输出,记录足够的数据后“保存窗口”数据,用Excel打开记录的数据文件,观察数据稳定时间。
105734nhs0hyu1zf4h8nzu.jpg
105750zq4hh4hnun44t7qy.jpg
105801qdgxc5d15a2993d2.jpg

4、确定完这个稳定时间后,将程序输出恢复到原来状态(去掉时间输出部分),重新下载,去掉小车支架并启动运行;将小车放置于一固角度位置,保持不动,观察角度输出数据是否稳定(这个时间必须大于第3步所测时间),待数据稳定后,用手扶着小车找其自然物理平衡角;通过串口工具输出“G”或“g”将平衡设定角“setp0”设置到与小车的自然物理平衡角相一致。
5、这此之后小车的整定过程中不要断电,始终保持运行状态,逐步增加Kp,观察小车的两轮是否有抵抗角度变化的力量,如果不仅不能抵抗角度的变化,而是顺着角度变化(增大角度的变化),则将顺其变化的控制电机接线反过来接,再继续下一步。
6、继续增大Kp,小车会出现来回摆动,增大或减小Kp,使其摆动的幅度不导致小车倾倒为原则。
7、增大Kd,小车的摆动会逐渐减小,如果继续增大Kd,小车会出现抖动现象,调节Kd,使其相对平稳(因为香蕉电机很难做到特别稳定)即可。
8、逐渐增加Sd(这里也要做个判断,用手平推小车,小车是否有抵抗行为,如果没有抵抗,而是顺其运行,说明速度环控制方向反了),使得小车来回走动(不是摆动),然后增加Sp,使其来回走动逐渐减小,达到比较满意即可。

注意:第四步必须做,否则小车往往就跑向一边了!!!
自平衡小车参数调整方法.rar (181.72 KB, 下载次数: 18)
回复

使用道具 举报

ID:127462 发表于 2016-6-20 20:01 | 显示全部楼层
学习,学习,学习谢谢
回复

使用道具 举报

ID:136714 发表于 2016-8-14 07:36 | 显示全部楼层
学习,学习,学习谢谢
回复

使用道具 举报

ID:140059 发表于 2016-9-21 18:18 | 显示全部楼层
学习,学习,学习谢谢
回复

使用道具 举报

ID:140874 发表于 2016-9-29 14:18 | 显示全部楼层
给力啊   超赞
回复

使用道具 举报

ID:79544 发表于 2016-11-21 15:52 | 显示全部楼层
51hei学习 发表于 2016-4-11 02:50
自平衡小车参数整定方法

1、将Kp、Ki、Kd、Sp、Si、Sd均设为零。

楼主。有51的就好啦。学习分享学习啦,再就是你的那个软件怎么安装和使用,谢谢!
回复

使用道具 举报

ID:151483 发表于 2016-12-1 21:30 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:229378 发表于 2018-4-10 13:52 | 显示全部楼层
感谢楼主!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

ID:1022278 发表于 2022-5-18 14:08 | 显示全部楼层
51hei学习 发表于 2016-4-11 02:09
我测速模块烧了,今天修改了一下程序,用PWM的值取代测速码盘,效果也不错!
明天试另一方案:用6050模块 ...

程序没有啊
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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