历史上的今天
返回首页

历史上的今天

今天是:2025年01月24日(星期五)

正在发生

2018年01月24日 | 基于AT89C51控制ICL7135的0.01℃数显温度计

2018-01-24 来源:eefocus

    温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学实验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。现在所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计。这些温度计的刻度间隔通常都很密,不容易准确分辨,读数因难,而且它们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。而利用晶体三极管3DG6C的基极与集电极之间正向电压降Ubc随温度T呈线性变化的关系作为温度传感器,以OP07构成放大器,以 位A/D转换器ICL7135作A/D转换器设计的数显温度计可以解决这些问题[1]。笔者根据实际使用的需要,设计了以AT89C51为控制核心,具有测量间隔可设定、测量结果可自动记录、可查询,并经简单扩展就具有报警能力和同PC机进行数据交换的0.01℃数显温度计,并用于热学实验取得成功。

1 硬件电路和工作原理

1.1 电路框图

整机电路由温度信号采集放大电路、A/D转换电路、CPU控制与显示电路三部分组成,其框图如图1所示。温度信号由数据采集电路中的温度传感器转换为电信号,经放大电路后,送入A/D转换器,转换后,以BCD码形式送入CPU,再由程序控制其输出显示,键盘完成各项设置。

1.2 数据采集、放大电路

如图2所示,晶体三极管Q1(3DG6C)的BE极相连,利用基极与集电极之间正向电压降Ubc随温度呈线性变化的关系作为温度传感器[1]。MC1403(IC1)的输出(2.5V)作为供电电源,以满足电压稳定性及测量精度较高的要求。由具有低失调、低噪声、低漂移的高精度集成运算放大器OP07 (IC2) [2]及R2、R3组成差动放大器,将温度传感器检测到的与温度有关的电信号进行适当放大后再输出到由R6送入IC5(ICL7315)的10脚,以进行A/D转换。                                  

运算放大器OP07反相输入端接入的信号是随温度变化的PN结压降U1,同相输入端加一固定不变的电压U2。U2表示0℃时PN结上的压降,它可以通过精密可调电阻RP2进行调节。在该放大器中,取R2=R4和R3=R5,则输出电压Uo表示为:

                                        Uo = (R3/R2)*(U2 – U1)

放大器的放大倍数设计成5倍,将Q1的BE极之间电压变化2mv/℃放大到10mv/℃。MC1403同时为ICL7135提供基准电压源。

       

图2 数据采集、放大电路               

图3  A/D转换电路

1.3  A/D转换电路

A/D转换电路的核心是ICL7135(IC4)。ICL7135是具有高准确度、通用型的CMOS单片 位双积分式A/D转换器,量程为2.0000V,BCD码输出,输出信号与TTL电平兼容。其工作的基准电压为1V,由MC1403经过分压后提供。如图3所示,C2是自调零电容,C4基准电容,R9和C3是自积分输入电阻和电容。ICL7135工作的时钟频率是125KHz,由74HC00(IC2)构成的多谐振荡器提供。10脚输入进来的是OP07的输出信号,其电压大小表示了温度的大小,经A/D转换后输出BCD码,接入AT89C51。D1~D5是LED的位选信号,不直接接LED,而是同AT89C51相接,统一由AT89C51提供LED的位选信号。

1.4  CPU控制与显示电路

如图4所示,CPU控制与显示电路核心是AT89C51(IC5)。为保证其可靠复位,采用MAX814 (IC6)硬件复位。P0.0~P0.3接从ICL7135送来的BCD码,P0.4~P0.7和P3.4接ICL7135的D1~D5。P1口接LED显示码位,提供相应的显示信息。LED的位选信号

图4  CPU控制与显示电路

由P3.5~P3.7经74H138(IC7)译码后提供。显示温度时,只需5位,但考虑到某些情况下可能要显示其它信息(如时钟),LED采用6位。P2口接16个按键,以完成对此温度计的设置和控制功能。当显示所测试的温度时,整个系统为量程为2V的直流电压表,将温度传感器检测到的温度信号变为相应的电压信号,放大后,输入到此电压表,即可由电压大小表示出温度的大小,因为电压表的最小读数是0.1mV,所以,用电压表示温度时可以读出的最小温度是0.01℃。

2 软件设计[3]

软件设计是本设计的关键之一。和直接利用ICL7315来制作的温度计相比,正是由于AT89C51可灵活编程实现各种控制功能,可满足不同的实际需要。本设计编写的程序可实现具有测量间隔可设定、测量结果可自动记录、可查询的功能。

程序主要由五大部分组成:主函数、定时器中断函数(调度器内核)部分、扫描键盘与处理键盘函数、显示刷新函数、从ICL7135读取数据函数、时间刷新函数。主函数初始化系统,然后添加四个任务:扫描与处理键盘、刷新显示、读取数据、刷新时间;最后把控制权交给调度器内核,在不需要运行任务的时候,微控器进入休眠模式以降低功耗,如图5所示。                                                 

因为温度计对精度要求高,对速度要求低,故用定时器中断来作调度器内核,主要任务是计算什么时刻要运行什么任务,然后调用相应的任务函数,如图6所示。

扫描键盘函数在调度器的调度下每20ms执行一次,利用此20ms的时间间隔正好用延时消除抖动来消除键盘抖动。键盘设计成行列矩阵式,功能有:设定时间、设定测量时间间隔、切换时钟状态和温度计状态、开始和结束温度测量、查询以前测量的温度数据。其流程如图7所示。显示刷新函数在调度器的调度下每4ms执行一次,显示刷新函数用于动态显示七段LED显示管。读取数据函数在调度器的调度下每1S执行一次,运行此函数时, 单片机 从ICL7135中读取一次数据。程序流程如图8所示。

时间刷新函数在调度器的调度下每1s执行一次,进行计时。

             

3 温度计定标与数据测试

温度计定标时用数字电压表测量ICL7135第2、3两脚之间的电压值(基准电压),调节R5,使其在2V左右;将传感器Q1放入冰水混合物中,经过充分搅拌达到热平衡后调节R6,使显示读数为0.00(标定0℃);利用气压计读出当时当地的大气压强,并根据大气压强,当地重力加速度计算出当时的实际压强;根据沸点与压强的关系查出沸点温度.把传感器放入沸水中,待显示读数稳定后仔细调节R5,使显示器显示读数等于当地当时的沸点温度后定标工作结束[1]。本温度计的量程为-50~150℃,读数精度为0.01℃,考虑到实际使用一般在0℃~100℃。我们用0℃~50℃和50℃~100℃的精密水银温度计作捡验标准,测量结果见表1。其中T水银为水银温度计的测量值,最后一位是估计值,T数字为数字温度计测量值,最后一位是显示值。由测试结果可知,所设计的温度计能达到要求

4 结束语

本数显温度计具有读数方便,精度高的特点。引入 单片机 AT89C51控制后,可以通过不同的软件设计以完成不同的使用要求。系统设计时保留引脚P3.2,如在该引脚外接一扬声器,可通过软件编程实现温度超限报警,作为温度报警器用。通过保留的串口,可以实现与PC机的通讯,增加串口通讯程序模块就可用作多点温度检测系统的下位机。

  参  考  文  献

[1] 潘学军.0.01℃的数显温度计[J].物理实验.2003(5):22~25

[2] 谈文心,钱聪,宋云购.模拟集成电路原理及应用[M].西安:西安交通大学出版社,1995.16~39.

[3] 何立民. MCS-51 单片机 应用系统设计[M]. 北京:北京航空航天大学出版社 1995.9


推荐阅读

史海拾趣

Fuji Electric Co Ltd公司的发展小趣事

以下是五个关于Fuji Electric Co., Ltd.(富士电机)公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

Fuji Electric Co., Ltd.(富士电机)成立于1923年,是古河电器工业与德国西门子资本技术合作的产物。公司最初以电气机器制造为主,迅速在日本市场站稳脚跟。在成立初期,富士电机便致力于技术创新和产品质量的提升,逐渐在电机制造领域建立了良好的声誉。通过不断的技术积累和市场拓展,富士电机逐渐成长为日本电机行业的领军企业之一。

2. 多元化战略的实施

随着市场的不断变化和技术的不断进步,富士电机开始实施多元化战略。公司不仅继续深耕电机制造领域,还积极拓展至电子设备、零售终端设备等多个领域。通过并购和内部孵化等方式,富士电机成功进入了多个新兴市场,并在这些领域取得了显著成就。例如,在自动贩卖机领域,富士电机凭借其先进的技术和卓越的产品质量,占据了日本国内第一的市场份额。

3. 国际市场的开拓

富士电机深知国际市场的重要性,因此一直致力于海外市场的拓展。公司通过在海外设立分支机构、与当地企业合作等方式,成功将产品和服务推向了全球市场。在国际市场上,富士电机凭借其高品质的产品和专业的服务赢得了广泛的认可和好评。同时,公司还积极参与国际标准的制定和推广工作,提升了自身的国际影响力。

4. 技术创新与研发实力的提升

技术创新是富士电机持续发展的重要动力。公司不断加大研发投入力度,建立了完善的技术创新体系。通过自主研发和合作研发等方式,富士电机在多个技术领域取得了重大突破。例如,在电力电子、自动化控制等领域,富士电机推出了多款具有自主知识产权的创新产品和技术解决方案。这些创新成果不仅提升了公司的核心竞争力还推动了整个行业的发展。

5. 数字化转型与智能化升级

面对数字化转型的浪潮富士电机积极应对挑战并抓住机遇。公司开始推进数字化转型和智能化升级工作通过引入先进的数字化技术和智能化设备提升生产效率和产品质量。同时富士电机还加强了对大数据、云计算等前沿技术的研发和应用推动了公司业务的智能化发展。这些举措不仅提升了公司的市场竞争力还为公司未来的可持续发展奠定了坚实基础。

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

进入1950年代,E-T-A公司开始关注固态远程电源控制器(SSRPCs)的研发。这一创新技术为电气系统提供了更加可靠和高效的电源管理方案。公司投入大量资源进行研发,成功推出了多款固态远程电源控制器产品,这些产品在市场上获得了广泛认可,并为公司带来了可观的收益。

Cotco公司的发展小趣事

面对电子行业日新月异的变化和不断涌现的新挑战,Cotco公司始终保持敏锐的市场触觉和应变能力。公司及时调整战略方向,加大在新兴领域如物联网、智能家居等的投入和研发力度。同时,Cotco也积极拓展国际市场,与全球多个国家和地区的合作伙伴建立合作关系,推动产品的全球化销售和服务。展望未来,Cotco将继续秉承创新、质量和服务的理念,致力于成为全球电子行业的佼佼者。

Electro-Optical Systems Inc公司的发展小趣事

EOS公司成立于1983年,创始人是一群热衷于红外技术的专家。他们深知红外探测器在军事、科研和工业领域的重要性,于是决定投身于这一领域。初创时期,EOS面临着资金短缺、技术难度大等挑战,但团队成员凭借着对技术的执着和对市场的敏锐洞察,逐步攻克难关,成功研制出第一批红外探测器产品。

ASC Capacitors公司的发展小趣事

ASC Capacitors始终坚持品质至上的原则。公司从原材料采购到生产工艺,再到产品出厂,每一个环节都严格把控,确保产品质量无可挑剔。此外,ASC Capacitors还建立了完善的质量检测体系,对每一批产品进行严格测试,确保产品性能达到最佳状态。正是这种对品质的执着追求,使得ASC Capacitors赢得了客户的广泛赞誉和信任。

Elma Electronic Inc公司的发展小趣事

Elma Electronic Inc公司在电子封装市场拥有显著的领导地位。从VME/VME64x到Rugged COTS封装,该公司凭借其创新的设计和制造技术,成功地在多个细分市场取得了领先地位。这种领导地位不仅体现在产品的多样性上,更在于其为客户提供的高质量、可靠性和性能优异的产品。

问答坊 | AI 解惑

监控云台问题?

高手请赐教: 1、云台解码器的拨码开关是不是用二进制确定其地址码?是不是所有的厂商都要用一个8拨片的拨码开关?有8个拨片的拨码开关和6个拨片的拨码开关一起的是怎么回事? 2、解码器的解码芯片如:ATMEL AT89c51 的程序加密以后还能不能读出 ...…

查看全部问答>

evc创建的工程在WINCE5.O系统跑不起来?

我用EVC创建的工程,编译成X86(evc自带的SDK和WINCE5 SDK都试过) Realse 可执行文件放到 装有 wince5系统的开发板上运行,提示不是有效的WINCE程序~这是为什么呢?…

查看全部问答>

在Sitara平台上如何优化Linux启动过程?

请问目前大家的平台上,Linux从启动到运行自己的图形程序,需要大概多少秒?我们要想优化一个系统的启动时间,首先我们需要知道这个系统都把启动时间花在哪里了!其次就是你的目标,是让系统在多少秒之内完成启动?那要如何才能知道,系统在启动过 ...…

查看全部问答>

dsp 编译问题

这个程序编译时怎么有错误?说\"EvaRegs\" has no field \"CAPCONA\" 、\"CAPFIFOA\"什么原因?   初始化事件管理器EVAvoid InitEv(void){     EvaRegs.T1PR=0xFFFF;   //T1周期     Ev ...…

查看全部问答>

中断问题,执行NVIC_Init(&NVIC_InitStructure)使执行不下去

程序如下:void NVIC_Configuration(void){#ifdef  VECT_TAB_RAM    /* Set the Vector Table base location at 0x20000000 */   NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else  /* VECT_ ...…

查看全部问答>

zigbee应用剖析

初始化因为Z-Stack是在OS下运行的,所以在之前必须调用osalAddTasks()初始化任务。组织关于OS的API函数介绍请看文档:Z-Stack OSAL API (F8W-2003-0002),应该说协议栈的每层或者说每部分都有相关的API说明文档。osalAddTasks()初始 ...…

查看全部问答>

新手啊~求PC.c 让我把任哲的程序做下来吧~~

电脑上走任哲的程序,报错 call to function \'PC_VectSet\' with no prototype 查出是没有pc.c,网上下载了2个PC.c 但是都不对(一个是QEMU仿真的) 这东西为什么这么难找到啊?…

查看全部问答>

如何保存CCS的设置

    我用的是CCS6,按照自己的使用习惯设置了代码和注释等的字体和颜色。     但是碰到过CCS莫名就恢复成了默认的设置项,搞得我又得全部重新设置一遍。     想问下,CCS有没有保存当前设置项,然后直接导入的功能 ...…

查看全部问答>

多旋翼自主飞行器(C题)

多旋翼自主飞行器(C题) …

查看全部问答>

也来折腾Zephyr之(LINUX下安装篇)

本帖最后由 damiaa 于 2017-3-23 15:36 编辑                           Zephyr(LINUX下安装篇) A,先是准备虚拟机virtualBox(这里不细说了)。 B ...…

查看全部问答>