《微机原理无刷直流风扇调速与测速分析.docx》由会员分享,可在线阅读,更多相关《微机原理无刷直流风扇调速与测速分析.docx(12页珍藏版)》请在第壹文秘上搜索。
1、工学院微机原理(3级)项目报告项目名称,微机原理课程设计项目题目,无刷克流风扇调速及测速指导老牌:系别,机电系专业:机械设计制造及其门动化组员信息学号:姓名:玉组员信息学号,姓名,郭完成时间,2019年12月01日至2019年J月1日成果:评阅人:书目一、学习目标(1)二、项目要求(1)三、转速测置和调整系统的硬件构成(1)四、程序流程图并说明方案思路(3)五、风扇转速及占空比之间的关系表格和曲线(4)六、设计酊(5)七、分析设计过程出现的问题(12)八、方案总结(13)voidcheck();数据填入数码管函数voidVA1.UE_To_Num(intnum,unsignedchard);v
2、oiddirect();/干脆及反馈调整PWM函数voidadjustO:voidDisp1.ayO;voidsend(unsignedchard):voidsonde(unsignedchar*pd);voidsendc_num(unsignedchar*pd);voidmain()f1.ag_direct=O;f1.ag_send=O;wait=5;PWA1.CoUnI=0,PWMjUrn=I70,Pm1.nIaX=200;TimerOInitO:Timcr2Init();ExtOInitO;UARTInitO;need_steady=1.;接地后起先调整HideVa1.ue=1;接地后显
3、示目标转速K3=1:增加占空比按钮K4=1;削减占空比按钮WhiIe主循环if(f1.ag_k)限制每60ms允许通过按键调整一次PWMJUrnif(!K3&PWM一turn10)PWM_turn;f1.ag_k=0;if(f1.ag_direct)checkO;directO;f1.ag_direct=O:wait=4;传送了干脆值后不能立刻进行反馈调整,误差太大了if(f1.ag)限制约1.5s允许调整数码管显示值VA1.UEJrO_Num(500*(SPEEDIemP)/25),4);if(waitO)wait-:减缓约4.56s才允许反馈调整if(O=wait)M(!need_stea
4、dy)满意条件时启用转速反馈调整adjust();fIag=O;VA1.,UE_To_Num(PWMturn,O);if(!HideVa1.ue)VA1.UE_To_Num(Target,O);干脆按下K2显示当前的目标转速的值,可以检查有没有收到串口数据if(f1.ag_send)sendc_num(Number);f1.ag_send=O;Disp1.ayO:2、初始化子程序voidTimerOInit(Void)TMODI=0x01;/TO16位定时T1.O=0x33;设置定时初值THO=OxFE;设置定时初值TFO=0:清除TFO标记EA=1;总中断打开ETO=1;定时器0中断打开TR
5、O=1;定时器0起先计时voidTimer2Init(void)RCAP2H=0x28:RCP21.=0x00;定时60msEA=I;打开总中断ET2=1:打开定时器2中断TR2=1;定时器2起先计时voidext1.nit(void)INTO=I;/置高接收口P3.2PXO=I:设置中学断优先级TUO=OxFE;设置定时初值PwmOut=PWM_count4)/只读入4个字节f1.ag_direct=1.;/通知主函数可以调整PBI了read_ab1.e=0;write_poin1.=0;wait=4:/马上暂停反馈调整if(Temp=A)A作为特征码检测,也可以运用其他的字母来规定限制代码
6、write_point=0;一旦收到A,指针回到开头并且允许接受数据readab1.e=1;1.f(TI)假如是发送标记位,清零TI=O;sending=0:清正在发送标记定时器2调整数码管的刷新速度voidtime2(void)interrupt5using1定时器2中断TF2=0;必要的软件清中断标记COUnt_time+;f1.ag_k=1.;if(count_time=25)fIag=I;SPEEDjemp=SPEED:SPEED=O;count_time=0:count_scnd+;if(count_send=5)f1.ag_send=1.;count_send=0:4、协助处理程序
7、检查串口数据Voidcheck()unsignedchari:for(i=0;i4;i+)if(va1.uei,9,)va1.uei,O;Target=(va1.ue0,0,)*1000+(va1.ue1-O*)*100+(va1.ue2,0,)*10+(va1.ue3,0,);if(Target2180Target3;i)Numberi-d=Num%10;Num=NumZ1.O:干脆调整P1.恻函数voiddirect()if(Target2180Target280)禁止不行调整范围的PWMreturn:if(Target200)PWMJUrn=200;反馈调整P1.锄函数Voidadjus
8、t()doub1.enum;num=SPEED_temp*20;if(Target2180Target280)禁止不行调整范围的PWMreturn;if(Target1520)PWM_turn=PWMturn+(0.00006*Target+0.01311)*(Target-num);/J理是dy=f,(x)*dxe1.se属于比例调整PWM_turn=PWM_turn+(0.00018*Target+0.4299)*(Target-num):if(num200)PWM1.Urn=200;数码管显示程序voidDisp1.ayOunsignedcharnum;unsignedintm;for(
9、num=0;num0:in-);时间间隔短,利用人眼的余辉效应,觉得每个数码管都始终在亮。发送一个字节Voidsend(unsignedchard)发送一个字节的数据,形参d即为待发送数据。SBIJF=d;将数据写入到串口缓冲sending=1.;设置发送标记WhiIe(Sending);等待发送完毕发送一个字符串VOidsendc(unsignedchar*pd)whi1.e(*pd)!三,0,)/发送字符串,直到遇到O才结束send(*pd);发送一个字符Pd+;移动到下一个字符voidSendC_num(UnSignedchar*pd)unsignedchart:for(t=0;t);S
10、end(*pd)+O);发送一个字符Pd+;移动到下一个字符sendCn);七、分析设计过程出现的问题1 .在设计PWM的调控方式的过程中,我们遇到了一个选择PWA1.波周期的问题。查阅资料后发觉,PWM波的周期大小能干脆影响小风扇的输出转矩。在实际测试过程中,第一次选用载波脉冲数为200个,载波周期为250US的方式构成周期为50InS的PW我们发觉,此时使风扇恰好保持转动的占空比为35与。其次次选用载波脉冲数为200个,载波周期为500us的方式构成周期为100ms的PWM此时使风扇恰好保持转动的占空比为26%,并且相对上一次的选择在调速过程中,相同的占空比能输出更大的转速。因此相对的,其
11、次种方案调速实力更加优秀。最终选择了用载波脉冲数为200个,载波周期为500us的方式构成周期为100ms的PWMo2 .设计中关于测定转速及占空比的关系的次序也是一个问题。在设计的后期,我们留意到从高占空比测到低占空比以及从低到高测,得到的PIYM-n关系曲线在占空比相同时,转速的差值可以很大,这干脆影响到占空比干脆调整函数的精度。为解决这个问题,利用随机给定占空比的方式测速更为贴合实际的运用状况。因此后期中创建了一个特地用来测定转速及占空比的关系的程序,它能随机指定占空比并且定时几秒后把当前稳定的PWM-n关系发回PC机。八、方案总结依据项目报告的检查要求,我们将项目过程分阶段进行。第一阶段,初步实现用按键调整占空比并输出PWM波让风扇转动:其次阶段让数码管能显示PWM波的占空比状况:第三阶段加入转速测量功能并且用数码管显示转速:第四阶段加入串口通讯功能,主要实现用单片机接受数据;第五阶段制作风扇转速及占空比之间的关系表格和曲线:第六阶段依据关系曲线选择合适的调整方案;最终整合程序并且完成项目实践报告。从结果上看,我们的无刷直流风扇系统已经能实现全部要求的功能,能做到调速及自动稳定转速。为提高该系统的性能,我们可以考虑从改善稳定转速的方案入手,这须要对P1.D调整有深化的了解。