找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 25912|回复: 45
收起左侧

电子设计竞赛-旋转倒立摆-整体方案

  [复制链接]
ID:112317 发表于 2016-4-9 19:20 | 显示全部楼层 |阅读模式
电赛结束了一段时间了,趁这段时间,总结、整理一下自己的方案

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

先来看看题目要求吧:
184537qjurxjgpju6dlxii.png
184538fb9oskoi03i0d40b.png

看完题目,经过一番思索和百度之后,有了大概的方案,于是乎开始准备材料,设计机械(我负责),同时其他队员开始设计tb6560驱动、电源模块等等,当然如果你本来就打算选择控制类题目,步进、直流电机及其驱动最好在比赛之前就有充分的准备,我们是使用现成模块的同时开始制作tb6560(比赛的时候其实评委不看我们做的电路,只看我们能否完成题目要求)
用到的材料大部分都是以前的雕刻机项目剩下的材料,倒是省了不少时间,时间宝贵,当然怎么简单有效怎么来了,编码器连接件等东西是这几天加工出来的,abs材料
来张机械结构渲染图,比赛的时候并没有把全部结果画出来,画出个大概就开始做了,那些细节都是比赛后加上去的:
185555xl6dzh6zm3ry8y5b.jpg
具体的solidworks文件、工程图全部打包在附件中

接下来是电路部分,由于这是控制类题,所以电路比较简单,24v开关电源供电,2596-5v供系统工作,一块arduino nano,一块tb6560,一个ADC键盘用于现场演示,两个mini绝对型编码器1024线
ADC键盘,一个ADC口检测10个按键,我估计检测16个没问题:
190436ksggw9fc0h59h1sy.png
tb6560:
190437dt5tzpd0pte875cf.png
2596稳压:
190438yh8wl823hyr28w2q.png

2014.10.26更新:
系统函数图如下:

000155gbull1juvj5qdvhd.png


在接下来就是程序了
总共写了14个版本程序,最后用的就是PID_1_3、PID_1_4,所以这里就给出这两个版本的注释吧:
///////////PID_1_3/////////
PID_1_3.ino :主程序,开机自动检测0°并计算出180°,之后进入循环功能演示。平衡采用PID控制,第一个PID,以摆杆角度作为作为输入,步进电机速度作为输出。第二个PID,以步进速度作为输入,平衡点作为输出(180°±8°)
当摆杆在-110°~-180°或110°~180°范围内时,进行平衡控制,否则关闭步进输出

编码器读数、PID控制放在Timer2中断中,以保证控制周期精准,控制周期5ms
串口命令读取、状态发送放在主函数循环中

起摆思路1:反复震荡摆杆使其摆角越来越大;步进电机往一个方向运动一点距离,停止,等待摆杆达到最高点,再反向运动,停止,等待摆杆达到反向最高点,如此反复,摆杆进入平衡范围后进行平衡控制(起摆时间太长,不采用)

起摆思路2:步进电机突然给一个方向速度,再急刹车,摆杆由于惯性继续圆周运动,当进入平衡范围时,进行平衡控制(时间基本1s以内)

起摆思路3:步进电机突然给一个方向速度,再急刹车,等待摆杆达到最高点,步进电机再反向快速运动,以提高摆杆动能(杆子太重可用此方法)


Stepp.ino :步进电机驱动,使用了Timer1,setStepperSpeed(long myspeed)用于更新速度,StepperEvent()根据速度值驱动步进,如果有加减速效果会更好

Command.ino :接收命令,更新参数,P100代表参数P=100,etc


Encoder.ino :绝对型编码器读数


Filter.ino :FIR低通滤波、中值滤波

function1~6.ino :分别实现基本要求1~3,提高要求1~3



///////////PID_1_4/////////
PID_1_4.ino : loop中命令值略有更改


Command.ino : 将读取串口数据改为读取ADC键盘值,ADC键盘优点:仅一个AD口可实现10个按键,缺点:读数略复杂,只能单点按键,适合atmega328管脚少的芯片

其他函数同PID_1_3

程序比较长,这里就贴出PID_1_3的主函数吧,完整代码附在附件中:
文件夹说明

AccelStepper、AccelStepperConstSpeedTest 为AccelStepper步进电机驱动库

Encode_SwingUp、MiniEncoderTest 编码器测试

KeyTest ADC键盘测试

MotorPID、MotoTest 直流减速电机方案测试

pendulum_program_PID     Jiyue He(何吉越)的倒立摆方案

PID 我的倒立摆控制程序

PWMTest pwm频率测试

TimerOneStepper TimerOne库测试

pid说明:
PID_0_3 ~PID_1_2为测试版本,其中有的版本使用直流减速电机,有的版本使用步进电

PID_1_3:最终版本,使用串口作为调试手段
PID_1_4:最终版本,将串口调试改为键盘调试


硬件:
AVR atmega328,arduino nano
步进电机+TB6050
绝对型编码器x2(检测摆杆角度、步进)
12864液晶屏(最终没用上)
ADC键盘
24V电源


///////////PID_1_3/////////
PID_1_3.ino :主程序,开机自动检测0°并计算出180°,之后进入循环功能演示。平衡采用PID控制,第一个PID,以摆杆角度作为作为输入,步进电机速度作为输出。第二个PID,以步进速度作为输入,平衡点作为输出(180°±8°)
当摆杆在-110°~-180°或110°~180°范围内时,进行平衡控制,否则关闭步进输出

编码器读数、PID控制放在Timer2中断中,以保证控制周期精准,控制周期5ms
串口命令读取、状态发送放在主函数循环中

起摆思路1:步进电机往一个方向运动一点距离,停止,等待摆杆达到最高点,再反向运动,停止,等待摆杆达到反向最高点,如此反复,摆杆进入平衡范围后进行平衡控制(起摆时间太长,不采用)
起摆思路2:步进电机突然给一个方向速度,再急刹车,摆杆由于惯性继续圆周运动,当进入平衡范围时,进行平衡控制(时间基本1s以内)
起摆思路3:步进电机突然给一个方向速度,再急刹车,等待摆杆达到最高点,步进电机再反向快速运动,以提高摆杆动能(杆子太重可用此方法)


Stepp.ino :步进电机驱动,使用了Timer1,setStepperSpeed(long myspeed)用于更新速度,StepperEvent()根据速度值驱动步进,如果有加减速效果会更好

Command.ino :接收命令,更新参数,P100代表参数P=100,etc


Encoder.ino :绝对型编码器读数


Filter.ino :FIR低通滤波、中值滤波

function1~6.ino :分别实现基本要求1~3,提高要求1~3



///////////PID_1_4/////////
PID_1_4.ino : loop中命令值略有更改


Command.ino : 将读取串口数据改为读取ADC键盘值,ADC键盘优点:仅一个AD口可实现10个按键,缺点:读数略复杂,只能单点按键,适合atmega328管脚少的芯片

其他函数同PID_1_3









视频、图片在这里:
191506vd4lm4v3lwm5me4m.jpg






TB6560.rar

4.42 MB, 下载次数: 130, 下载积分: 黑币 -5

倒立摆.part1.rar

7.81 MB, 下载次数: 244, 下载积分: 黑币 -5

倒立摆.part2.rar

7.81 MB, 下载次数: 146, 下载积分: 黑币 -5

倒立摆.part3.rar

7.81 MB, 下载次数: 157, 下载积分: 黑币 -5

倒立摆.part4.rar

7.4 MB, 下载次数: 168, 下载积分: 黑币 -5

评分

参与人数 3黑币 +15 收起 理由
QQwert + 5
单单单片机就好 + 5 很给力!
hxj + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:140769 发表于 2016-10-20 23:39 | 显示全部楼层
好帖啊!怎么无人问津呢
回复

使用道具 举报

ID:150441 发表于 2016-11-28 09:29 | 显示全部楼层
好帖子!
回复

使用道具 举报

ID:136029 发表于 2017-6-9 22:49 | 显示全部楼层
好帖!
回复

使用道具 举报

ID:210375 发表于 2017-6-12 11:22 来自手机 | 显示全部楼层
好帖啊
回复

使用道具 举报

ID:186619 发表于 2017-6-14 14:43 | 显示全部楼层
我靠,做的太好了,佩服佩服
回复

使用道具 举报

ID:213116 发表于 2017-6-20 22:48 | 显示全部楼层
过程很详细,学习了。
回复

使用道具 举报

ID:221903 发表于 2017-7-25 10:11 | 显示全部楼层
我在做先关心下,看看大神怎么做
回复

使用道具 举报

ID:214944 发表于 2017-7-26 13:35 | 显示全部楼层
过程很详细学习了
回复

使用道具 举报

ID:222554 发表于 2017-7-26 15:30 | 显示全部楼层
过程很详细学习了666666
回复

使用道具 举报

ID:222399 发表于 2017-7-26 19:24 | 显示全部楼层
真的想学习下
回复

使用道具 举报

ID:223039 发表于 2017-7-28 17:19 | 显示全部楼层
好贴,怎么程序没拿点出来参考参考呀?
回复

使用道具 举报

ID:210186 发表于 2017-7-29 21:15 | 显示全部楼层
楼主好人~!
回复

使用道具 举报

ID:221722 发表于 2017-8-25 11:19 | 显示全部楼层
很厉害呀,佩服佩服!我们这边的题不是这个,我做的室内LED光源定位,结果程序没时间调试了,只有个三等奖。。。。。
回复

使用道具 举报

ID:187533 发表于 2017-9-1 16:53 | 显示全部楼层
高手,佩服!
回复

使用道具 举报

ID:245836 发表于 2017-11-10 15:50 | 显示全部楼层
好贴好贴
回复

使用道具 举报

ID:231046 发表于 2017-11-11 10:22 | 显示全部楼层
这个设计做的很实在,思想是用手顶产生倒立来设计的,很好。
回复

使用道具 举报

ID:231046 发表于 2017-11-11 10:23 | 显示全部楼层
是怎么来判定E摆杆刚好在倒立位置上,谢谢
回复

使用道具 举报

ID:251915 发表于 2017-11-21 15:49 | 显示全部楼层
最近正在学习倒立摆,不错的学习贴,屑屑楼主的分享
回复

使用道具 举报

ID:252134 发表于 2017-11-22 13:52 | 显示全部楼层
这个就腻害了,应用在机器人作业上肯定牛逼
回复

使用道具 举报

ID:256017 发表于 2017-12-1 14:42 | 显示全部楼层
真的很给力的资料
回复

使用道具 举报

ID:269900 发表于 2018-1-1 21:24 | 显示全部楼层
佩服!
回复

使用道具 举报

ID:120747 发表于 2018-1-17 12:35 | 显示全部楼层
太厉害了
回复

使用道具 举报

ID:294375 发表于 2018-3-20 20:27 | 显示全部楼层
为什么显示压缩文件已损坏??
回复

使用道具 举报

ID:1 发表于 2018-3-20 21:59 | 显示全部楼层
我只是个弟弟啊 发表于 2018-3-20 20:27
为什么显示压缩文件已损坏??

分卷压缩包,要全部下载后放在一起解压
回复

使用道具 举报

ID:256712 发表于 2018-4-10 18:04 来自手机 | 显示全部楼层
我见过参加比赛的作品,精致程度跟这个简直没法比,这个这个作品真的是太精致了!
回复

使用道具 举报

ID:304879 发表于 2018-4-20 08:56 | 显示全部楼层
好帖!!!!!
回复

使用道具 举报

ID:202351 发表于 2018-5-7 21:56 | 显示全部楼层
这个程序为什么编译失败,有人遇到跟我一样的情况吗
回复

使用道具 举报

ID:329689 发表于 2018-5-14 16:14 | 显示全部楼层
好厉害啊
回复

使用道具 举报

ID:346317 发表于 2018-6-6 17:33 | 显示全部楼层
厉害!!!!
回复

使用道具 举报

ID:250245 发表于 2018-7-31 22:54 来自手机 | 显示全部楼层
我想请问一下楼主,你的自动起摆是用的算法还是写死的?
回复

使用道具 举报

ID:250245 发表于 2018-7-31 22:54 来自手机 | 显示全部楼层
也就是说摆在自由晃动是还可以自动起摆吗?
回复

使用道具 举报

ID:250245 发表于 2018-7-31 22:55 来自手机 | 显示全部楼层
我一直没有想明白如何通过算法自动起摆,我想借鉴一下楼主的方法
回复

使用道具 举报

ID:314863 发表于 2018-9-5 14:26 | 显示全部楼层
ADC电路的电阻值是多少,测量的电压值分别是多少?
回复

使用道具 举报

ID:399899 发表于 2018-10-23 20:10 | 显示全部楼层
牛贴,顶一个,PID真是好啊!
回复

使用道具 举报

ID:458192 发表于 2018-12-29 17:36 | 显示全部楼层
过程很详细啊,谢谢大神分享
回复

使用道具 举报

ID:296549 发表于 2019-1-18 22:10 | 显示全部楼层
好帖,有个问题想请教一下楼主,两个PID环6个参数要怎么调,是先调以摆杆角度作为作为输入,步进电机速度作为输出的环。还是先调以步进速度作为输入,平衡点作为输出的环
回复

使用道具 举报

ID:295704 发表于 2019-3-10 23:49 | 显示全部楼层
   谢谢楼主 ,对我帮助很大 好贴!
回复

使用道具 举报

ID:293448 发表于 2019-3-23 22:47 | 显示全部楼层
请问 机械结构楼主哪里买的
回复

使用道具 举报

ID:584101 发表于 2019-7-16 19:31 | 显示全部楼层
谢谢啊!很给力,给我们这些后来的人一个参考
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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