《基于数字PID的电机散热控制器设计报告(共29页).doc》由会员分享,可在线阅读,更多相关《基于数字PID的电机散热控制器设计报告(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上摘 要本文主要介绍了电机散热系统控制器的机械结构、仿真及软硬件模块的设计过程。整个系统以89C52RC为主控芯片,以540电机作为转动发烫电机,采用DS18B20来检测540电机的温度,以12x12的水泵和风扇构成电机的散热器,用LM298驱动电路驱动与控制散热器。其简单工作原理为DS18B20B实时采集540电机的温度并传回给单片机,以此为依据来控制水泵阀门的开关以及风扇的转速,通过仿真数字PID的位置式与增量式进行对比,确立采用增量式PID水泵阀门的开关以及风扇的转速进行控制。关键词:电机散热 水泵 风扇 增量式PID目 录123679012一 设计概要首先通过D
2、S18B20对540电机的温度进行检测,在通过单片机结合预设温度判断对散热器的控制,最终单片机输出PWM波通过LM298对水泵即风扇进行控制。需要根据设计要求,电机散热系统控制器的设计可以分为4大部分:温度的测量以及设置预设温度;控制算法的仿真;硬件设计;软件设计以及调试。可以细分为:1. 电机散热系统控制器的结构调整2. 传感器DS18B20的布局3. 电源模块4. 电机驱动设计5. 数字PID的仿真6. 控制程序的编写系统在设计是按照以上模块进行原理设计分析,最后确定每个部分的具体方案,最终确定设计的整体方案。二 原理分析在此章节主要分析设计的基本原理包括:电机温度原理、水冷散热原理、数字
3、PID控制原理。2.1电机温度原理2.1.1发热一散热机理分析 电机各部分材料导热能力、散热条件相差很大,且受热不均匀,温度达到稳定以前,各点温度不断变化,是一个发热一散热过程非常复杂的不稳定导热过程。若要分析、计算每个节点的温度,将会使模型难度大大增加3J,不利于工程实现。对于废气门采用的小型永磁直流电机,本文将其视为常物性的均质物体,即物理性质不发生变化、表面各点散热情况相同且其内部没有温差的物体。永磁直流电机工作时产生的热量来源有绕组铜损、定子铁损、涡流损耗等,其中,绕组铜损占绝大部份,因此绕组是电机温度最高的地方四。忽略其他损耗,即假设除了绕组铜损,电机其余功率均作为机械输出,得到永磁
4、直流电机等效发热原理如图1所示。图1电机工作时的电压平衡方程为 (1) (2)式中,为电机等效工作电压;为电机反电势;为电机等效工作电流;为电机等效电阻;为反电势系数;为磁通;为电机角速度。于是,可以得到电机的发热功率为: (3) 电机与周围介质之间的传热方式主要为对流散热,根据牛顿冷却公式,可得电机的散热功率为: (4)式中,为对流换热系数;为电机表面积;, 分别为电机温度和环境温度。 考虑风速影响的对流换热系数为: (5)式中,为无风环境下的对流换热系数;为风速;为风速影响因子。2.1.1电机发热模型建立根据能量守恒定律,由式(3)、式(4)可得基于功率的永磁直流电机温度模型算法如下: (
5、6)式中,为电机比热容;为电机质量;为时间。 根据传热学知识,可知热容从,热阻。当电机温度饱和时有,由式(6)可得电机稳态温度为: (7)将式(7)带入式(6),可得电机的发热方程为: (8)断电时,电机的冷却方程为: (9)式中,为电机(发热/冷却)初始温度;为发热/冷却时间常数。根据前文所述可得风速与时间常数的关系为: (10)式中,、分别表示风速为、时的电机发热/冷却时间常数。考虑到永磁直流电机温度变化并不十分灵敏,取计算周期t =1s,即可满足废气门需求,于是得到电机发热方程的离散解析式为: (11)2.2水冷散热器原理 根据能量守恒定律,电机运行所产生的损耗将全部转变为热能而导致电机
6、发热,所以冷却水带走的热量应与电机耗散热量平衡。该电机在热平衡状态下的流量计算如下。2.2.1冷却水总量 (12)式中:为电机运行某段时间的发热量(KJ); 为水的比热容(KJ) ; 为冷却水的进出口温度差。 2.2.2冷却水入口流速 (13) (14)式中:为体积流量();为质量流量(kg); 为入口截面积(m)。2.2.3槽内的强制对流换热 槽内的循环冷却水与机壳表面之间存在对流换热。该永磁同步电机采用截面为矩形的螺旋槽作为水流通道。根据传热学与流体力学,流体在管道内的流动可分为层流、紊流,其分界点是以管道直径为特征尺度的临界。在电机的冷却系统中,希望流体以湍流的形式流动,以带走更多热量。
7、 (1)管内强制对流的传热计算:对流换热系数:临界雷诺数:式中:为流体的平均流速(m/s);为管道直径(mm)对于非圆形管道,此处为当量直径;为流体的运动粘度()。湍流时 。 (15)式中:为指数,流体被加热时n=0.4;流体被冷却时,n=0.3 ;为努赛尔特系数;为普朗特系数。层流时Re=100时,time清零(此语句保证频率为1000HZ),2、当timen时(n应该在0100之间变化开),让单片相应的I/O口输出高电平,当timen时,让单片相应的I/O口输出低电平,此时占空比就为%n。七其它技术设计7.1数字PID的控制器模型仿真对于水冷系统的控制,按照要求采用数字PID进行控制。这里
8、对位置式和增量式PID进行仿真来确立控制程序采用那种控制PID。鉴于电机温度模型可近似的看作是一个二阶模型,故我们分别用位置式PID与增量式PID对二阶系统进行仿真。7.1.1位置式PID的仿真建立simulink模型如下:图12 位置式PID的simulink仿真双击step,将sample time设置为1以符合采样周期T=1s的要求;选择仿真时间为500。先获取开环系统的单位阶跃响应,在Simulink中,把反馈连线、微分器、积分器的输出连线都断开,并将Kp的值置为1,调试之后获取响应值。再连上反馈线,再分别接上微分器,积分器,仿真,调试仿真值。最终获得最适合的PID值,其中Kp值为4,
9、Ki值为5.2,Kd值为0.2,得到的响应曲线如下图:图13 位置式PID的仿真曲线由图可以得到系统达到稳定的时间为2.45s左右。7.1.2增量式PID的仿真建立simulink模型如下:图14 增量式PID的simulink仿真双击step,将sample time设置为1以符合采样周期T=1s的要求;选择仿真时间为500。先获取开环系统的单位阶跃响应,在Simulink中,把反馈连线、微分器、积分器的输出连线都断开,并将Kp的值置为1,调试之后获取响应值。再连上反馈线,再分别接上微分器,积分器,仿真,调试仿真值。最终获得最适合的PID值,其中Kp值为0.9,Ki值为10,Kd值为0.1,
10、得到的响应曲线如下图:图15 增量式PID的仿真曲线由图可以得到系统达到稳定的时间为1.55s左右。7.1.3水冷系统控制器增量式PID的确立有图可以得到对于二阶系统的电机温度模型,采用增量式PID可以更快速调节电机温度达到稳定平衡的状态,故采用增量式PID对电机水冷控制系统进行控制。八设计总结这次课程设计我们的题目是“基于数字PID的电机散热系统控制器设计”,拿到题目后我们小组成员首先进行了大致的分析,根据每个成员的实际情况分配各自的任务,这样的小组协作能够更有效的完成我们的课题。我的任务是硬件设计,以前实践操作的经验很少,只学习了课本上的知识,很少有机会实际动手操作设计。起初有很多东西都不
11、是太懂,材料选用以及如何设计都没有头绪。但是在老师和小组成员的帮助下,我从新手出发,学习到了很多东西,对于如何设计,选用都有了了解。通过查阅各种文献资料,学习单片机,构造整体思路,解决各种设计上遇到的问题。最后成功设计好硬件部分。其他小组成员们也各司其职,大家做好了各自的任务,最后我们完成了电机水冷散热控制的设计与制作。在这过程中我们学到了很多,这份报告基本上介绍了我们电机水冷散热器的全部内容。参考文献1王平谢昊飞蒋建春编,计算机控制技术及应用,机械工业出版社,2011 2于海生主编,微型计算机控制技术,北京:清华大学出版社,19993李青青黄勤杨立等编著,永磁同步电机水冷系统散热参数分析与热
12、仿真,机械设计与制造,2014(4)4周俊宏习纲刘宁等编著,电动废弃门电机温度模型及其过热保护研究,汽车技术,20015(5)5张毅刚主编,单片机原理及应用,北京:高等教育出版社,20046陈涛编著,单片机应用及C51程序设计,北京:机械工业出版社,20087楼然苗李光飞编著,单片机课程设计指导,北京:北京航空航天大学出版社,20078王海英袁丽英吴勃编著,控制系统的MATLAB仿真与设计,高等教育出版社,2009致 谢本次课程设计的完成是在我们的导师袁老师的细心指导下进行的。在每次设计遇到问题时老师不辞辛苦的讲解才使得我们的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程
13、中,花费了袁老师很多的宝贵时间和精力,在此向导师表示衷心地感谢!导师严谨的治学态度,开拓进取的精神和高度的责任心都将使学生受益终生!还要感谢和我同一设计小组的几位同学,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地完成任务,在此表示深深的谢意。 附件(设计图纸、程序等)附录一 实物图附录二 电路原理图,pcb图专心-专注-专业附录三 主程序代码#include #include #include ds18b20.h#include OLED.hsbit led = P17;/用来测试的灯sbit progr
14、am_led = P16;/程序指示灯sbit key1 = P34;/最左边的按键,按下即设定温度+1sbit key2 = P35;/中间的按键,按下即设定温度-1sbit key3 = P36;/确认设定温度键sbit key4 = P37;/OLED花屏重启按键sbit key5 = P15;/风扇的级数设定/电机的引脚sbit ENA = P24;/产生PWM波的管脚sbit IN1 = P21;/控制升压驱动电路的引脚sbit IN2 = P20;/控制升压驱动电路的引脚/水排风扇的引脚sbit ENA_2 = P27;/产生PWM波的管脚sbit IN1_2 = P25;/控制升
15、压驱动电路的引脚sbit IN2_2 = P26;/控制升压驱动电路的引脚/与温度有关的参数extern float temp_h;/温度的整数部分extern float temp_l;/温度的小数部分float Expect_Temp = 26.5;/设定的期望温度float Expect_Tempset = 26.5; /与PWM波有关的参数uchar HighRH=0;/用来设置定时器0的高低位uchar HighRL=0;uchar LowRH=0;uchar LowRL=0;uchar HighRH_1=0;/用来设置定时器1的高低位uchar HighRL_1=0;uchar L
16、owRH_1=0;uchar LowRL_1=0;int out_ = 0;uint key_flag=0,oled_flag=0;uint Speed_position=0;/风扇速度调节标志uint xdata Draw_Buff128=0;void Draw_CCD() uchar i,j,line,dot; uchar temp=0; for(j=0;j2); line=temp/8; dot =temp%8; for(i=0;i4;i+) LCD_Set_Pos(j,i); if(Draw_Buff127!=0& Draw_Buff127=j)|(Draw_Buff127!=50&
17、Draw_Buff127=j) else if(i=line) LCD_WrDat(10;i-)for(j=110;j0;j-);void ScanKey()/键盘扫描函数,用来扫描哪个按键按下并做出相应处理if(key1=0)/如果按键1按下delay(10);/消抖if(key1=0)key_flag = 0;led = led; /指示灯反转Expect_Temp+=0.5;/期望温度+1if(Expect_Temp 60)/给期望温度限幅,不能高于70Expect_Temp = 60;while(!key1);/在按键按下时等待,不做别的事情if(key2=0)/如果按键2按下dela
18、y(10);/消抖if(key2=0)key_flag = 0;led = led;/指示灯反转Expect_Temp-=0.5;/期望温度-1if(Expect_Temp 3)Speed_position= 0;while(!key5); /PWM波产生函数,第一个参数为频率,第二个参数为占空比void Time_PWM_Init(uint fr,char dc)unsigned int high,low;unsigned long tmp;tmp=(/12)/fr; /计算一个周期所需要的计数值 定时周期为1/fr s 总共的计数值high=(tmp*dc)/100; /计算高电平所需的计
19、数值low=tmp-high; /计算低电平所需的计数值high=65536-high+12; /计算高电平的重载值并补偿中断延时low=65536-low+12; /低电平 同上HighRH=(unsigned char)(high8); /高电平重载值拆分为高低字节HighRL=(unsigned char)high;LowRH=(unsigned char)(low8); /低电平重载值拆分为高低字节LowRL=(unsigned char)low;HighRH_1=HighRH;HighRL_1=HighRL;LowRH_1=LowRH;LowRL_1=LowRL;TMOD&=0XF0
20、;/设置定时器模式TMOD|=0X11;TH0=HighRH;TL0=HighRL;TH1=HighRH;TL1=HighRL;ET0=1;/开启定时器0中断TR0=1;/启动定时器0ET1=1;/开启定时器1中断TR1=1;/启动定时器1ENA=1;ENA_2=1;void PWM_Motor_Change(char dc)unsigned int high,low;unsigned long tmp;tmp=(/12)/1000; /计算一个周期所需要的计数值 定时周期为1/fr s 总共的计数值high=(tmp*dc)/100; /计算高电平所需的计数值low=tmp-high; /计算低电平所需的计数值high=65536-high+12; /计算高电平的重载值并补偿中断延时low=65536-low+12; /低电