制作天地
HANDS ON PROJECTS
编者按 :此设计出于一位本科学生之手,完成得不错。用 18SB20 测温,三位 LED 数码管动态显示,三
个按键,硬件简洁。程序设计在高于设定值 3 个字时开风扇,低于 3 个字时开加热电阻避免频繁开关。C 语
言编程,思路清楚。本刊收到许多学校学生的论文作品,由于内容及格式问题不能刊用,欢迎广大学生参与
投稿,此文可以作为参照。
作 者
作 者
陈 勇
黄锦煌
单片机恒温箱的温控系统制作
本设计的主要原理是,单片机实时地将温度传
感器所采集的温度值与所设定的恒温值进行比较和
二、元器件选择
处理,从而监控并保持样品容器箱的温度值。本文
本设计的 MCU 采用 STC89C52 单片机 ;考虑
给出了该系统的方案设计、硬件电路、软件设计、
到节省器件使用的需要,温度传感器则采用单总线
故障排除以及系统调试等内容。
制的数字温度传感器 DS18B20,无需接 A/D 转换器,
系统的主要性能指标有 :(1)恒定温度值设定
范围 :20 ~50 C,最小区分度 : 1 C ;(2)数码管
采样值可直接送单片机处理,简易方便 ;系统采用
普通单刀继电器 HK4100F 作为控制开关 ;两个水
显示实际温度值,显示范围 :0~99 C ;最小区分度 :
泥电阻(10W,10Ω)串联作为加热器件,低压(最
0.1 C ;(3)温度控制误差 :≤ ±1 C ;(4)显示精
高 24V)供电,安全可靠 ;以 5V 直流供电小型风
度 :温度控制的绝对误差≤ ±3 C。鉴于风扇冷却,
扇达到降温或使容器受热均匀的目的 ;采用普通的
环境温度高于 20 C,恒温下限相应上移。
按键开关,实现恒温温度的可调设置功能 ;三位一
体的数码管实时显示当前容器的温度值,简易低廉,
一、系统方案设计
实现了人机交互界面之目标。
本系统是基于经典 C51 系列单片机的应用开
发,集环境温度的信号采集、数据的处理及温度的
三、硬件电路设计
保持控制等等为一体的数字控制系统。同时,该系
依据系统方案,概述主要模块接口电路 ;
统设计有友好的人机交互界面以及简易的设置按键。
1、电源模块。12~24V 交流输入,输入的交流
系统由如下功能模块组成 :MCU 模块,显示
电压为水泥电阻的发出热量提供电能 ;输入交流电
模块,电源模块,按键设置模块,温度采集模块,
压经整流滤波,接入稳压芯片 7805 转变为 5V 直流
冷却模块以及加热模块。系统方案框图如图 1 所示。
电压(VCC)以供给 MCU 及其外设系统使用。
显示模块
按键设置
模块
冷却模块
电源模块
温度采集
模块
加热模块
MCU
图1 系统方案框
2、显示模块。共阳数码管,段选接 MCU I/O
口的 P1 组管脚。以 9012 三极管作为数码管位选开
关,位选分别由 P2^5、P2^6、 P2^7 等管脚控制,三
位数码管显示当前温度(采样温度)值,其中有一
个为小数位。其余两个分别为十位和各位。
3、加热模块。主要根据设定恒温值与采样温
度值的比较结果进行工作,即,采样温度值大于设
定值时,继电器闭合并接通水泥电阻加热,否则断开。
43
制作天地
HANDS ON PROJECTS
图 2 中,JD1、JD2 分别接串联水泥电阻及交流电
送单片机处理,且可使系统实现温度的巡回测量和
源的一端,该继电器由单片机的 P2^4 管脚控制。
显示。其中,温度传感器的数据管脚接单片机的
4、按键设置模块。为了节省材料和硬件资源,
P3^5 管脚。
系统设计了三个按键,设置恒温值时,一个用于
递增输入 ;另一个用于递减输入 ;第三个预留。三
个按键的一端接地,另一端分别接 MCU 的 P2^1、
四、 系统软件设计
P2^3、 P2^2 管脚。
1、系统软件概述,如图 3 所示,系统软件主
5、冷却模块。安装小型风扇,以 5V 直流电压
流程是一死循环程序。其主要任务是 :
供电,以继电器控制风扇的工作状态,以实现智能
(1)初始化系统。主要完成相关单片机寄存器
化控制。主要根据设定恒温值与采样温度值的比较
的配置,初始化全局变量等。
结果进行工作,即当采样温度值大于设定值时,继
(2)判断“设置按键是否按下”。若按下,则
电器闭合并启动风扇冷却,否则断开。该继电器由
转入设置处理,并定时 10S,若 10S 后仍然没有按
单片机的 P2^3 管脚控制。
键按下,则跳出设置处理。
6、温度采集模块,温度采集模块。以单总线
(3)采集温度并处理数据。主要对 DS18B20
操作的 DS18B20 温度传感器作为温度采集器。从
复位并读取数值,对所得数据作相关处理并最终转
温度传感器获取温度值的方法非常简洁,无须接 A/
换为十进制数以便于数码管显示。
D 转换器,即可实现对温度测量并将测量数据直接
2、部分软件程序代码展示。软件的设计,使用
44
2010 VOL.08
图2 电路原理图
开始
初始化寄存器
初始化全局变量
设置键按下
是
否
设置处理
采集温度
恒温控制处理
显示当前温度
结束
图3 主程序流程图
制作天地
HANDS ON PROJECTS
}
}
数码管显示程序 :
void display(uint shu)
{
uchar bai,shi,ge;
uint temp;
temp=shu;
// 十进制数分别分离出百、十、个位
bai=temp/100;
shi=(temp%100)/10;
ge=temp%10;
wei1=0;
P1=table[bai];// 显示百位上的数
Keil C51 开发编写软件程序。软件程序主要由主
程序,初始化子程序,读取 DS18B20 传感器数据
delay(5);
wei1=1;
wei2=0;
子程序,温度数据处理子程序,显示子程序,中断
P1=table_daidian[shi];// 显示十位上的数
定时子程序以及按键设置子程序等组成。由于读取
DS18B20 数据的子程序涉及底层硬件接口,故该子
程序采用汇编语言编写,除此之外之外,其他全部
delay(5);
wei2=1;
wei3=0;
程序代码采用 C 语言编写。
P1=table[ge]; // 显示个位上的数
主程序 :
void main()
{
init();
// 初始化全局变量和定时器
while(1)
{
if(flag)
delay(5);
wei3=1;
}
温度控制子程序 :
void set_jdq()
{/* 控制继电器从而判断是否加热 */
if(current_tmpbalance_tmp+3)
/* 采样温度(实际温度)大于所设恒温值 */
jdq2=0; /* 启动继电器 2 风冷 */
else
jdq2=1; /* 关闭继电器 2*/
}
45
制作天地
HANDS ON PROJECTS
五、PCB设计与硬件焊接
并给系统上电,刚开始程序正常运行,具有预期效
果——数码管显示出温度值,而不到 1 分钟,数
以 Altium Designer 软件绘制设计系统 PCB 图,
码管不再显示。此时,用手摸 MCU,发现温度正
如图 4 所示。设计 PCB 时,主要注意如下问题:1、
常不发热,按复位键,无效 ;然后拔掉电源,用万
按模块电路组合排列元器件,即将同一模块的元器
用表测试数码管,数码管完好 ;后来换了另外一
件尽量排列在一起,以避免布线繁杂而难以发现检
块完好的 MCU,问题依然存在 ;最后着手去查硬
测或排除故障 ;2、布线时保证安全的线间距,设
件问题,发现 MCU 复位电路上的电解电容焊接反
置好布线规则后,最好手动布线 ;3、需要与外界
了,将该电容替换,问题得以解决。用 WNY-03
连接的接口,一般放在PCB的边缘;4、滤波电容,
型 0~150 C 水银温度计头插入温控样品容器箱,测
需靠近要滤波的器件附件,相互连接的导线不宜过
20 C,30 C,40 C,50 C 控制值与实际值的偏差。
长,否则影响滤波效果。检查确保制成的 PCB 没有
短路、断路以及连错的情况下,将相应元器件焊接
于制成的 PCB 上。
七、功能简介
制作成品如 6 所示。整个系统所具有的功能:(1)
具有简易可行的温度采集功能。(2)依据所采集的
温度值和设定的恒温值进行对比,并决定对系统环
境加热或者冷却实现自动控温。(3)实现对小范围
环境(如样品容器箱)的恒温。
图4 PCB图
六、系统调试与故障排除
以万用表检测硬件的连接线路 ;在保证硬件电
路没有短路、断路等问题的情况下,使用宏晶科技
单公司所提供的下载软件(如图 5 所示),将程序下
载到 STC89C52RC 单片机上,从而进行软硬件结
合调试。
图6 成品效果展示图
八、小结
本设计以经典的低廉单片机作为微控制器,设
计了具有友好人及交互界面、智能化高等特点的温
控样品容器箱。另外,需要指出的是,该系统仍然
具有完善空间,如选用贴片封装的元器件,半导体
制冷器件等。改善软件方面,亦有很大的空间,如
程序滤波算法的应用,将进一步减少温度误差,将
使该系统控制精度更高、功耗更低,温度控制范围
图5 下载软件界面图
更大。
在调试的过程中,遇到如下故障,下载成功
46 2010 VOL.08
46
2010 VOL.08