ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:121.92KB ,
资源ID:9245368      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9245368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(河北省电子设计竞赛省一简易旋转倒立摆及控制装置.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

河北省电子设计竞赛省一简易旋转倒立摆及控制装置.docx

1、河北省电子设计竞赛省一简易旋转倒立摆及控制装置河北省大学生校园“挑战杯”竞赛作品申报表作品名称旋转倒立摆及控制装置作品分类甲类:已创业() 乙类:未创业()作品所属领域分组1产品()A.农林、畜牧、食品及相关产业组B.生物医药组 C.化工技术、环境科学组D.电子信息组 E.材料组 F.机械能源组2服务()G.服务咨询组参赛学校(全称)河北联合大学所在市唐山市团队主要成员姓名性别年龄年级、专业备注(负责人)王剑秋男2011级电气工程王剑秋樊佳良男2211级测控曹永策男2011级测控团队联系方式通讯地址河北省唐山市邮编063000电话手机182*指导教师通讯地址邮编电话手机作品简介(200字以内)

2、 倒立摆是典型的快速、多变量、非线性、强耦合、自然不稳定系统。一级倒立摆系统由于其本身是自不稳定系统 ,实验建模存在一定困难,所以采用PID控制算法。通过角度传感器反馈的不同角度,判断摆杆的位置,采用闭环控制系统控制摆杆的摆动。本系统采用ATMEGA32 AVR单片机,BTS7960 驱动直流大功率电机。要想使摆杆更快、更稳的倒立,调节Ki、Kp、Kd相关PID参数是关键。经测试,系统基本完成了全部要求。学校意见盖章:年 月 日省级评委会意见 签名:年 月 日备注旋转倒立摆及控制装置设计与总结报告1 系统方案 21.1主控系统选择31.2电机选择31.3电机控制系统选择31.4角度传感模块选择

3、32理论分析与计算 42.1系统组成42.2电机控制系统52.2摆杆状态检测6 2.3 驱动与控制算法 53 测试方案与测试结果 63.1 测试仪器63.2测试方法63.3测试数据74 参考文献 75 附录8 附1:部分元器件清单 8附2:仪器设备清单 8 附 3:部分程序清单 8摘要: 倒立摆是典型的快速、多变量、非线性、强耦合、自然不稳定系统。一级倒立摆系统由于其本身是自不稳定系统 ,实验建模存在一定困难,所以采用PID控制算法。通过角度传感器反馈的不同角度,判断摆杆的位置,采用闭环控制系统控制摆杆的摆动。本系统采用ATMEGA32 AVR单片机,BTS7960 驱动直流大功率电机。要想使

4、摆杆更快、更稳的倒立,调节Ki、Kp、Kd参数是关键。经测试,系统基本完成了全部要求。关键词: 倒立摆 光电传感器 单片机电机驱动 PIDAbstractnverted pendulum is a typical model of multi variable, nonlinear,strong coupling, naturally unstable system. Inverted pendulum system because of its own since the unstable system, the experimental model has certain difficul

5、ty, so the PID control algorithm. Through the different angle sensor feedback, judgethe pendulum rod position, closed loop control system to controlthe swing of the swing rod by. The system uses ATMEGA32microcontroller AVR, BTS7960 drive DC motor with large power.Inverted pendulum to make faster, mo

6、re stable, regulation of Ki,Kp, Kd is the key. After the test, system has basically completedall requirements.Keywords:Inverted Pendulum Photoelectric Sensor SCM Motor Driver PID1系统方案 1.1主控系统选择方案一:采用高性能嵌入式系统,比如ARM。如果采用此方案,可以很好的解决数据处理和控制功能,但是ARM价格昂贵且本阶段很少接触,在短时间内完成困难比较大。方案二:采用大规模可编程逻辑器件,如FPGA,CPLD但本题

7、属于控制类,不适合采用此方案。方案三:采用51系列单片机。其优点之一在于,它从内部硬件到软件有着一套完整的按位操作系统,即位处理器。而且硬件结构合理,而且指令系统也更为规范。缺点:运行速度慢,I/O口驱动能力弱。而且功耗比较高,抗干扰能力不强。方案四:采用AVR单片机,考虑到方案的可实行性和性价比,我们采用ATMEGA32单片机,此款单片机内部不分频,采用RISC精简指令集,可实现高速运算,存储空间大,I/O口驱动能力高,价格低廉,性价比极高。1.2电机选择 本题是控制类题目,所以电机的选择尤为重要。 方案一:选择直流电机,通过减速齿轮增大扭力,提高带负责能力。直流电机的优点是价格便宜,控制容

8、易,但难以精确控制是其一大弱点。 方案二:选择步进电机。步进电机的特点是可以精确控制电机选择步数和角度,缺点就是力矩转速小,容易失步,而且价格比较昂贵。 考虑到题目要求性价比高,所以我们选择直流电机,通过优良的控制算法,达到高精度定位。1.3电机控制系统选择方案一:通过晶体三极管等分立元件搭H桥。优点是价格便宜,结构简单,控制简单。但由于晶体三极管的承载电流比较小,驱动能力受到限制,因为是分立元件,稳定性不敢保证,且体积比较大。方案二:采用集成芯片,如BTS7960等。其优点是集成度高,电路简单,控制方便可靠,体积小,效率高。考虑到旋转倒立摆需要的大扭力和转速,我们采用方案二。BTS7960,

9、驱动电流最高43A,其内阻很小,无需加散热片。双BTS7960 H桥驱动电路,具有强劲的驱动和刹车效果,有效隔离单片机与电机驱动。价格也比较适中。1.4 角度传感器的选择方案一: 陀螺仪是用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置。它根据物件运动和方向改变输出信号的电压值,然后再用单片机的A/D转换器读取此输出信号,就可以检测其旋转的角度。方案二:光电编码器1.光电编码器,又称光电轴角位置传感器。是集成光机电为一体的数字测角装置,主要是以高精度计量光栅为检测元件,通过光电转换;2.将轴的机械角位移信息以LED光源为介质通过光栅码盘转换成相应的数字代码,

10、用他可以实现角位移、角速度、和角加速度及其他物理量的精确测量,输出信号与计算机相连接,不仅能够实现数字测量与数字控制,而且与其他同类用途的传感器相比,具有精度高、测量范围广、使用可靠、易于维护等优点;小结:经过几番仔细的论证和比较,我们决定了本系统主要模块方案如下:角加速度控制方案:采用测传统PID算法。主控制器:AVR ATMEGA32单片机。旋转臂方案:大功率直流电机驱动。 电机控制系统:大功率智能车电机驱动模块BTS7960 43A限流控制半导体制冷驱动。2电路设计2.1系统组成本系统由角加速度传感器,主控单片机,电机控制芯片,电机驱动模块,液晶显示模块,电源模块等组成。 图2.1系统组

11、成原理图2.2 最小系统原理图ATMEGA 32具有32KB,系统内可编程Flash的高性能低功耗的8位AVR微控制器。2.3电机控制系统 双BTS7960 H桥驱动电路,具有强劲的驱动和刹车效果,有效隔离单片机与电机驱动。图2.2电机控制和驱动原理图2.3 摆杆状态检测摆杆长度0.2m 摆动周期T=0.4707s当摆杆旋至90度释放后,摆动周期70+;符合要求。2.4 驱动与控制算法对于基础要求(3),其几何模型如图2.4-1 所示;摆杆OA,长度为a,与竖直方向夹角为15度.摆杆OA延竖直面旋转,由于忽略了空气阻力,且旋转速度足够大,在瞬时,A点旋转到B点,此时O点仍然在初始位置。在三角形

12、CAB中求出角ACB。.l 图 2.4-1旋转臂CA=CB=b;角ACB为旋转臂旋转角度;在三角形OAB中,OAB=OBA,且AOB=180-165=15;所以,据余弦定理,cosAOB=(OA+OB-AB)(2OAOB);所以AB=d=OA+OB-2OAOBcosAOB).在三角形ABC中,AC=BC=b;利用余弦定理:cos=(AC+BC-AB)/(2AC * BC);综上,=arccos1-(d/2*b). 待让旋转臂逆时针旋转度后,倒立摆杆与旋转臂在地面垂直。此刻,利用编码器作为闭环回路反馈值的测定装置,实时检测倒立摆杆的旋转角度,并传送给单片机,以控制旋转臂的转动。构成闭环控制系统。

13、如图2.4-2所示。倒立摆是典型的快速、多变量、非线性、强耦合、自然不稳定系统。一级倒立摆系统由于其本身是自不稳定系统 ,实验建模存在一定困难,由于在实际建模中,对于摆杆的平衡位置(竖直向上方向)进行了近似线性化与处理,即将系统在平衡点附近进行近似:当摆杆要与竖直向上方向之间的夹角a与1(单位:弧度)相比很小时,即夹角a1.所以,当旋转臂来回运动过程中,只有保持摆杆微小震动前提下,系统的数学模型才具有意义。一旦超出这个范围,系统模型的准确性就会大打折扣。被控对象倒立摆杆的结构和参数不能完全掌握,而且得不到精确的数学模型,系统控制器的结构和参数必须依靠经验和现场调试来确定,所以我们应用PID控制

14、技术。即根据系统的误差,利用比例、微分计算出控制量进而进行控制。本作品以ATMEGA32 单片机为核心部件,利用闭环控制系统控制倒立摆的运动。在设计中,我们尽量采用低功耗器件,力求硬件电路的经济性和精简性,充分发挥软件控制灵活方便的特点,来满足设计要求。3 测试方案与测试结果 3.1测试仪器:秒表;轻质量角器。3.2测试方法: 基础要求(1)(2)(3),通过量角器直观的测试。发挥部分(1)(2),通过秒表记录时间。3.3测试数据:基础一:次数 项目占空比计算摆角实际摆角时间110%18.66215s220%45.21433s340%68.76722s基础二:次数 项目占空比能否圆周时间110

15、%否50s +220%否50s +340%是40s +460%是26.87s5100%是3.23s基础三:次数 项目占空比摆杆摆动角度旋转臂角度稳定时间110%不能倒立360 +无220%不能倒立240 +无340%40 +120 +20s +460%20 +60 +18s +5100%10 以内40 +12s +发挥一:次数 项目起立时间倒立时间110%无法倒立220%无法倒立340%40s +460%20s +5100%5s左右发挥二:次数 项目摆角能否继续倒立恢复时间110能220能330能440能550能发挥三:次数 项目圈数圆周时间111.32s221.08s311.25s431.0

16、4s551.00s4参考文献1全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编M 北京理工大学出版社,20072张飞舟,范跃祖,沈程智,李德毅,陈晖;利用云模型实现智能控制倒立摆J;控制理论与应用;2000年04期3单波,徐燕,赵建涛;预测控制算法及其在倒立摆中的应用J;华北电力大学学报;2001年02期4 王轶卿,赵英凯;基于Bang-Bang控制的倒立摆系统摆起和镇定J;机械与电子;2004年08期5黄丹,周少武,吴新开,张志飞;基于LQR最优调节器的倒立摆控制系统J;微计算机信息;2004年02期 5. 附录附1:部分元器件清单 芯片:ATMEGA32 BTS7960

17、LM2596 欧姆龙E6B2-CWZ6编码器 7.2V 镍镉电源 5V稳压模块 电阻电容若干 导线若干 单片机最小系统附2:仪器设备清单 秒表 米尺 万用表 量角器 示波器附3.:程序清单#define MAIN#include#include#include#include#define BAUD 9600/#define USART_JIESHOU_ON#include#includeshengming.h#includepid.h#includejianpan.h#includexianshi.h#includechushi.hvoid main() init_5110(); init_

18、usart(); init_bm(); chushi(); DDRA |= BIT(2) | BIT(3); PORTA|= BIT(2) | BIT(3); _delay_s(1); PORTA&=BIT(2) &BIT(3); _SEI(); while(1) jianpan(); #pragma vector=USART_RXC_vect_interrupt void kongzhi() uc a,str6; a = UDR; switch(a) case +: PID.kd +; int_char(PID.kd, str); usart_write_str(PID.kd: , 9);

19、usart_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; case -: PID.kd -; int_char(PID.kd, str); usart_write_str(PID.kd: , 9); usart_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; case 1: PID.kp +; int_char(PID.kp, str); usart_write_str(PID.kp: , 9)

20、; usart_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; case 0: PID.kp -; int_char(PID.kp, str); usart_write_str(PID.kp: , 9); usart_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; case 2: mohu +; int_char(mohu, str); usart_write_str(mohu: , 9); us

21、art_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; case 3: mohu -; int_char(mohu, str); usart_write_str(mohu: , 9); usart_write_str(str, 6); usart_write_char(0x0a); usart_write_char(0x0d); break; default: break; /*PID调节 pid.h*/#ifndef _PID_H_#define _PID_H_DATA_SFR8(flag_p

22、id);structint set,act,error0,error1,error2,kp,ki,kd;PID=500,0,0,0,0,974,0,0;#define SPEED_MAX 8000#define SPEED_MIN 3000int mohu=5;int uk=0;void zyb() unsigned int linshi; if(flag_dj_sn) DJ_NSHI;PORTA_Bit3 = 0; else DJ_SSHI;PORTA_Bit3 = 1; linshi = task1.timer/56; task1.timer -= linshi; if(bm0_num =

23、 433 | bm0_num = -433) task1.timer = 175; if(task1.timer 0) if(uk SPEED_MAX) uk = SPEED_MAX; else if(uk SPEED_MIN) uk = SPEED_MIN; DJ_NSHI; OCR1B = uk; else if(uk SPEED_MAX) uk = -SPEED_MAX; else if(-uk 30; i -) DJ_NSHI; _delay_ms(470); DJ_SSHI; _delay_ms(470); OCR1A = 0; OCR1B = 0; DJ_OFF; task0.en

24、 = 0;void init_jichu2() OCR1A = 6500; OCR1B = 6500; DJ_ON; DJ_NSHI; _delay_ms(100); zyb(); task1.en = 1;void init_jichu3() PID.set = 500; PID.kp = 970; PID.ki = PID.kd = 0; PORTA_Bit3 = 1; _delay_s(1); PORTA_Bit3 = 0; while(bm0_num = -459); PORTA_Bit3=1; if(bm0_num 459) flag_pid_6 = 0; while(bm0_num = 458 & bm0_num = 542); if(bm0_num 458) flag_pid_5 = 1; else flag_pid_5 = 0; else flag_pid_6

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1