温度测量与控制-课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图3DS18B20的外形及引脚图和实物图
3.3DS18B20的温度转换过程
DS18B20工作原理:DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图4所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图4中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
flag=a0&0xf8;
b=a0*256+a;
if(flag==0xf8)
{
uflag=0;
temp=(~b+1)*0.625; //负数取反加1
}
else
{
uflag=1;
temp=b*0.625;
}
return temp;
}
/***显示当前温度***/
void display()
{
uchar i;
读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。
时序可分为初始化时序、读时序和写时序。复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待16~60us左右,后发出60~240us的存在低脉冲,主CPU收到此信号表示复位成功。
3)独特的单线接口方式:DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。
4)测温范围:-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
5)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
void init_ds18b20()
{
uchar presence;
DQ=0;
delay(60);
DQ=1;
delay(5);
presence=DQ;
delay(20);
}
/***写入一个字节***/
void write_ds18b20(uchar value)
{
uchar i;
for(i=0;i<8;i++)
4.5报警电路
按照设计要求,当温度低于下限或者高于上限的时候,应具有报警功能,我们采用LED灯来显示。当红灯亮起来的时候,表示超出了这个温度范围;当黄灯亮起且蜂鸣器响起时,表示温度低于设定值。如图10、11所示。
图10超温报警电路图11低温报警电路
4.6LED数码管显示驱动电路
LED显示电路由断驱动电路和位电路组成。由于单片机并行口不能显示驱动LED显示器,必须采用专门的驱动芯片,使之产生足够大的电流,显示器才能正常工作,我们用芯片74LS244来驱动。此电路采用的还是动态显示,需要由段和位选信号共同配合完成的,因此,要同时考虑断和位的驱动能力,所以本系统采用并行驱动动态显示。具体电路如图12所示。
{
DQ=0;
DQ=value&0x01;
delay(5);
DQ=1;
value>>=1;
}
delay(4);
}
/***读出一字节函数***/
uchar read_ds18b20()
{
uchar j,val;
for(j=0;j<8;j++)
{
DQ=0;
val>>=1;//读数先读出最低位,因此只能右移
value=read_temperature();
跳过ROM
0CCH
忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
表2RAM指令表
指令
约定
代码
功能
温度
变换
44H
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。
图6晶振电路图7复位电路
4.2按键控制电路
基于单片机的温度控制系统应具备以下功能:一,可以切换显示实时温度和温度上下限的值。二,可以调节温度的上下限。本设计通过按键输入电路来实现这些功能。如图8所示。
4.3温度采集电路
温度采集电路主要是用DS1820温度传感器来设计的。之前已对这个传感器做了详细的介绍。见图9所示。
读时序分为读“0”时序和读“1”时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20完成一个读时序过程至少需要60us。
对于DS18B20的写时序仍然分为写“0”时序和写“1”时序两个过程。DS18B20写“0”时序和写“1”时序的要求不同,当要写“0”时,单总线要被拉低至少60us,以保证DS18B20能够在15usda到45us之间正确地采样I/O总线上的“0”电平;当要写“1”时,单总线被拉低之后,在15us之内就得释放单总线。
赣南师院物理与电子信息学院
感测技术课程设计报告书
题目:温度测量与控制
姓名:
班级:
指导老师:
时间:
一、系统功能
本温度控制器可以实现以下的功能:
(1)采集温度,并通过LED数码管显示当前温度。LED数码管显示温度格式为四位,精确度可达±0.1℃。例如:25℃显示为025.0。
(2)通过按键可自由设定温度的上下限,并能在LED数码管显示设定的温度上下限值。
图8按键控制电路图9温度采集电路
4.4继电器控制电路
继电器是是一种电子控制器件,它具有控制系统和被控制系统,通常用于自动控制电路中,它实际上是用较小的电流去控制较大的电流的一种自动开关。故在电路中起着自动调节,安全保护,转换电路等作用。本设计通过控制三极管(9013)的通断来控制继电器的开通,继而来控制加热和降温装置。如图10所示。
图5外部供电方式单点测温电路
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。本设计使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线,而且在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。
图4DS18B20测温原理框图
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。DS18B20的ROM指令和RAM指令如表1和表2所示。
3.4DS18B20与单片机的接口
图5为单片外部电源供电方式图。在外部电源供电方式下,DS18B20的工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
(3)通过控制三极管的导通与否来控制继电器的关断,继而控制外部加热(电烙铁升温)和制冷(小型电风扇降温)装置,使环境温度保持设定温度范围内。
(4)具有温度报警装置。当温度高于上限值,红灯亮起;或者低于下限值,黄灯亮起,并发出报警声。
二、系统原理框图
2.1系统总体方案
该温度控制器的系统总体方框图如图1所示。该系统主要包含DS18B20温度采集电路、输入控制电路、晶振复位电路、数码管显示电路、继电器控制电路,等外围电路组成。
表1ROM指令表
指令
约定代码
功能
读ROM
33H
读DS1820温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。
搜索ROM
0FOH
用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。
读
暂存器
0BEH
读内部RAM中9字节的内容
写
暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制
暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0B8H
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电
方式
0B4H
write_ds18b20(0x44);
delay(300);
init_ds18b20();//每操作一次都要初始化并且至少有一条ROM指令
write_ds18b20(0xcc);
write_ds18b20(0xbe);//读数据允许
a=read_ds18b20();//低8位
a0=read_ds18b20();//高8位
四、系统详细测量电路原理图、仿真电路图和程序清单
<1>详细测量电路原理图
由上述系统方框图可知此电路图的硬件电路有6部分,分别是单片机最小系统电路、按键控制电路、温度采集电路、继电器控制电路、报警电路、数码管显示驱动电路等。
4.1单片机最小系统电路
单片机最小系统保证单片机能够正常工作最基本的硬件电路。主要包括时钟电路和复位电路。如图6、7所示。
DQ=1;
if(DQ)
val|=0x80;
delay(4);
}
return val;
}
/***读温度函数***/
uintread_temperature()
{
uchar a,a0,flag;
uint b;
uint temp;
init_ds18b20();//开始转化数据
write_ds18b20(0xcc);
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //共阳
uchar code smg_we[]={0x08,0x04,0x02,0x01};
uchar uflag,max=35,min=20,k;
7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8)用户可以自行设定非易失性的报警上下限。
9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
3.2DS18B20的外部结构
DS18B20可采用3脚TO-92小体积封装和8脚SOIC封装。其外形及引脚和实物图如图35所示。
图1系统总体方框图
2.2系统原理图
图2系统原理图
三、传感器的选用和介绍
综合各方面考虑,本设计我们选择的温度传感器是DS18B20。
3.1 DS18B20的主要特性
DS18B20的主要特性如下。
1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。
2)在使用时不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
uint value,b_value;
/***小延时函数***/
void delay(uint i)
{
while(i--);
}
/***ห้องสมุดไป่ตู้时函数***/
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***DS18B20初始化函数***/
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^0;
sbit en=P1^0;
sbit add=P1^1;//加1
sbit jian=P1^2;//减1
sbit warm=P1^5;//加热
sbit cool=P1^7;//降温
图12数码显示电路
<2>系统仿真电路
如图所示,这显示的分别是测量的上、下限,用户可以根据不同的用途通过两个按键来改变它的上下限值(本系统设定高低温度分别是35℃和20℃)。
图19-1超温报警、降温电路图
图19-2低温报警、加热电路图
图19系统仿真图
<3>C语言程序清单
#include<reg52.h>
3.3DS18B20的温度转换过程
DS18B20工作原理:DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图4所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图4中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
flag=a0&0xf8;
b=a0*256+a;
if(flag==0xf8)
{
uflag=0;
temp=(~b+1)*0.625; //负数取反加1
}
else
{
uflag=1;
temp=b*0.625;
}
return temp;
}
/***显示当前温度***/
void display()
{
uchar i;
读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。
时序可分为初始化时序、读时序和写时序。复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待16~60us左右,后发出60~240us的存在低脉冲,主CPU收到此信号表示复位成功。
3)独特的单线接口方式:DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。
4)测温范围:-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
5)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
void init_ds18b20()
{
uchar presence;
DQ=0;
delay(60);
DQ=1;
delay(5);
presence=DQ;
delay(20);
}
/***写入一个字节***/
void write_ds18b20(uchar value)
{
uchar i;
for(i=0;i<8;i++)
4.5报警电路
按照设计要求,当温度低于下限或者高于上限的时候,应具有报警功能,我们采用LED灯来显示。当红灯亮起来的时候,表示超出了这个温度范围;当黄灯亮起且蜂鸣器响起时,表示温度低于设定值。如图10、11所示。
图10超温报警电路图11低温报警电路
4.6LED数码管显示驱动电路
LED显示电路由断驱动电路和位电路组成。由于单片机并行口不能显示驱动LED显示器,必须采用专门的驱动芯片,使之产生足够大的电流,显示器才能正常工作,我们用芯片74LS244来驱动。此电路采用的还是动态显示,需要由段和位选信号共同配合完成的,因此,要同时考虑断和位的驱动能力,所以本系统采用并行驱动动态显示。具体电路如图12所示。
{
DQ=0;
DQ=value&0x01;
delay(5);
DQ=1;
value>>=1;
}
delay(4);
}
/***读出一字节函数***/
uchar read_ds18b20()
{
uchar j,val;
for(j=0;j<8;j++)
{
DQ=0;
val>>=1;//读数先读出最低位,因此只能右移
value=read_temperature();
跳过ROM
0CCH
忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
表2RAM指令表
指令
约定
代码
功能
温度
变换
44H
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。
图6晶振电路图7复位电路
4.2按键控制电路
基于单片机的温度控制系统应具备以下功能:一,可以切换显示实时温度和温度上下限的值。二,可以调节温度的上下限。本设计通过按键输入电路来实现这些功能。如图8所示。
4.3温度采集电路
温度采集电路主要是用DS1820温度传感器来设计的。之前已对这个传感器做了详细的介绍。见图9所示。
读时序分为读“0”时序和读“1”时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20完成一个读时序过程至少需要60us。
对于DS18B20的写时序仍然分为写“0”时序和写“1”时序两个过程。DS18B20写“0”时序和写“1”时序的要求不同,当要写“0”时,单总线要被拉低至少60us,以保证DS18B20能够在15usda到45us之间正确地采样I/O总线上的“0”电平;当要写“1”时,单总线被拉低之后,在15us之内就得释放单总线。
赣南师院物理与电子信息学院
感测技术课程设计报告书
题目:温度测量与控制
姓名:
班级:
指导老师:
时间:
一、系统功能
本温度控制器可以实现以下的功能:
(1)采集温度,并通过LED数码管显示当前温度。LED数码管显示温度格式为四位,精确度可达±0.1℃。例如:25℃显示为025.0。
(2)通过按键可自由设定温度的上下限,并能在LED数码管显示设定的温度上下限值。
图8按键控制电路图9温度采集电路
4.4继电器控制电路
继电器是是一种电子控制器件,它具有控制系统和被控制系统,通常用于自动控制电路中,它实际上是用较小的电流去控制较大的电流的一种自动开关。故在电路中起着自动调节,安全保护,转换电路等作用。本设计通过控制三极管(9013)的通断来控制继电器的开通,继而来控制加热和降温装置。如图10所示。
图5外部供电方式单点测温电路
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。本设计使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线,而且在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。
图4DS18B20测温原理框图
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。DS18B20的ROM指令和RAM指令如表1和表2所示。
3.4DS18B20与单片机的接口
图5为单片外部电源供电方式图。在外部电源供电方式下,DS18B20的工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
(3)通过控制三极管的导通与否来控制继电器的关断,继而控制外部加热(电烙铁升温)和制冷(小型电风扇降温)装置,使环境温度保持设定温度范围内。
(4)具有温度报警装置。当温度高于上限值,红灯亮起;或者低于下限值,黄灯亮起,并发出报警声。
二、系统原理框图
2.1系统总体方案
该温度控制器的系统总体方框图如图1所示。该系统主要包含DS18B20温度采集电路、输入控制电路、晶振复位电路、数码管显示电路、继电器控制电路,等外围电路组成。
表1ROM指令表
指令
约定代码
功能
读ROM
33H
读DS1820温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。
搜索ROM
0FOH
用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。
读
暂存器
0BEH
读内部RAM中9字节的内容
写
暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制
暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0B8H
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电
方式
0B4H
write_ds18b20(0x44);
delay(300);
init_ds18b20();//每操作一次都要初始化并且至少有一条ROM指令
write_ds18b20(0xcc);
write_ds18b20(0xbe);//读数据允许
a=read_ds18b20();//低8位
a0=read_ds18b20();//高8位
四、系统详细测量电路原理图、仿真电路图和程序清单
<1>详细测量电路原理图
由上述系统方框图可知此电路图的硬件电路有6部分,分别是单片机最小系统电路、按键控制电路、温度采集电路、继电器控制电路、报警电路、数码管显示驱动电路等。
4.1单片机最小系统电路
单片机最小系统保证单片机能够正常工作最基本的硬件电路。主要包括时钟电路和复位电路。如图6、7所示。
DQ=1;
if(DQ)
val|=0x80;
delay(4);
}
return val;
}
/***读温度函数***/
uintread_temperature()
{
uchar a,a0,flag;
uint b;
uint temp;
init_ds18b20();//开始转化数据
write_ds18b20(0xcc);
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //共阳
uchar code smg_we[]={0x08,0x04,0x02,0x01};
uchar uflag,max=35,min=20,k;
7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8)用户可以自行设定非易失性的报警上下限。
9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
3.2DS18B20的外部结构
DS18B20可采用3脚TO-92小体积封装和8脚SOIC封装。其外形及引脚和实物图如图35所示。
图1系统总体方框图
2.2系统原理图
图2系统原理图
三、传感器的选用和介绍
综合各方面考虑,本设计我们选择的温度传感器是DS18B20。
3.1 DS18B20的主要特性
DS18B20的主要特性如下。
1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。
2)在使用时不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
uint value,b_value;
/***小延时函数***/
void delay(uint i)
{
while(i--);
}
/***ห้องสมุดไป่ตู้时函数***/
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***DS18B20初始化函数***/
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^0;
sbit en=P1^0;
sbit add=P1^1;//加1
sbit jian=P1^2;//减1
sbit warm=P1^5;//加热
sbit cool=P1^7;//降温
图12数码显示电路
<2>系统仿真电路
如图所示,这显示的分别是测量的上、下限,用户可以根据不同的用途通过两个按键来改变它的上下限值(本系统设定高低温度分别是35℃和20℃)。
图19-1超温报警、降温电路图
图19-2低温报警、加热电路图
图19系统仿真图
<3>C语言程序清单
#include<reg52.h>