基于单片机的温控风扇设计

这篇具有很好参考价值的文章主要介绍了基于单片机的温控风扇设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

收藏和点赞,您的关注是我创作的动力

概要

  本研究对温控风扇系统进行分析设计,单片机为其核心构成部分,通过温度传感器DS18B20获取温度信息,输入至单片机内部,单片机与系统设置的温度做比较,发出相应的控制信号,通过ULN2803控制风扇系统对元件进行散热处理,同时能通过判断设定温度与采集温度的温差大小,来确定风扇系统的转速,采用LED八段数码管实现温度显示功能。动态显示当前所处的环境温度和设定温度,并可以通过键盘按钮设定当前温度。键盘部位则可以自主调节设定温度而DS18B20可以测定外部环境温度,然后记录环境温度和设定温度并将其连续及时显示。

关键词:单片机、DS18B20、温控、LED

一、系统整体设计

  本系统的主要元件分工如下:首先利用温度传感器,对环境温度进行检测以及获取数字信息,进而将其输入单片机中,从而在八段数码管中显示出两种温度,一是环境温度,二是系统预先设置的温度。分别精确到十分位与整数位。并且通过运用PWM脉宽调制法,实现电机转速随着环境温度的改变而改变。此外,为了方面预设温度的调整,设定两个按键来对预设温度进行升高或者降低。该系统运行流程图如下所示:

基于单片机温控散热器的设计,单片机,单片机,嵌入式硬件

图1.1系统构成框图

二、各单元模块的硬件设计

  本设计的主要硬件包含:①型号为DS18B20的输出离散型号的数字温度传感器;②型号为AT89C52的CMOS 8位单片机;③5位发光二极管封装的数码管显示器④风扇直流电动机;⑤型号为ULN2803驱动器。其他电子元器件包含:①多种不同阻值的电阻器;②多种不同电容量的电容器;③多个晶体振荡器;④各类电压源以及电流源;⑤多个按键;⑥多个DIP开关。

三、 软件设计

3.1 程序设置

主程序、DS18B20初始化功能、DS18B20温度转换功能、温度读取功能、键盘扫描功能、数码管指示功能、温度功能和风扇发动机控制功能等均可使用和应用,旨在控制电风扇的相关指标。一般情况下,DS18B20程序恢复初始状态可以由DS18B20初始函数控制;外界环境温度可以通过DS18B20温度转换功能进行实时监测和记录;温度读取功能的功能则是将温度转换函数收集和记录的数据进行读取并将这些数据进行换算传输至主机中;键盘扫面功能的功能需要通过完成设定温度的原始数值进行加减设定来完成;对于检测、收集、记录的相关温度的数据进行处理则离不开温度处理功能,除此之外电风扇发动机转速的改变也离不开温度处理函数的运行;电风扇发动机是否转动以及转读的高低以外界温度和设定的温度为基础加以风扇电机控制函数进行控制。
如图3.1.1所示该程序的具体使用方法:
基于单片机温控散热器的设计,单片机,单片机,嵌入式硬件

图3.1.1 主程序流程图

附录1:电路总图

基于单片机温控散热器的设计,单片机,单片机,嵌入式硬件

附图1 电路总图

程序代码

附录2:程序代码
#include <reg52.h> 
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^7;
sbit key1=P1^3;
sbit key2=P1^4;
sbit dianji=P3^1;
float ff;
uint y3;
uchar shi,ge,xiaoshu,sheding=20,gaonum,dinum;
uchar code dispcode[]={    //段码
0x3f,0x06,0x5b,0x4f, 
0x66,0x6d,0x7d,0x07, 
0x7f,0x6f,0x77,0x7c, 
0x39,0x5e,0x79,0x71}; 
uchar code tablel[]={ //带小数点的段码
0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,
0x87,0xff,0xef};
uchar dispbitcode[]={    //位选
0xfe,0xfd,0xfb,0xf7, 
0xef,0xdf,0xbf,0x7f};   
uchar dispbuf[8]={0,0,0,0,0,0,0,0}; 
void Delay(uint num)// 延时函数
{
	while( --num );
}
void digitalshow(uchar a4,uchar a3,uchar a2,uchar a1,uchar a0)
{
	dispbuf[0]=a0; 
	dispbuf[1]=a1;
	dispbuf[2]=a2;
	dispbuf[3]=a3;
	dispbuf[4]=a4;
	
	P2=0xff;
	P0=dispcode[dispbuf[0]];
	P2=dispbitcode[5];
	Delay(1);  

	P2=0xff;
	P0=dispcode[dispbuf[1]];
	P2=dispbitcode[4];
	Delay(1);

	P2=0xff;
	P0=dispcode[dispbuf[2]];
	P2=dispbitcode[2];
	Delay(1);

	P2=0xff;
	P0=tablel[dispbuf[3]];
	P2=dispbitcode[1];
	Delay(1);

	P2=0xff;
	P0=dispcode[dispbuf[4]];
	P2=dispbitcode[0];
	Delay(1);
}
void dmsec(uint count) 
{     
	uint i;			// 1ms延时
	while(count--) 
	{
		for(i=0;i<125;i++){}
	}
}

void tmreset(void) 
{                  
	DQ=0;
	Delay(90);			// 精确延时 大于 480us
	DQ=1;
	Delay(4);			// 90,4 可以小范围变化
}

void tmpre(void) 
{                    
	while(DQ);
	while(~DQ);
	Delay(4); 
}

bit tmrbit(void) 
{                    
	uint i;
	bit dat;
	DQ=0;
	i++;			 // i++;大概1us
	DQ=1;
	i++;
	i++;	   
	dat=DQ;
	Delay(8);            
	return(dat);
}

uchar tmrbyte(void)  //读一个比特
{         
	uchar i,j,dat;
	dat=0;
	for(i=1;i<=8;i++) 
	{
		j=tmrbit();
		dat=(j<<7)|(dat>>1);
	}
	return(dat);
}

void tmwbyte(uchar dat)  //写一个比特
{              
	uint i;
	uchar j;
	bit testb;
	for(j=1;j<=8;j++) 
	{
		testb=dat&0x01;
		dat=dat>>1;		// 从低位开始
		if(testb)       // Write 1
		{
			DQ=0; 		// 先拉低 
			i++;
			i++;		// >1us                          
			DQ=1;
			Delay(4);            
		}
		else            // Write 0
		{
			DQ=0; 
			Delay(4); 	          
			DQ=1;
			i++;
			i++; 		// 再拉高                         
		}
	}
}
void tmstart(void)    //ds1820开始转换
{   
	dmsec(1);              
    tmreset();
    tmpre();
    dmsec(1);
    tmwbyte(0xcc); 		// skip rom	
    tmwbyte(0x44); 		// 转换
}
uchar tmrtemp(void)     //读取温度
{                  
	uchar a,b;
	tmreset();
	tmpre();
	dmsec(1);
	tmwbyte(0xcc); 		// skip rom
	tmwbyte(0xbe);			// 转换
	a=tmrbyte(); 		// LSB低8位
	b=tmrbyte();		// MSB高8位
	y3=b;
	y3<<=8;
	y3=y3|a;
	ff=y3*0.0625;
	y3=ff*10+0.5;
	return(y3);
}
void keyscan(void)
{
	if(key1==0)
	{
		dmsec(5);
		if(key1==0)
		{
			sheding++;
			if(sheding==100)
				sheding=20;	
		}
		while(!key1);
	}
	else if(key2==0)
	{
		dmsec(5);
		if(key2==0)
		{
			sheding--;
			if(sheding==0)
				sheding=20;	
		}
		while(!key2);	
	}
}
void deal(uint tmp)   //温度处理
{
	if(tmp<=sheding)
	{
		gaonum=0;
		dinum=4;
	}
	else if((tmp>sheding)&&(tmp<=(sheding+5)))
	{
		gaonum=1;
		dinum=3;
	}
	else if((tmp>(sheding+5))&&(tmp<=(sheding+10)))
	{
		gaonum=2;
		dinum=2;
	}
	else if((tmp>(sheding+10))&&(tmp<=(sheding+15)))
	{
		gaonum=3;
		dinum=1;
	}
	else
	{
		gaonum=4;
		dinum=0;
	}
}
void dianjik()    //电机控制
{
 uchar q,i;
 for(q=0;q<dinum;q++)
 {
  dianji=0;
  digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);
  for(i=255;i>0;i--)	
  {
   digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);					
  }
 }
 for(q=0;q<gaonum;q++)
 {
  dianji=1;
  digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);
  for(i=255;i>0;i--)	
  {
   digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);					
  }
 }
}
void main(void)
 {
	uint last;
	dianji=0;
	tmstart();	
	dmsec(450);			// 初始化ds18b20
	while(1)
	{		
		tmstart();			// ds1820开始转换
		dmsec(2); 
		last=tmrtemp()+256;	// 读取温度	
		shi=last/100;
		ge=(last%100)/10;
		xiaoshu=(last%100)%10;
		keyscan();
		dmsec(2); 
		deal(last/10);
		dianjik();
	}      
}








四、 结论

本系统采用单片机为核心部位,以DS18B20温度传感器测定环境温度为基础组合可以具有不同转速的风扇发动机为一个整体,通过测定外界环境温度的变化来加快或减慢发动机的转速,并实现在一定的温度范围内转速的连续调节。LED数码管可以显示周围环境温度,并可以通过键盘上的两个独立按键实现维持和稳定数码管不同设定温度的调整,这意味着数码管的温度是固定在不同的温度差值水平的。改变环境的温度和设定温度之间的差值可以进一步改变发动机的转速。
了解本系统的发动机转速设计可以应用众多发动机的控制系统之中。它可以在日常生活中使用,使智能化风扇可以被广大消费者所使用,为生活提供便利。在工业化生产中,为了控制发动机的转速,可以改变输入信号的不同类型,降低生产自动化程度和生产压力及使用成本。该系统的设计和研究在工业生产和日常生活中起着重要的作用。

五、 文章目录

目 录
摘 要 I
Abstract II
第一章 整体方案设计 1
1.1 前 言 1
1.2 系统整体设计 1
1.3方案论证 2
1.3.1 温度传感器的选择 2
1.3.2 控制核心的选择 3
1.3.3 温度显示器件的选择 3
1.3.4 调速方式的选择 3
第二章 各单元模块的硬件设计 5
2.1系统器件简介 5
2.1.1 DS18B20单线数字温度传感器简介 5
2.1.2 达林顿反向驱动器ULN2803简介 5
2.1.3 AT89C52单片机简介 6
2.1.4 LED数码管简介 7
2.2 各部分电路设计 8
2.2.1 开关复位与晶振电路 9
2.2.2 独立键盘连接电路 9
2.2.3 数码管显示电路 10
2.2.4 温度采集电路 11
2.2.5 风扇电机驱动与调速电路 12
第三章 软件设计 14
3.1 程序设置 14
3.2 用Keil C51编写程序 14
3.3 用Proteus进行仿真 15
3.3.1 Proteus简介 15
3.3.2 本设计基于Proteus的仿真 16
第四章 系统调试 21
4.1 软件调试 21
4.1.1 按键显示部分的调试 21
4.1.2 传感器DS18B20温度采集部分调试 21
4.1.3 电动机调速电路部分调试 21
4.2 硬件调试 22
4.2.1 按键显示部分的调试 22
4.2.2 传感器DS18B20温度采集部分调试 22
4.2.3 电动机调速电路部分调试 22
4.3 系统功能 23
4.3.1 系统实现的功能 23
4.3.2 系统功能分析 23
结 论 24
参考文献 25
致  谢 26
附录1:电路总图 27
附录2:程序代码 28文章来源地址https://www.toymoban.com/news/detail-791887.html

到了这里,关于基于单片机的温控风扇设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Proteus仿真】【51单片机】智能温控风扇设计

    本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶、按键、蜂鸣器、L298N电机驱动模块、直流电机、DS18B20温度传感器等。 系统运行后,LCD1602显示传感器检测的温度值; 默认以自动模式运行,若按下K4键切换为手动模式,此时可以 通过K1和K2控制风扇加减速,风扇档位共

    2024年02月16日
    浏览(42)
  • 【嵌入式开发-8051】详细:基于AT89C52单片机设计的温控风扇(Proteus仿真设计-含设计原理图、程序源码)

    1、本设计是基于AT89C51/52单片机为核心的温控风扇系统,使用Proteus进行仿真分析。 2、由于上传后图片压缩,可以私信联系获取清晰图片。 3、本次为本人结课设计,整体比较简单,如有疑问欢迎大家交流讨论!   目录 【嵌入式开发-8051】详细:基于AT89C52单片机设计的温控风

    2024年02月07日
    浏览(43)
  • 基于51单片机的智能温控风扇(程序+仿真+原理图)

    基于51单片机的智能温控风扇,通过DS180温度传感器采集温度,并通过数码管显示温度,当温度高于20°时,开启风扇降温,当温度低于20°时风扇关闭。 基于51单片机的智能温控风扇 方案验证仿真软件使用的是Proteus仿真文件,Proteus软件版本为8.8;如需下载软件,可以在公众号

    2024年02月11日
    浏览(51)
  • 基于普中51单片机开发板的温控风扇

    自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论坛的作者yrx0203,论坛ID号:684871,在此特别鸣谢。话不

    2024年02月11日
    浏览(43)
  • 单片机毕业设计 stm32智能温控风扇设计与实现 - 嵌入式 物联网

    Hi,大家好,学长今天向大家介绍一个 单片机项目 基于stm32的智能温控风扇设计与实现 大家可用于 课程设计 或 毕业设计 随着科技的日新月异,智能家居逐渐走入普通家庭,风扇作为基本的家用电器也将成为智能家居的一部分。这里介绍的是以STM32单片机为控制单元并结合嵌

    2024年02月09日
    浏览(71)
  • 【Proteus仿真】【Arduino单片机】智能感应温控风扇

    本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶显示模块、DS18B20温度、按键、声光报警、L293D电机驱动等。 主要功能: 系统运行后,LCD1602显示传感器检测的温度值; 当红外传感器检测到有人信号时, 默认以自动模式运行,若按下K4键切换为手动模式,此时可以 通

    2024年01月20日
    浏览(41)
  • 单片机毕设 stm32 wifi远程温控风扇系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(47)
  • 基于单片机的智能风扇设计

    单片机类型:51单片机(普中) 传感器的使用: DS18B20温度传感器、LD3320语音模块、JQ8900-16P语音播报、LCD1602显示屏、hc-sr501人体感应模块等 设计有三个模式: 模式1:根据温度变化进行风扇速度的调节 模式2:自主控制温度的风扇变化 模式3:采用人体感应模块,监测风扇前是

    2024年01月18日
    浏览(35)
  • 单片机设计基于51单片机的智能风扇控制系统设计与实现

      我们常见的电风扇一般只有四、五个风速档,用的是人工开关,而且并不是每个人家里都会有空调,或者在一些小型的工厂或者一些小型加工厂,这些地方都可能没有配备大型的中央空调系统这些东西,所以这些东西往往都会采用风扇这种小成本的东西来代替,但是不清楚

    2024年02月03日
    浏览(53)
  • 【毕业设计】基于单片机的智能温控农业大棚系统 - 物联网 stm32

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能温控农业大棚系统 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 近年来我国的温室控制取得了 长足的进步, 首先在

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包