「单片机项目实战」温度控制系统
本项目的主要作用是实现温度调控,通过设定一个预定的温度值,实现实时检测外界温度,当外界温度小于预定值时,电机正转,实现降温效果;当外界温度大于预定值时,电机反转,实现升温效果,从而达到一个维持一定温度范围的控制系统。
所以在实现上以一个单片机作为处理器,利用传感器DS18B20采集温度值,然后将采集到的数据传送给单片机,单片机根据程序设定的温度范围检测,通过控制电机来转动通风,实现温度调节的目的。
其实整个电路组成可以分为四个部分,分别是单片机控制主体,DS18B20温度电路,液晶显示电路和L298N电机驱动电路。
单片机控制主体是整个温度控制系统的核心,处理中心,所有其他的模块电路都需要通过单片机控制或和单片机交换信息等。而这个过程就是通过单片机的引脚,比如它的输入输出引脚作为信号输入输出的通道以及一些特殊功能引脚等。
单片机引脚主要大类:电源引脚: VCC和GND,供电和接地用的
复位引脚: 一般是RST,用于芯片的复位,复位系统是单片机中不可缺少的部分
输入输出引脚: 也就是I/O,用于信号输入或输出信号
振荡器引脚: OSC(振荡器),其实就是时钟信号电路,用于连接振荡器,晶振,不管现在很多芯片都有内置振荡器,在时钟要求不是很高的情况下,可以不用额外接振荡器到单片机的振荡引脚中。
特殊功能引脚: 具有特殊的功能,比如说协议传输如SPI,I2C,UART等等,还可以是LCD驱动,ADC,USB传输等等。
DS18B20温度电路
DS18B20是一款常用的数字温度传感器,具有体积小,抗干扰能力强,精度高的特点,并且有多种封装形式,比如管道式,磁铁吸附式等等。
对于这部分电路,DS18B20模块主要是三个引脚,也就是电源,GND和信号,数据传输到单片机的数据传输引脚,从而获取到温度传感器中检测到的数据。
液晶显示电路
这部分电路主要用来显示单片机想要输出的内容,比如说显示温度,提示信息等等,这部分可以通过软件编程进行设置。
L298N电机驱动电路
L298N是常用的一款步进电机驱动芯片,具有工作电压高,输出电流大,驱动能力强,发热低,抗干扰能力强的特点,在这里用来作为驱动风扇转页马达的部分。并且L298N是利用脉冲宽度调制(PWM)方式进行转速的控制的。
一般会通过控制脉宽时间(比如高电平)占总周期的时间比例,也就是占空比,比例越大,则转速越高,从而通过控制占空比来控制转速。
在硬件电路设计好之后,就是核心部分的软件实现逻辑了,这个系统需要处理好温度值与PWM调速功能的关系,从而完成整个温度控制系统的功能。
项目使用的编程语言是C语言,软体设计部分由于篇幅问题,后期会分单独一篇文章进行分享。
往期精彩内容:
PCB板由哪些元素组成?(PCB板的五脏六腑)
电阻的作用有哪些?(超全)
常说的LDO电路是啥?(简单版)
笔记本(金属外壳)电脑漏电怎么办?
单片机实例分享,温度记忆杯垫
“记忆杯垫”是我利用身边的材料制作的,杯垫材料是一张光盘,导热材料是硬币,用502胶水和加厚双面胶粘合,制作起来十分简单。
这个作品的设计初衷是源自个人的生活经验,希望和我有着一样烦恼的“技术宅”们会喜欢这个设计。笔者作为“职业码农”,常常遇到这样的困扰:早上冲好的咖啡,放着放着就凉了;同事胃不好,需要喝温水,可一忙就忘记了……想必每个人都有这样的经历,这次的设计,就是给大家解决这一问题——可以及时提醒人们饮用热饮。喜欢喝热饮的朋友,以后不必再因为冷却的热饮而苦皱眉头了!
功能描述
“记忆杯垫”能实现以下功能:当我们把装有温度较高液体的杯子放到杯垫上时,杯垫上安装的温度传感器开始测量杯子的底部温度,只要杯子不是隔热材料的,那么杯子的表层温度就会和里面的液体温度成正比,当杯子内的液体降到了适合人的饮用习惯时,此时按下“记忆键”,杯垫就将永久记录下此时的杯子底层温度;当使用者再次将装有热饮的杯子放在杯垫上时,液体在降温过程中,只要杯子的底层温度与之前记忆的温度接近,杯垫就可以根据设计者的要求提示主人饮用,比如通过闪烁灯提示或者通过音乐提示。
工作原理
这次设计的核心就是围绕温度传感器DS18B20和单片机EEPROM的应用。
DS18B20采集温度,单片机负责数据的处理,当有温度需要记录时,单片机将待记录温度存储到单片机EEPROM中;当EEPROM中有了温度记录后,单片机将采集到的数据与EEPROM中数据随时进行比较,当数据接近时,就会做出相应输出,开启提示功能。
当下次冲好了一杯咖啡,就可以把杯子放到杯垫上面了,温度传感器会将采集到的温度T值与EEPROM里的数值A做比较,当A-1 < T < A+1 时,杯垫侧面的8个发光二极管就会闪烁,以此来提示主人喝咖啡或水。
温度的差值也可以根据设计者的需要自行改变,比如在比较寒冷的地区,T与A的差值可以通过改变程序来实现。笔者在南方,实际测试的时候发现T与A的值在±1之间就可以了。
记忆键在向单片机记录温度数据的时候,也会擦除之前的数据,这样一个按钮就可以完成需要的操作。
国产的STC单片机大多数都自带了一定大小的EEPROM,这就给设计者带来了极大的方便。为了让电路更加简洁,这次选用的是STC11F04E的1T单片机,其具备4KB的程序存储空间和1KB的EEPROM空间,20引脚的封装设计大大减小了PCB面积。图15.1为电路原理图,制作说明见图15.2、图15.3。
图15.1 电路原理图
图15.2
图15.2 光盘中间的圆孔用来放置温度传感器,上面用金属片导热材料固定,并涂上硅脂,增加导热效果,因为大多数杯子底部是凹进去的,也可以用硬币这种有一定厚度的材料导热。
图15.3
图15.3 杯垫的背面,用双面胶(电工固定线盒那种)粘住电池盒、电路板、流水灯,温度传感器已经粘在电路板下面了
程序设计
这里要作出说明的是,大多数DS18B20程序代码都是为12T单片机设计的,而1T单片机指令速度要比12T单片机快很多,这就导致了通常的DS18B20程序不能直接拿来调用。笔者根据STC的官方资料,通过计算指令外加逻辑分析仪测试的方式,得出的结论是,11系列的1T单片机指令要比12T单片机快6.5倍左右,根据这个数据来修改原始DS18B20程序的延时程序和EEPROM程序,就能保证系统的稳定性。
STC绝大多数芯片都集成了EEPROM,不同型号的擦写程序也是大同小异,使用起来十分方便,无需额外EEPROM的IC,更不需要IC通信程序。因为是内部集成的,程序代码简单,很好理解,节约了设计成本的同时,也给应用者节约了程序设计时间。
STC的官方资料很明确地给出了EEPROM的原始程序,笔者根据自己的理解,为使程序更加简洁,对官方程序作了一些改动,应用了C语言的宏定义,自己也做了对应的库文件,方便实用。本程序是在Keil环境下编译的,使用时要添加我自己写的basic.h、STC11Fxx_IAP.h文件,同时要下载官方的单片机库文件,这样方可保证程序的正确编译。
■ 本制作的相关源文件可以到qq群657864614进行下载。
■介绍一个与众不同的淘宝店铺:首页-数码达人小二-淘宝网,不信你试试?
相关问答
单片机 温度 控制系统 怎么解决?单片机温度控制系统可以通过以下步骤来解决:选择合适的传感器:选用温度传感器来监测环境温度。连接传感器:将传感器与单片机连接,以便采集温度数据。编写...
温度传感器怎么与 单片机 连在一起工作?第一要完成温度传感器与单片机的硬件连接:(1)温度传感器是将非电量转换为电量即温度转换成电压(一般电压值较小为毫伏级的)因此需要加一级运算放大电路...
...AT89C52 单片机 芯片为核心,研究和设计了可以应用于水】作业帮[最佳回答]Thetemperaturecontrollerisakindoftemperaturecontroldevice,ituserneedtemperatureandthe...
想用 单片机 测量温度,热电阻温度计算公式为:T1=1/[ln(Rt / R)/B+1/T2],怎样用C语言表示此公式?C语言里面有专门的数学库函数,写的时候带上头文件#includeC语言里面有专门的数学库函数,写的时候带上头文件#include这里选用函数doublelog(doublex)返回的...
单片机 功耗与温度有关系吗?有影响,不过一般来说,功耗是自变量,温度是因变量,温度随功耗增大而增加,温度受功耗影响大一点。反过来说,功耗受温度影响比较小,单片机的工作温度都有个范...
温度传感器 单片机 为啥会跳一下呢?温度传感器单片机跳一下可能是因为外部干扰或传感器自身性能问题。外部干扰包括电磁干扰和温度梯度等,导致传感器输出信号不稳定。传感器自身性能问题可能是其...
单片机 采集温度传感器怎么用?第一要完成温度传感器与单片机的硬件连接:(1)温度传感器是将非电量转换为电量即温度转换成电压(一般电压值较小为毫伏级的)因此需要加一级运算放大电路...
麻烦诸位大侠!我想知道: 单片机 测温电路?,校车人脸测温机有...[回答]方案:采用热电偶作为感测温度的核心元件,配合桥式电路,运算放大电路和AD转换电路,将温度变化信号送入单片机处理。此方案原理和方案一的原理大同小...
51 单片机 和红外探测器怎样测量温度?1.通过51单片机和红外探测器可以测量温度。2.51单片机是一种微控制器,可以通过接收红外探测器发出的红外线信号来测量温度。红外探测器可以感知物体发出的红...
温度 控制 器的工作原理?温控器工作原理:机械式的采用两层热膨胀系数不同金属压在一起,温度改变时,他的弯曲度会发生改变,当弯曲到某个程度时,接通(或断开)回路,使得制冷(或加...温...