当前位置:文档之家› 基于51单片机的温度控制系统设计

基于51单片机的温度控制系统设计

基于 51 单片机的水温自动控制系统引言在现代的各种工业生产中,不少地方都需要用到温度控制系统。

而智能化的控制系统成为一种发展的趋势.本文所阐述的就是一种基于 89C51 单片机的温度控制系统。

本温控系统可应用于温度范围30℃到96℃。

设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。

(1) 利用摹拟温度传感器检测温度,要求检测电路尽可能简单。

(2) 当液位低于某一值时,住手加热。

(3) 用 AD 转换器把采集到的摹拟温度值送入单片机。

(4) 无竞争—冒险,无颤动。

(1) 温度显示误差不超过1℃.(2) 温度显示范围为0℃—99℃。

(3) 程序部份用 PID 算法实现温度自动控制。

(4) 检测信号为电压信号。

根据设计要求和所学的专业知识,采用 AT89C51 为本系统的核心控制器件。

AT89C51 是一种带4K 字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8 位微处理器。

其引脚图如图1 所示。

显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件.在显示驱动电路中拟订了两种设计方案:方案一:采用静态显示的方案采用三片移位寄存器 74LS164 作为显示电路,其优点在于占用主控系统的 I/O 口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。

方案二:采用动态显示的方案由单片机的 I/O 口直接带数码管实现动态显示, 占用资源少,动态控制节省了驱动芯片的成本,节省了电,但编程比较复杂,亮度不如静态的好。

由于对电路的功耗要求不大,因此就在尽量节省 I/O 口线的前提下选用方案一的静态显示.图 1 AT89C51 引脚图1 温度检测:有选用 AD590 和LM35D 两种温度传感器的方案,但考虑到两者价格差距较大,而本系统中对温度要求的精度不很高,于是选用比较便宜 LM35D。

温度传感器采用的是NS 公司生产的 LM35D,他具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温度线性成比例,且无需外部校准或者微调,可以提供±1/ 4 ℃的常用的室温精度.L M35 的输出电压与摄氏温度的线形关系可用下面公式表示,0 ℃时输出为 0 V ,每升高1 ℃ , 输出电压增加 10 mV。

其电源供应模式有单电源与正负双电源两种,其接法如图2 与图3 所示。

正负双电源的供电模式可提供负温度的测量,单电源模式在 25 ℃下电流约为 50 mA ,非常 省电。

本系统采用的是单电源模式。

Vout=10mV /℃×T(℃)2 液位检测:同样考虑到成本问题,选用自己做一个液位传感装置。

图 2 单电源模式 图3 双电源模式由于需要用大功率加热装置对水温进行调节,故采用带过零检测双向可控硅输出光电耦 合器 MOC3041 构成后向控制电路.硬件组成框图如图 4 所示:主要由AT89C51 单片机、温度信号采集和调理、 AD 转换、数 码显示电路、温度控制等部份组成。

图 4 硬件框图电源开启后,可以显示出实时的温度,并且可以判断出此时的温度是否需要对水进行加 热操作LM35D 采用单电源供电模式如图 2 将采集到的电压信号送入运放uA741 进行放大处理, 如图 5.图 5 信号采集调理电路显示电路由两片 74LS164 和两个数码管构成, 为了 PCB 中作图的方便,故采用如图 6 的连 接方式。

图 6 温度显示电路时钟由单片机的 P1.1 提供,第一个数码管的数据由单片机的P1。

0 提供,第二个数码管的数 据由第一个 164 的 Q7 提供。

164 的时序图如图 7 所示。

图 7 74LS164 的时序图温度控制电路由光电耦合器 MOC3041 和双向晶闸管 BT137 构成,硬件连接如图 8。

图 8 温度控制电路本部份电路由 ADC0809 和一些 74 系列芯片构成,其中 74LS74 用于对单片机的 ALE 信号 进行分频作为 0809 的时钟, 74LS373 用做地址锁存实现单片机P0 口的分时复用。

该部份硬 件电路如图 9 所示.图 9 AD 转换电路A/D 转 换电路液位检测温 度 显 示执 行 电 路温 度 采 集 电 路信 号 调 理 电 路单 片 机系 统该系统由 AT89C51 构成,由 5V 电源供电,采用 6Mhz 的晶振。

主控系统电路主要承担显示及对温度的 PID 控制的核心引用,各功能通过软件软件实现。

图 10 为单片机的主控电路.图 10 单片机主控电路主程序的任务主要是循环检测采集到的温度值,不断比较实现 PID 控制。

流程图如下:开始初始化延时采集一次温度数据并进行转换数据暂存B修改指针延时再采集一次温度数据并进行转换A=B?A<=30?JR=1;加热A>=96?JR=0;冷却A>B?JR=1;加热JR=0;冷却图 11 主程序流程图5。

2.1 显示部份显示部份主要包括三个小模块:第一、原始数据的拆分;第二、待显示数据查表;第三、 待显示数据的输出.数据分配表如图 12,送待显示数据流程如图 13,查表流程如图 14图 13 待显示数据输出流程 图 14 查表程序流程中断部份包括定时器中断(主要实现 1 秒刷新一次显示)和外部中断(检测液位。

为防 止颤动,设置一个标志位,进入中断后判断标志位,如果一秒钟内没有出中断,则响应,否则 不响应),流程图分别如图 15 和图 16。

图 15 定时器中断流程图图 16 外中断流程图 调试所用软件:Keil uVision2 和 Proteus7。

将编写好的程序用 Keil uVision2 汇编编译成 hex 格式的文件后导入Proteus7 中的原理 图(附件 B)内。

结果正常显示,说明程序本身没有问题。

调试所用工具:直流稳压电源,示波器,万用表等。

6.2。

1 放大电路的调试:将信号调理部份电路的输入端接地, 调节电位器,使输出电压为零(用万用表毫伏档测量). 输入一定的电压值 0— 1V 范围内,观察电路的输出电压,调节电阻值,使输出为输入的 5 倍。

6.2。

2 显示电路的调试:先写一个简单的显示程序,烧入单片机内,接好电路,观察显示是否正常. 6.2.3 AD 转换电路的调试:入中断F1 =1?住手加热延时 1S返回F1=1入中断保护现场1S 到?重赋计数初值调用显示恢复现场返回写一个简单的控制 ADC0809 的程序,用示波器观察 ADC0809 所接受到的信号是否正确, 如时钟信号、开始信号等、给定输入端一个电压,给 OE 端持续加高电平,使允许输出,用万用表或者示波器测量各个输出引脚的转换情况,结果与计算值是否相符合.6.2.4 系统的整体调试:将编写好的程序烧入单片机中,接好整体电路,观察输出结果是否正确.调试中显示向来是 99,最后去掉 373 和排阻,显示正常。

主要是因为加的排阻过小,惟独 330 欧姆,而ADC0809 向单片机送数据的时间有很短,所以,即使送入 0 也可能会被单片机认为是 1,所以向来显示 99。

6。

2。

5 系统存在的问题:由于实验调试时,只是观察 led 灯的亮灭变化,没有接上实际的光耦驱动大功率加热器件,而实际测试时, led 灯的亮度不高说明驱动电流太小,于是在驱动光耦时还需加入74LS07 以增大 P1。

2 口的驱动电流,使之能够驱动光耦。

调试的过程中发现所购买的ADC0809 的 IN0 输入端直接与地短接,所以,真正做成的系统用的是通道 1。

又加之调试时去掉了排阻和 74LS373,于是选地址时是直接把地址选择端接成为了高低电平,虽然实现了功能但是与初衷不符。

【1】谢自美电子路线综合设计【2】张毅刚单片机原理及应用本系统所用程序:DIN BIT P1。

0CLK BIT P1。

1JR BIT P1.2F1 BIT 21HORG 0000HSJMP MAINORG 0003HLJMP INT00ORG 000BHLJMP INTDISPORG 0030HMAIN: SETB EASETB EX0SETB ET0MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0Hmov 20h,# 10SETB TR0CLR F1CJ1: MOV R0,#30H 华中科技大学出版社整体 PCB 图PROTEUS 仿真图;中断初始化LCALL D1SLCALL AD0809MOV B,ACJ2: MOV R0,#31HLCALL D1SLCALL AD0809CJNE A,B,COMPLJMP CJ2COMP: CJNE A,#30H,N30 SETB CTROLJMP CJ1N30: JNC COM96SETB JRLJMP CJ1COM96:CJNE A,#96H,N96CLR JRLJMP CJ1N96: JC COMABCLR JRLJMP CJ1COMAB:CJNE A,B,DRLJMP CJ2DR: JC DOWNRISE: SETB JRLJMP CJ1DOWN: CLR JRLJMP CJ1AD0809:MOV DPTR,#0FFF8H LOOP:MOVX @DPTR,AMOV R7,#0AH DELAY:NOPNOPNOPDJNZ R7,DELAYMOVX A,@DPTRMOV DPTR,#TBCDMOVC A,@A+DPTRMOV @R0,ARETDISP0:MOV R1,#40H;数据采集转换;拆分MOV A,@R0MOV B,AANL A,#0F0HSWAP AMOV @R1,Ainc R1MOV A,BANL A,#0FHMOV @R1,ARETDISP1:MOVMOVMOV L1:MOVMOV R0,#40H R1,#50H R7,#2 DPTR,#SEGTAB A,@R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1DJNZ R7,L1RETDISP2:MOV R0,#50HMOV R1,#2L2:MOV A,@R0MOV R7,#8L3:RLC AMOV DIN,CCLR CLKSETB CLKDJNZ R7,L3INC R0DJNZ R1,L2RETDISP:PUSH ACCPUSH Bmov 33h,r0LCALL DISP0LCALL DISP1LCALL DISP2mov r0,33hPOP BPOP ACC ;查表;显示RETD100MS:MOV R3,#200DEL0: MOV R4,#125DEL1: DJNZ R4,DEL1DJNZ R3,DEL0RETD1S: MOV R5,#10DEL2: CALL D100MSDJNZ R5,DEL2RETINT00:JNB F1,LINTCLR JRSJMP RETURNLINT:SETB F1LCALL D1SRETURN:RETIINTDISP:PUSH ACCPUSH BMOV TH0,#3CHMOV TL0,#0B0Hdjnz 20h,backmov 20h,#10LCALL DISPback:POP BPOP ACCRETITBCD:DB 00H,00H,01H,01H,02H,02H,02H,03H DB 03H,04H,04H,04H,05H,05H,05H,06HDB 06H,07H,07H,07H,08H,08H,09H,09HDB 09H,10H,10H,11H,11H,11H,12H,12HDB 12H,13H,13H,14H,14H,14H,15H,15HDB 16H,16H,16H,17H,17H,18H,18H,18HDB 19H,19H,20H,20H,20H,21H,21H,21HDB 22H,22H,23H,23H,23H,24H,24H,25HDB 25H,25H,26H,26H,27H,27H,27H,28HDB 28H,28H,29H,29H,30H,30H,30H,31HDB 31H,32H,32H,32H,33H,33H,34H,34HDB 34H,35H,35H,35H,36H,36H,37H,37HDB 37H,38H,38H,39H,39H,39H,40H,40HDB 41H,41H,41H,42H,42H,43H,43H,43HDB 44H,44H,44H,45H,45H,46H,46H,46HDB 47H,47H,48H,48H,49H,49H,49H,50H DB 50H,50H,51H,51H,51H,52H,52H,53H DB 53H,53H,54H,54H,55H,55H,55H,56H DB 56H,57H,57H,57H,58H,58H,59H,59H DB 59H,60H,60H,60H,61H,61H,62H,62H DB 62H,63H,63H,64H,64H,64H,65H,65H DB 66H,66H,66H,67H,67H,67H,68H,68H DB 69H,69H,69H,70H,70H,71H,71H,71HDBDBDBDBDBDBDBDBDB SEGTAB: END 72H,72H,73H,73H,73H,74H,74H,74H 75H,75H,76H,76H,76H,77H,77H,78H 78H,78H,79H,79H,80H,80H,80H,81H 81H,82H,82H,82H,83H,83H,83H,84H 84H,85H,85H,85H,86H,86H,87H,87H87H,88H,88H,89H,89H,89H,90H,90H90H,91H,91H,92H,92H,92H,93H,93H 94H,94H,94H,95H,95H,96H,96H,96H 97H,97H,98H,98H,98H,99H,99H,99H DB 77H,14H,0B3H,0B6H,0D4HDB 0E6H,0E7H,34H,0F7H,0F6H。

相关主题