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

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

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013电子设计竞赛-旋转倒立摆-整体方案 .doc

2013电子设计竞赛-旋转倒立摆-整体方案 /thread-7421-1-1.html电赛结束了一段时间了,趁这段时间,总结、整理一下自己的方案 ------------------------------------------------------------------------------------------------------------ 先来看看题目要求吧: 看完题目,经过一番思索和百度之后,有了大概的方案,于是乎开始准备材料,设计机械(我负责),同时其他队员开始设计tb6560驱动、电源模块等等,当 然如果你本来就打算选择控制类题目,步进、直流电机及其驱动最好在比赛之前就有充分的准备,我们是使用现成模块的同时开始制作tb6560(比赛的时候其 实评委不看我们做的电路,只看我们能否完成题目要求) 用到的材料大部分都是以前的雕刻机项目剩下的材料,倒是省了不少时间,时间宝贵,当然怎么简单有效怎么来了,编码器连接件等东西是这几天加工出来的,abs材料 来张机械结构渲染图,比赛的时候并没有把全部结果画出来,画出个大概就开始做了,那些细节都是比赛后加上去的: 具体的solidworks文件、工程图全部打包在附件中 接下来是电路部分,由于这是控制类题,所以电路比较简单,24v开关电源供电,2596-5v供系统工作,一块arduino nano,一块tb6560,一个ADC键盘用于现场演示,两个mini绝对型编码器1024线 ADC键盘,一个ADC口检测10个按键,我估计检测16个没问题: tb6560: 2596稳压: 在接下来就是程序了 总共写了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的主函数吧,完整代码附在附件中: ARDUINO 代码复制打印 #include TimerOne.h ? ? ? #define setBit(val, bitn)? ? (val |=(1(bitn))) #define clearBit(val, bitn)? ???(val=~(1(bitn))) #define getBit(val, bitn)? ? (val (1(bitn)) ) ? int functionSpeed=0,functionFlag=0; int PIDSign=true,SpeedPIDSign=true;; int function3Sign=false; ? /////////////Angle Parameter/////////

您可能关注的文档

文档评论(0)

mwap + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档