《温度控制器的设计与制作.doc》由会员分享,可在线阅读,更多相关《温度控制器的设计与制作.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流温度控制器的设计与制作.精品文档.温度控制器的设计与制作一、功能要求设计并制作一个温度控制器,用于自动接通或断开室内的电加热设备,从而使室内温度达到设定温度要求,并能实时显示室内温度。当室内温度大于等于设定温度时,控制器断开电加热设备;当室内温度比设定温度小2时,控制器接通电加热设备。 控温范围:051 控温精度: 1二、硬件系统设计1硬件系统由七部分组成,即单片机及看门狗电路、温度检测电路、控制输出电路、键盘电路、显示电路、设置温度储存电路及电源电路。 (1)单片机及看门狗电路 根据设计所需的单片机的内部资源(程序存储器的容量、数据存储器的
2、容量及I/O口数量),选择AT89C51-24PC较合适。为了防止程序跑飞,导致温度失控,进而引起可怕的后果,本设计加入了硬件看门狗电路IMP813L,如果它的WDI脚不处于浮空状态,在1.6秒内WDI不被触发(即没有检测到上什沿或下降沿),就说明程序已经跑飞,看门狗输出端将输出低电平到手动复位端,使复位输出端RST发出复位信号,使单片机可靠复位,即程序重新开始执行。(注:如果选用AT89S51,由于其内部已具有看门狗电路,就不需外加IMP813L) (2)温度检测电路 温度传感器采用AD590,它实际上是一个与绝对温度成正比的电流源,它的工作电压为430V,感测的温度范围为-550C+150
3、0C,具有良好的线性输出,其输出电流与温度成正比,即1A/K。因此在00C时的输出电流为273.2A,在1000C时输出电流为373.2A。温度传感器将温度的变化转变为电流信号,通过电阻后转变电压信号,经过运算放大器JRC4558运算处理,处理后得到的模拟电压信号传输给A/D转换部分。A/D转换器选用ADC0804,它是用CMOS集成工艺制成的逐次逼近型模数转换芯片,分辨率8位,转换时间100s,基准电压05V,输入模拟电压05V。 (3)控制输出电路 控制信号由单片机的P1.4引脚输出,经过光耦TLP521-1隔离后,经三极管C8550直接驱动继电器WJ108-1C-05VDC,如果所接的电
4、加热设备的功率2KW,则可利用继电器的常开触点直接控制加热设备,如果加热设备的功率2KW,可以继电器控制接触器,由接触器直接控制加热设备。 (4)键盘电路 键盘共有四个按键,分别是S1(设置)、S2(+)、S3(-)、S4(储存)。通过键盘来设置室内应达到的温度,键盘采用中断方式控制。 (5)显示电路 显示电路由两位E10501_AR数码管组成,由两片74LS164驱动,实现静态显示,74LS164所需的串行数据和时钟由单片机的P3.0和P3.1提供。对于学过“串行口”知识的班级,实习时,可以采用串行口工作于方式0,即同步移位寄存器的输出方式,通过串行口输出显示数据(实时温度值或设置温度值);
5、对于没学过“串行口”知识的班级,实习时,可以采用模拟串行口的输出方式,实现显示数据的串行输出。 (6)设置温度存储电路 为了防止设定温度在电源断电后丢失,此设计加入了储存电路,储存器选用具有I2C总线功能的AT24C01或FM24C01均可。每次通过键盘设置的室内设定温度都通过储存器储存起来,即使是电源断电,储存器存储的设定温度也不丢失,在电源来电后,单片机自动将设定温度从储存器中读出,一方面避免了断电后的更新设置工作;另一方面也保护了控制器控制的安全性,可靠性。 (7)电源电路 电源采用了串联型集成稳压器电路,电源有两路输出,一路由L7805CV稳压输出+5V,除JRC4558、AD590外
6、,电路的其它部分均由+5V供电;一路由MC78L12和LM79L12稳压输出12V,给JRC4558、AD590供电。当然这里还可以选择现成的开关型稳压电源,但它的价格相对来说要高一些。2硬件系统电路原理图: 3材料表型号数量对应元件序号种类3301R26电阻47019R1R17、R28、R298202R20、R251K2R22、R232K1R273K2R21、R2410K2R18、R192K2RP3、RP4电位器5K2RP1、RP210P1C9瓷片电容30P2C17、C18100/25V4C1、C2、C3、C4电解电容470/16V2C5、C61N41482D2、D3整流二极管3.9V/1W
7、1D1稳定二极管红色、32D4、D5发光二极管DB1071ZLQ1整流桥KBP2061ZLQ2C85501Q1三极管12M1Y1晶振74LS1642U11、U12ICAD5901U9ADC08041U5AT24C011U6AT89C511U4IMP813L1U7JRC45581U8L7805CV1U3LM79L121U2MC78L121U1TLP521-11U10E10501-AR2DS1、DS2数码管WJ108-1C-05VDC1K1继电器220V/8V/215V/2.5W1T1电源变压器VH-22CN1、CN2连接座三、软件系统设计 1温控系统采用模块化程序结构,可分为四大模块: (1)系
8、统初始化模块:完成变量的设定、中断入口的设定、各变量赋初值、堆栈设定、读设置温度、定时器T0工作方式及初值的设定并启动、开中断。 (2)循环模块:完成A/D转换及温度值的换算、温度值显示、温度比较、看门狗的触发。 (3)定时器T0中断模块:完成1秒的定时。 (4)外部中断INT1中断模块:完成键盘对温度值的设定。 2软件流程框图: 3参考程序:;温度控制器源程序s1 bit p1.0 ;s1按键控制口位s2 bit p1.1 ;s2按键控制口位 s3 bit p1.2 ;s3按键控制口位s4 bit p1.3 ;s4按键控制口位wdkz bit p1.4 ;温度控制口位wdi bit p1.5
9、 ;看门狗触发端sda bit p1.7 ;AT24C01的数据线scl bit p1.6 ;AT24C01的时钟线drxd bit p3.0 ;74LS164数据dtxd bit p3.1 ;74ls164时钟intr bit p3.2 ;A/D转换结束信号控制口位szled bit p3.5 ;设置LEDsbz bit 00h ;秒标志位swwd equ 30h ;十位温度的BCD码存储单元gwwd equ 31h ;个位温度的BCD码存储单元adpj equ 32h ;A/D转换后的平滑滤波值存储单元szwd equ 33h ;设置温度值存储单元adwz equ 34h ;5次A/D值的
10、初始位置,即34h38hmjsz equ 39h ;1秒记数值(50ms次数)smjsz equ 3ah ;3秒记数值(200ms次数)shmjsz equ 3bh ;10秒记数值(200ms次数) org 0000h ljmp start org 000bh ljmp timezd ;T0中断 org 0013h ljmp temszzd ;INT1中断 org 0030hstart: clr sbz mov mjsz,#20 mov smjsz,#15 mov shmjsz,#50 mov sp,#60h ;-赋初值 ;lcall durom mov szwd,a ;-读设置温度 mov
11、tmod,#01h mov th0,#3ch mov tl0,#0b0h setb tr0 ;-定时器T0的设定及启动 setb it1 setb ex1 setb et0 setb ea ;-开中断(INT1和T0中断)cyc: lcall adzh mov a,adpj lcall bcdzh lcall disp lcall tembj jnb sbz,$ clr sbz lcall wdog sjmp cyc;模数转换子程序名:adzh;入口参数:无;出口参数:adpjadzh: push psw push acc mov r1,#adwz mov r2,#5adzh1: movx r
12、0,a jb intr,$ movx a,r0 mov r1,a inc r1 djnz r2,adzh1 ;-5次A/D值完成 mov r0,#adwz mov r2,#5 lcall paix ;-5次A/D值排序 mov r5,#00h mov r6,#00h mov r7,#3 mov a,#adwz add a,#1 mov r1,ajiafa: mov a,r1 add a,r5 mov r5,a mov a,r6 addc a,#0 mov r6,a inc r1 djnz r7,jiafa ;-去极值后,余下的3个值求和(和在r6r5中)chufa: mov r3,#16 mo
13、v r4,#30 mov r7,#0 mov a,r5 add a,r5 mov r5,a mov a,r6 addc a,r6 mov r6,a mov a,r5 add a,#15 mov r5,a mov a,r6 addc a,#0 mov r6,a ;-为四舍五入作准备即和值乘以2加上15除以30chufa1: clr c mov a,r5 rlc a mov r5,a mov a,r6 rlc a mov r6,a mov a,r7 rlc a subb a,r4 jnc chufa2 add a,r4 sjmp chufa3chufa2: inc r5chufa3: mov r7
14、,a djnz r3,chufa1 mov adpj,r5 ;-完成温度平均值 pop acc pop psw ret;排序子程序名:paix(从大到小);入口参数:R0指向数据存储区的首地址,R2存放数据长度paix: push psw push accpaix0: mov a,r0 mov r1,a mov a,r2 mov r5,a dec r5 clr f0paix1: mov a,r1 inc r1 clr c subb a,r1 jnc paix2 setb f0 add a,r1 xch a,r1 dec r1 mov r1,a inc r1paix2: djnz r5,paix
15、1 jnb f0,paix3 clr f0 dec r2 cjne r2,#01h,paix0paix3: pop acc pop psw ret;T0中断程序名:timezd;出口参数:sbittimezd: mov th0,#3ch mov tl0,#0b0h djnz mjsz,timezd1 mov mjsz,#20 setb sbztimezd1: reti;温度设置中断程序名:temszzd;入口参数:szwd;出口参数:szwdtemszzd: push psw push acc clr rs1 setb rs0 clr tr0 mov a,szwd lcall bcdzh lc
16、all disptemsz0: lcall wdog lcall delay200ms jb s1,temsz0a ljmp temsz0btemsz0a: ljmp ret0temsz0b: djnz smjsz,temsz0 mov smjsz,#15 clr szledwdog1: lcall wdog lcall delay200ms jnb s1,wdog1 ljmp temsz2temsz1: lcall delay200ms djnz shmjsz,temsz2 mov shmjsz,#50 ljmp ret0temsz2: jb s2,temsz3 lcall delay20m
17、s jb s2,temsz3wdog2: lcall wdog lcall delay200ms jnb s2,wdog2 inc szwd mov a,szwd cjne a,#52,temsz2a mov a,#51 mov szwd,atemsz2a: lcall bcdzh lcall disp mov shmjsz,#50 sjmp temsz2temsz3: jb s3,temsz4 lcall delay20ms jb s3,temsz4wdog3: lcall wdog lcall delay200ms jnb s3,wdog3 dec szwd mov a,szwd cjne
18、 a,#255,temsz3a mov a,#0 mov szwd,atemsz3a: lcall bcdzh lcall disp mov shmjsz,#50 sjmp temsz2temsz4: jb s4,temsz1 lcall delay20ms jb s4,temsz1wdog4: lcall wdog lcall delay200ms jnb s4,wdog4 lcall xieromret0: setb szled mov a,adpj lcall bcdzh lcall disp lcall wdog setb tr0 pop acc pop psw reti;bcd码转换
19、子程序名:bcdzh;入口参数:a;出口参数:swwd、gwwdbcdzh: push psw push b mov b,#10 div ab mov swwd,a mov gwwd,b pop b pop psw ret;温度比较子程序名:tembj;入口参数:adpj、szwd;出口参数:wdkztembj: push psw push acc mov a,adpj cjne a,szwd,tembj0tembj0: jc tembj1 setb wdkz sjmp tembj3tembj1: add a,#2 cjne a,szwd,tembj2tembj2: jnc tembj3 cl
20、r wdkztembj3: pop acc pop psw ret;读ROM子程序名:durom;出口参数:adurom: push psw clr sda ;启动AT24C01 mov a,#0a0h lcall a_send mov a,#08h lcall a_send setb scl setb sda clr sda mov a,#0a1h lcall a_send lcall a_receive clr sda nop nop setb scl nop nop setb sda pop psw ret;字节发送子程序名:a_send;入口参数:aa_send: push psw m
21、ov r0,#08ha_send1: clr scl rlc a mov sda,c nop setb scl nop nop nop djnz r0,a_send1 clr scl nop nop nop setb scla_loop: mov c,sda jc a_loop clr scl pop psw ret;字节接收子程序名:a_receive;出口参数:aa_receive: push psw mov r0,#08ha_rec: setb scl nop nop mov c,sda rlc a clr scl nop nop djnz r0,a_rec setb sda nop n
22、op setb scl nop nop clr scl pop psw ret;写ROM子程序名:xierom;入口参数:szwdxierom: push psw push acc setb scl setb sda clr sda mov a,#0a0h lcall a_send mov a,#08h lcall a_send mov a,szwd lcall a_send clr sda nop nop setb scl nop nop setb sda lcall delay50ms pop acc pop psw ret;延时200mS子程序名:delay200msdelay200ms
23、: mov r7,#4del1: mov r6,#200del2: mov r5,#123 nop djnz r5,$ djnz r6,del2 djnz r7,del1 ret;延时50ms子程序名:delay50msdelay50ms:mov r7,#200dela1: mov r6,#123 nop djnz r6,$ djnz r7,dela1 ret;延时20ms子程序名:delay20msdelay20ms:mov r7,#80delay1: mov r6,#123 nop djnz r6,$ djnz r7,delay1 ret;看门狗子程序名:wdogwdog: clr wdi
24、 setb wdi clr wdi ret;显示子程序disp;入口参数:swwd、gwwddisp: push psw push acc push b mov dptr,#tab mov a,swwd cjne a,#00h,n0 mov a,#0ffh ajmp n1n0: movc a,a+dptrn1: lcall zjfs mov a,gwwd movc a,a+dptr lcall zjfs pop b pop acc pop psw retzjfs: mov r0,#08h clr czjfs1: rrc a mov drxd,c setb dtxd nop nop nop no
25、p nop nop clr dtxd nop nop nop nop nop nop djnz r0,zjfs1 rettab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end四、系统调试1 硬件系统的调试(1)看温度检测电路部分,图中标有Vi1、Vi2、Vo ,由运放构成的差分比例运算电路可得: 搭接电路前,要准确调整RP3,保证;要准确调整RP4,保证;保证了上述两项,即保证了。电路搭接完毕后,上电微调RP3,保证在时,;再微调RP4,保证在时,。为了避免调整的麻烦,也可将RP3和RP4用1K的固定电阻代替。 (2)调整RP1,保证A
26、DC0804的9脚基准电压为2.56V。 (3)将AD590放入冰水混合物中,注意不要让裸露的引脚部分沾水,调整RP2,保证V。 2软件系统的调试 先各个模块独立调试,最后各个模块连在一起调试。 3整机调试 (1)键盘调试 当按下S1键3S,设置灯D4点亮,进入设置状态,数码管显示当前设置温度。在设置状态下,每按一下S2,温度设置值加1,最高设置到51。在设置状态下,每按一下S3,温度设置值减1,最低设置到0。在设置状态下,按一下S4,将温度设置值存储于AT24C01中,设置灯熄灭,退出设置状态。如果在设置状态下,S2、S3、S4在10秒内无任何操作,系统将自动退出设置状态,设置温度不进行保存。不在设置状态,按下S2、S3、S4键无任何反应。 (2)设置温度的存储调试 进入设置状态,将设置温度重新设值,然后按S4键保存。将温度控制器断电,再通电,再进入设置状态,看重新设定的温度值是否存在,如存在就说明设置温度的存储正常,否则就要检查硬件和软件两部分,直到存储正常为止。 (3)温控调试 用温控器控制电热水壶烧水,将AD590置于电水壶中,注意不要让裸露的引脚部分沾水,当水的温度没有达到设定温度时,温控器将接通电热水壶的电源,当水的温度达到设定温度时,温控制器将断开电热水壶的电源,当热水的温度降到比设定温度小2时,温度控制器又重新接通电热水壶的电源,如此反复。