智能化电子设计.docx
《智能化电子设计.docx》由会员分享,可在线阅读,更多相关《智能化电子设计.docx(26页珍藏版)》请在冰豆网上搜索。
智能化电子设计
1前言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
温度是一种最基本的环境参数,人们的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
传统的分立式温度传感器;模拟集成温度传感器;智能集成温度传感器。
目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。
社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。
与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。
该设计控制器使用ATMEL公司的STC89C52单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。
但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。
2总体设计方案
2.1设计内容
要求利用温度传感器(DS18B20)测量某一点的环境温度,测量范围为-55℃~+125℃,精度为±0.5℃。
并用LED进行实际温度值的显示。
2.2设计方案比较
方案一:
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用52单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
其原理框图如图2-1:
图2-1DS18B20温度测温系统框图
方案二:
FPGA/CPLD或采用带有IP内核的FPGA/CPLD方式。
即用FPGA/CPLD完成采集,存储,显示及A/D等功能,由IP核实现人机交互及信号测量分析等功能。
这种方案的优点在于系统结构紧凑,可以实现复杂的测量与与控制,操作方便;缺点是调试过程复杂,成本较高。
方案三:
采用纯硬件的闭环控制系统。
该系统的优点在于速度较快,但可靠性比较差控制精度比较低、灵活性小、线路复杂、调试、安装都不方便。
且要实现题目所有的要求难度较大。
2.3方案论证
通过方案一二三的比较,可以看出方案二的测温装置电路比较繁琐、实现起来比较方案一来说比较困难,软件设计也较为困难。
而由于单片机具有体积小、集成度高、运算速度快、运行可靠、应用灵活、价格低廉以及面向控制等特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用。
用单片机AT89C52是方便、灵活、有效的,而且切实可行的。
方案一的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用此方案。
2.4方案选择
结合现代温度控制电路的整体性能的提升,也对其性能提出了更高的要求,人们对低故障、高实时、高可靠、高稳定的性能更加青睐,结合本设计的要求及综合以上比较的情况,我们选择了基于STC89C52的温度控制电路方案。
3单元模块设计
温度控制器使用单片机ST89C52,温度计传感器使用DS18B20,用LED实现温度显示。
本设计大体分三个工作过程。
首先,由DS18B20温度传感器芯片测量当前的温度,并将结果送入单片机。
然后,通过ST89C52单片机芯片对送来的测量温度读数进行计算和转换,井将此结果送入LED显示模块。
最后,数码管显示温度数据。
本电路主要由DS18B20温度传感器芯片、LED显示模块和STC89C52单片机芯片组成。
其中,DS18B20温度传感器芯片采用“一线制”与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工作。
3.1主控制器
3-1主控制器STC89C52
单片机ST89C52具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很合适携手特式产品的使用。
主机控制DS18B20完成温度转换必须经过三个步骤:
初始化、ROM操作指令、存储器操作指令。
必须先启动DS18B20开始转换,再读出温度转换值。
3.2电源电路模块
控制系统主控制部分电源需要用5V直流电源供电,其电路如图6-1所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。
其主要原理是把单相交流电经过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。
由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。
降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。
由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。
需通过低通滤波电路滤波,使输出电压平滑。
稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。
本电路使用集成稳压芯片7805解决了电源稳压问题。
电源电路如图所示。
图3-2电源电路
3.3显示电路
图3-3LED显示电路
显示部分采用LED静态显示方式,共阳极的数码管的公共端COM连接在一起接地,每位的段选线与74HC164的8位并口相连,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符,考虑到节约单片机的I/O资源,因而采用串行接口方式,外接8位移位寄存器74HC164构成显示电路,显示电路如图所示。
3.4复位电路模块
复位电路有上电自动复位和按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与VCC电源接通而实现的,而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。
本系统的复位电路采用上电复位方式。
电路图如图所示:
图3-4复位电路
3.5温度检测电路
图3-4DS18B20温度传感器
DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
DS18B20的电源供电方式有2种:
外部供电方式和寄生电源方式。
工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。
但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低。
因此,在条件允许的场合,尽量采用外供电方式。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电。
在这里采用前一种方式供电。
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。
大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。
在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。
由于DS18B20只有一根数据线,因此它和主机(单片机)通信是需要串行通信,而STC89C52有两个串行端口,所以可以不用软件来模拟实现。
经过单线接口访问DC18B20必须遵循如下协议:
初始化、ROM操作命令、存储器操作命令和控制操作。
要使传感器工作,一切处理均严格按照时序。
主机发送(Tx)--复位脉冲(最短为480μs的低电平信号)。
接着主机便释放此线并进入接收方式(Rx)。
总线经过4.7K的上拉电阻被拉至高电平状态。
在检测到I/O引脚上的上升沿之后,DS18B20等待15~60μs,并且接着发送脉冲(60~240μs的低电平信号)。
然后以存在复位脉冲表示DS18B20已经准备好发送或接收,然后给出正确的ROM命令和存储操作命令的数据。
DS18B20通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。
一旦主机检测到DS18B20的存在,它便可以发送一个器件ROM操作命令。
所有ROM操作命令均为8位长。
所有的串行通讯,读和写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18B20芯片来说,访问每个器件都要遵守下列命令序列:
首先是初始化;其次执行ROM命令;最后就是执行功能命令(ROM命令和功能命令后面以表格形式给出)。
如果出现序列混乱,则单总线器件不会响应主机。
当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。
基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。
应答脉冲使主机知道,总线上有从机,且准备就绪。
在主机检测到应答脉冲后,就可以发出ROM命令。
这些命令与各个从机设备的唯一64位ROM代码相关。
在主机发出ROM命令,以访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。
这些命令允许主机写入或读出DS18B20便笺式RAM、启动温度转换。
在主机初始化过程,主机通过拉低单总线至少480us,来产生复位脉冲。
接着,主机释放总线,并进入接收模式。
当总线被释放后,上拉电阻将单总线拉高。
在单总线器件检测到上升沿后,延时15~60us,接着通过拉低总线60~240us,以产生应答脉冲。
写时序均起始于主机拉低总线,产生写1时序的方式:
主机在拉低总线后,接着必须在15us之内释放总线。
产生写0时序的方式:
在主机拉低总线后,只需在整个时序期间保持低电平即可(至少60us)。
在写字节程序中的写一个bit位的时候,没有按照通常的分别写0时序和写1时序,而是把两者结合起来,当主机拉低总线后在15us之内将要写的位c给DO:
如果c是高电平满足15us内释放总线的要求,如果c是低电平,则DO=c这条语句仍然是把总线拉在低电平,最后都通过延时58us完成一个写时序(写时序0或写时序1)过程。
写时间时序:
当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。
有两种写时间隙,写1时间隙和写0时间隙。
所有写时间隙必须最少持续60μs,包括两个写周期至少1μs的恢复时间。
I/O线电平变低后,DS18B20在一个15μs到60μs的窗口内对I/O线采样。
如果线上是高电平,就是写1,如果是低电平,就是写0。
主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉到高电平。
主机要生成一个写0时间隙,必须把数据线拉到低电平并保存60μs。
每个读时间隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0或1。
所有读时序至少需要60us。
4特殊器件介绍
4.1单片机STC89C52
STC89C52是一种带8K字节闪烁可变成可擦除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashSTC89C52。
4.2DS18B20温度传感器
DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
被测温度用符号扩展的16位数字方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20的性能特点如下:
●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
●适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电;
●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;
●零待机功耗;
●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
以上特点使DS18B20非常适用与多点、远距离温度检测系统。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列、各种封装形式如图2.1所示,DQ为数据输入/输出引脚。
当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
4.2.1DS18B20注意事项
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
●DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。
●在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度精度降低。
●效果。
在使用PL/M、C等高级语言进行的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
●在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
●在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
4.2.2DS18B20测温原理
DS18B20的测温原理如图2所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:
首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。
考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算:
图4-1DS18B20测温原理图
5软件设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
主程序流程图如图5-1:
图5-1系统流程图
图5-1主程序流程图
DS18B20在单片机控制下分三个阶段:
●18B20初始化;
●读18B20时序:
读DS18B20流程见图5-2;
●写18B20时序:
写18B20流程见图5-3.
图5-2读DS18B20流程图图5-3写DS18B20流程图
5.1软件设计
设计程序如下:
#include
#include"absacc.h"
#defineCS3XBYTE[0x6000]
#defineCS4XBYTE[0x8000]
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef//不带小数点的0~9
};
sbitDQ=P3^5;//ds18b20与单片机连接口
//函数声明
voiddelay_18B20(unsignedinti);//延时1微秒
voidds1820rst();/*ds1820复位*/
uchards1820rd();/*读数据*/
voidds1820wr(ucharwdata);/*写数据*/
uintread_temp();/*读取温度值并转换*/
uchardisdata[5];
uinttvalue;//温度值
uchartflag;//温度正负标志
/******************************ds1820程序***************************************/
voiddelay_18B20(unsignedinti)//延时1微秒
{
while(i--);
}
/********************************************************
功能:
ds1820复位*
输入参数:
无
返回值:
无*
*********************************************************/
voidds1820rst()/*ds1820复位*/
{
unsignedcharx=0;
DQ=1;//DQ复位
delay_18B20(4);//延时
DQ=0;//DQ拉低
delay_18B20(100);//精确延时大于480us
D