• 907.90 KB
  • 20页

微机原理三级项目报告

  • 20页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'微机原理三级项目专业:机械设计制造及其自动化项目名称:三级项目设计题目:无刷直流风扇的调速测试指导教师:郑黎明姓名:陈家兴、肖昱辰学号:2014124091、2014124092 汕头大学机电工程系2016年12月30日设计目的:1.运用电工电子学、微机原理及应用、测量技术、计算机软件等课程的基础知识,完成无刷直流风扇的调速和转速测量;2.学习相关软件Keil,uvision,Proteus编程及仿真软件,PCB设计软件的应用;3.了解直流电机的脉冲宽度调制(PWM)方法,用单片机PWM的方法;4.学习电机转速测量的方法,结合定吋计数器内容完成测量方案设计。5.转速测量的结果在多位数码管或LCD上正确显示6.整个调速测量系统制成实物,完成功能。7.根据实际,演示系统的各项功能。8.分析设计中的问题,结果反映的问题,提出改进的方法。9.总结设计过程,得出类似系统设计的优化技术路线。总结:运用并掌握微机原理测控装置的经典设计过程,既是硬件电路-软件-仿真-实物-调试过程。锻炼了硬件设计和软件调试水平,提高了工程实践的能力。对PWM驱动直流直流电机,电机调速PID控制的深入认识,学习C语言编程的技术,积累编程软件和软件调试经验。在集体项目中活动中锻炼组织分工调试的能力。二、实验可用设备:硬件总览:单片机STC89C52RC,6位七段数码管,独立按键三个,无刷直流电机软件总览.•KeilC51、STC_ISP;1.直流风扇采用PC机CPU冷却风扇,直径50mm-90mm,屯压5V,四线制无刷电机。 产品品牌:台达产品型号:AFB0712HHB外观尺寸:70mmx70inmx15mm转速参考:1000〜5000±10%RPM轴承类型:滚珠轴承使用寿命:50000小时噪音参考:15~35分贝额定电压:12V额定电压:0.45A接口类型:主板4pin口转速监测:支持①风扇采用4线连接,除了电源线外有PWM输入和转速输出。利用风扇每转产生的脉冲测量其转速,具体方法可采用定时/计数器经过处理实现。②测量的结果显示在LED数码管上。③由单片机的某一个输出端产生PWM波形,脉宽可调。(为方便后续调节,脉宽应尽可能多级可调)④设计过程辅助工具为:KeilC51>Proteuso⑤过程:设计系统方案、编写工作流程、设计硬件电路、编写系统程序。然后调试和 程序下载。1.显示器件为7段数码管,4-6位一体式,或者是LCD(1602)。2.调速采用按键控制,分加速和减速,全范围触控次数在20次以上。3.要有仿真和实验结果。i.木文主要采用单片机开发板调试程序效果,由于没有足够的时间加工PCB板,所以采用CPU为89C52RC的开发板进行项目程序调试以及项目成果展示。ii.单片机简介:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V〜3.3V(5V单片机)/3.8V〜2.0V(3V单片机)3.工作频率范围:0〜40MHz,相当于普通8051的0〜80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串U(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.只有EEPROM功能9.具有看门狗功含泛10.共3个16位定时器/计数器。即定时器TO、Tl、T211.外部屮断4路,下降沿屮断或低电平触发电路,PowerDown模式可由外部屮断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40〜+85°C(工业级)/0〜75°C(商业级)14.PDIP封装开发板为普中科技Y-3: PDIP封装引T2/P1.0T2BX/P1.1Pl.2Pl.3Pl.4Pl.5Pl.6Pl.7RSTRXD/PS.0TXD/P3.1WT0/P3.2INT1/P3.:T0/P3.4T1/P3.5^/P3.6RD/P3.7XTAL2XTAL1VSSE[[[[0123412345678911111[开发板讓:5JfPDIP丄00987^654^343333333210987653332222224232221vccPO.O/ADOPO.1/AD1PO.2/AD2PO.3/AD3PO.4/AD4PO.5/AD5PO.6/AD6PO.7/AD7BAALB/PROGPSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A1OP2.1/A9P2.0/A8JJiuJJ………t、1口5£-|(".nsua•HH5S*••n58.:/•3ii^r……*<--2二…•:二•?戸—「CSSSIMJgrJsa^,■jiihir>f3 方案设计:三、设计任务:1、风扇转速能够显示在数码管上,转速单位为r/min,刷新周期为1秒左右;2、风協转速可以改变,可调范围在200-2250r/min;3、通过开发板给风扇调节占空比,随着转速的下降,可以再数码管上看到转速变化的显示;4、通过串门或按键输入转速,使风扇能够达到输入的转速;5、给定在400-1900r/min的转速,显示出较为稳定的转速;6、在稳定的转速条件下,1500r/min,在30cm处加载•一个外加风扇,对照加载前后的稳态转速变化;7、随机提出有关转速测量、PWM输出和转速控制方面的问题,要有针对性。1、主要模块:硬件:最小开发板以及供电系统电路5V,数码管驱动电路,无刷电机外接电流。小系统电路图8051最小系统电路 (>M)口"CJTirwiMMjHI—M.XTALlvJQXTAL1XTAUKlSIfHSIFamtrsiNAU—|V€CIkUrtAONUP3ORWniziu>H24M0PlVIMI19VIIrje/nrwMQ5ssv(rkiWI/ADIW2TAD:WJ/ADJW-UAWhlT/AlWnompii/TjrjcFI2FIJFI.4FIJF2O/MmPU/A1IP1VA1JP}#include#defineucharunsignedchar"0-255#defineuintunsignedint"0-65535sbitdula=P2A6;//数码段段选sbitwela=F2A7;//数码管位选sbitPl_l=P1Al;//控制电机I/O口定义sbilP3_4=P3A4;sbitkey_l=P3A5;//加速键 intPWMH_1,PWMH_2,PWMH_3;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d0x07,0x7f,0x6f};//数奶管显示数据表//绿线接P3.2蓝线接P1.1voiddelay(uintz)//延时函数{uintx,y;for(x=z;x>0;x—)for(y=50;y>0;y-);}voiddisplayO//数码管显示困数{dula=l;//第叫个数码管显示转速个位PO=table[ge];dula=0;P0=0xff;//消隐wela=l;P0=0xF7;wela=0;delay(3);dula=l;//第三个数码管显示转速十位PO=table[shi];dula=0;dula=l;//第二个数码管显示转速百位P0=table[bai];dula=0;P0=0xff;//消隐wela=l;P0=0xFD;wela=0;delay(3);dula=l;//第一个数码管显示转速千位P0=table[qian];dula=0;P0=0xff;//消隐wela=l;P0=0xFE;wela=0;delay(3);dula=l;//第五个数码管显示占空比十位P0=table[PWMH_2];dula=0;P0=0xff;//消隐wela=l;P0=0xEF;wela=0;delay(3);dula=l;//第六个数码管显示占空比个位P0=table[PWMH_3];P0=0xff;//消隐wela=1;P0=0xFB;wela=0;delay(3); dula=O;PO=Oxff;//消隐wela=l;PO=OxDF;wela=O;delay(3);}voidcsh()//定吋器opwm输出,调V;转速{//初始化,每一次溢出吋W50msTMOD=0x01;TH0=(65536-461)/256;TL0=(65536-461)%256;IT0=l;//下降沿EA=1;EXO=1;//打开外部中断0ETO=1;//打开TO中断TR0=1;//启动定吋器}voidkeyscan()//键盘扫描部分{if(key_l==O){delay(3);//延时去料动if(key_l==O){PWMH++;if(PWMH〉=PWM)while(!key_l);//等待按键释放}}if(key_2==0){delay(3);if(key_2==0){PWMH-;if(PWMH<=0)PWMH=0;while(!key_2);//等待按键释放}}if(key_3==0){delay(3);if(key_3==0){PWMH=PWMH+10;if(PWMH>=PWM)PWMH=PWM;while(!key_3);//等待按键释放}}if(key_4==0)PWMH=PWM; delay(3);if(key_4==0)zhuansu=m*30/2; PWMH=PWMH-10;if(PWMH<=0)PWMH=0;while(!key_4);//等待按键释放}}}//测量转速,利用外部中断INTO和定时器T0,每两秒计算一次//定吋器0中断部分voidTO_time()interrupt1{TH0=(65536-461)/256;TL0=(65536-461)%256;num++;n++;if(num二=201)//周期定位200个num=0;if(num<=PWMH)Pl_l=l;//置高电平elseif(num〉PWMH)Pl_l=0;//置低电平if(n==3988)//2s时间到,计兑转速m=0;qian=zhuansu/l000;bai=zhuansu%1000/100;shi=zhuansu%100/10;ge=zhuansu%10;}}//外部中断0部分voidXO_time()interrupt0{EX0=0;m++;EX0=l;}voidPWMH_()//显示占空大小{PWMH_l=PWMH/100;PWMH_2=PWMH%100/10;PWMH_3=PWMH%10;if(PWMH_l>=l)Pl一6=0;elsePl_6=l;n=0;//2秒测一次,一分钟为30次,一转发两个脉冲 voidmain()//主函数P3_4=0;//打通P3A4控制的按键csh();//初始化子函数while(l){PWMH_();keyscani();displayQ;实验结果:占空比0.250.300.350.400.450.500.550.60转速2104506758551005117012901410占空比0.650.700.750.800.850.900.951.00转速15301605168017851845193520402250占空比和转速的关系y■2444.6X•169.41R*霧0.97•Z.•警參250020001500100050000.000.200.400.600.801.001.20风扇转速低于250i7min时,由于电压过低,风扇停转7.2、速度输入与以调节转速到目的转速程序:^include^include〈math.h>#include#defineucharunsignedchar//0-255#defineuintunsignediint"0-65535^defineMaxVal200 //数码段段选//数码管位选//控制电机T/0口定义////////占空比百位//定义转速各位sbitdula=P2"6;sbitwela=P2"7;sbitpii=m;sbitPl_4=Pf4;sbitkey_l=P3^5;sbitkey_2=P3"6;sbitkey3=P37;sbitPl6=Pf6;sbit0UT_P^i=Pr0;longintn=0;intge,shi,bai,qian;intz,h,x=0,y=0,c=0;intPWM=200:intTemp_Speed,Target_Speed=1200,PWMI1_1,PWMH—2,37/转速ucharFlag=0,adjust,pwmval=0,PWMH:uinla,b;ucharcodeUible[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示数据表//绿线接P3.4蓝线接Pl.0/*二二二延时函数二=*/voiddelay(uintz){uintx,y:for(x=z;x>0;x--)for(y二50;y〉0;y;}/*======数码管显示函数=======voiddisplay(){dula二1;P0=table[n%10];dula=0;P0=0xff;//消隐wcla=l://显示转速个位P0=0xF7;wela=0;delay(5);dula=l;P0=table[n%100/10];dula=0;P0=0xff;//消隐wcla=l;//显示较速十位P0=0xFB;wela=0;delay(5);dula=l;Portable[n%1000/100I;duia=0;P0=0xff;//消隐wela=l;//品示较速百位PO^OxFD;"vela二0;delay(5);dula=l:P0=tablc[n/1000];dula二0;P0=0xff;//消隐wela=l;//品示转速千位P0=0xFE;wcla=0;delay(5);dula=l:P0=tablc[PWH_2];dula二0;P0=0xff;//消隐wela=l;//显示占空比十位P0=0xEF;wcla=0;delay(5);dula=l;P0=table[PWII3];dula=0;P0=0xff;//消隐we1a=1;//显示占空比个位P0=0xDF;wela=0;delay(5); //初始化voidcsh(){OLT_PW.i=O;TMOD=Ox27;TH0=256-250;TL0=256-20;EA二1;ET1=1;ETO=1;//打开TO中断TRO=1;//启动定吋器TR1=1;SC0N=0x50;PC0N=0x00;THl=Oxfd;TLl=Oxfd;ES=1;RI=0;)//速度粗凋voidlarge_speed(void)/*速度粗调,预先把占空比对应的转速大概关系测最出來*/{if(1800=10&&adjust==l)/*进行速度微凋的条件判断*/{if(Target_Speed>Temp_Speed){c=TargetSpeed-TempSpeed;if(c〉300)PWMH=PWMH+18;elseif(c〉200)PWM1I=PWM1I+1O;elseif(c>150)PWMH=PWMH+8;elseif(c>100)I)酬1=1)酬1+5;elseif(c>80)PWMH=PWMH+4;elseif(c>60)PWMH=PWMH+3;elseif(c>30)PWM1I=PWM1I^2;elseif(c>=12)PWII=PWIIH:adjust=0;}if(Temp_Speed>Target_Speed){c=TcmpSpeed-TargetSpeed;if(c〉300)PWH=PWH-18;elseif(c>200)PWM1I=PWM1I-1O;elseif(c>150)PWMH=PWMH-8;elseif(c>100)PWMlI=PWMlI-5;elseif(c>80)PWH=PWH-4;elseif(c>60)PWH=PWH-3; elseif(c>30)PWMH=PWMH-2;elseif(c〉=12)PWMH=PWMH-1:adjust=O;}h=PW.MII/2;))//键盘扫描部分voidkeyscan(){if(key_l=0){delay(3);//延时去抖动if(key_l=0){TargetSpeed=TargetSpeed+5;whilc(!koy_l)://等待按键释放))if(key_2=0){delay(3);if(key_2=0){TargetSpeed=TargetSpeed+100;while(!koy_2)://等待按键释放))if(key_3==0){delay(3);if(key_3=0){TargetSpeed=TargetSpeed-100;while(!koy_3)://等待按键释放))//屮断服务程序voidtimerl(void)interrupt3using1{y++;x++;pwmval++;TH0=6;if(pwmval=l) Pl_6=0;elsePl6=1;>voidmain(){Pl4=1;csh();lcirge_speed():while(l)//主阐数//打通P3"4控制的按键//初始化子函数();kcyscan();display();little_spccd();if(y>二4000){n=TcmpSpeed;z=h;y=0;}八、项目总结总的来说,这次的微机原理三级项目的设计不算特别复杂,只要搞懂好定时器和各种中断,按键扫描以及数码管显示的知识,就能很好的完成此次项A的要求。设计过程,先参考网上有的程序,有了大致整体的程序,然后对其修改來适应我们的单片机的板。这次的项目只能通过仿真软件与开发板来实现。虽然实验的误差相对来说较大,但是也是我们一个学期理论结合实践的一个成果,可以锻炼我们的工程时间能力还有工程设计能力,C语言编程能力。尤其是C语言编程,我们在之前就有了扎实的C语言基础,所以利用C语言编写单片机程序也可以说顺利一点,但是仍是存在许多的调试问题。回看项FI的施展过程,对程序的调试是比较繁琐的,因为得寻找出原因,并解决这个问题。有时候解决不了,就会卡在这个问题上挺长时间的,有吋候还得去请教同学,然后再对这个程序进行修改。一步一步过来都是通过自身细心调试,当然也参考了开发板附带的例子程序,并制作成为项目的模块,最后写成一个工程项目。整个过程中,还是颇有收获的,得到一定的编程基础。九、评分细则学生姓名:学生学号:陈家兴2014124091系统作业三:评分标准 很较良优突差差好秀出学生是否能够完成具有风扇转速测量和调节的硬件设计?[20分]学生是否能够完成转速测量程序和转速调节程序的设计?[20分]学生是否清楚转速和电压之间的关系?[15分]学生是否根据转速的偏差来及时调整PWM脉宽?[10分]学生能否从串U接收到转速指令信号?|10分1学生是否根据动态特性来调制PWM参数?[15分]学生提供的是否有理有据的设计?对重要的设计特征是否给出简耍的理由[10分]总分:学生姓名:肖昱辰学生学号:201412409201234很较良优突差差好秀出学生是否能够完成具有风扇转速测量和调节的硬件设计?|20分1学生是否能够完成转速测量程序和转速调节程序的设计?[20分]学生是否清楚转速和电压之间的关系?[15分]学生是否根据转速的偏差来及时调整PWM脉宽?[10分]学生能否从串门接收到转速指令信号?[10分]学生是否根据动态特性来调制PWM参数?[15分1学生提供的是否有理有据的设计?对重要的设计特征是否给出简要的理由[10分]总分:'