查看: 20889
回复: 26
模块化MINI两轮平衡小车 本帖主对外承接开发, 联系作者
大熊现在很幸福
4
主题
12
回复
该帖子为嘉立创认证过的开发案例,案例是对作者实际开发产品的介绍,您可以通过这些案例去找到和自己产品相关的一些方案或解决途径。 查看更多案例 >>
发表于2016-10-30 00:11:11 | 只看该作者
1# 电梯直达

立创君11月3日晚21点插楼提示:该作品已进入首届立创商城电子制作节15强,点我投票参与公投,选出最终6强!


文章最后有详细资料分享,支持开源~

1、作品简介

整机图片:

 

 


这个电子制作的用途是什么?能实现那些功能?

用途:用来学习使用平衡小车相关的基础知识(I2CPWM,滤波,姿态计算,PID算法)

实现的功能:通过传感器获取小车姿态并使用控制算法控制小车的平衡,使得小车可以直立不倒

为何要制作这个作品?

当下各种平衡车非常火爆,四处可见踩着平衡车代步的人,于是想探究下其中的原理,于是产生了制作这个作品的想法。

这个作品能给使用者或者社会带来哪些改变、益处或进步?

首先从技术方面来说,通过开发这个作品,可以让使用者学习到很多方面的知识,这个东西涉及了物理,数据协议,数据处理,控制算法等很多方面的知识。

其次从生活方面来说,这个作品可以为使用者的生活带来不少乐趣,看着小车扭扭捏捏的站立着,那种感觉还是很奇妙的。

即:实用性,你自己觉得它体现在哪里?

就实用性方面来说,这个小车是比较有限的。当然,使用者可以通过升级其中的算法来提高精度,甚至可以使用到真实的载人平衡车中去。

 

2、作品亮点

您这个作品在设计、实现细节或思路上,用上了哪些新技术或者创新之处?

特别好的性能、参数指标也是一个亮点。

亮点概括为两个:

1 PCB 面积非常小(2.5cm*5.0cm

2 器件可以拆卸,方便开发调试和学习

同网上一般网友制作的平衡小车不一样,这个平衡小车最大的特点就是它的整体很小,PCB面积只有2.5cm*5.0cm,这个可能还没有网友制作的平衡小车的一个电机驱动板大,但是却已经实现了相同的功能。我在器件选型时尽可能用了小的元件,这样使得PCB面积大大减少。

 

3、系统构架图

 

 

 

 4、原理图

附上原理图的图片或者源文件(我们官方建议大家尽量用源文件上传)

如果是图片,请确保图片是清晰可辨的。

此外,还请用文字把该作品的实现原理、系统的工作过程大致讲解一下。

 

 


5、材料清单(BOM列表)

RTU_BBear  Revised: Saturday, October 22, 2016

          Revision: v1.0 

Bill Of Materials        October 27,2016      20:19:27  Page1 

Item    Quantity    Reference   Part

______________________________________________

 1   5   C1,C2,C3,C4,C8  0.1UF

2   1   C5  1UF

3   2   C6,C7   22PF

4   1   C9  10UF

5   2   LED2,C10    POWER

6   1   K1  KEY-4

7   1   LED1    HEARTLED

8   1   L1  LM1117

9   3   R1,R2,R3    10K

10  2   R4,R5   1K

11  1   S1  MPU6050

12  1   U1  STM32F103C8T6

13  1   U2  BOOT0

14  1   U3  CON4

15  1   U4  switch

16  1   U5  BOOT1

17  1   U6  SWD

18  3   U7,U8,U11   CON2

19  1   U9  MOTOR-A

20  2   U10,U13 MOTOR0805

21  1   U12 MOTOR-B

22  1   X1  XTAL

 

关键芯片:

1 STM32F103C8T6

http://www.szlcsc.com/product/details_9243.html

2 MPU6050传感器

http://www.szlcsc.com/product/details_24852.html

6PCB实物图

PCB 3D

PCB 实物图

 

7、软件部分的描述

软件流程:

软件部分分为两个大部分:

1数据部分

数据部分围绕MPU6050传感器展开。分为数据获取,滤波,数据处理

1.1数据获取

STM32通过I2CMPU6050进行通讯,其中涉及到基础的I2C通信协议实现,在I2C基础上,涉及到MPU6050各种参数的设置,比如加速度的范围等。不同的设置获取到的数据会不一样并且精度也不一样。

1.2滤波

在获取到原始数据后经过简单转化变为角度,但是这个数据是不准确的,因此需要滤波处理,由于小车比较简单,滤波就用的是互补滤波。这样就能获取比较精确的数据的了。

1.3数据处理

在滤波前需要对获取的原始数据进行处理,这个需要一点点物理知识,起始就是加速度与力的方向是一致的这个原理,还有一个就是角速度的积分操作,这个需要使用定时器来完成。

2控制部分

控制部分主要分为PID算法,电机驱动

2.1PID算法

PID算法就是比例,积分,微分这三个变量相互作用最后输出到控制器上去。在这里我们只需要P就够了。

2.2电机驱动

电机驱动主要设计的知识就是PWM波的控制,STM32有相关的库操作,只需要按要求设置好就OK了。然后将PID算法产生的结果作为参数输入到这里就可以实现控制了。

如果您的作品涉及到软件或者固件,欢迎也介绍介绍。比如列出软件流程图、精彩

或关键部分的例程、源码或者全部源码(如果是您想开源的话)。

 

8、作品演示

录了个小视频:

让大家见笑了~~~


 

9、总结

          这次制作,体会用四个字概括-知易行难。原来看别人做的平衡小车,感觉并没有什么。但是自己做起来才发现不是那么简单,自己做过才有资格评价别人。少说话,多做事。


最后将我自己的模块化平衡小车的资料全部分享给大家,下面是git地址:

https://github.com/bigbearishappy/BBear_balance_car.git

后期我还会进行维护,以求达到更好的效果。

如果有朋友不用git的,可以在评论区留个邮箱,我看见后会在第一时间把资料发给你。当然如果对我的资料有兴趣,也就麻烦顺便给我投上一票吧,谢谢了

小电子
12
主题
236
回复
发表于2016-10-30 09:08:34   |  只看该作者
2#
好可爱的平衡车。看外观感觉重心比较靠近轴心,比较难控吧?
①黄花No.907 ②FPGA芯片EP4CE6E22C8N ③万用表Fluke15B+ ④LED恒流源LM2733XMF/NOPB⑤CJT1117B-5.0
大熊现在很幸福
4
主题
12
回复
发表于2016-10-30 18:16:48   |  只看该作者
3#
小电子 发表于2016-10-30 09:08:34  2# 好可爱的平衡车。看外观感觉重心比较靠近轴心,比较难控吧?
控制方面是还有点问题,还在解决中~
老酒
3
主题
101
回复
发表于2016-10-31 08:54:41   |  只看该作者
4#
顶一个
枯凡
2
主题
13
回复
发表于2016-10-31 09:25:27   |  只看该作者
5#

哈哈哈。PID还在振荡啊啊啊。。。。

姿态部分使用官方的MPL库效果会好很多, 至少也用DMP吧。

PID中只用P还是不够好。一般说来PI控制会好一些

大熊现在很幸福
4
主题
12
回复
发表于2016-11-03 22:27:41   |  只看该作者
6#
老酒 发表于2016-10-31 08:54:41  4# 顶一个
谢谢~
大熊现在很幸福
4
主题
12
回复
发表于2016-11-03 22:29:35   |  只看该作者
7#
枯凡 发表于2016-10-31 09:25:27  5# 哈哈哈。PID还在振荡啊啊啊。。。。姿态部分使用官方的MPL库效果会好很多,至少也用DMP吧。PID中只用P还是不够好。...
就这个层次的平衡小车而言,就是单纯的用I2C获取原始数据再解析出姿态已经足够了。关于PID的比较同意你的看法,只有P的控制比较勉强,还在改进中,准备用PD来控制
大熊现在很幸福
4
主题
12
回复
发表于2016-11-03 22:30:19   |  只看该作者
8#
大熊现在很幸福 发表于2016-10-30 18:16:48  3# 控制方面是还有点问题,还在解决中~
您的指教很有帮助,我把重心提高后效果好了不少~
ken
1
主题
11
回复
发表于2016-11-04 14:29:19   |  只看该作者
9#
我支持你,我投你一票了,资料方便发我邮箱吗,对这个很感兴趣
电子迷
0
主题
5
回复
发表于2016-11-04 16:11:55   |  只看该作者
10#
平衡车感兴趣很久了,感谢楼主分享已投票
大熊现在很幸福
4
主题
12
回复
发表于2016-11-04 16:33:53   |  只看该作者
11#
ken 发表于2016-11-04 14:29:19  9# 我支持你,我投你一票了,资料方便发我邮箱吗,对这个很感兴趣
没问题,麻烦把邮箱回复给我
lazyduck
4
主题
17
回复
发表于2016-11-16 09:06:42   |  只看该作者
12#
电机型号和电机驱动芯片的型号能说一下吗?
单片机爱好者 www.mcublog.cn
啊元
0
主题
2
回复
发表于2016-11-22 18:22:29   |  只看该作者
13#
你好,楼主麻烦发给我一份吧,我看看原理565620584@qq.com
小电子
12
主题
236
回复
发表于2016-11-25 22:57:53   |  只看该作者
14#
大熊现在很幸福 发表于2016-11-03 22:30:19  8# 您的指教很有帮助,我把重心提高后效果好了不少~

从图片来看,电池放在了车轴下方,使得整体重心偏下,甚至可能移到了车轴心以下(那就不需要控制就可以稳定了),这样会对稳定控制带来较大困难。

对于平衡车控制而言,重心太高或者太低都是不利的。下面具体分析。

1)为什么重心太低了不好?

从直观角度理解。可以举个例子,比如你用手掌心撑起一个长的杆,比如撑衣杆,比较好控制到一个平衡位置吧?但是撑起一根筷子时,就很不容易控制到一个平衡位置了。重心高,那么在平衡位置处受到干扰后,杆的响应速度就会慢。重心低,则在平衡位置处受到干扰后,杆的响应速度就会快。响应速度快,则要求控制力的响应速度也要快,否则,就不能实现稳定控制。

从系统带宽的角度理解。重心高,则系统带宽低,那么受到干扰后,高频干扰迅速衰减,只剩下低频干扰,所以系统振荡频率慢,看起来控制得就很好。重心低,则系统带宽高,高频干扰存在,使得系统振荡频率快,看起来控制得不好。

以上理解并没有严格的理论依据作为支撑。那么如何从控制理论的角度解释这一现象?

我提出的观点如下:

平衡车从控制力到车体角度的传递函数为K/(s2-A),通过推导可得知,重心越低,A的值越大,则不稳定极点距离虚轴越远。根轨迹从开环系统的极点出发,终止于开环零点。则重心越低,根轨迹离虚轴越远。闭环主导极点必须位于虚轴左侧才能使得系统稳定,如果采用PID控制器,则需要设计PID的参数迫使根轨迹往左移动。根轨迹离虚轴越远,那么合适的PID的参数可能就不容易找了,根轨迹离虚轴越近,那么合适的PID的参数就容易找到一些。

2)为什么重心太高了也不好?

重心太高,则系统响应速度慢,这对系统稳定控制是有利的,但对系统的跟随控制是不利的。对于小车而言,跟随控制就是控制小车前进或者后退。因为控制小车前进或后退需要通过控制车体倾斜角度跟踪某一个角度变化规律实现,所以这是一个跟随控制问题。重心太高,系统响应速度慢,而跟随控制就是要系统能够迅速跟随某个变量的变化,需要的是快的系统响应速度。所以说重心太高了也不好。

①黄花No.907 ②FPGA芯片EP4CE6E22C8N ③万用表Fluke15B+ ④LED恒流源LM2733XMF/NOPB⑤CJT1117B-5.0
彩虹
0
主题
2
回复
发表于2016-11-28 14:37:20   |  只看该作者
15#

感觉真的是好可爱啊,楼主可以传我一份资料学习下嘛

我的邮箱是snoweaglewse@163.com

再次感谢楼主!

大熊现在很幸福
4
主题
12
回复
发表于2016-12-11 11:38:56   |  只看该作者
16#
小电子 发表于2016-11-25 22:57:53  14# 从图片来看,电池放在了车轴下方,使得整体重心偏下,甚至可能移到了车轴心以下(那就不需要控制就可以稳定了),这样会对稳定控...
感谢你的细致分析,关于那个传递公式请问是怎么得到的,其中的几个参数分别是什么?我想让小车性能提升,还希望能帮帮忙
大熊现在很幸福
4
主题
12
回复
发表于2016-12-11 11:39:38   |  只看该作者
17#
ken 发表于2016-11-04 14:29:19  9# 我支持你,我投你一票了,资料方便发我邮箱吗,对这个很感兴趣
github地址打开后可以直接下载的~
大熊现在很幸福
4
主题
12
回复
发表于2016-12-11 11:40:20   |  只看该作者
18#
啊元 发表于2016-11-22 18:22:29  13# 你好,楼主麻烦发给我一份吧,我看看原理565620584@qq.com
帖子末尾有git地址,那个里面就可以下载的,所有的资料都有
大熊现在很幸福
4
主题
12
回复
发表于2016-12-11 11:40:57   |  只看该作者
19#
彩虹 发表于2016-11-28 14:37:20  15# 感觉真的是好可爱啊,楼主可以传我一份资料学习下嘛我的邮箱是snoweaglewse@163.com再次感谢楼主!
帖子末尾有git地址,打开后里面就可以下载的
大熊现在很幸福
4
主题
12
回复
发表于2016-12-11 11:46:16   |  只看该作者
20#

http://v.youku.com/v_show/id_XMTg1ODc4OTA5Ng==.html


这个是改进后的小车测试视频,效果比原来好了很多~

小电子
12
主题
236
回复
发表于2016-12-12 12:49:23   |  只看该作者
21#
大熊现在很幸福 发表于2016-12-11 11:38:56  16# 感谢你的细致分析,关于那个传递公式请问是怎么得到的,其中的几个参数分别是什么?我想让小车性能提升,还希望能帮帮忙

小车的平衡控制实际相当于对倒立摆进行控制。

倒立摆的控制相关的论文多如牛毛。我给你附一篇随便找的论文,里面有传递函数公式及推导过程。

你现在的控制效果已经很不错了。若想进一步提高,建议在硬件上采用较小间隙的减速电机、高精度角速度传感器,提高重心位置。

算法上,其实PID控制器已经够用了。你若想采用高级一点的控制算法,可采用LQR控制方法、极点配置法、滑模变结构控制、模糊控制等方法,可以与PID对比一下。

对于这个简单的两轮平衡车而言,上述方法有杀鸡用牛刀的感觉。但你若将来拓展到对四旋翼飞行器进行较好的控制的话,这些高级的控制方法会起到作用。


附论文:

基于MATLAB的直线一级倒立摆的PID控制研究.rar

①黄花No.907 ②FPGA芯片EP4CE6E22C8N ③万用表Fluke15B+ ④LED恒流源LM2733XMF/NOPB⑤CJT1117B-5.0
Amsay
0
主题
1
回复
发表于2016-12-20 13:05:44   |  只看该作者
22#

楼主我也想做一个,可以给我发一份吗?我的邮箱1320450192@qq.com   

haichao
0
主题
1
回复
发表于2020-11-27 09:02:25   |  只看该作者
23#
half
0
主题
3
回复
发表于2021-01-06 14:21:48   |  只看该作者
24#
1072920199@qq.com,老哥,可以给我一份资料吗,谢谢
收集资源
0
主题
1
回复
发表于2021-03-31 15:22:31   |  只看该作者
25#
你好,您介绍中的硬件是否可以买到?或者您是否能提供?我的微信zhaoxiaojun1363
Karl1123
0
主题
1
回复
发表于2021-05-15 19:02:39   |  只看该作者
26#

我想知道用的电机是什么型号的?


cyxian
0
主题
1
回复
发表于2022-02-04 01:14:14   |  只看该作者
27#
eyesonme1123@qq.com,老哥,可以给我一份资料吗,谢谢

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部