




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)2013年9月7日简易旋转倒立摆及控制装置摘要 倒立摆系统是非线性、强耦合、多变量和自然不稳定的系统。本设计采用42BYJ25040的5V驱动2相4线制的步进电机制作了一个简易旋转倒立摆控制系统,用WDD35电位器采集摆杆摆动过程中的角度数据,反馈给微控制器MC9S12XS,由微控制器经PID控制算法处理后输出PWM波(脉冲),驱动步进电机正反转,从而带动摆杆摆动。系统主要由摆架框架、传感器部分、主控板、步进电机及驱动四个部分组成。本设计基本能完成摆杆摆动幅度大于60度和旋转一周,并且能够实现倒立并且倒立时间不低于5S,并且具有一定的抗干扰能力。关键词:步进电机,MC9S12XS,WDD35电位器,PID控制算法目录1 系统方案41.1 设计任务41.2 设计要求41.2.1 基本要求41.2.2 发挥部分41.3实现方法41.4方案论证51.4.1 控制器模块51.4.2 电机模块51.4.3 角度检测模块51.5 系统设计62 理论分析与计算62.1 简易倒立摆的数学模型62.2 系统框图73 电路与程序设计73.1 硬件及单元电路73.2 软件设计与工作流程图83.2.1 PID算法83.2.2 软件设计93.2.3 工作流程图94 结果分析104.1 测试方案及基准数据104.1.1 测试仪器104.1.2 电位器测试数据104.1.3 摆杆平衡位置104.2 基本及发挥要求测试结果104.2.1 基本要求一测试104.2.2 基本要求二测试104.2.3 基本要求三测试104.2.4发挥部分要求一测试104.2.5发挥部分要求二测试114.2.6发挥部分要求三测试115结语11参考文献:11附录12 1 系统方案1.1 设计任务设计并制作一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图1所示。电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。摆杆E通过转轴D固定在旋转臂C的一段,当旋转臂C在电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。图1 旋转倒立摆结构示意图1.2 设计要求1.2.1 基本要求 (1) 摆杆从出于自然下垂状态(摆角0)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60 +60; (2)摆杆从出于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动; (3)摆杆从出于自然下垂状态下,外力拉起摆杆至接近165位置,外力撤除同时,启动控制旋臂摆使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动角度不大于90。1.2.2 发挥部分 (1)摆杆从出于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆倒立,保持倒立状态时间不少于10s; (2)在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s内恢复倒立状态; (3)在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过的角度达到或超过360度; (4)其他。1.3实现方法 本题要求设计并制作一个简易旋转倒立摆及控制系统,在电动机带动旋转臂转动的过程中尽快使摆杆摆动角度超过60度、摆动一周、实现倒立等要求。我们想利用步进电机作为驱动带动旋转臂旋转, 角度传感器测量摆杆摆过的角度。 该系统主要由以下三大部分组成,摆架框架:包括支撑底座、旋转臂、摆杆等组成;检测系统:通过编码器检测出摆杆摆动一定角度所对应的脉冲数 ,传送给单片机进行数据处理; 控制驱动系统:控制器通过对传感器输出信号的分析发出控制信号, 经电机驱动器控制电机的转动,带动摆杆转动,实现各功能。1.4方案论证1.4.1 控制器模块 方案一: 采用 ATMEL 公司的 AT89C51。 51 单片机价格便宜, 应用广泛, 简单,实用,资料多 ;但是51单片机运行速度很慢,I/0口的驱动能力弱,功耗比较高,抗干扰能力也不是很强。 方案二: 采用 TI 公司的 ARM Cortex-M3 内核处理器芯片 LM3S1439 作为中央处理器,处理器本身带有 32 KB 的 bit-banded SRAM 和 96 KB 的 Flash 存储器,对于一般的控制应用,不需外扩数据程序存储器, 对此RAM 单片机的了解太少,短期内不能熟悉进行编程,给制作带来困难。 方案三:采用freescale公司的MC9S12XS单片机,该单片机性能远远优于51单片机,广泛应用于工业和服务业,而且由于前段时间参加了飞思卡尔智能车比赛,所以对该单片机的编程比较熟悉。 所以根据本题的要求并结合实际我们最终选择了第三种方案。1.4.2 电机模块 方案一: 采用直流减速电机控制旋转杆的运动,直流减速电机力矩大,转动速度快,但其制动能力差,对摆杆倒立时的微控制器能力差。 方案二:采用 42BYJ25040 5V驱动的2相 4线制的步进电机。它是减速步进电机,体积小,减速比为 1:8,步进角为1.8度。它的主要特性有:步进电机具有瞬间启动和急速停止的优越特性,能够实现精微控制。改变脉冲的顺序,可以方便的改变转动的方向。并且,使用一个和该减速电机配套的步进电机驱动器,型号是ZD-6209-V2。该驱动器有细分和信号衰减选项,可以实现对步进电机的更加精确的控制。 经过比较,步进电机更适合该系统的控制,特别是摆杆倒立的精微控制,所以我们选择了方案二。 1.4.3 角度检测模块 角度检测模块也是系统的重要组成部分,我们需要利用角度传感器来测量 摆杆摆过的角度,该数据要传送给MC9S12XS控制器,经计算确定步进电机的下一个状态, 因此要求角度传感器精度高,频率快。 方案一:采用E6A2CW3C编码器,该编码器的转轴可随摆杆转动,并且输出脉冲,转轴每转一圈编码器输出500个脉冲,由此可实时测得摆杆转过的角度。 方案二:采用角速度传感器ENC03,该传感器轻盈灵便,其输出由X、Y、Z输出,角度和加速度输出五个输出端口,通过多种端口都可以输出角度对应的采样值,但该采样值在一定范围内是跳动不定的,会对系统产生影响,不利于摆杆的稳定。 方案三:采用WDD35系列角位移传感器,其功能在于把角度机械位移量转换成电信号。为了达到这一效果,通常将可变电阻基体定置在传感器的固定部位,通过电刷在电阻基体上的位移来测量不同的阻值。传感器滑轨连接稳态直流电压,允许流过微安培的小电流,电刷和输出端之间的电压,与电刷在电阻基体上滑过的角度成线性关系。将传感器用作分压器可最大限度降低对电阻基体总阻值精确性的要求,因为由温度变化引起的阻值变化不会影响到测量结果。在满足设计要求的前提下,考虑到稳定性等因素,我们选择了方案三。1.5 系统设计 根据上述方案论证,我们最终确定了以MC9S12XS128单片机作为中央处理器,采用型号为 42BYJ25040 的步进电机配合ZD-6209-V2步进电机驱动控制旋转杆,用WDD35高精度电位器来采集摆杆的转动角度,反馈回MCU。每个模块均有合适电源进行供电。2 理论分析与计算2.1 简易倒立摆的数学模型在忽略了空气阻力、各种摩擦之后,将简易倒立摆系统抽象成匀质摆杆和水平杆组成的刚体系统。建模思路:为求出旋臂所需偏转角度,进而控制步进电机转动,可以将该旋转倒立摆分为两部分进行分析。第一部分,如图3左侧图,摆杆所在平面中,可将旋臂视为质点。可以看出,此时旋臂对摆杆的支点无法保持摆杆平衡。于是,如图3右侧图,可以通过调整支点位置,让支点到达摆杆顶点在旋臂所在平面的投影,来使得摆杆平衡。左下图中可以求出在对应时刻支点与摆杆顶点的水平距离X=L*sin。右下图为旋臂所在平面,可求出=-arctan(X/R)。根据计算结果提供PID算法所需要的和ERROR,根据经验调试出合适的P,I,D参数,并对电机进行合理的控制。简易倒立摆的结构如图所示:图3 简易旋转倒立摆模型示意图表1 简易倒立摆的物理参数旋臂的质量摆杆的质量 旋臂杆的长度72g30g35.0cm水平杆绕端点的转动惯量 摆杆绕质心的转动惯量 摆杆质心到转轴的距离0.000007350.00028224216.8cm2.2 系统框图按照题目要求,将摆杆保持倒立状态(-165-165)维持5秒以上即可完成题目要求。图4 系统结构框图系统框图如图4,该系统工作原理为:首先,单片机从电位器上读取摆杆的角度,之后根据具体要求和角度值计算,得到控制需求,并按需求将控制信号发送给步进电机,由步进电机带动旋臂旋转,进而控制摆杆位置。3 电路与程序设计3.1 硬件及单元电路 硬件部分主要由MCU小系统板及电机驱动组成。 脉冲方向脱机 AD2 P1 VCC P3 MC9S12XS128GND p4 紫 绿 蓝 电位器 电机驱动器 图5 主控板与电位器、电机驱动器接口图 B-B+A-A+ 黄橙绿灰图6 电机驱动与电机接线图图7 简易旋转倒立摆实物图图8 小芯片板及其附属模块3.2 软件设计与工作流程图3.2.1 PID算法在该设计中,算法的设计是很关键的一步,算法精确度选取的好坏,直接影响到系统运行的准确性。在比较自适应算法和PID算法后,采用PID算法。PID控制相应的控制算法式为:式中控制端输出;偏差为零时的初值;调节器输入函数,即给定量与输出量的偏差;比例增益;积分时间常数;微分时间常数;将上式展开,函数可以分为比例控制,积分控制和微分控制三部分。核心控制其计算公式一般为离散分量,需要对差分方程作出近似处理后改为: 即 式中 采样周期; 采样序号; 和分别为第k-1和第k次控制周期的偏差;综合以上几个公式,可以得出差分公式为:3.2.2 软件设计系统软件实现的功能如下: (1)选择工作模式;(2)读取角度传感器采集的数据; (3)根据计算所得ERROR,使用PID算法计算出电机速度,用于控制电机;(4)控制摆杆平衡。整个系统为闭环系统。3.2.3 工作流程图系统工作流程如图6所示。单片机初始化以后,便使用定时器中断检测按键,来判断工作模式。按键后自动进入某个工作模式,并根据模式不同要求来开启模块并实现功能。图6 软件流程图4 结果分析4.1 测试方案及基准数据4.1.1 测试仪器 稳压电源,万用表,量角器(精度1),秒表,直尺4.1.2 电位器测试数据表2 电位器测试数据角度0 45 90 135 180 -45 -90 -135A/D(10位精度)基准0 125 255 382 512 897 7656404.1.3 摆杆平衡位置以摆杆处于自然下垂状态为基准,测得摆杆平衡位置为161.72。4.2 基本及发挥要求测试结果4.2.1 基本要求一测试测试方案:从摆杆处于自然下垂状态开始,驱动电机带动旋转臂往复旋转,摆杆随旋转臂摆动,察看每次旋转臂转动与摆动之间的关系。通过摆杆后的轻质量角器记录摆杆摆动的大概角度,填于表3中。表3 基本要求1测试结果序号12345摆杆角度/92951109895时间/S1.51.61.71.51.54.2.2 基本要求二测试测试方案:从摆杆处于自然下垂状态开始,驱动电机带动旋转臂往复旋转,摆杆随旋转臂摆动,记录摆杆旋转360所需最短时间,并填于表4中。表4 基本要求2测试结果序号12345所需时间/S1.71.71.81.81.74.2.3 基本要求三测试测试方案:将摆杆打到180附近,用手辅助其稳定,然后将其释放,让摆杆保持自平衡,记录平衡时间,并填于表5中。表5 基本要求3测试结果序号12345平衡时间/S84.26.2154.34.2.4发挥部分要求一测试测试方案:从摆杆处于自然下垂状态开始,驱动电机带动旋转臂往复旋转,摆杆随旋转臂摆动,记录从启动到摆杆自平衡所需时间和摆杆维持平衡时间,并填于表6中。表6 发挥要求1测试结果序号123启动到摆杆自平衡时间(秒S)未完成15未完成摆杆维持平衡时间(秒S)-3-4.2.5发挥部分要求二测试测试方案:在基本要求3完成的基础上,以15cm长细绳栓一只5克砝码,在摆杆上方将砝码拉起1545,释放后用砝码沿摆杆摆动的切线方向撞击摆杆上端1-2cm处,记录拉起角度及摆杆保持平衡情况,并填于表7中。表7 发挥要求2测试结果序号123拉起角度/153045摆杆平衡情况平衡平衡平衡4.2.6发挥部分要求三测试测试方法:在基本要求3完成的基础上,旋转臂作圆周运动,并记录旋臂转过360的最短时间,并填于表8中。表8 发挥要求3测试结果序号123最短时间(S)1.3未完成1.25结语 经过紧张的四天三夜的奋力拼搏,我们小组成员通力协作,团结互助,终于完成了实验项目。 通过测试,本系统达到了设计的所有要求。在本次设计的过程中,我们遇到许多困难。在调试程序的过程中,尤其是基本要求三,要求摆杆能够倒立五秒以上的程序,我们通过小组讨论及多次讨论、探索,尝试了各种方法,最终实现了要求三。但是由于时间的不足,硬件、软件的很多方面还要加以优化。本次电子设计大赛,让我们意识到我们所掌握的知识是那么的少,并激起了我们对新知识、新事物的学习和探索的勇气;让我们对电路设计、软件调试方面有了更加深刻的认识,加深了对测控技术的理解,同时也深刻地体会到共同协作和团队精神的重要性,提高了我们解决问题的能力。设计中还有欠缺的地方,今后的学习工作中会加以注意。通过这次设计,我们明白团队合作的力量,同时要注重创新,每一个小小的想法都可能有你意想不到的结果。参考文献:1牛东.多功能垂直式双支点旋转型倒立摆控制研究D.长春工业大学,2007.2张伟,李升娟,于飞,刘喜梅.基于PCI9052的倒立摆控制系统的接口设计J.青岛科技大学学报(自然科学版)2005,26(6)3刘靖,陈在平,李其林.基于PC的倒立摆控制系统设计与实现J.天津理工大学学报.2006,22(2)4姬北辰.多级直线倒立摆若干问题的研究D.中国科学技术大学,2005.5王敏,苏晓鹭,王淼.旋转式倒立摆控制策略D.大连海事大学学报,2008.附录中断程序如下:/定时中断(Period Interrupt Timer)#pragma CODE_SEG _NEAR_SEG NON_BANKEDinterrupt VectorNumber_Vpit0 void mode(void) /20MS PITTF_PTF0=1; Command(); if(tc!=0&(tc!=mod)&(tc!=mod-10) /遥控扫描&按键扫描 state=0; mod=tc; if(mod&state0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMPER23 = 10; PWMDTY23 = 10; PWMDTY01=1; PWME_PWME1 = 1; PWME_PWME3 = 1; PWME_PWME4 = 1; PITCE_PCE1=1; mod+=10; break; #pragma CODE_SEG DEFAULT #pragma CODE_SEG _NEAR_SEG NON_BANKEDinterrupt VectorNumber_Vpit1 void function(void) /10MS PITTF_PTF1=1; switch(mod) case 11: /*if(abs(pulsepast1)%500-250=abs(pulse)%500-250&abs(pulsepast1)%500-25030) speedstep-=3; PWMPOL_PPOL4=0; PWMPOL_PPOL3=PWMPOL_PPOL3; STEPTIME=600; PWMPOL_PPOL4=1; pulsepast2=pulsepast1; pulsepast1=pulse;*/ if(speed=2400) speedmark=2; else if(speed=-2400) speedmark=1; SetSpeed(); break; case 12: if(state0?(pulse%500)*360/500.0:(pulse%500)+500)*360/500.0; ad = ADCapture();/128 angle = ad0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMDTY01=1; PWME_PWME1 = 1; PWME_PWME3 = 1; PWME_PWME4 = 1; else /if(abs(pulse%500)=220&abs(pulse%500)=300) ad = ADCapture(); angle = ad(390+adstandard)&ad0?(pulse%500)*360/ 500.0:(pulse%500)+500)*360/500.0; /deltaangle=atan(0.8*sin(angle-ANGLEBALANCE)*PI/180)*180/PI; PID(); speed=targetspeed; if(speed0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMDTY4=10; /SetSpeed(); / /*else targetspeed=1; if(speedmark=3) speedmark=1; if(speed=2150) speedmark=2; PORTB_PB2=PORTB_PB2; else if(speed=-2150) speedmark=1; PORTB_PB3=PORTB_PB3; */ else speed=0; PWMDTY4=0; e_I=0; e_D=0; break; case 13: /*if(state=950) state+;/计时4S if(state=152) PORTB=0xef; else if(state=350) PORTB=0xdf; else if(state=550) PORTB=0xbf; else if(state=750) PORTB=0x7f; else if(state=950) ad = ADCapture(); angle=ad0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMDTY01=1; PWME_PWME1 = 1; PWME_PWME3 = 1; PWME_PWME4 = 1; else */ ad = ADCapture(); angle = ad(360+adstandard)&ad0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMDTY4=10; else speedpast=speed; if(speed=1800) speedmark=5; else if(speed=-1800) speedmark=4; SetSpeed(); / break; case 14: if(state0?(pulse%500)*360/500.0:(pulse%500)+500)*360/500.0; ad = ADCapture();/128 angle = ad0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; kp=-5,ki=-4*0.05965,kd=-4*0.98;/5 0.6 9,8 PWMDTY01=1; PWME_PWME1 = 1; PWME_PWME3 = 1; PWME_PWME4 = 1; else /if(abs(pulse%500)=220&abs(pulse%500)=300) ad = ADCapture(); angle = ad(390+adstandard)&ad0?(pulse%500)*360/ 500.0:(pulse%500)+500)*360/500.0; /deltaangle=atan(0.8*sin(angle-ANGLEBALANCE)*PI/180)*180/PI; PID(); speed=targetspeed; if(speed0) PWMDTY23 = 10; else PWMDTY23 = 0; PWMPER01=STEPTIME; PWMDTY4=10; /SetSpeed(); / /*else targetspeed=1; if(speedmark=3) speedmark=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农村环境综合治理方案设计大赛试题集
- 护理基础吸氧知识培训课件
- 2025秋苏教版一年级上册数学教学计划
- 2025年OLED检测系统项目发展计划
- 2025年乙二醇二乙醚合作协议书
- 黑龙江省大庆市肇源县西部五校联考(五四学制)2025-2026学年八年级上学期开学考试地理试卷(含答案)
- 河北省承德市围场县围场玉林学校2024-2025学年六年级上学期期末数学试题参考答案
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 新冠育苗考试及答案
- 幼儿语言领域考试及答案
- 2025年育婴师考试必考知识试题及答案
- 基孔肯雅热防护知识科普课件
- 中医优才考试试题及答案
- 2025-2026学年新交际英语(2024)小学英语一年级上册教学计划及进度表
- 河北省廊坊市2024-2025学年高一下学期期末考试 数学试卷
- 2025年卫生高级职称考试(超声医学)历年参考题库含答案详解(5卷)
- 医学生的初心与使命
- 2026版高中汉水丑生生物-第二章第4节:蛋白质(录课用)
- 学长学姐给大一新生的讲座
- 2025年福建省高考真题卷历史试题
- 2025年人教部编版九年级道德与法治下册全册知识点
评论
0/150
提交评论