温度控制电机转动案例

温度测控系统是一单片机作为处理器,利用DS18B20采集当前温度值,将温度测量结果送入单片机中。单片机依据当前温度,并根据预先设置好的控制模式控制电机转动通风,实现对温度调节。下图为温度测控系统的原理图。系统主要有DS18B20测温电路、液晶显示电路和L298N电机驱动电路。L298N是双全桥步进电机专用驱动芯片,内部包含4个通道逻辑驱动电路,可同时驱动2个2相或1个四相步进电机,此芯片可直接由单片机的I/O端口提供时序信号驱动电机运行。

图片

      具体实现功能:当外部温度大于等于45℃时,直流电机在L298驱动下加速正转,温度达到75℃以上时全速正转;当外部温度小于等于10℃时电机加速反转,温度到达0℃及以下时电机全速反转;温度回到10~45℃之间时电机逐渐停止转动。

图片

     系统主要代码为PWM调速功能与温度值的设计。其中,温度测量显示实现见DS18B20与LCD1602温度测量显示案例。PWM调速功能与温度值如下所示:

 //-----------------------------------------------------------------
// T0定时器溢出中断函数控制电机正/反转,并输出PWM信号控制转速
//-----------------------------------------------------------------
void T0_INT() interrupt 1
{
    static INT8U t_Count=0;
    TH0=(INT16U)(-11.0592/12*500)/256;
    TL0=(INT16U)(-11.0592/12*500)%256;
    if(++t_Count==100)//每50ms读取一次温度值
    {
        t_Count=0;
        sendChangeCmd();
      Temp=getTmpValue();
        if(Temp!=Back_Temp_Value)//温度改变则刷新,不改变不更新屏显信息
        {
           Back_Temp_Value=Temp;
             sprintf(Disp_Buffer,"%5.1f\xDF\x43",Temp);
           LcdShowStr(5, 1,Disp_Buffer );
        }
        //温度高于75低于0,电机全速运转
        if(Temp>=75) Temp=75;
        if(Temp<=0)  Temp=0;
        //大于等于45时加速正转,高于75全速运转
        if(Temp>=45)
        {
            MA=1;MB=0;
            if(Temp==45)
            {PWM1=0;delayMs(30);return;}
            else
            if(Temp==75)
          {PWM1=1;delayMs(30);return;}
            PWM1=1;delayMs(Temp-45);
            PWM1=0;delayMs(75-Temp);
        
        }//小于10时电机加速反转,0时全速运转
        else if(Temp<=10)
        {
            MA=0;MB=1;
            if(Temp<=10)
                {PWM1=0;delayMs(10);return;}
                else
            if(Temp==0)
                {PWM1=1;delayMs(10);return;}        
      PWM1=1;delayMs(10-Temp);
            PWM1=0;delayMs(Temp);
        
        }
        else
        {MA=0;MB=0;}
    
    
    }


}

//完整代码及仿真图:单片机项目实战:温度测控系统设计

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值