社区导航

 
查看: 3235|回复: 8

[原创] 自平衡小车DIY

[复制链接]

1158

TA的帖子

7

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2015-7-23 14:15:11 | 显示全部楼层 |阅读模式
本帖最后由 dj狂人 于 2015-7-23 14:19 编辑

          快国赛了,选的是控制方向,没什么好准备的,不过在比赛前想把PID搞清楚来。PID的话之前买了架
小四轴,匿名的。还不错,不过他送的源代码使用C++写的,封装的比较深,看起来有点吃力。还是比较喜欢
匿名比较前面版本的源码,一目了然。

在把四轴的PID控制部分和数据处理过了一遍之后,有了做自平衡小车的想法,自平衡小车跟最基本的四轴在
原理上的话说实在的没什么区别,只不过四轴的要处理三个轴的参量,而自平衡小车一个轴就够了。所以我就
根据手头上有的资料和器件,把四轴的程序抠出来转移到自平衡小车上,当然目的还是通过这次DIY更好的理解
PID和对MPU6050的数据处理。

1、DIY自平衡小车我用到的东西大致如下:
IMG_20150722_090109.jpg

2、首先我做了简易的车体

IMG_20150722_085839.jpg IMG_20150722_085903.jpg

这个车体使用3D打印机打印的,打印的时候室内开了空调,打印机机内温度受了点影响,导致打印的时候有点翘边,
那个平面打成弧形。

3、车体打印好后,就是组装了,先把直流电机以及车轮装上
IMG_20150722_091907.jpg IMG_20150722_091918.jpg

接着装直流电机驱动模块:
IMG_20150722_092258.jpg

然后是主控板,主控板我用的是STM32F103系列的芯片,板子上的那个NRF24L01模块是用来进行PID参数整定的,
也就是在上位机修改PID参数,然后通过无线模块发送给主控板,这样就不用修改PID的时候重新烧写程序了,当然
上位机软件什么的也是借用了匿名四轴的。

IMG_20150722_093105.jpg IMG_20150722_093114.jpg


接着是电池盒和MPU6050,其中MPU6050模块是大头,它负责实时采集小车当前的姿态,所以它的摆放位置有点讲究,我
这里只用到X轴,所以小车前进方向平行MPU6050陀螺仪的X轴方向
IMG_20150722_095242.jpg IMG_20150722_100437.jpg IMG_20150722_100444.jpg IMG_20150722_134331.jpg IMG_20150722_134339.jpg IMG_20150722_134352.jpg



车子组装好之后就下来就是程序的移植了,考虑到我用的直流电机驱动模块工作特性和四轴控制部分的工作

原理之后,我分别把四轴那四个脉宽输出的四个引脚接到直流电机的四个输入端。我们知道L298电机驱动模块

可以通过四个输入引脚分别控制两个点击的正转或反转,比如 INA、INB 分别置‘1’、‘0’ 时电机正转,那么置‘0’、‘1’

则电机反转。而对于‘X’ 模式的四轴,当需要前进的时候M2、M1两个电机减速、M3、M4两个电机加速,这样的话,

如果四轴的程序要应用到自平衡小车,我们可以这样,把原来脉宽控制M2、M3两个电机的引脚接到L298电机驱动

模块的INA、INB输入引脚(程序中需要有一定的改动),同样把 M1、M4的接到 INC、IND引脚上。

8`892}0[R_R`FSFUMI8NBVM.png     R$`~Z4IZ7{N)`CGVE8ZZ{{2.png

额,写着写着感觉写的乱七八糟的,先到这吧。因为自平衡小车目前还在调,等调出来后再把程序共享。




此帖出自stm32/stm8论坛


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-7-23 14:31:43 | 显示全部楼层
我也想在这个方向弄,学习了!!!


回复

使用道具 举报

1017

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-7-23 15:38:39 | 显示全部楼层
这个直流电机速度好差啊
感觉好慢

点评

恩恩 重心低的时候还行,抬高重心后速度还有力矩的问题就显现出来了  详情 回复 发表于 2015-7-24 12:09


回复

使用道具 举报

831

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-7-23 15:52:39 | 显示全部楼层
很好的分享,加油


回复

使用道具 举报

1158

TA的帖子

7

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

 楼主| 发表于 2015-7-24 12:07:25 | 显示全部楼层
折腾了一天,有点效果了,不过小幅度摆动还能调整过来,摆动大了直接就躺地上了。根据小时候玩这个

MKLBBA5{4Q6`SSJD@%[[]~A.png 的经验,我觉得应该是重心太低的原因。所以做了块支撑板把重心抬高,当然MPU6050的
摆放位置也抬高了,让它更好地捕抓小车姿态。还有车体也重新打了一个,颜色比较风骚

IMG_20150724_113213.jpg IMG_20150724_113128.jpg
经过一系列改进之后,效果怎么说呢,先看视频


没错,只坚持几秒。没抬高重心之前可以坚持个十来秒的,之前忘了拍视频。
目前坚持不了多久的原因我的分析是恢复力不够。玩过四轴的应该知道四轴的
电机控制量 = 基础油门 + 俯仰控制量 + 横滚控制量 + 偏航控制量;而我把四轴程序移植到自平衡小车上时,
电机的控制量应该只要俯仰控制量(因为我取陀螺仪的X轴作为参考)。但在程序中基础油门我并没有去掉,
如果没有基础油门的话靠俯仰控制量根本控制不了。那么接下来的工作则是把基础油门去掉,放大俯仰控制量。
不说了,看代码先(匿名V3的代码封装的太深了,看着好累。而且他里面进行姿态结算的时候用的不是四元数,是另一种
算法)


回复

使用道具 举报

1158

TA的帖子

7

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

 楼主| 发表于 2015-7-24 12:09:43 | 显示全部楼层
wgsxsm 发表于 2015-7-23 15:38
这个直流电机速度好差啊
感觉好慢

恩恩  重心低的时候还行,抬高重心后速度还有力矩的问题就显现出来了


回复

使用道具 举报

1158

TA的帖子

7

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

 楼主| 发表于 2015-7-26 15:12:23 | 显示全部楼层
经过这两天的折腾,算是有点回报了,别的不说,先上视频:




      目前还没整定PID,就用四轴原来调好的,效果还行,小幅度的摆动还应对的过来,大幅度的时候明显

调整不过来,直接躺地上了。这次的平衡效果比较好,主要是换上了减速电机。为了凑出一对减速电机,可

是把实验室翻了个底朝天,拆东墙补西墙最后才把两个电机凑出来,桌面上现在一堆尸体

IMG_20150726_133932.jpg

电机弄好后,发现联轴器不够了,当时那个郁闷。不过在这个女朋友都能打印的时代,小小联轴器还能难得

倒英雄汉,没有就打一个

IMG_20150726_134001.jpg (模型是叫实验室里的同学画的,感谢队友的给力助攻



IMG_20150726_134105.jpg IMG_20150726_134030.jpg IMG_20150726_133920.jpg

车子能站起来算是不小的成果了,接下来是PID参数整定,还有硬件以及供电部分的优化




回复

使用道具 举报

35

TA的帖子

3

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-7-29 11:54:38 | 显示全部楼层
赞一个,,,,,,,,

点评

谢谢  详情 回复 发表于 2015-7-29 20:13


回复

使用道具 举报

1158

TA的帖子

7

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

 楼主| 发表于 2015-7-29 20:13:52 | 显示全部楼层
烟花绽放 发表于 2015-7-29 11:54
赞一个,,,,,,,,

谢谢


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-10-17 12:49 , Processed in 0.347521 second(s), 18 queries , Gzip On, MemCache On.

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