网站大量收购独家精品文档,联系QQ:2885784924

基于单片机的无刷直流风扇转速测量与调节汇总.doc

基于单片机的无刷直流风扇转速测量与调节汇总.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的无刷直流风扇转速测量与调节汇总

基于单片机的无刷直流风扇转速测量与调节 项目设计要求 实现无刷直流电机转速的测量和控制 2、给定转速指令:由PC发送转速值,经单片机控制器,使得电机达到并稳定在指定转速上。 二、硬件设备 1、测量风扇型号:品牌:台达,型号:AFB0712HHB 2、51系列单片机学习板 3、PC 三、方案设计 1、硬件电路 USB提供+5V电源,可以实现PC机与开发板的数据通讯和程序下载。 数码管显示速度和占空比 风扇电路连接: P1.0口接PWM波输入,P3.2口接测速脉冲输入 风扇输入和输出信号图 输出信号----转速输出 每转输出2 OC输出,如上图 2. OC输出的特点 外加集电极电源和负载; 输出幅值任意; ICMAX 3. 输入信号---PWM输入 2、程序流程图 说明: 程序应用模块化进行设计,主要有初始化模块、显示模块、测速模块和调速模块。编程次序可按此先后进行。 (1)、初始化模块:T0和T1工作方式、标志位状态、所用单元初值、中断设置以及初始显示等。 (2)、显示模块:显示风扇转速的实测值及其对应的PWM占空比。 (3)测速模块:将0.5s测出的脉冲数即风扇每秒的转速。 (4)调速模块:通过串口通信把风扇转速设定值发给单片机,通过改变脉冲波的占空比和PI调节来控制转速的大小。 3. 占空比与转速关系: 占空比 0 0 0.16 0.17 0.18 0.19 0.2 0.22 0.24 0.27 0.29 0.31 转速r/s 0 1 2 3 4 5 6 7 8 9 10 11 占空比 0.35 0.38 0.42 0.46 0.51 0.54 0.61 0.74 0.84 0.94 1 转速r/s 12 13 14 15 16 17 18 19 20 21 22 四、设计程序: 1、主程序: #include REGX52.H #include T_init.H #include Display.H extern unsigned char set_value; //占空比设定 //主函数 void main() { PS=1; //串行口中断优先级别设为高 T0_init(); //定时器0初始化 T1_init(); //定时器1初始化 EXT0_init(); //外部中断0初始化 USART_init(); //串口初始化 set_value=22; while(1) { } } 2、初始化子程序 #include REG52.H #include T_Init.H //TC0初始化 //设为定时器、模式2(自动重装) void T0_init() { EA=1; ET0=1; TMOD |= 0x02; TH0=TL0 = 0x00; TR0=1; } //TC1初始化 //设为定时器、模式2(自动重装) void T1_init() { EA=1; ET1=0; //中断关 TMOD |= 0x20; TH1=TL1=0xfd; TR1=1; } //EXT0初始化 //负跳变沿有效、INT0(P3.2)输入脉冲 void EXT0_init() { IT0=1; EX0=1; EA=1; } //USART初始化 //波特率 9600bps void USART_init() { PCON=0x40; SCON=0x50; //模式1,允许接收 ES=1; } 3、数码管显示子程序 #include REG52.H #include Display.H //硬件连接 sbit DAT = P0^2; sbit SCK = P0^0; sbit RCK = P0^1; //数码管驱动 xdata NUM[]={0xf5,0x05,0xb3,0x97,0x47,0xd6,0xf6,0x85,0xf7,0xd7}; //0-9数字 xdata BIT[]={0xdf,0xbf,0x7f,0xef,0xfd,0xfb,0xf7,0xfe}; //位选 void dis_bit(unsigned char pos,unsigned char Data) { unsigned char i; pos=BIT[pos-1]; Data=NUM[Data]; RCK = 0; for(i=0;i8;i++) { SCK = 0; if(pos 0x80) DAT = 1; else DAT = 0; pos =1; SCK = 1; delay(); } for(i=0;i8;i++) {

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档