18B20温控报警器制作与调试.docx
- 文档编号:993660
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:312.43KB
18B20温控报警器制作与调试.docx
《18B20温控报警器制作与调试.docx》由会员分享,可在线阅读,更多相关《18B20温控报警器制作与调试.docx(27页珍藏版)》请在冰点文库上搜索。
18B20温控报警器制作与调试
项目5《18B20温控报警器制作与调试》
5.1项目描述和要求
5.1.1项目描述
本项目基于AT89S51单片机的数字温度报警器系统。
以数字温度传感器18B20作为核心元件,采用LED数码管作为显示,以蜂鸣器作为报警器,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。
DS18B20与AT89S51结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
5.1.2项目要求
完成作品详细要求如下:
1.质量要求:
温度采集、报警准确,数码管显示效果稳定清晰、无乱码。
2.安全要求:
作品无短路故障,正确使用仪器仪表,凡通电测试必须经过老师同意才能执行,遇到特殊情况立即断电并报告老师。
3.文明要求:
不要携带任何饮料进入实训室,统一穿好校服、佩戴好校卡,进入实训室不喧哗吵闹,书包统一放置讲台旁边。
自觉遵守实训室规定进行项目作业。
4.环保要求:
制作过程能重复利用的元器件要尽量重复使用,电路布局尽量紧凑不浪费板材,下课离开实训台请关闭实训台电源。
5.2知识准备:
5.2.1了解温控报警器
图5-1图5-2
温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。
在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。
比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。
没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。
因此,各行各业对温度控制的要求都越来越高。
可见,温度的测量和控制是非常重要的。
5.2.2温控报警器电路分析
本项目设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
考虑使用温度传感器,结合单片机电路设计,本项目采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
(1)电路结构
在本系统的电路设计方框图如图5-3所示,它由三部分组成:
①控制部分主芯片采用单片机AT89S51;②显示部分采用4位LED数码管以动态扫描方式实现温度显示;③温度采集部分采用DS18B20温度传感器;④报警部分采用蜂鸣器。
图5-3温控报警设计方框图
(2)元件介绍
18B20
图5-4DS18B20封装形式和引脚功能
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。
这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。
数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的P1.0口,单片机接受温度并存储。
此部分只用到DS18B20和单片机,硬件很简单
DS18B20的性能特点如下:
1)独特的单线接口仅需要一个端口引脚进行通信;
2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
3)无须外部器件;
4)可通过数据线供电,电压范围为3.0~5.5V;
5)零待机功耗;
6)温度以3位数字显示;
7)用户可定义报警设置;
8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20内部结构主要由四部分组成:
1)64位光刻ROM。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。
64位闪速ROM的结构如下:
表5-1ROM结构
8b检验CRC
48b序列号
8b工厂代码(10H)
MSBLSBMSBLSBMSBLSB
图5-5DS18B20内部结构
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。
高速暂存RAM的结构为8字节的存储器,结构如图1.3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
它的内部存储器结构和字节定义如图1.3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式。
表5-2DS18B20内部存储器结构
Byte0
温度测量值LSB(50H)
Byte1
温度测量值MSB(50H)
E2PROM
Byte2
TH高温寄存器
----
TH高温寄存器
Byte3
TL低温寄存器
----
TL低温寄存器
Byte4
配位寄存器
----
配位寄存器
Byte5
预留(FFH)
Byte6
预留(0CH)
Byte7
预留(IOH)
Byte8
循环冗余码校验(CRC)
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,如图1.4。
图5-3DS18B20字节定义
TM
R1
R0
1
1
1
1
1
由表5-4可见,分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表5-4DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转向时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
表5-5 一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
4)CRC的产生
在64bROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
蜂鸣器
图5-6蜂鸣器图5-7蜂鸣器驱动电路
(3)电路原理图及工作原理分析
本项目电路采用18B20进行温度采集,将信号送单片机进行分析,然后单片机将信号进行处理,将实际温度送到LED数码管显示,同时对采集温度进行监控,超出限定范围则控制蜂鸣器发出报警声音。
(提示:
因P0口作为数据输出,故在P0口增加了上拉电阻10K排阻,保障其稳定输出。
)
图5-8数码管显示电路原理图
5.3项目实施:
5.3.1组织方式
全班同学分组,每组3-4人,由教师确定好小组长,小组长按照教师的要求负责工具清点,纪律管理,元器件发放,实训台整理等工作,协助老师管理好自己的小组。
小组成员集体讨论,按下表工作流程,制定工作计划,并填写下表。
表3-2工作计划表
序号
工作流程
时间分配(分钟)
人员分工
1
理论学习
2
画元件布局图
3
编写控制程序
4
选择、检测元件
5
电路装配与调试
6
芯片烧录出成品
计划时间:
小时,实际时间:
小时,审核:
5.3.2计划实施
每个小组长按照教师的各项指令和要求完成项目计划实施。
(1)小组长对小组进行考勤,将考勤情况报给班级考勤员;
(2)小组长课前督促小组成员清点每个工位上的工具是否齐全,将清点情况报给学科代表;
(3)教师讲解实训过程中需要注意的问题,分析电路原理图,将学生在实操过程中可能遇到的问题进行分析讲解,减少实训困难,提高实训成功率;
(4)科代表按照教师的要求发放元器件到每个小组。
5.3.3元件检测
本项目电路中所包含的元件见下表
序号
品名
规格
数量
备注
1
电阻
10K,1/4W
4.7K,1/4W
100,1/4W
2
1
8
2
排阻
9个引脚10K
1
3
数码管
两位
2
4
DS18B20
TO92封装
1
5
纤维万用电路板
21*18cm
1
6
镀锡线
Φ0.8mm
若干
7
晶体振荡器
12M
1
8
电解电容
10uF
1
9
陶瓷电容
30PF
2
10
单片机芯片
AT89S51
1
在焊接装配电路之前,请同学们利用以前学过的元器件检测知识检测排阻、色环电阻,电解电容。
仔细观察所领到的元器件,如有疑问或与电路图不相符的请告知小组长。
由小组长上报给教师。
5.3.4焊接装配
利用万能电路板进行焊接装配。
焊接元件时要按从低到高的顺序进行焊接,元件摆放要端正,布局合理,电阻卧放。
连接导线时要注意,图4.9中AT89S51接电源正极的第40脚和接地的第20脚没有画出,所以在组装时要将这两个引脚用导线连接出来,电源正极用红色导线,接地用黑色导线。
电路板可以两面布线,这样就不会出现导线交叉短路的现象。
元件布局示意图如3.13所示。
图5-13温控报警器电路元件布局示意图
5.3.5、电路调试
(1)DS18B20的工作原理
DS18B20工作时序
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
1.每一次读写之前都必须要对DS18B20进行复位;
2.复位成功后发送一条ROM指令;
3.最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
其工作时序包括初始化时序、写时序和读时序,具体工作方法如图2.1,2.2,2.3所示。
1)初始化时序
图5-初始化时序
总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。
应答脉冲使主机知道,总线上有从机设备,且准备就绪。
主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。
接着主机释放总线,4.7KΩ上拉电阻将总线拉高,延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。
2)写时序
图3-2写时序
写时序包括写0时序和写1时序。
所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。
写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。
写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。
3)读时序
图3-3读时序
总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。
每个读时序都由主机发起,至少拉低总线1us。
主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us[4]
(2)ROM操作命令
当主机收到DSl8B20的响应信号后,便可以发出ROM操作命令之一,这些命令如表2.2:
ROM操作命令。
1)DS18B20的测温原理:
每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中。
主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。
程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。
DS18B20的测温原理如图2.4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值.
表3-1ROM操作命令
指令
约定代码
功能
读ROM
33H
读DS18B20ROM中的编码
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。
告警搜索
命令
0ECH
执行后,只有温度超过设定值上限或者下限的片子才做出响应
温度变换
44H
启动DS18B20进行温度转换,转换时间最长为500MS,结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据
复制暂存器
48H
将E2PRAM中第3,4字节内容复制到E2PRAM中
重调E2PRAM
0BBH
将E2PRAM中内容恢复到RAM中的第3,4字节
读供电
方式
0B4H
读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
图3-4测温原理内部装置
3.3.2DS18B20的测温流程
图5-5DS18B20测温流程
编试程序:
ORG0000H
TEMPER_LEQU29H
TEMPER_HEQU28H
FLAG1EQU38H;是否检测到DS18B20标志位
A_BITEQU20H;数码管个位数存放内存位置
B_BITEQU21H;数码管十位数存放内存位置
XSEQU30H
MOVA,#00H
MOVP2,A
MAIN:
LCALLGET_TEMPER;调用读温度子程序
MOVA,29H
MOVB,A
CLRC
RLCA
CLRC
RLCA
CLRC
RLCA
CLRC
RLCA
SWAPA
MOV31H,A
MOVA,B
MOVC,40H;将28H中的最低位移入C
RRCA
MOVC,41H
RRCA
MOVC,42H
RRCA
MOVC,43H
RRCA
MOV29H,A
LCALLDISPLAY;调用数码管显示子程序
AJMPMAIN;这是DS18B20复位初始化子程序
INIT_1820:
SETBP1.0
NOP
CLRP1.0;主机发出延时537微秒的复位低脉冲
MOVR1,#3
TSR1:
MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBP1.0;然后拉高数据线
NOP
NOP
NOP
MOVR0,#25H
TSR2:
JNBP1.0,TSR3;等待DS18B20回应
DJNZR0,TSR2
LJMPTSR4;延时
TSR3:
SETBFLAG1;置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG1;清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#117
TSR6:
DJNZR0,TSR6;时序要求延时一段时间
TSR7:
SETBP1.0
RET;读出转换后的温度值
GET_TEMPER:
SETBP1.0
LCALLINIT_1820;先复位DS18B20
JBFLAG1,TSS2
RET;判断DS1820是否存在?
若DS18B20不存在则返回
TSS2:
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
LCALLDISPLAY
LCALLINIT_1820;准备读温度前先复位
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读温度命令
LCALLWRITE_1820
LCALLREAD_18200;将读出的温度数据保存到35H/36H
RET;写DS18B20的子程序(有具体的时序要求)
WRITE_1820:
MOVR2,#8;一共8位数据
CLRC
WR1:
CLRP1.0
MOVR3,#6
DJNZR3,$
RRCA
MOVP1.0,C
MOVR3,#23
DJNZR3,$
SETBP1.0
NOP
DJNZR2,WR1
RET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据
READ_18200:
MOVR4,#2;将温度高位和低位从DS18B20中读出
MOVR1,#29H;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:
MOVR2,#8;数据一共有8位
RE01:
CLRC
SETBP1.0
NOP
NOP
CLRP1.0
NOP
NOP
NOP
SETBP1.0
MOVR3,#9
RE10:
DJNZR3,RE10
MOVC,P1.0
MOVR3,#23
RE20:
DJNZR3,RE20
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
DISPLAY:
CLRC
SUBBA,#30
JNBCY,T1
MOVA,B
CLRC
SUBBA,#25
JNBCY,XIANSHI
CLRP1.1
LJMPXIANSHI
T1:
CLRP1.2
XIANSHI:
MOVA,B
MOVB,#10;10进制/10=10进制
DIVAB
MOVB_BIT,A;十位在A
MOVA_BIT,B;个位在B
MOVR0,#4
CLRC;多加的
DPL1:
MOVR1,#250;显示1000次
DPLOP:
MOVDPTR,#NUMTAB1
MOVA,A_BIT;取个位数
MOVCA,@A+DPTR;查个位数的7段代码
MOVP0,A;送出个位的7段代码
CLRP2.1;开个位显示
ACALLD1MS;显示1MS
SETBP2.1
MOVDPTR,#NUMTAB
MOVA,B_BIT;取十位数
MOVCA,@A+DPTR;查十位数的7段代码
MOVP0,A;送出十位的7段代码
CLRP2.2;开十位显示
ACALLD1MS;显示1MS
SETBP2.2
JCXSW;多加的
MOVA,31H
MOVB,#160
DIVAB
MOVXS,B
XSW:
MOVA,XS
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
ACALLD1MS
SETBP2.0
SETBC;多加的
DJNZR1,DPLOP;250次没完循环
DJNZR0,DPL1;4个250次没完循环
RET;1MS延时(按12MHZ算)
D1MS:
MOVR7,#80
DJNZR7,$
RET
NUMTAB:
DB3FH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 18 B20 温控 报警器 制作 调试