简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx

上传人:爱问知识人 文档编号:3964176 上传时间:2019-10-11 格式:DOCX 页数:27 大小:711.88KB
返回 下载 相关 举报
简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx_第1页
第1页 / 共27页
简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx_第2页
第2页 / 共27页
简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx_第3页
第3页 / 共27页
简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx_第4页
第4页 / 共27页
简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx》由会员分享,可在线阅读,更多相关《简易旋转倒立摆及控制装置(C题)_大学生电子设计大赛论文.docx(27页珍藏版)》请在三一文库上搜索。

1、2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】2013年9月6日II摘 要 本系统采用XS128单片机最小系统作为控制中心、与电机驱动模块,减速直流电机、旋转臂、摆杆、反馈装置一起构成摆杆角度和电机角速度的双闭环调速系统。由于直流电机属于一阶惯性,经分析在控制周期远小于电机时间常数的情况下建立电压与加速度的近似比例关系模型。选择减速直流电机带动旋转臂旋转,采用增量式旋转编码器测量摆杆的角度,单片机输出占空比可变的PWM波控制电机角加速度,从而控制电机的加速度和给摆杆固定轴心的扭矩,实现控制摆杆的摆动幅度并达到和保持平衡状态。控制方式采用PID控制,比例环节进行快速响

2、应,积分环节实现无静差,微分环节减小超调,加快动态响应。从而使该系统具有良好的性能,能很好的实现起振、圆周运动、倒立、360度倒立旋转,同时具有很好的抗扰动性能。关键词:XS128 直流电机 加速度 倒立平衡 目 录1系统方案11.1 角度传感器模块的论证与选择11.2电机的论证与选择11.3 电机驱动模块的论证与选择12理论分析与计算22.1 机械结构设计的分析22.1.1 摆杆22.1.2 底座22.2电机物理模型的分析与计算22.2.1 直流电机的机械特性22.2.2 直流电机的动态特性分析22.2.3 直流电机加速度分析与计算32.3摆杆运动状态的分析及控制思路42.3.1摆杆起振42

3、.3.2摆杆做圆周运动42.3.3摆杆达到倒立平衡状态42.4 摆杆控制量的分析与计算42.4.1 摆杆起振状态分析42.4.2 摆杆进入开始调整倒立平衡的角度范围53电路与程序设计63.1电路的设计63.1.1系统总体框图63.1.2 系统电路原理图63.1.3 电机驱动模块的电路设计63.2程序的设计73.2.1程序功能描述与设计思路73.2.2程序流程图74测试方案与测试结果114.1测试方案114.2 测试条件与仪器114.3 测试结果及分析114.3.1测试结果(数据)114.3.2测试分析与结论125总结12附件1:系统电路原理图14附件2:电机控制源程序15简易旋转倒立摆及控制装

4、置(C题)【本科组】1系统方案本系统主要由主控模块、角度传感器模块、机械结构模块、电源模块等几部分组成,下面分别论证这几个模块的选择。1.1 角度传感器模块的论证与选择方案一:采用绝对值式旋转编码器。绝对值式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。但是绝对值式编码器体积和重量不太理想,安装后可能会对电机有较大的干扰,而且绝对值编码器相对昂贵,性价比不高。方案二:采用增量式编码器。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。增量式编码器不能定位,但是O位的确定可以通过软件解决

5、,而且增量式编码器价格低廉易得,反馈的信号可以满足题目的要求。综合考虑以上两种方案,选择方案二,采用增量式编码器。1.2电机的论证与选择方案一:采用步进电机。步进电机将电脉冲信号转变为角位移,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,因此可以通过控制脉冲频率来控制电机转动的速度和加速度。但是步进电机在高速运转下,开环会产生丢步的情况,开环控制情况不尽如人意,不是首选的电机。方案二:采用360度旋转舵机。舵机为随动系统,运动时可以外接较大的转动负载,输出扭矩大,而且抗抖动性很好。360度旋转舵机内置驱动电路,用单片机输出的信号可以直接驱动,接线方便,但是舵机的转速普遍很低,加速度不能

6、达到理想的要求。方案三:采用带速度闭环的直流电机。我们对于直流电机的数学模型较为熟悉,而且能够比较精确地控制位置,速度,和加速度,只要在选择直流电机型号的时候注意选择额定参数较大的电机,能够输出足够的转矩带动负载就可以达到要求。而且带速度闭环的直流电机可以综合考虑采用方案三。1.3 电机驱动模块的论证与选择方案一:采用购买的L298N集成芯片,该集成电路带散热器和光电耦合器,可以保护单片机不受电机的影响,最大程度的保护单片机。但是经过我们连线调试之后,发现该种芯片一个致命的缺点,在PWM输入达到KHZ级别的时候,输出端波形严重畸变甚至直接输出高电平,导致电路不能运行在所给的频率下,经分析可能是

7、光耦本身截止频率就在KHZ级别,一端输出大电压之后,带宽降低,不能满足要求。方案二:采用L298N芯片,自己制作L298N驱动模块,因为L298N驱动电路较简单,外围元器件低廉易得。在将自己制作的L298N电路连线调试之后,我们发现完全可以在程序要求的频率下工作,虽然死区电压有些不近人意,低速是电机会有抖动现象,但是总体来说,情况比较乐观。综合考虑采用方案二。主控模块采用XS128最小系统板,因为XS128作为飞思卡尔常用芯片,其PWM波有8个输出通道,2理论分析与计算2.1 机械结构设计的分析 2.1.1 摆杆 由于直流电机的扭矩输出并不是很大,因此要求负载很轻甚至能够忽略为空载,可以为计算

8、和控制带来很大的简便,因此选择了力学性能优异的新材料碳纤维,它的比重不到钢的1/4,但强度是钢的79倍,抗拉弹性模量为230430Gpa亦高于钢。而且中空碳纤维摆杆,是比较理想的摆杆模型。2.1.2 底座由于自己加工制作的连接不能精确的达到完全对称,导致电机不在底座的中央,因此我们选择质量较大的钢材来做底座,并焊接一个港版来固定底座,防止倾倒。然后用两个固定夹固定在桌子边缘。经过测试,可以承受电机高速旋转带来额离心力的作用。2.2电机物理模型的分析与计算2.2.1 直流电机的机械特性 直流电机在稳态运行下,有下列方程式: 公式1 公式2 公式3 2.2.2 直流电机的动态特性分析 电机传动系统

9、的运动方程式为: 公式4 机械特性方程式为: 公式5 由公式1和公式2可得出转速随时间变化的规律为: 公式6 由上述分析可以得出结论:直流电机的物理模型为一阶惯性系统。2.2.3 直流电机加速度分析与计算 由公式4求导可以得到: 公式7 上式中加速度为a,公式4经变换可得到加速度的表达式: 公式8 再结合直流电机机械特性的三个方程式可以得到电机电压与加速度的关系如下式所示: 公式9 2.3摆杆运动状态的分析及控制思路 2.3.1摆杆起振摆杆从静止到振荡是一个需要摆动幅度逐渐增加的过程。而对于电机的控制,是通过检测到反馈到单片机的摆杆摆动的角度,然后单片机输出PWM控制一个小的加速度给电机,这个

10、加速度摆杆向反方向摆动更大的角度。基于以上的程序设计,结合分析了直流电机的物理模型之后,经过了一系列简化计算,我们认为电机的加速度几乎正比于控制电机的电压,电压大小可以通过单片机输出的PWM波的占空比的改变而改变的。因此我们根据反馈的摆动角度,算出响应的加速度控制电机加速转动,这样摆动角度越大,摆杆收到电机所给的加速度越大,形成一个正反馈环节,使摆杆逐步摆动幅度增大,实现起振。特意要说明的是,由于摆杆在自然下垂状态时检测到的角度为0,因此按照以上推论,此时单片机输出的加速度为0,这样摆杆永远无法起振。为了解决这个问题,我们在摆杆处于自然下垂状态摆杆处于0位时,我们在程序中在此刻增加一个很小的角

11、度,使得即使在0位,也可以通过控制算法输出一个小的控制量,来实现最初的起振。2.3.2摆杆做圆周运动当摆杆起振后由于正反馈环的存在,电机通过旋转臂给摆杆做功,摆杆不断获取能量,摆杆摆杆摆动幅度越来越大,直到超过180度,能够完成一系列圆周运动。2.3.3摆杆达到倒立平衡状态当摆杆能够摆到接近于180度的位置时(正负大约15度),希望摆杆能够趋向平衡位置(180度位置),并动态保持平衡。要实现上述功能,我们首先只开启摆杆的角度反馈,不给电机控制电压,然后用手转动摆杆,找到第一个Z相信号,并将之定在180的平衡位置上。然后每经过一个Z相信号,都会将角度标准重新标定一下(标定0度),之后我们发现这个

12、标定很有必要,因为摆杆在最低点的往复摆中,由于方向时刻改变,而测速脉冲(编码器A相信号和B相信号异或之后的信号,相当于二分频)在方向不同是会有一个相移,导致测速脉冲有一个累积误差。经过实验,随着摆动次数增加,累积误差可高达10几度,导致零位严重偏移。而Z相信号的标定可以弥补这个误差。在做完标定之后,我们将程序设计为一开始就通过PID调节给电机一个最大的加速度,使摆杆尽量能在一个摆动周期内摆至180度平衡位置附近,然后结束使摆杆幅度加大的正反馈环节,开始进入到所加的加速度随着摆杆与180度平衡位置夹角的大小成正比,但加速度的方向与夹角变化方向成反比的程序中。2.4 摆杆控制量的分析与计算 2.4

13、.1 摆杆起振状态分析 假设某一时刻,摆杆向左摆到了度,此时摆杆的受力状态如图X所示:A点为摆杆与旋转臂连接处,设此时摆杆收到旋转臂的力为F,方向如图所示,此时力F的作用是使摆杆继续向左摆起,即增大摆杆的摆动复读。因此可以根据此受力分析给电机一致方向的角加速度。 2.4.2 摆杆进入开始调整倒立平衡的角度范围 假设图中角度为,则想要使摆角趋向180度,要给摆杆一个图示方向的力F使得下式成立: 公式10 由于考虑的连轴的摩擦力,转动时收到的空气阻力,外部接线对摆杆的干扰力等等,增加一个阻尼力,使得上式变为: 公式11 在算出了角速度的控制量范围之后,需要确定单片机提供的相应控制量。为了比较接近实

14、际的物理情况,我们应用2.2中分析和计算的直流电机物理模型,以及直流电机控制电压与加速度的关系,即公式9,。再结合我们手头可以得到的关于直流电机的各种参数,我们很难精确地算出时间常数,只能近似,而且再加上程序的控制周期远小于时间常数,综合考虑之后,我们选择了忽略公式9中等号右边的后两项变量,也就是近似认为直流电机的控制电压与加速度成正比关系,这样便于单片机给出控制信号。但是经过实际的实验之后,我们发现,用PD调节来控制电压信号,可以使摆杆处于倒立平衡状态,但是相当不稳定,还经常出现电机高速旋转的情况。 因此,我们在此基础上加入了旋转臂的速度反馈。之前我们在模型的建立上忽略了公式9等号右边的后两

15、项,造成了比较大的误差。现在加入了旋转臂的速度反馈之后,就可以计算出了,可以只忽略最后一项,大大减小了误差。同时经过实验证明,双环控制的效果能达到大部分的性能指标。3电路与程序设计3.1电路的设计3.1.1系统总体框图 整体系统由机械结构,XS128单片机最小系统板,电机驱动模块,电源模块,异或门,计数器和D触发器,以及带速度反馈的直流电机和增量式编码器组成。系统总体框图如图1所示,图1 系统总体框图3.1.2 系统电路原理图 见附件2 3.1.3 电机驱动模块的电路设计 如图2所示 图2 电机驱动模块的电路 3.2程序的设计3.2.1程序功能描述与设计思路1、程序功能描述根据题目要求,本系统

16、程序的任务如下:对检测摆杆位置的增量编码器1的输入信号进行计数和方向识别,根据摆杆的摆角发出PWM波,对电机进行控制,同时接受外部计数器对旋转臂速度检测反馈回来的信息,综合两个反馈,根据基于物理模型得到的电机控制电压计算公式,控制电机使给摆杆一个加速度,不同的控制算法能够实现相应的功能,如起振,圆周运动,倒立平衡等。2、 电机控制程序内容:见附件33.2.2程序流程图1、主程序与子程序框图 图3 主程序与子程序框图2、“起摆做圆周运动”子程序流程图 图4 “起摆做圆周运动”子程序流程图3、“起摆并尽快达到稳态”子程序流程图 图5 “起摆并达到倒立平衡状态”子程序流程图4测试方案与测试结果4.1

17、测试方案硬件软件联调:调试时,下载线连接单片机,以便程序执行后实时观测控制算法中多个变量,如摆杆角度,方向,电机速度以及加速度等等。通过拨码开关来决定运行不同的程序,以实现不同的功能。相互功能之间没有干扰。实现另一个功能需要单片机复位后重新运行。记录下每次实现不同功能的性能指标。4.2 测试条件与仪器测试条件:支架水平放置于桌面上,保证摆杆处于自然下垂状态,除电机外无其他外力对摆杆造成干扰(空气阻力,摩擦力等不算在内)。测试仪器:直流稳压电源,数字示波器,数字万用表,秒表,量角器.4.3 测试结果及分析4.3.1测试结果(数据)测试功能一:摆杆起振 测试次数123456摆动幅度(度) 6060

18、 60606060摆动时间(s)212354 测试功能二:摆杆完成圆周运动说明:以完整的完成一个圆周运动的时间为计时标准。 测试次数12345678完成时间(s)2222121测试功能三:摆杆尽快达到倒立平衡状态并保持5s以上,且旋转臂旋转的转动角度不大于90度。测试次数12345678保持时间(s)555555旋转臂最大转动角 (度)9090909090测试功能四:从摆杆处于自然下垂状态开始,控制旋转臂做往复旋转运动,尽快使摆杆摆起倒立,保持倒立时间不小于10s测试次数12345678摆起时间(s)23-12.52514保持时间(s)101001010101010测试功能五:在摆杆保持倒立状

19、态下,施加干扰后摆杆能继续保持倒立或2s内恢复倒立状态。测试次数12345678能否保持能能能能能能能否恢复时间(s)23433454测试功能六:在摆杆保持倒立状态的前提下,旋转臂做圆周运动,并尽快使单方向转过角度达到或超过360度。测试次数12345678旋转臂转过360度时间(s)555555554.3.2测试分析与结论根据上述测试数据,该系统基本上能够达到基本部分和发挥部分(1)(3)的性能指标,由此可以得出以下结论:1、电机的性能不是很理想,联轴器有些松动,长时间运行两者有些脱节,起振达到平衡很困难,2、双环控制需要时间上的配合,加入的时间和参数很重要。3、好的硬件电路时成功的奠基石。

20、综上所述,本设计基本达到设计要求。5总结本次比赛中我们组遇到的最大的困难是硬件问题,包括合适的电动机的选型,先后换了三种型号的电动机,电动机与底座和旋转臂的连接,以及能够经受住长时间离心力作用的联轴器和钢珠等支承结构。四天三夜中很多时间在组建和检修硬件部分,导致浪费了很多调试程序的时间,东奔西跑地寻找合适的材料也浪费了很多体力。在断断续续的将硬件做好之后,在调试软件时我们一直采用的程序设计思路在我们攻克倒立平衡的稳定性时,遇到了很大的挑战,我们在这个程序思路上下了很多功夫,但是调整结果很不满意。在第四天的下午,离比赛结束还有几个小时时,我们放弃了一直坚持的程序主线将加速度环作为内环,速度环作为

21、外环进行控制,转而采用了将速度环作为内环,而加速度环作为外环,消除了速度的采样滞后,才取得了比较可喜的进步,但是由于时间实在太有限,我们没有机会将所有部分都完美的移植在新的程序思路上。遗憾是有的,但是收获也是巨大的,四天三夜,体验到了很多东西,团队的力量,沟通的重要性,最重要的是遇到困难能够不被得失的情绪所干扰,而是一心一意去解决问题,这是我们以后对待任何困难的一种成功的心态。在这比赛的最后,要感谢学校和学院老师的给力的后勤工作,使我们能够在不被烦扰的情况下,用最充足的时间完成比赛。感谢全国大学生电子设计大赛的组委会,提供这样优秀的平台和机会给我们充足的锻炼。 24附件1:系统电路原理图 P0

22、P0P1P1P2P2P3P3J0J0J1J1K0K0K1K1K2K2K3K3T0T0T1T1T2T2T3T3T4T4T5T5T6T6T7T7K4K4K5K5B0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7P7P7P6P6P5P5P4P4K7K7NCNCM7M7M6M6M5M5M4M4M3M3M2M2M1M1M0M0J7J7J6J6S7S7S6S6S5S5S4S4S3S3S2S2S1S1S0S0+5+5+5+5GNDGNDGNDGNDAD15AD15AD14AD14AD13AD13AD12AD12AD11AD11AD10AD10AD9AD9AD8AD8AD7AD7AD6AD6AD

23、5AD5AD4AD4AD3AD3AD2AD2AD1AD1AD0AD0A7A7A6A6A5A5A4A4A3A3A2A2A1A1A0A0VRHVRHGNDGNDGNDGND+5+5H7H7H6H6H5H5H4H4E7E7E6E6E5E5E4E4H3H3H2H2H1H1H0H0E3E3E2E2E1E1E0E09S12XS/E-P11212345678S1X012X114X215X311Y01Y15Y22Y34INH6A10B9VEE7X13Y3U2CD4052R120kR220kR320kR420k+5GND1VIN+5ON/OFF3GND4FEEDBACK2OUTPUTLM2596U2+C1680

24、UFD1IN5824L33u+C2220UF+12V-12V+5VGNDVR?VRIN15IN27IN310IN412ENA6ENB11VSS9VS4OUT12OUT23OUT31314OUT4ISEN A1ISEN B15U3L298ND1D2D3D4D5D6D7D8+12VGNDGNDGND+C3100UFC40.1UFC60.1UF+C5100UF+5V+5V1234J1CON41IRd/21D31CP4ISd51Q61Q/7GND14VSS132Rd/122D112CP102Sd92Q82Q/*Component_1P1P51NC2VCC3GND4NC5A/6A7B/8B9I/10I1

25、1892+5v3GND419251936P771958P6919710P4U521B31Y42A52B62Y7GND11A14VCC134B124A114Y103B93A83YU674LS86附件2:电机控制源程序子函数:#include carsub.h#include #include derivative.hvoid GetMotorPulse(void) unsigned int nLeftPulse,nRightPulse; unsigned char leftdir,rightdir; /unsigned char ii; leftdir = PORTB & 0x01; /读取转向

26、 rightdir = PORTB & 0x04; nLeftPulse = PACNT; /left为内部计数器,right为外部计数器 nRightPulse = PORTA; /读取脉冲数 PACNT = 0; PTJ=PTJ|0XFF; Delay(15); PTJ=PTJ&0X00; /计数器清零 if(leftdir = 0) LeftMotorPulse -= (int)nLeftPulse; LeftMotorPulseSigma -= (int)nLeftPulse; else LeftMotorPulse += (int)nLeftPulse; LeftMotorPulse

27、Sigma += (int)nLeftPulse; if(rightdir = 0) RightMotorSpeed = -(int)nRightPulse; else RightMotorSpeed = (int)nRightPulse; /PACNT = 0; /if(leftdir = 0) g_lPosition = LeftMotorPulse;void SetMotorVoltage(int nLeftVal) if(nLeftValMOTOR_OUT_MAX) nLeftVal=MOTOR_OUT_MAX; if(nLeftVal 0) PWMDTY45 = 0; PWMDTY0

28、1 = nLeftVal + 120; else PWMDTY45 = -nLeftVal + 120; PWMDTY01 = 0; void MotorOutput(void) /计算最终给定的PWM占空比 /int LeftMotorOutput; /float K,P; /if (PORTB_PB3 = 1) / K = 350; /else K = 700; LeftMotorOutput = (int)K*PositionControlOut + SpeedControlOut; if (PORTB_PB4 =0) if (LeftMotorSpeed 0) g_ucRight =

29、1; g_ucLeft = 0; if (g_ucRight = 1)&(GravityAngle 0)&(GravityAngle = 0)&(LeftMotorSpeedOld 0) g_ucLeft = 1; g_ucRight = 0; if (g_ucLeft = 1)&(GravityAngle -60) LeftMotorOutput = 0; if (PORTB_PB3 = 0) if (LeftMotorSpeed 0) g_ucRight = 1; g_ucLeft = 0; if (g_ucRight = 1)&(GravityAngle =0)&(GravityAngl

30、e = 0)&(LeftMotorSpeedOld 0) g_ucLeft = 1; g_ucRight = 0; if (g_ucLeft = 1)&(GravityAngle = -180) LeftMotorOutput = -LeftMotorOutput; SetMotorVoltage(LeftMotorOutput); void PositionControl(void) float fP,fD; POSITION_CONTROL_P = 12; POSITION_CONTROL_D = 0.002; if(GravityAngle -45 ) fP = -15; /if(Gra

31、vityAngle 180) /if(GravityAngle 315) / fP = -15; /else /fP = POSITION_CONTROL_P*tancodeGravityAngle - 180; / else /if(GravityAngle 45) / fP =15; /else fP = POSITION_CONTROL_P*tancodeGravityAngle; fD = POSITION_CONTROL_D*AngleSpeed; /fI1 += POSITION_CONTROL_I*PositionErr; PositionControlOld = Positio

32、nControlNew; PositionControlNew = fP + fD;/得到的是角度控制量,加减速由车身的前倾角度决定 void SpeedControl(void) float fP,fI,fD; /RightMotorSpeedGoal = 0; /RightMotorSpeed = RightMotorPulseSigma; /RightMotorPulseSigma = 0; RightMotorSpeedErr0 = RightMotorSpeedErr1; RightMotorSpeedErr1 = RightMotorSpeedErr2; RightMotorSpe

33、edErr2 = RightMotorSpeedGoal - RightMotorSpeed;/计算速度误差 if(PORTB_PB4 = 0) & (g_ucBegin = 0) SPEED_CONTROL_P = 0; SPEED_CONTROL_I = 0; else SPEED_CONTROL_P = 120; SPEED_CONTROL_I = 1; /if(g_ucBegin = 0) /SPEED_CONTROL_P = 0; /SPEED_CONTROL_I = 0; /SPEED_CONTROL_D = 0; / fP = SPEED_CONTROL_P*(RightMotorSpeedErr2 - RightMotorSpeedErr1); fI = SPEED_CONTROL_I*RightMotorSpeedErr2; fD = SPEED_CONTROL_D*(RightMotorSpeedErr2 - 2*RightMotorSpeedErr1 + RightMotorSpeedErr0); /SpeedControlOld = SpeedControlNew; SpeedControlOut += fP + fI + fD; void AngleCalculate(void

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1