采用DS18B20和AT89C51单片机的远程温控系统设计.docx
- 文档编号:26170052
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:38
- 大小:889.98KB
采用DS18B20和AT89C51单片机的远程温控系统设计.docx
《采用DS18B20和AT89C51单片机的远程温控系统设计.docx》由会员分享,可在线阅读,更多相关《采用DS18B20和AT89C51单片机的远程温控系统设计.docx(38页珍藏版)》请在冰豆网上搜索。
采用DS18B20和AT89C51单片机的远程温控系统设计
采用DS18B20和AT89C51单片机的远程温控系统设计
1引言
粮食温度检测是储备库中防止粮食霉烂、保质存放的重要环节。
对于一个农业大国来讲,粮食生产、需求与储备量都很大。
大量粮食在储备的过程中常因粮食湿度过大而升温发热,导致粮食大量腐烂变质,给国家带来巨大损失。
所以粮仓监控系统中温度测量是整个系统的主要功能之一。
本文介绍一种以单线数字温度传感器DS18B20为温度敏感元件的粮仓温控系统,系统以微型计算机为上位机,89C51单片机为检测分机,DS18B20数字温度传感器直接与分机连接,分机与测温主机通过RS-485总线网进行通信,系统所有操作通过菜单命令完成。
本文主要围绕下位机数据采集部分进行论述,并结合粮仓监控系统,对DSl8B20的这种单总线技术及其在本系统中的具体应用进行了讨论。
2系统硬件设计
2.1系统的总体设计
整个系统从结构上可分为三层:
由微型计算机构成上位机——用户监控层,51单片机系统分别构成测温主机——控制层和分机——温度数据采集层。
上位机通过串行口与测温主机交换数据。
测温主机与多台分机采用主从分布式结构。
系统组成结构如图1所示,测温主机与上位机通过RS-232总线连接,测温分机与主机通过RS-485总线连接。
一台主机最多可管理64台分机,一台分机可以测试大约1000个温度点。
本设计适用于中小型粮库。
2.2温度数据采集模块的设计
DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。
可以在三根线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。
由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,特别适合与微处理芯片构成多点温度测控系统。
每台测温分机的P0~P3口分别可接N个DS18B20传感器(N<40)。
上位机控制每台分机工作,实现多点测温。
采集到的温度数据通过RS-485通信总线连成的总线型网络进行传输,测温分机接收到DS18B20所传送的温度数据,并将这些数据进行简单的处理发往上位机。
主程序实现对DS18B20的实时数据采集,将结果存贮于单片机的RAM区。
中断服务程序实现测温分机与上位机的通信。
测温分机按照上位机的命令来完成温度数据采集和发送工作。
其先将采集的数据存放于外部存储器SRAM中,当收到上位机的上传数据命令时,由发送子程序将数据进行简单处理后通过串口TXD端送出。
在测温主机的配合下,数据上传到上位机并在上位机的监控界面显示给用户。
2.3RS-485总线在温控系统中的设计
在系统中用51单片机构成主从分布式测控系统,具有价格低、控制功能强等许多特点。
然而在应用中,测温主机与各粮仓相距较远,距离从几十米到几千米不等。
对此远程粮仓,系统采用RS-485总线实现数据的远程传输。
进行串行通信的主机与分机的RS-485接口电路如图2.3所示。
该电路以MAX485芯片为核心器件进行半双工通信,具有通信功能强、可靠性高、程序设计简单等特点。
图2典型RS-485(半双工)通信网
在使用RS-485接口时,对于特定的传输线径,从发生器到负载,其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个长度主要是受信号失真及噪声等影响所限制。
当数据信号速率降低到90Kbit/S以下时,假定最大允许的信号损失为6dBV时,则电缆长度被限制在1200M。
实际上,在实用时是完全可以取得比它大的电缆长度。
当使用不同线径的电缆时,取得的最大电缆长度是不相同的。
例如:
当数据信号速率为600Kbit/S时,采用24AWG电缆,计算可知最大电缆长度是200m,若采用19AWG,电缆则电缆长度将大于200m;若采用28AWG电缆,则电缆长度只能小于200m。
RS-485总线是半双工方式,即总线上某一时刻不能同时出现发送和接收的情况。
此方式用于多站互连时,可节省信号线,方便地实现RS-485的多点通信功能。
考虑到中小型仓库地理位置特点,系统采用较低的接收、发送波特率,以换取更远距离的传送,此设计完全可以满足系统需求?
/p>
3软件设计
3.1系统软件的工作流程
DS18B20以单总线协议工作,测温分机首先发送复位脉冲命令,使信号线上所有的DS18B20芯片都被复位,接着发送ROM操作命令,使序列号编码匹配的DS18B20被激活进入接收内存访问命令状态;内存访问命令完成温度转换、温度读取等工作(单总线在ROM命令发送之前存储命令和控制命令不起作用)。
DS18B20工作流程见图3所示。
图3DS18B20工作流程图
系统以ROM命令和存储器命令的形式对DS18B20操作。
ROM操作命令均为8位,命令代码分别为:
读ROM(0x33H)、匹配ROM(0x55H)、跳过ROM(0xCCH)、搜索ROM(0xF0H)和告警搜索(0xECH)命令;存储器操作命令为:
写暂存存储器(0x4EH)、读暂存存储器(0xBEH)、复制暂存存储器(0x48H)、温度变换(0x44H)、重新调出EERAM(0xB8H)以及读电源供电方式(0xB4H)命令。
其对时序及电特性参数要求较高,必须严格按照它的时序要求去操作。
DS18B20的数据读写由测温分机来完成,包括初始化、读数据和写数据。
系统软件采用模块化程序设计,主从式结构通信方式。
规定总线上有一个测温主机和64台分机,分机地址唯一。
初始化完成后各分机均处于监听状态,采用中断方式工作,测温分机接受上位机命令,向DS18B20发出地址匹配命令帧,进入等待状态,每一帧数据位都对应着不同意义,若地址匹配成功则进行响应分机,否则继续等待,直到等待超时而重发命令。
温度采集模块负责数据的采集工作。
当缓冲区有数据时产生中断,程序转向中断服务子程序入口,中断子程序如下:
C程序
voidSerialInterrupt()interrupt4//中断服务子程序
{
loop0:
if(RI);SlaveNo=SBUF;
RI=0;while(!
RI);//等待下一个命令
loop1:
RI=0;
SensorNo=SBUF;
if(SlaveNo==0x81&SensorNo<0x80)//判别数据是否合法
{
while
(1)
{
Gettemp(SensorNo);if(RI)gotoloop1;
}
}
elsegotoloop0;
}//否则继续等待
3.2DS18B20的时延及读写时序问题
为保证DS18B20的严格I/O时序,需要作较精确的延时。
在DS18B20的操作中,短时间延时是指10us以下的延时,在汇编语言下采用若干个NOP指令即可。
因C51编译器提供了若干内部函数,(_nop_()函数为其中之一)其编译结果就是在对应位置嵌入一个nop汇编指令,所以短时间延时可利用_nop_()函数实现。
较长时间延时指10us以上的延时。
在DS18B20操作中,用到的较长时间延时有15us、90us、270us、540us等。
因这些延时均为15us的整数倍,可编写一个Delayl5(n)函数,该函数可实现约15us×n的延时。
DS18B20的初始化包括测温分机发送的复位脉冲和其向测温分机返回的存在脉冲。
总线在开始时刻发出一个最短为480us的低电平复位脉冲,接着在该时刻释放总线并进入接收状态,DS18B20在接收到总线的电平上升沿,等待15—60us后在下一时刻发出60—240us时延的低电平存在脉冲信号,表明器件已接在总线上。
时序如图4所示。
图4初始化图
当总线于该时刻从高电平拉至低电平时,就产生“写”的时间间隙。
从该时刻开始15us之内,应将所需写的位送到总线上,DS18B20在该时刻后的15—45us期间内对总线采样,低电平写入0,高电平写入1。
连续写两位之间的间隙应大于1us。
写时序如图5所示。
图5读写时序图
起始时刻将总线从高电平拉至低电平,持续15us之后将总线释放,就产生读时间间隙。
测温分机必须在该时刻之后的15us之内完成读总线状态,并在45us内释放总线,连续读两位之间的间隙应大于1us。
读时序如图5所示。
4总结
本文论述了以DS18B20为传感器,AT89C51单片机为控制核心组成的远程粮仓温控系统。
由于DS18B20采用数字单总线技术,使得系统电路简单,易于扩展,加上总线数字化,使得系统的抗干扰性能好,可靠性高,测温范围比较宽(-55~125℃),与传统的温控系统相比还具有较高的性价比。
此外,系统的应用范围不仅仅局限于粮仓领域,稍作改动还可作为其它自控领域的解决方案,如烟叶烘烤箱控制系统等。
本文作者创新观点:
采用新型数字温度传感器DS18B20,并将其与51单片机、RS-485总线技术有机的结合在一起,组成抗干扰性能较强的温控系统。
系统具有较高的性价比,已成功应用于许昌、尉氏等中型粮库中。
该系统避免了因温度过高而导致大量粮食发霉变质所造成的损失,对于中型粮库可产生经济效益百万元以上,在粮食储藏技术领域内具有广阔的市场前景。
用FPGA实现对DS18B20温度传感器控制
l引言
DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。
具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。
本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。
FPGA可以将读出DS18B20的48位ID号和12位温度测量结果保存在内部寄存器中,微处理器可以随时快速地从FPGA寄存器中读取这些信息。
一般在使用DS18B20时往往采用微处理器的I/O端口实现与该器件的通信,这种方法虽然比较容易和方便,但是,因为DS18B20的一线式串行总线对时序要求比较严格,因此,为了保证与DS18B20的通信可靠性,微处理器与DS18B20通信时需要采用关闭中断的办法,以防止操作时序被中断服务破坏。
利用FPGA实现与。
DS18B20通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。
2ProASICplus系列FPGA简介
ProASICplus系列FPGA是ACTEL公司推出的基于Flash开关编程技术的现场可编程门阵列,包括从7.5万门的APA075型到100万门的APAl000型,具有高密度、低功耗、非易失、含有嵌入式RAM及可重复编程等特点。
因为ProASICplus系列FPGA基于Flash技术,利用Flash开关保存内部逻辑,因此不需要另外的器件。
由于不需要上电配置过程,因此具备上电就立即工作的特点。
不用配置器件,系统的保密性提高。
笔者在电力监控的产品中利用APA150型FPGA实现了逻辑控制、A/D采样控制和FIFO存储等功能,并利用剩余的资源实现了DS18B20的通信功能。
APA150在整个系统中充当协处理器,使主CPU从繁重的实时处理中解脱出来。
3DS18B20简介
3.1内部结构
DS18B20的内部结构如图1所示,主要由以下几部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH(温度高)和TL(温度低)、配置寄存器、暂存寄存器(SCRATCHPAD)、存储器控制逻辑。
DQ为数字信号输入/输出端。
ROM中的64(8位产品家族编号、48位ID号、8位CRC)位序列号是出厂前刻好的,这64位序列号具有惟一性,每个DS18B20的64位序列号均不相同。
8位CRC生成器可以完成通信时的校验。
暂存寄存器有9个字节,包含温度测量结果、温度报警寄存器、CRC校验码等内容。
3.2操作步骤
对DS18B20的操作分为3个步骤:
初始化、ROM命令和DS18B20功能命令。
3.2.1初始化
FPGA要与DS18B20通信,首先必须完成初始化。
FPGA产生复位信号,DS18B20返回响应脉冲。
3.2.2ROM命令
该步骤完成FPGA与总线上的某一具体DS18B20建立联系。
ROM命令有搜寻ROM(SEARCHROM)、读ROM(READROM)、匹配ROM(MATCHROM)、忽略ROM(SKIPROM)、报警查找等命令(ALARMSEARCH)。
这里,FPGA只连接1个DS18B20,因此只使用读ROM命令,来读取DS18B20的48位ID号。
3.2.3DS18B20功能命令
FPGA在该步骤中完成温度转换(CONVERTT)、写暂存寄存器(WRITESCRATCHPAD)、读暂存寄存器(READSCRATCHPAD)、拷贝暂存寄存器(COPYSCRATCHPAD)、装载暂存器寄存器(RECALLE2)、读供电模式命令(READPOWERSUPPLY)。
文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。
3.3操作时序
DS18B20的一线式操作时序如图2所示。
从时序图中可以看出,对DS18B20的操作时序要求比较严格。
利用FPGA可以实现这些操作时序。
4FPGA与DS18B20的通信
4.1DS18B20的操作模块
FPGA需要完成DS18B20的初始化、读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。
读取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性。
以上操作反复进行,可以用状态机来实现。
状态机的各种状态如下:
RESET1:
对DS18B20进行第一次复位,然后进入DELAY状态,等待800μs后,进入CMD33状态。
CMD33:
对DS18B20发出0×33命令,读取48位ID值。
GET_ID:
从DS18B20中读取48位ID值。
RESET2:
对DS18B20进行第二次复位,然后进入DELAY状态等待800μs后,进入CMDCC状态。
CMDCC:
向DS18B20发出忽略ROM命令,为进入下一状态作准备。
CMD44:
向DS18B20发出启动温度转换命令,然后进入DELAY状态等待900ms后进入下一状态。
RESET3:
对DS18B20进行第三次复位。
CMDCC2:
向DS18B20发出忽略ROM命令,为了进入下一状态作准备。
GET_TEMP:
从DS18B20中读取温度测量数值。
DELAY:
等待状态。
WRITE_BIT:
向DS18B20中写入数据位状态。
READ_BIT:
从DS18B20中读取数据位状态。
在该状态中每读取1位数据,同时完成该数据位的CRC校验计算。
所有数据都读取后,还要读取8位CRC校验位。
这8位校验位也经过CRC校验计算,如果通信没有错误,总的CRC校验结果应该是0。
这时可将通信正确的数据保存到id和temp_data寄存器中。
设计中采用Verilog语言建立DS18B20操作模块”DS18B20_PROC”。
在该模块中实现以上的状态机功能。
该模块的定义为moduleDS18B20PROC(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。
图3示出是该模块的仿真波形。
从仿真波形可以看出,系统上电后的10ms左右,FPGA可以读出DS18B20的48位ID值,这样,主CPU在系统复位后很短的时间内就可以读取ID值,进行相应的处理。
4.2FPGA与CPU的接口
在FPGA中,要实现对DS18B20的通信处理,主模块要实现对DS18B20_PROC模块的调用及建立与CPU之间的接口。
与CPU之间的接口通过建立若干寄存器实现。
温度测量值和48位ID可以用4个16位寄存器保存。
CPU通过读取这些寄存器可以获得温度测量数值和48位ID值。
CPU、FPGA及DS18B20的连接原理如图4所示。
5结束语
在系统中,FPGA可以分担许多主处理器的工作,提高整体实时性,降低CPU处理的严格实时约束,从而降低CPU软件处理的难度。
同时,由于ACTEL公司的ProASICplus系列FPGA的保密特性,可以增强产品知识产权的保护。
本设计应用在电力监控产品中。
测量出的装置内部温度用于电量测量精度补偿和报警,对保证产品测量精度和可靠运行具有重要意义。
48位ID值用于产品的惟一编码标识和以太网MAC地址,便于产品生产、维护和管理。
采用AT89C2051单片机的的温湿度控制系统设计
目前,国内大中型库房在仓储管理中由于技术和资金上的原因,多数仅限于只对温度进行监测,当温度超标时进行强制通风和翻仓,即使如此,处理不及时或因设备人力条件有限仍会造成大量损失。
实现库房储藏物的温升主要是由于湿度引起的,库房储藏物本身的水分过高或连续的高湿天气将导致储藏物新陈代谢加快而放出热量,放热引起的温升又使代谢进一步加剧以至发霉变质。
这种恶性循环一旦形成很难进行有效控制。
因此,库房在进行温度监测的同时,必须重视对空气湿度的检测,以利于提前采取有效措施控制库房储藏物升温而霉变。
本文所介绍的温湿度控制系统以AT89C2051单片机为控制核心,结合传感器、通讯和数字电子电路技术,实现了温度和湿度检测与库房温度和湿度的有效控制,降低经济损失和劳动强度。
系统总体结构
应用户要求对若干个地理位置分散的库房的温湿度进行实时的监测与控制,为了适应对多个测控点的*与管理,经分析采用了分布式系统的控制方式,即在每个测控点配置能独立工作的从机,多个从机由1个上位机进行*管理,上下采用主从式*管理形式,系统总体结构如图1所示。
系统的各个部分功能和关系如下:
·主机为管理机,完成参数设置、数据存储、处理及管理功能。
·从机为控制机,采用单片机2051,直接实现各个模块的控制功能,并能在主机关机的条件下实现所有的控制功能。
·通讯接口实现RS232信号和RS485信号的转换,主机通过其向从机发送控制参数,从机将现场采集数据通过其传给主机。
·数据采集实现对传感器及运行设备的检测。
·控制器及其设备根据系统输出的信号对现场设备进行控制。
·输入输出部分包括输入模块和输出模块,输入模块将采集的信号转换后输入到从机,输出模块将系统的控制信号输出到控制器及其设备。
系统以温湿度*为核心,温湿度参数和设备运行状态由主机根据用户要求定时向从机查询,各控制模块的设置参数修改时,将新的参数发送到从机。
主机可以对从机进行参数设置及控制,从机也可以独立工作。
从机通过数据采集装置不间断地采集温湿度数据,根据控制模块的设置参数做出控制决策,驱动设备运行,并随时准备接受主机的指令,当受到询问时,将库房的各项数据编码通过串行通信方式传输到主机。
主机接收到数据后,进行数据处理,在*界面上显示当前的状态信息,并将此信息实时地存储到数据库中,为用户维护和管理准备数据。
对数据可以进行查询,也可以将一段时期的数据信息汇集成报表,报表包括各项统计数据,还可以将数据处理绘制成图形曲线,实现对数据的分析与管理。
系统硬件设计
控制系统的主机采用一般的PC(64M以上即可),就完全可以满足系统对数据处理、运行速度的要求。
从机部分以2051单片机为核心,外接数据采集输入电路、输出电路、状态监测电路等部分组成。
本系统对多个测控点进行*,1台主机与多台从机实现主从式通信,通过通讯接口机实现RS485标准总线通讯,系统的数据检测是由各类传感器来承担,图2所示为单片机控制平台1系统原理图。
此控制平台主要实现现场数据采集,并将采集数据处理、存储、发送给主机。
2051是控制平台的核心,温湿度数据的采集通过多路传感器获得,采集的信号经ADS1286实现转换。
为有效控制多路传感器,在系统设计中使用4051实现扩展,使控制平台可以控制多路传感器,采集的数据存放于24LC04。
在控制平台的驱动上,使用CMOS管1120提高2051的驱动能力,使控制平台每路可以控制多个传感器(主要是提高控制平台对18B20、温湿度采集器的驱动能力)。
在与主机通讯时,为达到电平一致,控制平台通过RS485芯片实现2051的引脚RXD、TXD的TTL电平与RS485的引脚A、B的485电平之间的转换。
把主机通过通讯接口送来的RS485标准电平转换为TTL电平传送给2051,把2051送出的TTL电平转换成RS485标准电平通过通讯接口传送给主机。
图3所示为单片机控制平台2接口电路,主要实现对现场设备(现场设备主要指通用空调、加/除湿机等)的控制,并将设备状态情况发送给主机。
该控制平台的主要部分如下:
·2051单片机
2051是控制平台的核心。
·24LC16存储器扩展
24LC16用于存放现场设备的状态数据。
·遥控
控制平台通过HS0038和红外发光管实现对现场设备的遥控。
可根据现场设备的不同,选用HS0038或红外发光管遥控现场设备。
·RS232通讯
控制平台把80C196的串口引脚RXD、TXD和GND接到光电耦合电路,把80C196串行口输出的TTL电平转换为RS232标准电平,把其它微机送来的RS232标准电平转换为TTL电平给80C196,并实现RS232电平与TTL电平的隔离,在实现RS232电平与TTL电平转换的同时保护计算机串口。
·RS485通讯
控制平台通过RS485芯片实现2051的引脚RXD、TXD的TTL电平与RS485的引脚A、B的485电平之间的转换。
把主机通过通讯接口机送来的RS485标准电平转换为TTL电平传送给2051,把2051送出的TTL电平转换成RS485标准电平通过通讯接口机传送给主机。
系统软件设计
软件系统由两个相对独立的上位机软件和下位机软件部分组成,采用基于Smith-Fuzzy控制器的粮库温湿度测控算法,上位机*软件模块结构图如图4所示。
图4上位机软件模块结构图
上位机*软件主要实现以下功能:
·串行通信:
完成上位机的通信配置,实现上位机与下位机之间通信。
·数据显示:
提供三维立体图、曲线走势图和表格三种方式显示。
·数据存储:
对实时数据(包括最大值、最小值、平均值)按用户要求存储到数据库的一张历史数据表中;也可导出数据到文件,以文本方式保存到一个文本文件中。
·数据查询:
允许用户根据情况对实时数据、历史数据进行查询或进行走势曲线分析。
·数据打印:
根据用户要求,以表格方式打印实时数据和历史数据,亦可打印走势曲线图。
·异常报警:
当实时温湿度数据超越设定的上下限温湿度数值时,报警铃响。
·系统设置:
为保证用户在任何情况下,都能良好地运行,允许用户对系统的测量时间间隔、温湿度上下限、存盘时间间隔、登录用户名、口令等参数进行设置。
系统的下位机主控模块通过*模块、人机交互模块和通信模块来完成实时*与管理任务,并且所有工作又分解在报警处理、控制决策、信息显示、命令处理、参数设置和信息输出子模块来运行。
下位机应用软件包括主程序、数据采集子程序、数据处理子程序、发送子程序和显示子程序等五个主要模块。
结语
库房温湿
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 采用 DS18B20 AT89C51 单片机 远程 温控 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)