您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 基于51单片机的温度控制系统设计
第1页基于51单片机的水温自动控制系统沈统摘要:在现代化的工业生产中,温度是常用的测量机被控参数。本水温控制系统采用AT89C51为核心控制器件,实现对水温在30℃到96℃的自动控制。由精密摄氏温度传感器LM35D构成前置信号采集和调理电路,过零检测双向可控硅输出光电耦合器MOC3041构成后向控制电路,由74LS164和LED数码管构成两位静态显示用于显示实时温度值。关键词:89C51单片机;LM35D温度传感器;ADC0809;MOC3041光电藕耦合器;水温自动控制0引言在现代的各种工业生产中,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。1设计任务、要求和技术指标1.1任务设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。1.2要求(1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。(2)当液位低于某一值时,停止加热。(3)用AD转换器把采集到的模拟温度值送入单片机。(4)无竞争-冒险,无抖动。1.3技术指标(1)温度显示误差不超过1℃。(2)温度显示范围为0℃—99℃。(3)程序部分用PID算法实现温度自动控制。(4)检测信号为电压信号。2方案分析与论证2.1主控系统分析与论证根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。其引脚图如图1所示。2.2显示系统分析与论证显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案:方案一:采用静态显示的方案采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。方案二:采用动态显示的方案由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电,但编程比较复杂,亮度不如静态的好。第2页由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。图1AT89C51引脚图2.3检测系统分析与论证1温度检测:有选用AD590和LM35D两种温度传感器的方案,但考虑到两者价格差距较大,而本系统中对温度要求的精度不很高,因而选用比较廉价LM35D。温度传感器采用的是NS公司生产的LM35D,他具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0℃时输出为0V,每升高1℃,输出电压增加10mV。其电源供应模式有单电源与正负双电源两种,其接法如图2与图3所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25℃下电流约为50mA,非常省电。本系统采用的是单电源模式。Vout=10mV/℃×T(℃)2液位检测:同样考虑到成本问题,选用自己做一个液位传感装置。图2单电源模式图3双电源模式2.4控制系统分析与论证由于需要用大功率加热装置对水温进行调节,故采用带过零检测双向可控硅输出光电耦合器MOC3041构成后向控制电路。3系统原理框图第3页硬件组成框图如图4所示:主要由AT89C51单片机、温度信号采集和调理、AD转换、数码显示电路、温度控制等部分组成。图4硬件框图电源开启后,可以显示出实时的温度,并且可以判断出此时的温度是否需要对水进行加热操作4硬件电路4.1温度信号检测和调理电路LM35D采用单电源供电模式如图2将采集到的电压信号送入运放uA741进行放大处理,如图5。图5信号采集调理电路4.2显示电路显示电路由两片74LS164和两个数码管构成,为了PCB中作图的方便,故采用如图6的连接方式。温度采集电路信号调理电路A/D转换电路单片机系统温度显示执行电路液位检测第4页图6温度显示电路时钟由单片机的P1.1提供,第一个数码管的数据由单片机的P1.0提供,第二个数码管的数据由第一个164的Q7提供。164的时序图如图7所示。图774LS164的时序图4.3温度控制电路温度控制电路由光电耦合器MOC3041和双向晶闸管BT137构成,硬件连接如图8。图8温度控制电路第5页4.4AD转换电路本部分电路由ADC0809和一些74系列芯片构成,其中74LS74用于对单片机的ALE信号进行分频作为0809的时钟,74LS373用做地址锁存实现单片机P0口的分时复用。该部分硬件电路如图9所示。图9AD转换电路4.5主控系统电路该系统由AT89C51构成,由5V电源供电,采用6Mhz的晶振。主控系统电路主要承担显示及对温度的PID控制的核心引用,各功能通过软件软件实现。图10为单片机的主控电路。图10单片机主控电路4.6整体PCB图见附件A5软件部分5.1主程序流程说明第6页主程序的任务主要是循环检测采集到的温度值,不断比较实现PID控制。流程图如下:图11主程序流程图5.2各子程序模块流程5.2.1显示部分JR=0;冷却开始初始化延时采集一次温度数据并进行转换数据暂存B修改指针延时再采集一次温度数据并进行转换A=B?A=30?JR=1;加热A=96?AB?JR=0;冷却JR=1;加热第7页显示部分主要包括三个小模块:第一、原始数据的拆分;第二、待显示数据查表;第三、待显示数据的输出。数据分配表如图12,送待显示数据流程如图13,查表流程如图14图13待显示数据输出流程图14查表程序流程5.2.2中断程序部分中断部分包括定时器中断(主要实现1秒刷新一次显示)和外部中断(检测液位。为防止抖动,设置一个标志位,进入中断后判断标志位,如果一秒钟内没有出中断,则响应,否则不响应),流程图分别如图15和图16。第8页图15定时器中断流程图图16外中断流程图5.3整体程序见附件才C6系统调试6.1软件调试调试所用软件:KeiluVision2和Proteus7。将编写好的程序用KeiluVision2汇编编译成hex格式的文件后导入Proteus7中的原理图(附件B)内。结果正常显示,说明程序本身没有问题。6.2硬件调试调试所用工具:直流稳压电源,示波器,万用表等。6.2.1放大电路的调试:将信号调理部分电路的输入端接地,调节电位器,使输出电压为零(用万用表毫伏档测量)。输入一定的电压值0—1V范围内,观察电路的输出电压,调节电阻值,使输出为输入的5倍。6.2.2显示电路的调试:先写一个简单的显示程序,烧入单片机内,接好电路,观察显示是否正常。6.2.3AD转换电路的调试:写一个简单的控制ADC0809的程序,用示波器观察ADC0809所接受到的信号是否正确,如时钟信号、开始信号等、给定输入端一个电压,给OE端持续加高电平,使允许输出,用万用表或示波器测量各个输出引脚的转换情况,结果与计算值是否相符合。6.2.4系统的整体调试:将编写好的程序烧入单片机中,接好整体电路,观察输出结果是否正确。调试中显示一直是99,最后去掉373和排阻,显示正常。主要是因为加的排阻过小,只有330欧姆,而ADC0809向单片机送数据的时间有很短,所以,即使送入0也可能会被单片机认为是1,所以一直显示99。入中断保护现场重赋计数初值1S到?调用显示恢复现场返回入中断F1=1?停止加热F1=1延时1S返回第9页6.2.5系统存在的问题:由于实验调试时,只是观察led灯的亮灭变化,没有接上实际的光耦驱动大功率加热器件,而实际测试时,led灯的亮度不高说明驱动电流太小,因而在驱动光耦时还需加入74LS07以增大P1.2口的驱动电流,使之能够驱动光耦。调试的过程中发现所购买的ADC0809的IN0输入端直接与地短接,所以,真正做成的系统用的是通道1。又加上调试时去掉了排阻和74LS373,因而选地址时是直接把地址选择端接成了高低电平,虽然实现了功能但是与初衷不符。7结束语通过本次专业课程设计,我学会PID算法的软件实现方法,也了解了一些常识性的东西如上拉电阻的选取等。另外也认识到了单片机控制的优势——识别控制简单、方便、快捷。这样一来,单片机就可以充分发挥其速度快、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点,可用附加电路实现电路的扩展。最后感谢指导教师李建法老师给予我大力支持与帮助,并提供了有利的实验条件,在此表示由衷的感谢。参考资料:【1】谢自美电子线路综合设计华中科技大学出版社【2】张毅刚单片机原理及应用第10页附件A:整体PCB图第11页附件B:PROTEUS仿真图附件C:本系统所用程序:DINBITP1.0CLKBITP1.1JRBITP1.2F1BIT21HORG0000HSJMPMAINORG0003HLJMPINT00ORG000BHLJMPINTDISPORG0030HMAIN:SETBEASETBEX0SETBET0MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0Hmov20h,#10SETBTR0;中断初始化CLRF1CJ1:MOVR0,#30H第12页LCALLD1SLCALLAD0809MOVB,ACJ2:MOVR0,#31HLCALLD1SLCALLAD0809CJNEA,B,COMPLJMPCJ2COMP:CJNEA,#30H,N30SETBCTROLJMPCJ1N30:JNCCOM96SETBJRLJMPCJ1COM96:CJNEA,#96H,N96CLRJRLJMPCJ1N96:JCCOMABCLRJRLJMPCJ1COMAB:CJNEA,B,DRLJMPCJ2DR:JCDOWNRISE:SETBJRLJMPCJ1DOWN:CLRJRLJMPCJ1AD0809:;数据采集转换MOVDPTR,#0FFF8HLOOP:MOVX@DPTR,AMOVR7,#0AHDELAY:NOPNOPNOPDJNZR7,DELAYMOVXA,@DPTRMOVDPTR,#TBCDMOVCA,@A+DPTRMOV@R0,A第13页RETDISP0:;拆分MOVR1,#40HMOVA,@R0MOVB,AANLA,#0F0HSWAPAMOV@R1,AincR1MOVA,BANLA,#0FHMOV@R1,ARETDISP1:;查表MOVR0,#40HMOVR1,#50HMOVR7,#2L1:MOVDPTR,#SEGTABMOVA,@R0MOVCA,@A+DPTRMOV@R1,AINCR0INCR1DJNZR7,L1RETDISP2:;显示MOVR0,#50HMOVR1,#2L2:MOVA,@R0MOVR7,#8L3:RLCAMOVDIN,CCLRCLKSETBCLKDJNZR7,L3INCR0DJNZR1,L2RETDISP:PUSHACCPUSHBmov33h,r0LCALLDISP0LCALLDISP1第14页LCALLDISP2movr0,33hPOPBPOPACCRETD100MS:MOVR3,#200DEL0:MOVR4,#125DEL1:DJNZR4,DEL1DJNZR3,DEL0RETD1S:MOVR5,#10DEL2:CALLD100MSDJNZR5,DEL2RETINT00:JNBF1,LINTCLRJRSJMPRETURNLINT:SETBF1LCALLD1SRETURN:RETIINTDISP:PUSHACCPUSHBMOVTH0,#3CHMOVTL0,#0B0Hdjnz20h,backmov20h,#10LCALLDISPback:POPBPOPACCRETITBCD:DB00H,00H,01H,01H,02H,02H,02H,03HDB03H,04H,04H,04H,05H,05H,05H,06HDB06H,07H,07H,07H,08H,08H,09H,09HDB09H,10H,10H,11H,11H,
本文标题:基于51单片机的温度控制系统设计
链接地址:https://www.777doc.com/doc-2135920 .html