OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9557|回复: 9

2013年全国大学生电子设计竞赛-倒立摆源代码-经验交流-开发教程

[复制链接]

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2017-7-24
在线时间
22 小时
发表于 2017-8-1 17:04:42 | 显示全部楼层 |阅读模式
本帖最后由 zcxlyf 于 2017-8-1 17:03 编辑
2013年全国大学生电子设计竞赛+倒立摆源代码+经验交流+开发教程

学校:海南大学       作者:刘一帆        邮箱:zcxlyf_wy@163.com

注:本代码基于正点原子代码改编,欢迎各位交流学习,不要用于其他用途。

干扰

干扰
对立起来的摆施加干扰摆杆不倒下


一、硬件结构

      这个摆硬件结构是易老师某宝买的,在此首先感谢易老师免去了我搭硬件的麻烦。但是硬件上卖家的下面四个螺丝只能拧上两个,其他两颗螺丝由于卖家设计缺陷,根本拧不上。各位小伙伴购买的时候可以让店家再加工一下。我用的这个是辛苦易老师一次次的打孔才固定上的。下面就说一下硬件的注意事项吧。

       1.角度传感器。讲道理这个电位器还是挺好用的。由于STM32参考电压最多给3V3,所以当你电位器两段的电压超过参考电压后32输出就有一段是纯最大值。当电位器两段电压是3V3时最大输出4000多一点,每个角度都会有采样值,这个值够用了。

       2.减速电机。这个电机被我折腾了好几天愣是没烧,不错点个赞!输出的话测试是一周大概1024,并没有经过严格测试。我是放弃了卖家的主控板,改用战舰V3自己从底层开始搭建。

       3.驱动板。驱动板还是飞思卡尔那块从407厕所门口垃圾堆里捡来的驱动板,这里就不再多说。其他可以看我的另一篇帖子这里不表。

二、代码结构

      1.上位机。上位机还是使用匿名的四轴上位机,主要是用的顺手也就没有更换其他的上位机。前两天还特意从匿名那买了两架上位机算是支持一下吧。倒立摆的店家是给了上位机,不过不知道怎么用也不想再去琢磨。总之还是匿名的强大(能在线调PID啊)。

       2.编码器。编码器是使用的通用定时器的编码器模式,具体用法可以参见《STM32中文参考手册》226页第十版,我看店家的初始化挺不错的,我也就直接copy来用了。

       3.ADC。这个由于战舰的PA1连接了TPAD板,我就把这个采样输入移植到了PA4口上,这点在代码里稍微更改一下就可以用了。

       4.电机驱动。电机驱动的话这里我是采用两路PWM波,每个时刻仅仅有一路PWM输出信号,这样控制电机正反转。具体接口各位通过代码里面就看出来了,这里不表。但要注意MOS管死区,一定要先关再开。

       做完上面这几点以后基本的该有的就都有了,下面就是整定PID参数。首先题目设置了角度跟位置的控制,所以这里同样需要两套PID,规定的动作个人感觉组委会做了简化。角度PID在我的代码里面很重要,位置PID一般。如果按照店家提供的代码两个PID级联可以做到控制的非常完美,这点不粉不黑店家还是做的很不错的。相形见绌,我的代码就粗犷很多了,完成比赛是完全没问题的,但不管黑猫白猫抓住老鼠就是好猫。各位想学习,推荐店家的代码,但是店家的代码不太规范,命名有些任性。我的代码没啥含金量,就说简单粗暴完成程序,但是我感觉我的代码分类比店家的好,可以供各位参考打开思路。
       首先,我们调整好位置PID的阶跃响应,利用四轴上位机观测阶跃响应曲线。具体说调整到什么情况算合适呢?这个一般快速跟踪,无静差,振荡很小或者没有震荡。具体怎么调整那个可以看卖家的视频资料,虽然里面讲解是针对平衡小车的,但是倒立摆也是讲的不错的。其次就是角度PID了,这个部分当然是保证立起来,稳定,干扰后能跟踪的上。平衡角度的话大家可以先把摆立起来,然后通过上位机观察输出结果得到,这样简单可靠。然后把这个值定义一下,因为之后的调整螺丝还是会有松动的,我也是吃过这个亏,走了些弯路。然后定义一下摆可调整角度范围,一般竖直位置正负40度左右吧,再定一下。然后建议大家学习一下卖家的低角度保护程序,当摆的角度在水平线以下的时候就关机不调整。这点在后面的测试中很有用,一方面保护电机,另一方面这个摆杆也是比较重,万一哪颗螺丝松了这东东飞起来威力不亚于板砖~后果各位吃瓜群众自己想象哈。

基础部分第一问

基础部分第一问
上图为基础部分第一问荡超过±60°
      以上部分做完之后基本上摆杆倒立,施加干扰都没啥问题了。这样按照题目要求,基础部分第三问,发挥部分第二问也没什么问题了。就剩画圈圈跟倒立起摆了。基础部分第一问要求摆动角度大于±60°,这个我是就设定一个目标这,周期性调整就行。经过测试偏转角度会达到±90°。

倒立起摆

倒立起摆
上图为倒立起摆
      画圆圈部分,这部分起初也是想判断角度啥的,然后一点点增加调整量直至完成画圆。但是无奈本人编码功底浅薄,这个代码没写过关,留在了代码七部分。但是也是比较接近了,差不多能倒立起摆。测试中发现摆会震荡的像无敌风火轮一样,别说摆完成圆周运动了,甩甩能把桌子都掀翻……后来就退回到原始的方法,手动调整,然后观察给力的时间及大小,然后不断修改代码及调整量。这样基础部分第二问画一个圆是接近100%完成。

基础第二问画圈

基础第二问画圈
上图为基础部分第二问,摆画一个圆圈
      下面就剩倒立起摆了,倒立起摆主要是在合适的时间点开始控制开始角度PID控制,这个也是根据实际响应曲线调整,经过测试,我的摆起摆成功率只有90%左右。店家的起摆代码看着也是比较头痛,索性不看了……最后发挥部分第三问,摆在平面画一个圆圈,这个由于我的角度PID输出跟位置PID输出级联不成功,级联过后摆震动特别大,不到5S就掉下来。当然我也尝试过交替执行角度PID跟位置PID,这样情况好那么一点。但最后实现我是利用人为给角度加上偏移量做的,具体实现是进入模式时将当前位置清零(初始化为10000),然后当编码器值小于旋转一周后的值时,给当前的角度偏移量加上一个定值,只要这个值加的不是特别大,摆就不会倒下并且会朝着一个方向转动。当编码器读取的值超过一周之后的值时就把这个偏移量取消掉,这样虽然摆不会停一直转N圈,但不会倒下,完成了题目要求。这点也算是取巧了吧。

鸣   谢

       首先感谢这么多天易家傅老师的指点与帮助,其次感谢某宝卖家搭建的的机械结构,当然最后还有匿名科技提供的上位机!

倒立摆源代码.zip (9.63 MB, 下载次数: 3004)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2017-8-1 17:12:18 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-3-4
在线时间
9 小时
发表于 2018-4-2 09:50:28 | 显示全部楼层
洋气   写的很详细 就佩服你这种人
回复 支持 反对

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-4-2 14:56:40 | 显示全部楼层
厉害!厉害!
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2017-7-24
在线时间
22 小时
 楼主| 发表于 2019-7-1 22:23:09 | 显示全部楼层
又到一年电赛时,每年这个时候留言比较多,总之帖子不常看,欢迎发邮件!
回复 支持 反对

使用道具 举报

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
发表于 2019-7-20 23:58:04 | 显示全部楼层
大佬,从你的15看到17看到13
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-7-23
在线时间
2 小时
发表于 2019-7-26 00:42:33 | 显示全部楼层
非常棒,非常感谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2019-7-29
在线时间
1 小时
发表于 2019-7-29 09:56:20 | 显示全部楼层
楼主,为什么你的工程打不开
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2019-7-23
在线时间
39 小时
发表于 2019-11-7 12:24:23 | 显示全部楼层
学习!牛皮
回复 支持 反对

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2022-4-4
在线时间
66 小时
发表于 2022-6-24 15:58:56 | 显示全部楼层
大佬可以给个联系方式吗?小白弄这个不是很懂
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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