应用电子技术温度检测系统设计本科学位论文.docx
《应用电子技术温度检测系统设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《应用电子技术温度检测系统设计本科学位论文.docx(30页珍藏版)》请在冰豆网上搜索。
应用电子技术温度检测系统设计本科学位论文
温度检测系统的设计
作者姓名:
学科专业:
应用电子技术
指导老师:
班级学号:
2007154801
完成日期:
2010-12-18
设计任务书
题目:
智能温控风扇的设计
设计日期:
发题日期:
2010年12月03日
完成日期:
2010年12月18日
设计者:
班级电气01
学号2007
姓名
指导教师李
诚信申明
本人申明:
本人所提交的毕业设计(论文)《智能温控风扇的设计》的所有材料是本人在指导教师指导下独立研究、写作、完成的成果,设计(论文)中所引用他人的无论以何种方式发布的文字、研究成果,均在设计(论文)中加以说明;有关教师、同学和其他人员对我的设计(论文)的写作、修订提出过并为我在设计(论文)中加以采纳的意见、建议,均已在我的致谢辞中加以说明并深致谢意。
本设计(论文)和资料若有不实之处,本人承担一切相关责任。
特此申明。
本人签名:
2010年06月12日
指导教师评语:
指导教师(签名):
年月日
评阅教师评语:
评阅教师(签名):
年月日
致谢26
摘要
本课题设计了一种具有多个测点的高精度、宽量程的智能温度测量应用系统。
该系统运用性能价格比较好的热电阻PT100作为温度传感器,运用测量电桥作为信号的获取电路,信号调理电路的首级放大采用高性能通用放大器TLC27L4进行差分放大,信号的转换采用串行接口的12位A/D转换MCP3204,系统的CPU采用目前低价位但技术十分成熟的SM8952,仪器的LED数码管显示/驱动芯片采用接口简单但功能强大的74HC595,同时系统还设计了RS485总线的通信接口电路,并提供了开放的协议,最后,运用最新的单片开关电源芯片设计了系统用电源。
为克服2线制带来的线路电阻误差,PT100的对外接线采用3线制方式;为节约系统的硬件成本,对8路的温度差分信号采用多路模拟开关的切换;为提高系统的抗干扰性能,温度的检测采用了数字滤波算法;为提高测量的精度并减少存储器的使用空间,软件算法上采用了分段拟合的方法,然后通过生成的温度——A/D值关系来计算温度值。
关键词:
A/D转换器;串行接口;热电阻
第1章绪论
1.1课题的意义
随着电子技术、计算机技术、通信技术的迅速发展,工业测控领域采用先进的技术对现场的工业生产参数进行检测、监测是实现工业自动化的重要标志。
据不完全统计,在工业生产中被监测最多的参数应该是压力、流量、温度这三大参数,无论在石油、化工、煤炭、水利等行业,还是电力、机械、航天、国防等部门,都离不开对这些参数的监测,当然除此之外,还有诸如液位、扭矩、密度、浓度、速度、位移、距离、电参量等众多物理参数的监测,但用的最多的恐怕还是温度的监测,可以说对温度的测量是个“永恒”的话题。
温度测量的领域十分广泛,其实,不仅在工业领域,而且在民用领域、军用领域,温度的测量随处可见。
在工业领域,如电机的轴温,胶带滚筒的表面温度,工业冷却循环水温,加热设备的炉温,啤酒的麦芽发酵温度,各种化工原料在化学反应时控制的温度等等,在民用领域,超市的食品架内温度,人们生活空间环境的温度,空调的控制温度,人体的体温检测,冰箱、冰柜的温度测量等等。
当然,不同的场合,对测温范围的要求不一,即使相同的测温范围,测量不同的对象,其测量的精度要求也不尽相同,这些是显而易见的,譬如,人体的体温测量,测量的精度应该要求比较高,达0.1℃左右,但在测量电机的轴温时,可能测量的允差达1℃以上。
当然,我们做任何一件物品,都是在满足要求的前提下,越简单越好,成本越低越好,作为工业、民用、军用等领域的测量,这个原则也不例外,但作为人类对客观事物的认识,从测量的角度,从误差的概念,从真值的理解来看,我们应该在一定的条件下尽量地将测量的精度提高。
尽管目前市场上针对温度测量的检测仪器不在少数,而且,其制作的水平无论在工艺还是在测量的精度上都不断的在提高,但要得到高精度、宽量程以及多通道的温度检测仪,价格都十分昂贵,本文的立足点是,运用比较常规的温度传感器以及价格低廉的电子元件构成低成本、高性能的智能系统。
1.2系统概述
本系统是为北方的供暖锅炉设计的回水温度检测系统。
在我国北方绝大部分地区冬天要靠供暖锅炉来解决供暖问题,在供暖锅炉车间需要知道从用户返回来的水的温度,从而对锅炉的运作进行相应的调整。
本系统在锅炉车间安装了大的LED显示屏,用来给操作工人提供可以参考的信息。
同时数据也可以传送给计算机,使得决策者可以不用到车间就能够知道锅炉的运作情况。
本设计软硬件均采用模块化结构设计,各个功能模块都独立设计,使系统的软硬件维护和调试非常便利。
其系统结构框图如图1.1
系统的功能为:
用PT100与辅助测量电路将-40~100℃温度信号转换成0~5V的电压信号,12位A/D转换器将模拟信号转换成0~4095的数字信号,经过查表分段插值转换成温度,总计可以采集现场的8路温度,测得温度的精度可以达到0.1℃。
通信模块部分将温度值通过RS485通信的方式上传给上位机。
实时时钟模块能够为系统提供实时的时钟,并可以通过上位机对时钟进行校准。
现场在LED显示屏模块可以显示实时时钟和8路温度值。
第2章系统硬件介绍
2.1主控单片机的选择
主控单片机我选用新茂的SM8952单片机。
SM8952单片机是内嵌8K字节闪存的8位单片微控制器它具有多达32个I/O口,其8K的闪存既可作程序存储空间也可以作数据存储空间或程序数据混合空间这些硬件特征和其强大的指令系统使它应用于不同的场合因此是通用的和性能价格比高的控制器。
该单片机还具有稳定性好,抗干扰等优点,非常适合本测温系统设计的使用。
下面简单介绍一下该单片机的技术特性。
如图2.1
·工作电压4.5V到5.5V
·与通用80C51/80C52家族完全兼容
·每个机器周期为12个时钟周期
·8K字节片上闪存
·256字节片上数据RAM
·3个16位定时/计数器
·具有4个8位I/O口
·全双工串口通道
·位操作指令
·页自由跳转
·8位无符号除运算
·8位无符合乘运算
·BCD码运算
·直接地址访问
·间接地址访问
·嵌套中断
·两个中断优先级
·1个串行I/O口
·省电模式空闲模式和掉电模式图2.1SM8952单片机
·工作时钟为25MHz
·1个看门狗定时器(WDT)
2.2热电阻测量模块
我采用的是PT100作为温度传感器。
铂电阻温度传感器的特点是:
精度高,稳定性好,性能可靠。
铂在氧化性环境中,甚至在高温下的物理和化学性质都非常稳定。
因此铂被公认为是目前制造热电阻的最好材料。
铂电阻主要作为标准电阻温度计使用,也常被用在工业测量中。
此外,还被广泛地应用于温度的基准和标准的传递。
铂电阻温度计是目前测温重复性最好的一种,它的长时间稳定的重复性可达
K,优于其他所有温度计。
目前铂电阻的纯度已经达到99.9995%
。
信号采集方式采用电桥。
由于热电阻安装的地方距离测量模块比较远,当环境的温度变化时其连接导线电阻也要变化。
因为它与热电阻Rt是串联的,也就是电桥臂的一部分,所以会造成测量误差。
采用三线制接线方法就可以避免这种误差的产生。
如图2.1。
信号放大部分如图2.2。
图2.1测量电桥电路
图2.2信号放大电路
2.3A/D转换模块
A/D转换我采用Microchip公司的MCP3204芯片。
Microchip公司推出的MCP3204芯片是带有采样保持电路的逐次逼近型(SRA)12位精度A/D转换器。
MCP3204可以编程配置为2路伪差分输入偏置或4路单端输入。
其差分非线性度(DNL)和整体非线性度(INL)为±1LSB。
芯片的通信接口为SPI接口。
MCP3204的最大转换速率为200ksps。
芯片采用宽电压(2.7~5.5V)、低静态电流(500nA)设计,工作电流仅为320
A。
由于我们所要测量的温度为0~100℃,精度要求为0.1℃。
所以MCP3204的12位精度足以满足系统的要求。
该芯片的参考电压选择+5V。
该芯片的外围电路如图2.3。
图2.3MCP3204外围电路
2.4实时时钟模块
系统的时钟模块我采用美国DALLAS公司的DS1302作为时钟芯片。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
我在系统的设计上为DS1302设计了一个可充电的锂电池作为系统掉电时的时钟保持电源。
时钟模块的电路设计如图2.4
图2.4DS1302外围电路
2.5通信部分
本系统采用RS-485通信方式,接口芯片选择MAX487。
MAX487是MAXIM公司生产的用于RS-485和RS—422通信的差分总线小功率收发器,它含有一个驱动器和一个接收器,具有驱动器/接收器使能功能,输入阻抗为1/4负载(≥48kW),节点数为128,即每个MAX487的驱动器可驱动128个标准负载。
MAX487的驱动器设计成限斜率方式,使输出信号边沿不至于过陡,以避免在传输线产生过多的高频分量,从而有效扼制了干扰现象。
MAX487的接收灵敏度为±200mV,即接收端的差分电压≥+200MV时,接收器输出为高电平,≤-200mV时接收器输出为低电平,介于±200MV之间时接收器输出为不确定状态,因此,一旦某个节点的接收器在总线空闲、传输线开路或短路时产生低电平,将使串行接收器找不到起始位,从而引起通信异常,为此,本系统在硬件上作了处理:
将MAX487的A、B输出端加接上拉、下拉电阻,保证在发出有效数据时所有接收器能接收到完整的数据。
MAX487的数据传输速率为0.25Mbps,静态工作电流为120μA,5V单电源工作,在本系统中,MAX487采用半双工通信方式,各节点间的通信通过一对双绞线作为传输介质,因双绞线的特性阻抗为120Ω,因此系统在MAX487的始端和末端各接一个120Ω电阻以减少线路上传输信号的反射。
由于主机与分机相隔较远,而分机系统上电或复位又常常不在同一时刻完成,如在此时某个MAX487处于发送状态,将占用通信总线而使其它分机无法与主机进行通信,本系统在SM8952的P3.5口与MAX487的DE端之间加接光耦TIL817,保证了系统上电复位时MAX487的DE端为“0”,有效解决了这个问题。
通信模块的电路设计如图2.5。
图2.5通信模块的电路
2.6电源模块
由于系统对电源的稳定性要求很高,所以我们在设计的时候把模拟和数字电源分开设计,这样模拟电源和数字电源之间就不存在干扰的问题了。
系统输入为+12V的直流电源,而系统需要的工作电压为+5V和+6.2V的直流电压,稳压芯片我们选择LM7805和LM7806,对于6.2V的电压,我们用LM7806芯片,然后在其参考端反接一个1N4148来提升0.2V的电压。
电源模块的电路设计如图2.6.
图2.6电源部分电路
2.7显示模块
本模块采用串入并出74HC595通过级联实现,本设计采用LED实现,其中8段数码管用了47个,16段彩色数码管14个。
我利用彩色数码管显示单位,如:
年,月,日,时,分,秒,被测点序号。
这样就解决了8段数码管所存在显示信息量少的问题。
同时,采用了47片74HC595级联,实现了8个数码管显示,采用74HC595,数据线通过SDAT输入时钟,通过一个SCLK信号,47片74HC95达到了时钟同步,同理,HOLD信号使47片74HC595同步锁存输出,采用74HC595,节省了CPU的口线,同时又避开了动态扫描带来的定时扫描问题。
显示模块设计的原理如图2.7。
图2.7显示原理图
第3章系统软件设计
3.1仿真器介绍
我选用南京万利公司的AE-52仿真器,该仿真器具备如下特点:
·支持多达64K的仿真程序存储器和64K的仿真数据存储器
·程序和数据映像存储器支持程序和数据存储空间任意选择
·192K的程序地址断点,完全实时在线仿真用户程序
·外部信号断点和子程序(函数)返回断点
·独有的实时程序运行轨迹功能
·仿真频率范围0-33MHz
·完美的仿真电路设计,不占用其它任何用户资源
·电源、通讯及所有I/O口均设有保护电路
·打印口并行高速通讯,能够打开更多的窗口
·AE-52支持80C51系列标准产品:
80C31/32,8XC51,8XC52,8XC54,8XC58
3.2开发平台介绍
我采用南京万利公司的Medwin集成开发环境来开发本系统,由于Medwin没有C编译器,所以要外挂KEIL的C编译器。
KEIL51是德国KEIL公司开发的单片机C语言编译器,其前身是FRANKLINC51,现在的最新版本V7功能已经相当不错,特别是兼容ANSIC后又增加很多与硬件密切相关的编译特性,使得在8051系列单片机上开发应用程序更为方便和快捷。
uVision2是一种集成化的文件管理编译环境,本设计使用的编译环境KEIL51,集成了文件编辑处理、编译链接、项目管理、窗口、工具管理和软件仿真调试等多种功能,是相当大的C51开发工具。
在Medwin的仿真功能中,有两种仿真模式:
软件模拟方式和目标板调试方式。
在软件模拟方式下,不需要任何8051单片机硬件即可完成用户程序仿真调试,极大地提高了用户程序开发效率。
在目标板调试方式下,用户可以将程序装到自己的8051单片机系统版上,利用8051的串口与PC机进行通信来实现用户程序的实时在线仿真。
Medwin是万利电子有限公司关于8051系列MCU的开发工具,可以用来编译C源码、汇编源程序、连接和重定位目标文件和库文件、创建HEX文件、调试目标程序等。
Medwin提供了一个多功能的文件操作环境,它包含一个标准的Windows文件编辑器,具有十分强大的文件编辑功能,例如文件的移动、剪切、拷贝、查找、删除等。
它支持鼠标操作,也有快捷键。
编辑器中不仅有许多预定义热键,而且用户还可以根据自己的喜好对热键进行重定义。
在Medwin中,用户可以同时打开多个窗口,对多个不同的文件进行处理,这一特性有利于使用C51进行结构化的多模块程序设计。
在模块化编程时,如果同时打开多个不同文件,可以在Medwin中对他们分别进行编辑处理。
文件编辑完成后,可以直接在环境下进行编译连接。
如果编译连接过程中发现错误,将自动弹出错误窗口并显示出相应的错误信息。
用鼠标左键双击错误信息,将自动跳转产生错误的文件位置,以便可以容易地修改程序文件中的错误。
3.3主程序部分
本设计的主程序部分我主要分为四个部分,即温度采集部分、时钟部分、显示部分、以及通信部分。
温度采集部分,我们主要是将PT100采集上来的模拟信号通过A/D转换,滤波,查表,插值等方法转换成具体的温度值。
我们采用MCP3204作为A/D转换芯片。
该部分开始时,首先通过CD4051选择相应的采集通道,然后读出A/D值,0~5V对应0~4095。
将A/D值滤波,最后取得一个满意的A/D值,通过处理得出具体温度,然后判断是否8路温度都已采集完毕,如果没完继续,将CD4051的通道切换到下一个,注意此时一定要有一定的延时,使CD4051有足够的时间进行通道切换,然后重复温度的采集。
时钟部分,主要包括读时钟和校准时钟两部分,当串口接收到上位机发送的校准数据以后,就将校准标志位置位(为‘1’),然后在主程序中执行校准程序。
读时种部分采用单字节读取模式,每次读出一个字节,由于读出的时间值是以BCD码的形式表示的,所以读出时间值以后将BCD码转换成十进制数,以方便后面的显示码转换程序。
显示部分,主要是将温度值和时间值在现场的LED显示屏上显示出来。
由于硬件设计的原因,温度值显示码对照表和时间显示码对照表是单独建立的,所以要分开进行显示码的转换,把各个显示码保存在相应的存储单元。
由于显示接口芯片采用74HC595,所以占用I/O线只有三根,一条数据线,一条时钟线,一条显示允许线。
最后通过74HC595将所有的显示码送LED显示屏显示。
数据上传部分,主要是将测得的各个温度传送给上位机。
我们采用RS485通信。
首先将温度值编码,每一桢数据都包括起始字节、通道号字节、十位字节、个位字节、小数字节、校验字节及停止字节。
校验字节我们采用和校验的方式。
每测量出一路温度值就将温度发送给上位机。
主程序流程图如图3.1所示
图3.1主程序流程图
3.4温度采集程序部分
在温度采集程序部分我采用定时采集的方式,因为过快的采集频率会使采集的温度发生漂移,从而使系统的测量精度降低。
我们设置T0工作在方式1,由于我采用11.0592MHz的晶体震荡器,所以其最大的定时时间约为71.1ms。
这里我们设定每次定时溢出时间为最大71.1ms,所以其计数初值十进制为0
。
这样我只要在定时中断程序中置一个定时中断标志,然后在主程序中查询标志位的状态,如果标志位置位(为‘1’)则进行温度的采集并把定时器关闭,然后在采集结束的时候把定时器再打开,这样就可以保证在执行温度采集程序的时候不会有定时中断发生从而防止程序的跑飞。
当进入温度采集程序后,首先通过CD4051进行采集通道的切换,CD4051的操作程序流程图如图3.2所示。
然后再读出MCP3204中的A/D值,由于我们只用了一个MCP3204的通道所以就不进行MCP3204的通道切换。
A/D转换结束我们采用加权滤波的方式,实践证明在本系统中这种滤波是最有效的。
我们取8次A/D值进行加权。
最后得出一个比较满意的A/D值。
然后通过查表和线性插值转换成实际的温度值,采用这种温度转换方式的优点是:
不用A/D值与电阻值对应,再用电阻值与温度对应的方法,可以减少运算时间大大提高程序执行的速度,另外分段线性化可以减少由于硬件电路的非线性带来的温度误差,当硬件的零点漂移的时候只需调整线性表就可以重新进行校准。
A/D值与温度的对照如表3.1所示。
其程序流程图如图3.3所示。
MCP3204的操作时序为:
与MCP3204的通信可以利用标准的SPI兼容串行接口来实现。
通过将CS线拉低可以启用与器件的通信。
如果器件已上电而CS引脚为低,则要将其拉高再拉低以启动通信。
接受到第一个时钟并且CS为低DIN高时,将构成一个开始位。
开始位之后跟随的是
/DIFF位,它决定转换是采用单端还是差分输入模式进行。
接下来的三位(D0、D1、D2)用于选择输入通道的配置。
在接收到开始位以后,器件将在时钟的第四个上升沿开始对模拟输入进行采样。
采样周期在紧跟着开始位的第五个时钟的下降沿结束。
一旦输入D0位,则还需要一个时钟来完成采样与保持周期(DIN不必考虑该时钟)。
在下一个时钟的下降沿,器件将输出一个低空位(nullbit).接下来的12个时钟将输出转换结果,从MSB开始如图3.4。
数据总是在时钟的下降沿从器件输出。
如果12个数据位全部被发送而且器件在CS保持低电平时继续接收时钟,则器件将从LSB开始输出转换结果如图。
如果在CS仍为低时还有时钟输入器件(在LSB先行数据发送以后),器件则会无限制地按时钟输出零。
如果有必要,可以在开始位之前将CS拉低并在DIN线上按时钟输入前导零。
在一次必须发送8位的基于微控制器的SPI端口应用中常进行这样的操作。
图3.2CD4051通道切换流程图
表3.1PT100的A/D值与温度的对照表
A/D值
温度值
A/D值
温度值
A/D值
温度值
A/D值
温度值
360
-111
1275
-5
2232
35
3200
75
407
-40
1372
0
2356
40
3326
80
502
-35
1497
5
2475
45
3440
85
627
-30
1620
10
2600
50
3558
90
752
-25
1746
15
2720
55
3680
95
875
-20
1866
20
2842
60
3799
100
998
-15
1989
25
2960
65
4000
101
1123
-10
2112
30
3084
70
图3.3温度采集程序流程图
图3.4MCP3204的操作时序图
3.5读时钟程序部分
读时钟部分采用单字节读取模式,每次读出一个字节,由于读出的时间值是以BCD码的形式表示的,所以读出时间值以后将BCD码转换成十进制数,并保存在时钟数组里。
以方便后面的显示码转换程序。
DS1302的操作时序为:
DS1302与CPU的连接仅需要三条线,即SCLK、I/O、RST。
即采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
它共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
数据的输入输出:
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中置其为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电。
此时在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序见图3.5。
读时钟程序的操作为:
先将要读的寄存器的命令字写入到DS1302,然后读出DS1302数据口的数据,(注意,读出的时间是以BCD码的形式表示时间,所以要进行BCD到十进制的转换)流程如图3.6。
图3.5DS1302的操作时序图
图3.6读时钟的程序流程图
3.6显示程序部分
显示部分我将在进行温度采集的函数结束后将采集的温度转换成相应的显示码存到温度显示码数组中,在读完DS1302中的时间后将读出的时间值转换成相应的显示码存到时间显示码数组中。
74HC595显示一个字节的程序如图3.7,全部的显示程序如图3.8。
本设计用74HC595来进行串行输入并行输出的转换。
这样,只用3个通用I/O口分别连接SCK、RCK、SER移位时钟输入,锁存时钟输入和移位寄存器数据串行输入就行了。
由于要用多个数码管显示所以要利用74HC595级联来实现。
级联时下一级的数据是连接到上一级的Q7引脚的而从74HC595的时序图不难发现Q7是在上升沿改变的而数据输入又要求上升沿的时候稳定。
要求上升沿来前输入数据要求稳定表面上是矛盾的,但可以解释为,上升沿到达时,上一级的原始数据移入下一级,经过纳秒级的延迟,输出数据在下一级端口稳定,即上升沿结束后输出就稳定了。
74HC595是具有8位移位寄存器和一个寄存器,三态输出功能。
移位寄存器和存储器是分别的时钟。
下面将用具体引脚来具体说明其