基于STM32的pwm温度风扇(带人体检测)

一.硬件方案

本次设计采用STM32单片机做主控芯片,通过DS18B20采集温度,将温度显示在 LCD1602上。通过人体传感器检测周围是否有人存在,并根据温度的不同,利用STM32对风扇进行调速。
主要由STM32单片机+LCD1602液晶显示+DS18B20温度采集+按键设置电路+PWM风扇+人体红外检测;如图:
在这里插入图片描述

二.设计功能

(1)LCD1602液晶显示当前温度,风扇等级,自动手动模式。
(2)按键可以设置自动和手动2种模式切换,按键设置温度上限。
(3)手动模式下可以自由开启风扇,调整档位等级。
(4)自动模式下,人体红外检测到人并且当前温度大于我们设置温度上限值风扇开启。
(5)每大于一度风扇档位pwm加一,最大上限为10档。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)PCB图如下:
在这里插入图片描述

四.软件设计

(1)程序流程图
在这里插入图片描述

(2)主程序源码

int main(void)
{		
	  u8 count = 0;
	
	  Motor = 0;
		delay_init();	    	 //延时函数初始化	  
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
		delay_ms(500);
	  LCD_Init();//1602初始化
	  KEY_Init();//按键初始化
		while(DS18B20_Init())//温度初始化
		{
				LCD_Write_String(0,0,"  DS18B20 Erro  ");
				LCD_Write_String(0,1,"                ");
		}
		DS18B20_Get_Temp();//温度初始化
		LCD_Write_String(0,0," DS18B20 Init...");
		delay_ms(1000);
		LCD_Write_String(0,0,"Temp:   C  M:  C");
	  LCD_Write_String(0,1,"Auto:    Gear:  ");
		TIM3_Int_Init(1,7199);//10kh频率计数,定时100us
		if(Auto_flag == 1)
			LCD_Write_String(5,1,"on ");
		else
			LCD_Write_String(5,1,"off");
		display_Max();
		
		while(1)
		{
			  keyscan();//按键扫描
			  if(count++ >= 200)//延时一段时间读取温度
				{
						count = 0;
						temperature = DS18B20_Get_Temp();//获取温度
						if(temperature<0)
						{
							LCD_Write_Char(5,0,'-');			//显示负号
							temperature=-temperature;					//转为正数
						}else LCD_Write_Char(5,0,' ');			//去掉负号
						
						//显示温度
						LCD_Write_Char(6,0,temperature/100+'0');
						LCD_Write_Char(7,0,temperature%100/10+'0');
						
						if(Auto_flag == 1)//在开启模式下,感应到有人,并且温度超过上限开启风扇
						{
							  if(RTHW == 1)//感应到有人
								{
										temp_dispose(temperature/10);//根据温度进行pwm调节
								}
								else//没感应到有人,关闭风扇
								{
									  PWM_Val = 100;
										Motor = 0;
									  LCD_Write_String(14,1,"--");
								}
						}
						else//关闭风扇
						{
							  PWM_Val = 100;
								Motor = 0;
								LCD_Write_String(14,1,"--");
						}
				}
				delay_ms(1);
		}
}

资料链接:https://pan.baidu.com/s/1wL1XMFW3EGXAsEX5KsKfrg?pwd=d6kd
提取码:d6kd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值