问个关于四线风扇pwm调速的问题,怎样能够控制速度
发布网友
发布时间:2022-04-29 23:41
我来回答
共1个回答
热心网友
时间:2022-06-26 05:15
#include lt;reg52.h
sbit FAN = P1^3; //要控制的风扇
sbit SW1 = P1^5; //按键 - 转速
sbit SW2 = P1^6; //按键 + 转速
unsigned char timer1,time=50;
void system_Ini()
{
TMOD = 0x10;
TH1 = 0xfe;
TL1 = 0x33;
TR1 = 1;
IE = 0x8A;
}
/**************************************************
void delay_us();
/**************************************************/
void delay_us(unsigned int x)
{
unsigned int i=0;
for(i=0;ilt;x;i++);
}
main()
{
system_Ini();
while(1)
{
if(SW1 == 0)
{
delay_us(200);
if(SW1 == 0)
{
time++;
if(time 100) time = 100;
delay_us(30000);
}
}
if(SW2 == 0)
{
delay_us(200);
if(SW2 == 0)
{
time--;
if(time 250) time = 0;
delay_us(30000);
}
}
}
}
/*************************************
中断
*************************************/
void T1zd(void) interrupt 3 //定时器1
{
TH1 = 0xfe;
TL1 = 0x33;
timer1++;
if(timer1 = 100) timer1 = 0;
if(timer1lt;time) FAN=0;
else FAN=1;
}
你试试上面的程序,看看能不能看到调速的过程,如果还快,就把delay_us(30000)修改成
delay_us(65535);
至于你说的由低速到调速,直流电机抱死,那个程序上不好处理,这是直流电机的问题,你只能是通过加大直流电机电压(不能超过最大电压),或者改变电机结构减少扭矩来处理.