简易旋转倒立摆及控制装置论文_第1页
简易旋转倒立摆及控制装置论文_第2页
简易旋转倒立摆及控制装置论文_第3页
简易旋转倒立摆及控制装置论文_第4页
简易旋转倒立摆及控制装置论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、此处贴密封纸,然后掀起并折向报告背面,最后用胶水在后面粘牢。2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)2013年9月7日30 / 34文档可自由编辑打印摘 要 简易旋转倒立摆系统是非线性、强耦合、多变量和自然不稳定的系统。此系统包括机械部分和控制部分。机械部分包括固定台、旋转臂、摆杆、转轴等。控制部分包括主控芯片、精密变阻器、电机等。主控芯片选用MSP430单片机,其输出PWM(脉冲调宽)和DIR(方向)信号到电机驱动电路,使旋转臂转动,并带动摆杆运动,精密变阻器WDD35D-4测量旋臂和摆杆的偏转角度的信号变化,送给主控芯片,经过A/D转换后,根据一定的状态反馈控制算法

2、计算出控制律,单片机根据拟定的控制律计算出必要的数字控制信号,经过D/A转换,调节PWM和DIR的输出,使电机转动,带动旋转臂运动,使摆杆转动。经测试,整体功能齐全,灵敏度、抗干扰性、准确度等各项性能指标均达到设计要求。 关键字:旋转倒立摆系统、MSP430单片机、精密变阻器WDD35D-4目 录1系统方案11.1 处理器的论证与选择11.2 传感器的论证与选择11.3 电机的论证与选择11.4 电机驱动的论证与选择22系统理论分析与计算32.1电机选型的分析32.1.1 直流电机模型32.1.2 PWM电机调速原理32.1.3 直流电机的选定42.2 摆杆状态检测的计算52.2.1 摆杆摆起

3、的算法52.2.2 摆杆保持平衡的算法62.2.3 抗干扰62.3 PID控制算法的计算62.3.1 PID控制原理如图62.3.1 比例环节62.3.2 积分环节62.3.3 微分环节73电路与程序设计83.1电路的设计83.1.1旋转倒立摆系统总体框图83.1.2 硬件电路子系统框图与电路原理图83.1.3 光电传感器子系统框图与电路原理图93.1.4电源103.2程序的设计113.2.1程序功能描述与设计思路113.2.2程序流程图124测试方案与测试结果164.1测试方案164.2 测试条件与仪器174.3 测试结果及分析184.3.1测试结果(数据)184.3.2测试分析与结论18参

4、考文献19附录1:电路原理图20附录2:源程序21简易旋转倒立摆及控制装置(C题)1系统方案本系统主要由处理器模块、传感器模块、电机驱动模块、电源模块组成,下面分别论证这几个模块的选择。1.1 处理器的论证与选择方案一:ARM处理器。采用ARM 处理器进行数据处理,ARM处理器处理数据比较高,、而且端口比较多,可以处理多个任务。但是价格高,入门比较困难,熟练掌握比较困难,学习周期比较长,而且在旋转倒立摆工作过程中,处理的数据量不是很大,过多的IO口反而不利于控制。方案二:采用AT89S52单片机作为系统控制中心。51系列单片机是单片机中的经典,是8位单片机,具有32个I/O接口,虽然价格低廉、

5、性能稳定、使用方便、外围电路成熟,但是内部资源相对较少,运行速度慢,功能较为单一,ROM空间不足。方案三:采用MSP430系列单片机作为系统控制中心。MSP430系列单片机是一个16位,具有精简指令集,低功耗的混合型单片机,功能相比51系列单片机要强大,运行速度要快,但内部结构比较复杂,它只能用在3.3V环境下,与一些5V器件相连需要考虑电平是否兼容的问题。 综合以上分析,MSP430功耗小、运行速度快、内存大,更适合设计要求,所以选择方案三。1.2 传感器的论证与选择方案一:精密变阻器。旋转臂和摆杆通过精密变阻器相连,电动机转动带动旋转臂运动,变阻器转轴改变,从而改变电压,送到主控芯片,通过

6、相应运算转换,来控制摆杆摆动的角度。精密变阻器数据比较稳,易于控制,灵敏度也较高。方案二:角度传感器。它的身体中有一个孔,可以安装一个轴,轴没转动一次,角度传感器就会计数一次,往一个方向转时,计数增加,往相反方向转时,计数减少。角度传感器的精度不够高。综合以上分析,由于角度传感器不如精密传感器灵敏度高,且精密传感器阻值可选、线性度可选,精度较高,所以选择方案一。1.3 电机的论证与选择方案一:采用步进电机,它是通过输入脉冲信号来进行控制的、电机的总转动角度由输入脉冲数决定、电机的转速由脉冲信号频率决定,虽然其转动角度容易控制,但在转轴连接外部重物较重时步进电机容易失步现象,且工作时震动较大,不

7、利于平衡。方案二:采用普通小型直流电机。普通直流电机,调速范围广,且易于平滑调节,起动、制动转矩大易于控制,可靠性高,转动灵敏且转速易于控制,调速时的能量损耗较小。综合以上分析,直流电机力矩大,易于调节,更适合于旋转倒立摆,所以选用方案二。1.4 电机驱动的论证与选择方案一:采用大功率晶体管组合电路构成驱动电路,这种方法结构简单,成本低、易实现,但由于在驱动电路中采用了大量的晶体管相互连接,使得电路复杂、抗干扰能力差、可靠性下降。电路如下图所示: 图1-1 大功率晶体管组合电路构成驱动电路图方案二:采用互补硅功率达林顿管TIP142实现电机的驱动采用该方法电路连接比较简单,稳定性好,成本低廉,

8、但不足之处是由于使用分立元件,安装和调试相对麻烦。方案三:采用专用的电机驱动芯片L298N,由于它内部已经考虑到了电路的抗干扰能力,安全、可靠性,所以我们在应用时只需考虑到芯片的硬件连接、驱动能力等问题就可以了,所以此种方案的电路设计简单、抗干扰能力强、可靠性好。电路如下图所示: 图1-2 电机驱动芯片L298N电路综合以上分析,电机驱动芯片L298N电路设计简单、抗干扰能力强、可靠性好,所以选择方案三。2系统理论分析与计算2.1电机选型的分析 2.1.1 直流电机模型 图2-1 直流电机的数学模型如图2-1所示为直流电机的数学模型,由此可见,电机的电刷电动势Ea正方向与电刷电流Ia的方向相反

9、,Ea为反电动势;电磁转矩T的正方向与转速n的方向相同,为拖动转矩;轴上的负载转矩T2与空载转矩T0均与转速n相反,是制动转矩。根据基尔霍夫第二定律,得到电枢电压电动势平衡方程式: (2-1)直流电机的转速公式为: (2-2)由上述两式得: (2-3)由上式可以看出,已经制造好的一个电机,当励磁电压和负载转矩一定时,它的转速由加在转速两端的电压决定,电枢电压越高,电机转速就越快,电枢电压降低到零时,电机就停止转动;改变电枢电压的极性,电机就反转。 2.1.2 PWM电机调速原理 图2-2 PWM脉动电压对直流电机来说,如果加在电枢两端的电压为如图4所示的脉动电流压,可以看出在T不变的情况下,改

10、变t1、t2的宽度,得到的电压将会发生变化。设电机加全电压U时,其转速最大为。若施加到电枢两端的脉动电压占空比为 (2-4)则电枢的平均电压为:; (2-5)由上式得到: (2-6) (2-7) (2-8) 图2-3为占空比与转速的关系图:图2-3 占空比与转速的关系图 由图2-3看出,占空比与转速并不是完全的线性关系(图中实线),原因是电枢本身有电阻,不过,一般直流电机的内阻较小,可近似为线性关系。由此可见,改变施加在电枢两端电压就可以改变转速,这就是直流电机PWM调速原理。2.1.3 直流电机的选定 正确选用直流电机,首先考虑直流电机的电压、转速、功率,进行直流电机的初步选型。 根据输出轴

11、功率,最终选定电机型号ZGA25RP200.。电机供电电压12V,额定转速rpm=2002.2 摆杆状态检测的计算 2.2.1 摆杆摆起的算法图2-4倒立摆的系统结构该图为简化后的力学模型,由一个水平旋转臂和摆杆组成,在摆起前,摆杆处于下垂静止状态,正常工作状态时,摆杆平衡点为=0,摆杆的保持在一定范围内。设J0表示水平杆对Z轴的转动惯量,L0为水平杆的杆长;m1和L1分别表示摆杆的质量和摆杆质心到转轴O1的距离,t为加到水平杆上的控制力矩。设C0、C1分别为水平杆和摆杆的摩擦力矩系数;、分别为旋转臂的转角和角速度,、分别为摆杆的角和角速度。(1)旋转臂的动能、势能和耗散能分别为: (2-9)

12、V0=0 (2-10); (2-11)(2)摆杆的动能、势能和耗散能分别为: (2-12) (2-13) (2-14)(3)系统总的势能、动能和耗散能 (2-15) (2-16) (2-17) 根据以上公式可得出,施加的外力越大,摆杆摆起的角度就会越大,但如果施加的力过大就易导致系统紊乱,太小就不易摆起,然后逐渐加大力,最终使摆杆摆起。2.2.2 摆杆保持平衡的算法设摆杆在处的速度为,在平衡处的速度为,F为施加的外力,L为摆杆距离旋转臂的垂直距离,分别为摆杆的角和角速度。动能定理: (2-18)动量定理: (2-19)由精密变位器测量的摆杆和旋转臂的角度变化信号,输入到主控芯片,来调节PWM的

13、高低电平和程序中的延时函数,来改变外力F和时间t,以此来调节摆杆的角度和角速度使摆杆保持在平衡状态,在进行圆周运动时,会出现一个死角,采用一个滤波电路将多余的杂波滤除掉,避免死角的出现。2.2.3 抗干扰摆起电压和控制切换点的选择对摆起控制的成败起到了关键性的作用。同时,倒立控制的抗干扰能力对于能否实现“摆起一倒立”控制也有重要影响,因为切换过程中总是存在不够平稳的现象,这需要倒立控制算法能够克服切换产生的扰动。2.3 PID控制算法的计算 2.3.1 PID控制原理如图图2-5 PID控制原理图2.3.1 比例环节成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,

14、以减小偏差。2.3.2 积分环节主要用于消除静差,提高系统的误差度。积分作用的强弱取决于积分时间常数,时间常数越大,积分作用越弱,反之,越强。2.3.3 微分环节反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。3电路与程序设计3.1电路的设计3.1.1旋转倒立摆系统总体框图旋转倒立摆系统主要包括MCU处理器模块、电机驱动模块、电源模块、红外传感器模块、精密变阻器、直流电机组成,系统总体框图如图3-1所示,图3-1 旋转倒立摆系统总体框图3.1.2 硬件电路子系统框图与电路原理图1、 MSP430F5529子系统框图

15、MSP430F5529子系统主要由时钟系统模块、12位ADC转换模块、I/O引脚模块、四通道定时器模块组成。 图3-2 MSP430F5529子系统框图2、 MSP430F5529子系统电路图 图3-3 电源模块子系统电路3.1.3 光电传感器子系统框图与电路原理图1、 用了两个光电传感器,一个主要用来检测在受外力作用时,摆杆是否到达165°位置;另一个用来检测旋转倒立摆-165°位置,以免倒立摆进入死角。图3-4 光电传感器子系统框图2、 光电传感器子系统电路 图3-5 光电传感器子系统电路图3.1.4电源电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或者12

16、V3.3V电压,确保电路的正常稳定工作。(1) 电源模块的子系统框图:图3-6 电源模块的子系统框图(2) 电源模块的子系统电路图: 图3-7 电源模块的子系统电路3.1.5 电机驱动电路原理图采用专用的电机驱动芯片L298N,由于它内部已经考虑到了电路的抗干扰能力,安全、可靠性,所以我们在应用时只需考虑到芯片的硬件连接、驱动能力等问题就可以了,所以此种方案的电路设计简单、抗干扰能力强、可靠性好。 图3-8 电机驱动电路原理图3.2程序的设计3.2.1程序功能描述与设计思路1、程序功能描述 根据题目要求软件部分主要实现摆杆的摆动、摆杆做圆周运动、摆杆在外力撤 销后保持倒立平衡状态。 (1)摆杆

17、的摆动。当按键1按下时,摆杆就会在电机的带动下做往复摆动,并尽快使摆角达到或超过-60。+60。, (2)摆杆做圆周运动。当按键2按下时,调节PWM,尽量增大摆杆的摆动幅度,直至完成圆周运动。 (3)摆杆在外力撤销后保持倒立平衡状态。当按键三按下时,外力拉起摆杆至接近165位置,外力撤销同时,启动旋转臂使摆杆保持倒立状态,时间不少于5s。2、 程序设计思路 根据旋转倒立摆系统的要求,将程序分为几个部分,第一部分是程序的初始化模块,第二部分为MSP430F5529主控芯片来驱动电机的PWM输出模块,第三部分是根据精密传感器采集的旋转臂和摆杆的角度变化信号,进行PID算法的程序模块,第四部分为判断

18、按键是否按下的键盘检测模块。3.2.2程序流程图1、 主程序流程图 此程序主要实现的功能是:按键1按下时,摆杆开始左右摆起,并达到要求;按键2按下时,摆杆做圆周运动;按键3按下时,若角度达到165°,则摆杆保持倒立平衡,并维持一段时间。 开始 关闭看门狗 初始化 打开中断 否 按键检测按键1 按键2按键3 否按键1按下?按键3按下?按键2按下? 否是摆杆在165° 是 是 否 摆杆做圆周运动 摆杆摆动 是 摆杆保持倒立 2、 倒立摆摆杆摆动子程序流程图 此程序主要实现的功能是:先进行函数的初始化,打开中断,检测是否有按键按下,如果按键1按下,则驱动电机使摆杆摆动,如果按键没

19、有按下,则继续等待,一直到按键按下。 开始 初始化 关闭看门狗 打开中断 按键检测按键1按下? 否 是 摆杆摆动 3、摆杆做圆周运动子程序流程图此程序主要实现的功能是:先进行函数的初始化,打开中断,检测是否有按键按下,如果按键2按下,按下,则判断摆杆是否做圆周运动,如果没有做圆周运动,则用电机调节使其达到要求。 开始 初始化 关闭看门狗 打开中断 按键检测 是 否 按键2按下? 是 调节电机摆杆做 圆周运动? 否 是电机停止 4、 保持倒立平衡子程序流程图 此程序主要实现的功能是:先进行函数的初始化,打开中断,检测是否有按键按下,如果按键3按下,按下,则判断摆杆是否在外力作用下达到165

20、76;,如果没有达到165°,则用电机调节使其达到要求,如果达到了,则使其保持倒立平衡,并维持一段时间。 开始 初始化 关闭看门狗 打开中断 按键检测检测AD在165° 否 是 调节电机 否摆杆倒立平衡? 是电机停止 停摆 4测试方案与测试结果4.1测试方案 1、硬件测试硬件测试主要包括:MSP430F5529最小系统板的测试、电机驱动的测试、电源匹配值的试验。2、 软件仿真测试 (1)倒立摆系统simulink仿真系统结构图图4-1 倒立摆系统simulink仿真系统结构图 (2)在I、D保持为零的情况下,改变P使系统稳定下来。图4-2 P值得仿真结果图 可见系统稳定,但

21、响应振荡强。 (3)取Kp=200,t调节Ki=100,Kd=0图4-3 可见系统响应震荡减弱。 (4)取Kp=200,t调节Ki=100,Kd=20图4-4 可见系统响应无振荡,超调很小,满足要求。3、 硬件软件联调 示波器主要用来进行主频的显示读取,采样频率的采集; 串口调试软件利用上位机将精密变阻器采集到得数据显示出来。4.2 测试条件与仪器测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。4.3 测试结果及分析4.3.1测试结果(数据) 表4-1 设定摆起模式

22、测量表 测量次数第一次第二次第三次第四次第五次第六次第七次第八次设定角度(度)601204513590150155165停摆时间(秒)8.18.57.37.48.38.78.88.9 表4-2 倒立模式运行测试表测量次数第一次第二次第三次第四次第五次第六次第七次第八次动态倒立时间(秒)43325656 表4-3 设定摆起模式测试表测量次数第一次第二次第三次第四次第五次第六次第七次第八次过水平时间(度)4.44.65.06.090150155165动态倒立时间(秒)8.67.78.39.58.38.78.88.94.3.2测试分析与结论根据上述测试数据,由此可以得出以下结论: 1、当按键1按下时

23、,摆杆就会在电机的带动下做往复摆动,并尽快使摆角达到或超过-60。+60。 2、当按键2按下时,调节PWM,尽量增大摆杆的摆动幅度,直至完成圆周运动。 3、当按键三按下时,外力拉起摆杆至接近165位置,外力撤销同时,启动旋转臂使摆杆保持倒立状态,时间不少于5s。综上所述,本设计达到设计要求。参考文献1秦龙.MSP430单片机常用模块与综合系统实例精讲北京:电子工业出版社,2007年. 2沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与.实践.北京:北京航空航天大学出版社,2008年.3康华光.电子技术基础(模拟部分).北京:高等教育出版社,2009.4康华光.电子技术基础(数字部分)

24、.北京:高等教育出版社,2009.5张肃文.高频电子线路.北京:高等教育出版社,2009.6刘杰.四轴飞行器研究与设计.北京:高等教育出版社,2009.7刘焕晔.小型四旋翼飞行器飞行控制系统研究与设计D. 上海交通大学,2009.8杨虹,向高林,周明,陈立昱.基于MSP430的智能测试仪的设计.电子制作,2013,6.9胡寿松.自动控制原理(第五版)北京:科学出版社,200710刘卫国.MATLAB程序设计教程.北京:中国水利出版社,2005. 附录1:电路原理图附录2:源程序1、 系统主函数#include "msp430F5529.h"#include "AD

25、.h"#include "math.h"#include "Uart.h"#include "motor_auto.h"#include "lcd_12864.h"#define key_h_1 P7IN&BIT0#define key_h_2 P7IN&BIT1#define key_h_3 P7IN&BIT2/下拉电阻#define key_h_4 P7IN&BIT3/下拉电阻float adc_val=0;long Ad0out1=0;unsigned int num

26、=40000;int num1=45;int num2=600;int flag;/int jiao;float pwmb,pwmf;void key_init() P7DIR|=0x00; P7REN|=0xff; P7OUT=0x00;/下拉电阻 /P1OUT|=0xffvoid one() unsigned int i; run(FORWARD,num); /控制方式选择; for(i=0;i<num1;i+) printf("%fn",jiaodu); _delay_cycles(1500); STOP; for(i=0;i<num2;i+) _dela

27、y_cycles(2500); num2=num2+9; num1=num1+1; run(BACK,num); for(i=0;i<num1;i+) printf("%fn",jiaodu); _delay_cycles(1500); STOP; for(i=0;i<num2;i+) _delay_cycles(2500); num2=num2+9; num1=num1+1;void three() if(jiaodu>=88&&jiaodu<=91) STOP if(jiaodu>71&&jiaodu<

28、80) run(BACK,6650); /控制方式选择; if(jiaodu>=80&&jiaodu<88)/负小 run(BACK,10000); if(jiaodu>93&&jiaodu<100) /正小 run(FORWARD,10000); /逆时针 if(jiaodu>=100&&jiaodu<108) /正大 run(FORWARD,6500); if(jiaodu>180&&jiaodu<350) STOP;int main( void ) / Stop watchdo

29、g timer to prevent time out reset /变量初值给定,调用初始化程序,打开中断 WDTCTL = WDTPW + WDTHOLD; /P1.0 - Outputs flag=2; /P7DIR=0xff; P3DIR=0xff; P2DIR|=BIT2; /P2.2作为子系统时钟输出 (5529数据手册83页) P2SEL|=BIT2; UART_Init(9600,'n',8,1); key_init(); init_LCD12864(); init_CLK(); init_ADC(); init_motor(); /_EINT(); /打开总中

30、断 while(1) if(key_h_1) _delay_cycles(80000); if(key_h_1) LCD1(); while(1) one(); if(key_h_2) _delay_cycles(80000); if(key_h_2) while(key_h_2); LCD3(); _EINT(); #pragma vector=ADC12_VECTOR_interrupt void ADC12ISR (void)static long AD0,adc;static int count; switch (_even_in_range(ADC12IV,34) case 0: b

31、reak; / Vector 0: No interrupt case 2: break; / Vector 2: ADC overflow case 4: break; / Vector 4: ADC timing overflow case 6: count+; / Vector 12: ADC12IFG3 AD0 = ADC12MEM0; / Move A0 results, IFG is cleared adc+=AD0; if (count>=1) P7OUT=0x01; count=0; Ad0out1=0; Ad0out1=adc/1; jiaodu=(float)Ad0o

32、ut1/11.37777778; adc=0; if(key_h_2) three(); break; / Vector 6: ADC12IFG0 case 8: break; / Vector 8: ADC12IFG1 case 10: break; / Vector 10: ADC12IFG2 case 12:break; case 14: break; / Vector 14: ADC12IFG4 case 16: break; / Vector 16: ADC12IFG5 case 18: break; / Vector 18: ADC12IFG6 case 20: break; /

33、Vector 20: ADC12IFG7 case 22: break; / Vector 22: ADC12IFG8 case 24: break; / Vector 24: ADC12IFG9 case 26: break; / Vector 26: ADC12IFG10 case 28: break; / Vector 28: ADC12IFG11 case 30: break; / Vector 30: ADC12IFG12 case 32: break; / Vector 32: ADC12IFG13 case 34: break; / Vector 34: ADC12IFG14 d

34、efault: break; 2、 AD采集子函数#include "msp430f5529.h"#include "AD.h"void init_ADC() P6SEL|=BIT0; /A0 通道ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_0; /打开ADADC12CTL1 = ADC12SHP+ADC12CONSEQ_2; /采样源选择采样定时器ADC12IE = ADC12IE0; /中断ADC12CTL0 |= ADC12ENC; /转换使能ADC12MCTL1 |= ADC12INCH_0; /通道选择 /使用

35、单通道ADC时,以下部分放在主函数中查询方式读取ADADC12CTL0 |= ADC12SC; /开始采样、转换3、 电机程序#include "msp430F5529.h"#include "motor_auto.h"void init_motor(void) STOP /* 时钟初始化函数*/void init_CLK() P5SEL |= BIT2+BIT3; / Port select XT2 UCSCTL6 &= XT2OFF; / Enable XT2 UCSCTL3 |= SELREF_2; / FLLref = REFO UCSCTL4 |=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论