微机原理 无刷直流风扇调速与测速

上传人:工**** 文档编号:486506851 上传时间:2023-10-27 格式:DOC 页数:15 大小:840.50KB
返回 下载 相关 举报
微机原理 无刷直流风扇调速与测速_第1页
第1页 / 共15页
微机原理 无刷直流风扇调速与测速_第2页
第2页 / 共15页
微机原理 无刷直流风扇调速与测速_第3页
第3页 / 共15页
微机原理 无刷直流风扇调速与测速_第4页
第4页 / 共15页
微机原理 无刷直流风扇调速与测速_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《微机原理 无刷直流风扇调速与测速》由会员分享,可在线阅读,更多相关《微机原理 无刷直流风扇调速与测速(15页珍藏版)》请在金锄头文库上搜索。

1、 工 学 院微机原理(3级)项目报告项目名称: 微机原理课程设计 项目题目: 无刷直流风扇调速与测速 指导教师: 系 别: 机电系 专 业: 机械设计制造及其自动化 组员信息 学号: 姓 名: 王 组员信息 学号: 姓 名: 郭 完成时间: 2014 年 12 月 01 日至 2016 年 1 月 3 日 成绩: 评阅人:目录一、 学习目标.(1)二、 项目要求.(1)三、 转速测量和调节系统的硬件构成.(1)四、 程序流程图并说明方案思路.(3)五、 风扇转速与占空比之间的关系表格和曲线.(4)六、 设计程序.(5)七、 分析设计过程出现的问题.(12)八、 方案总结.(13)一、 学习目标

2、本次系统作业的目的在于:通过脉冲宽度调节实现无刷直流风扇转速的改变;借助风扇转动时产生的脉冲信号,测量风扇的转速并显示;比较每组风扇从某一转速(600r/min)到另一转速(2000r/min)稳定运转的所需要的时间。通过比较试验结果的估算结果并讨论结果差异的主要原因,让学生展示对无刷直流风扇数学模型建立和调节方法局限性有深入理解。二、 项目要求检查项目要求转速显示风扇转速能够显示在LED上,转速单位是r/min,刷新周期为1秒钟左右风扇转速可调风扇转速可以改变,根据要求转速在700-1400r/min风扇转速与显示通过简单方法给风扇加负载,随着转速的下降应该看到转速变化的显示转速指令输入环节

3、通过串口或键盘输入给定转速给定某一转速,1200-1500之间,看显示转速的稳定性转速调节功能在稳定转动条件下1500r/min,在30cm处加载一个外加一个风扇,对照加载前后的稳态转速回答问题随机提出有关转速测量、PWM输出和转速控制方面的问题,要有针对性,检查设计过程中的付出。三、 系统硬件构成风扇电路:接线:黄线接Vcc,黑线接地,绿线接P32,蓝线接P25。输出:OC输出,如下图四、 画程序流程图并说明方案思路开始初始化中断产生PWM波显示转速和占空比查询是否需要反馈调整查询是否收到串口数据查询风扇转速是否更新查询有无按键操作调整占空比更新目标转速刷新数码管缓存数据计算需要的占空比YY

4、YYNNNN 程序主要用查询法判断需要执行的操作,并且利用中断处理函数来产生各种对应的标志位来通知主循环,在主循环中进行要求的运算。其中T0定时约500us,它的每次中断相当于输出一个载波脉冲,实际上是用载波脉冲数为200个,载波周期为500us的方式构成周期为100ms的PWM波。T1用做波特率发生器。T2定时60ms。每次T2中断能重置一次按键处理标志位,这个标志位能保证每60ms内只允许处理一次按键操作,让按键处理既能高速增减,也能准确;此外当有合计25次T2的中断发生时,它能保存当前的转速值并且通知主循环刷新数码管显示请况,因此我们计算转速的方式是“统计1.5s内风扇的转动圈数”。利用

5、在T2中断的定时判断,也能把当前数码管的显示请况发回PC机。串口通讯方面,也是利用一个标志位来申明是否接受了数据。使用“操作符+操作数据”的5字节字符串数据格式,例如用“A0980”代表需要风扇按n=980r/min的速度运行。通知标志被主循环检测到的时候,会将串口数据检查并且保存成整数形式,方便后续函数的调用。当串口数据不合理时,会发送信息到PC机。五、风扇转速与占空比之间的关系表格和曲线编程实现单片机给PC定时发送转速与占空比数据后,取对应的数据制表如下。占空比(%)10095908580757065605550转速n/(r/min)2140196018201740168016001500

6、1420130011801060占空比(%)454035302520151050转速n/(r/min)90074058044010000000将500个转速与占空比数据拟合成关系曲线如下可以发现,在风扇正常转动时,转速与占空比有着正相关的关系,占空比越大,风扇的转速越高。此外,当占空比小于26%时,风扇停转。六、设计程序1、主程序:#include #define jingzhen 11059200UL /*使用11.0592M晶体*/ #define botelv 9600UL /*波特率定义为9600*/volatile unsigned char sending;sbit dula =P

7、26;/段选信号的锁存器控制sbit wela =P27;/位选信号的锁存器控制sbit PwmOut=P25;/PWM输出位置 蓝线sbit need_steady=P34;/接地后开始调整sbit HideValue =P35;/接地后显示目标转速sbit K3 =P36;/增加占空比按钮sbit K4 =P37;/减少占空比按钮unsigned char code wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/数码管各位的码表unsigned char code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

8、x07,0x7f,0x6f;/0-9的码表 unsigned char SPEED,SPEED_temp,count_time,count_send,wait;unsigned char PWM_count,PWM_turn,PWM_max;/控制PWM波的计数,转变值,周期个数,unsigned char Number8=0,value6=0;/数码管显示缓存和串口字符串数据缓存int Target;bit flag=0,flag_k=0,flag_send=0,flag_direct=0;/通知标志void Timer0Init(void);/初始化函数void Timer2Init(vo

9、id);void Ext0Init(void);void UARTInit(void);void check();void VALUE_To_Num(int num,unsigned char d); /数据填入数码管函数void direct();/直接与反馈调节PWM函数void adjust();void Display();void send(unsigned char d);void sendc(unsigned char * pd);void sendc_num(unsigned char * pd);void main()flag_direct=0;flag_send=0;wai

10、t=5;PWM_count=0,PWM_turn=170,PWM_max=200;Timer0Init();Timer2Init();Ext0Init() ;UARTInit() ;need_steady=1;/接地后开始调整HideValue =1;/接地后显示目标转速K3 =1;/增加占空比按钮K4 =1;/减少占空比按钮while(1)/主循环if(flag_k)/控制每60ms允许通过按键调整一次PWM_turnif(!K3&PWM_turn10 ) PWM_turn-;flag_k=0;if(flag_direct)check();direct();flag_direct=0;wai

11、t=4;/传送了直接值后不能马上进行反馈调整,误差太大了if(flag)/控制约1.5s允许调整数码管显示值VALUE_To_Num(500*(SPEED_temp)/25),4);if(wait0) wait-;/减缓约4.56s才允许反馈调整if(0=wait)&(!need_steady)/满足条件时启用转速反馈调整adjust();flag=0;VALUE_To_Num(PWM_turn,0);if(!HideValue) VALUE_To_Num(Target,0);/直接按下K2显示当前的目标转速的值,可以检查有没有收到串口数据if(flag_send)sendc_num(Number);flag_send=0;Display();2、 初始化子程序void Timer0Init(void)TMOD |= 0x01;/T0 16位定时TL0 = 0x33;/设置定时初值TH0 = 0xFE;/设置定时初值TF0 = 0;/清除TF0标志EA = 1; /总中断打开ET0 = 1; /定时器0中断打开TR0 = 1;/定时器0开始计时void Timer2Init(void)RCAP2H = 0x28;RCAP2L = 0x00;/定时60msEA=1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号