用DS18B20温度模块做的温控系统,如何加入24C02做断电保护,求C程序指导

用DS18B20温度模块做的温控系统,如何加入24C02做断电保护,求C程序指导,第1张

#include "REG51H"

#include "INTRINSH"

typedef unsigned char BYTE;

typedef unsigned short WORD;

sbit SCL = P3^4; //AT24C04的时钟

sbit SDA = P3^5; //AT24C04的数据

BYTE BUF[16]; //数据缓存区

BYTE code res[6] _at_ 0x23;

BYTE code TESTDATA[] =

{

0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,

0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF

};

void Delay5us();

void Delay5ms();

void AT24C04_Start();

void AT24C04_Stop();

void AT24C04_SendACK(bit ack);

bit AT24C04_RecvACK();

void AT24C04_SendByte(BYTE dat);

BYTE AT24C04_RecvByte();

void AT24C04_ReadPage();

void AT24C04_WritePage();

void main()

{

AT24C04_WritePage();

Delay5ms();

AT24C04_ReadPage();

while (1);

}

/

向AT24C04写1页(16字节)数据

将TESTDATA开始的16个测试数据写如设备的00~0F地址中

/

void AT24C04_WritePage()

{

BYTE i;

AT24C04_Start(); //起始信号

AT24C04_SendByte(0xa0); //发送设备地址+写信号

AT24C04_SendByte(0x00); //发送存储单元地址

for (i=0; i<16; i++)

{

AT24C04_SendByte(TESTDATA[i]);

}

AT24C04_Stop(); //停止信号

}

/

从AT24C04读取1页(16字节)数据

将设备的00~0F地址中的数据读出存放在DATA区的BUF中

/

void AT24C04_ReadPage()

{

BYTE i;

AT24C04_Start(); //起始信号

AT24C04_SendByte(0xa0); //发送设备地址+写信号

AT24C04_SendByte(0x00); //发送存储单元地址

AT24C04_Start(); //起始信号

AT24C04_SendByte(0xa1); //发送设备地址+读信号

for (i=0; i<16; i++)

{

BUF[i] = AT24C04_RecvByte();

if (i == 15)

{

AT24C04_SendACK(1); //最后一个数据需要会NAK

}

else

{

AT24C04_SendACK(0); //回应ACK

}

}

AT24C04_Stop(); //停止信号

}

/

延时5微秒

/

void Delay5us()

{

_nop_();

_nop_();

}

/

延时5毫秒

不同的工作环境,需要调整此函数

/

void Delay5ms()

{

WORD n = 560;

while (n--);

}

/

起始信号

/

void AT24C04_Start()

{

SDA = 1; //拉高数据线

SCL = 1; //拉高时钟线

Delay5us(); //延时

SDA = 0; //产生下降沿

Delay5us(); //延时

SCL = 0; //拉低时钟线

}

/

停止信号

/

void AT24C04_Stop()

{

SDA = 0; //拉低数据线

SCL = 1; //拉高时钟线

Delay5us(); //延时

SDA = 1; //产生上升沿

Delay5us(); //延时

}

/

发送应答信号

入口参数:ack (0:ACK 1:NAK)

/

void AT24C04_SendACK(bit ack)

{

SDA = ack; //写应答信号

SCL = 1; //拉高时钟线

Delay5us(); //延时

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

/

接收应答信号

/

bit AT24C04_RecvACK()

{

SCL = 1; //拉高时钟线

Delay5us(); //延时

CY = SDA; //读应答信号

SCL = 0; //拉低时钟线

Delay5us(); //延时

return CY;

}

/

向IIC总线发送一个字节数据

/

void AT24C04_SendByte(BYTE dat)

{

BYTE i;

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1; //移出数据的最高位

SDA = CY; //送数据口

SCL = 1; //拉高时钟线

Delay5us(); //延时

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

AT24C04_RecvACK();

}

/

从IIC总线接收一个字节数据

/

BYTE AT24C04_RecvByte()

{

BYTE i;

BYTE dat = 0;

SDA = 1; //使能内部上拉,准备读取数据

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1;

SCL = 1; //拉高时钟线

Delay5us(); //延时

dat |= SDA; //读数据

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

return dat;

}

基本上是:风机,压缩机的控制。启停的标准是设定温度与外界实际温度的比较结果。你这个如果不做出东西的话,程序应该很简单,要出实际控制电路版的话需要外围的一些传感器驱动程序,加上就可以了

上传内容

仅供学习与参考

摘要

本检测系统硬件设计以AT89C51单片机为核心,用温度传感器DS18B20实现温度控制,用数码管显示实际温度和预设温度,制作数字温度计,并可以实现温度预警控制。

单片机系统的软件编程采用单片机汇编进行编程。应用软件采用KEIL和PROTEUS仿真软件模拟实现控制过程。

温度控制系统是基于单片机的计算机检测技术的软硬件开发和面向对象的高级可视化程序开发的有机结合。对温度控制的发展有很大的好处。如果投入生产,不仅会创造良好的经济效益,还可提高温控的简单化。

关键词 单片机;DS18B20;调节;温度

Abstract

This examination system hardware design take at89C51 monolithic integrated circuit as a core, realizes the temperature control with temperature sensor DS18B20, Demonstrates the actual temperature and the preinstall temperature with the nixie tube,manufactures the simple intelligence temperature control system - - digit thermometer,And may realize the temperature early warning control

The monolithic integrated circuit system's software programming uses the monolithic integrated circuit assembly to carry on the programming The superior machine application software uses KEIL and the PROTEUS simulation software simulation realizes the controlled process

This article develops the intelligence temperature control system is based on monolithic integrated circuit's computer examination technology software and hardware development and face the object high-level visualization procedure development organic synthesis Has the very big advantage to temperature control's development If place in operation, not only will create the good economic efficiency, but may also propose the simplification which the high temperature will control

Keywords microcontroller;DS18B20;measure;temperture

目录

摘要 I

Abstract II

第1章 绪论 4

11 温度传感器发展概述 4

12 单片机技术简介 4

13 温度检测技术的发展 5

第2章 温度传感器的选择 8

21 测温方法 8

22 DS18B20简介 9

第3章 软硬件设计 10

31 单片机的选择 10

32 温度传感器的选择 10

33 仿真软件的选择 11

34 编译软件的选择 11

35 PROTEUS 仿真电路图 12

第4章 汇编语言程序 13

41 主程序和温度值转换成显示值子程序的流程图 13

42 DS18B20温度子程序和显示子程序的流程图 14

43 汇编语言源程序 14

第1章 绪论

11 温度传感器发展概述(略)

12 单片机技术简介(略)

13 温度检测技术的发展(略)

第2章 温度传感器的选择

21 测温方法

温度是一个很重要的物理参数,钢铁的冶炼、石油的分馏、塑料的合成以

及农作物的生长等等都必须在一定的温度范围内进行,各种构件、材料的体积、电阻、强度以及抗腐蚀等物理化学性质,一般也都会随温度而变化。人们利用各种能源为人类服务,也往往是使某些介质通过一定的温度变化来实现的。所以在生产和化学试验中,人们经常会碰到温度测量的问题。

温度传感器是检测温度的器件,其种类最多,应用最广,‘发展最快。众所周知,日常使用的材料及电子元件大部分都随温度而变化,资料5中介绍了作为实用传感器必须满足的一些条件:

(1)在使用温度范围内温度特性曲线要求达到的精度能符合要求:为了能

在较宽的温度范围内进行检测,温度系数不宜过大,过大了就难以使用,但对

于狭窄的温度范围或仅仅定点的检测,其温度系数越大,检测电路也能越简单。

(2)为了将它用于电子线路的检测装置,要具有检测便捷和易于处理的特

性。随着半导体器件和信号处理技术的进步,对温度传感器所要求的输出特性

应能满足要求。

(3)特性的偏移和蠕变越小越好,互换性要好。

(4)对于温度以外的物理量不敏感。

(5)体积小,安装方便:为了能正确地测量温度,传感器的温度必须与被

测物体的温度相等。传感器体积越小,这个条件越能满足。

(6)要有较好的机械、化学及热性能。这对于使用在振动和有害气体的环

境中特别重要。

(7)无毒、安全以及价廉、维修、更换方便等。

温度测量的方法很多,根据温度传感器的使用方式,通常分为接触式测温

法与非接触式测温法两类。

(1)接触式测温法

由热平衡原理可知,两个物体接触后,经过足够长时间的热交换达到热平

衡,则它们的温度必然相等。如果其中之一为温度计,就可以用它对另一个物体实现温度测量,这种测温方式称为接触式测温法。接触式测温的优点显而易

见,它简单,可靠,测量精度高,但同时也存在不足:温度计要与被测物体有

良好的热接触,并充分换热,从而产生了测温滞后现象;测温组件可能与被测

物体发生化学反应;由于受到耐高温材料的限制,接触式测温仪表不可能应用

于很高温度的测量。

(2)非接触式测温法

由于测量组件与被测物体不接触,利用物体的热辐射能随温度变化的原理

测定物体温度。因而测量范围原则上不受限制,测温速度较快,还可以在运动

中测量。这种测温方式称为非接触式测温法。它的特点是:不与被测物体接触,也不改变被测物体的温度分布,热惯性小。从原理上看,用这种方法测温无上限。通常用来测定1000℃以上的移动、旋转或反应迅速的高温物体的温度或表面温度。

22 DS18B20简介

221技术性能描述

单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围 -55℃~+125℃,固有测温分辨率05℃。支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温。工作电源: 3~5V直流电源。

在使用中不需要任何外围元件,测量结果以9~12位数字量方式串行传送。适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温。

222应用范围

该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域,轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。

223接线说明

特点有一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为30 V至55 V 无需备用电源 测量温度范围为-55 ° C至+125 ℃ 。华氏相当于是-67 ° F到257华氏度 -10 ° C至+85 ° C范围内精度为±05 ° C。

温度传感器可编程的分辨率为9~12位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个DS18B20可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。6

第3章 软硬件设计

31 单片机的选择

单片机系统由单片机AT89C51、74HC245等芯片构成,完成数据采集、处理、通讯以及所有的功能,是整个系统的核心模块。

单片机是整个系统的核心,对系统起监督、管理、控制作用,并进行复杂的信号处理,产生测试信号及控制整个检测过程。所以在选择单片机时,参考了以下标准。

(1)运行速度。单片机运行速度一般和系统匹配即可。

(2)存储空间。单片机内部存储器容量,外部可以扩展的存储器(包括1/0口)空间。

(3)单片机内部资源。单片机内部存储资源越多,系统外接的部件就越少,这可提高系统的许多技术指标。

(4)可用性。指单片机是否能很容易地开发和利用,具体包括是否有合适的开发工具,是否适合于大批量生产:、性能价格比,是否有充足的资源,是否有现成的技术资源等。

(5)特殊功能。一般指可靠性、功耗、掉电保护、故障监视等。

从硬件角度来看,与MCS-51指令完全兼容的新一一代AT89CXX系列机,比在片外加EPROM才能相当的8031-2单片机抗干扰性能强,与87C51-2单片机性能相当,但功耗小。程序修改直接用+5伏或+12伏电源擦除,更显方便、而且其工作电压放宽至27伏一6伏,因而受电压波动的影响更小,而且4K的程序存储器完全能满足单片机系统的软件要求。故AT89C51单片机是构造本检测系统的更理想的选择。本系统选用ATMEL生产的AT89C51单片机,其特性如下:

(1) 4K字节可编程闪速程序存储器;1000次循环写/擦

(2)全静态工作:OHz-24MHz

(3)三级程序存储器锁定

(4) 128 X 8位内部数据存储器,32条可编程1/0线

(5)两个十六位定时器/计数器,六个中断源

(6)可编程串行通道,低功耗闲置和掉电模式

该器件采用了ATMEL的高密度非易失性的存储器工艺,并且可以与工业标准的MCS-51指令集和输出管脚兼容。由于将多功能8位CPU与闪速式存储器组合在单个芯片中,AT89C51是一种高效的微控制器,为很多嵌入式系统提供了高灵活性且价廉的方案。

32 温度传感器的选择

DS18B20是美国达拉斯半导体公司的产品,与其他产品相比较它的性能有如下特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为00625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。所以在本设计中,我采用了DS18B20作为温度传感器。8

33 仿真软件的选择

Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows *** 作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C uVision2、MPLAB等软件。9

34 编译软件的选择

KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编 器,实时 *** 作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。

C51 V7版本是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三 方开发工具。因此,C51 V7版本无疑是8051开发用户的最佳选择。

uVision2集成开发环境具有如下功能:

一、项目管理

工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。

一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。

uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定 微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速(math accelerator)的特 性。

uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。

二、集成功能

uVision2的强大功能有助于用户按期完工。

1集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来优化用户变数存储器。

2文件寻找功能:在特定文件中执行全局文件搜索。

3工具菜单:允许在V2集成开发环境下启动用户功能。

4可配置SVCS接口:提供对版本控制系统的入口。

5PC-LINT接口:对应用程序代码进行深层语法分析。

6Infineon的EasyCase接口:集成块集代码产生。10

35 PROTEUS 仿真电路图

图1是基于单片机的智能温度检测系统电路原理图。控制加热热水器电源电路用LED灯模拟代替,取消无水报警电路。装上水后接通电源,下方LED数码管显示当前水温。上方LED数码管显示预设水温。 *** 作“个位”键和“十位”键可预设水温(如99℃)控制点。该电路具有如下功能:

(1) 测量水温,精度为1℃,范围为0~99℃;

(2) 三位数码管实时显示水温;

(3) 可预设水温(如99℃)控制点,当水加热到该水温时自动断电,当水温低于该水温时自动上电加热;

(4) 无水自动断电和报警功能(略)。

图1 基于单片机的智能温度检测系统电路原理图

第4章 汇编语言程序

41 主程序和温度值转换成显示值子程序的流程图

42 DS18B20温度子程序和显示子程序的流程图

43 汇编语言源程序

ORG 0

LJMP MAIN1

ORG 0003H

LJMP ZINT0

ORG 13H

LJMP ZINT1

TMPH: EQU 28H

FLAG1: EQU 38H

DATAIN: BIT P37

MAIN1: SETB IT0

SETB EA

SETB EX0

SETB IT1

SETB EX1

SETB P36

SETB P32

MOV 74H,#0

MOV 75H,#0

MOV 76H,#0

MOV 77H,#0

MAIN: LCALL GET_TEMPER

LCALL CVTTMP

LCALL DISP1

AJMP MAIN

INIT_1820:

SETB DATAIN

NOP

CLR DATAIN

MOV R1,#3

TSR1: MOV R0,#107 ;保持642ms

DJNZ R0,$

DJNZ R1,TSR1

SETB DATAIN ;释放DS18B20总线

NOP

NOP

NOP

MOV R0,#25H

TSR2: JNB DATAIN,TSR3

DJNZ RO,TSR2

CLR FLAG1

SJMP TSR2

TSR3: SETB FLAG1 ;标志位置1,证明DS18b20存在

CLR P17

MOV R0,#117

TSR6: DJNZ R0,$

TSR7: SETB DATAIN

RET ;延时254us

GET_TEMPER:

SETB DATAIN

LCALL INIT_1820

JB FLAG1,TSS2

NOP

RET ;DS18B20检测程序

TSS2: MOV A,#0CCH ;跳过ROM,使用存储器

LCALL WRITE_1820

MOV A,#44H ;对RAM *** 作,开始温度转换

LCALL WRITE_1820

ACALL DISP1

LCALL INIT_1820

MOV A,#0CCH

LCALL WRITE_1820

MOV A,#0BEH

LCALL WRITE_1820

LCALL READ_1820;读暂存器中的温度数值

RET

WRITE_1820:

MOV R2,#8

CLR C

WR1: CLR DATAIN

MOV R3,#6

DJNZ R3,$

RRC A

MOV DATAIN,C

MOV R3,#23

DJNZ R3,$

SETB DATAIN

NOP

DJNZ R2,WR1

SETB DATAIN

RET

READ_1820:

MOV R4,#2

MOV R1,#29H

RE00: MOV R2,#8

RE01: CLR C

SETB DATAIN

NOP

NOP

CLR DATAIN

NOP

NOP

NOP

SETB DATAIN

MOV R3,#9

RE10: DJNZ R3,RE10

MOV C,DATAIN

MOV R3,#23

RE20: DJNZ R3,RE20

RRC A

DJNZ R2,RE01

MOV @R1,A

DEC R1

DJNZ R4,RE00

RET

CVTTMP: MOV A,TMPH

ANL A,#80H ;判断温度正负,正不变,负则取反加1

JZ TMPC1

CLR C

MOV A,TMP1

CPL A

ADD A,#1

MOV TMP1,A

MOV A,TMPH

CPL A

ADDC A,#0

MOV TMPH,A

MOV 73H,#0BH

SJMP TMPC11

TMPC1: MOV 73H,#0AH

TMPC11: MOV A,TMP1

ANL A,#0FH

MOV DPTR,#TMPTAB

MOVC A,@A+DPTR

MOV 70H,A

MOV A,TMP1

ANL A,#0FH

SWAP A

ORL A,TMPL

B2BCD: MOV B,#100

DIV AB

JZ B2BCD1

MOV 73H,A

B2BCD: MOV A,#10

XCH A,B

DIV AB

MOV 72H,A

MOV 71H,B

TMPC12: NOP

DISBCD: MOV A,73H

ANL A,#0FH

CJNE A,#1,DISBCD0

SJMP DISBCD1

DISBCD0: MOV A,72H

ANL A,#0FH

JNZ DISBCD1

MOV A,73H

MOV 72H,A

MOV 73H,#0AH

DISBCD1: RET

TMPTAB: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9

DISP1: MOV R1,#70H

MOV R0,#74H

MOV R5,#0FEH ;显示实际温度

PLAY: MOV P1,#0FFH

MOV A,R5

MOV P2,A

MOV A,@R1

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P1,A

MOV P1,A

MOV A,@R0

MOVC A,@A+DPTR

MOV P0,A

MOV A,R5

JB ACC1,LOOP1

JB P17

CLR P17

CLR P07 ;显示小数点

LOOP1: LCALL DL1MS

INC R1

INC R0

MOV A,R5

JNB ACC3,ENDOUT

RL A

MOV R5,A

MOV A,73H

CJNE A,#1,DD2

SJMP LEDH

DD2: MOV A,72H

CJNE A,72H,DDH

SJMP DD1

DDH: JNE PLAY1

LEDH: CLR P36

SJMP PLAY

PLAY1: SETB P36

SJMP PLAY

ENDOUT: MOV P1,#0FFH

MOV P2,#0FFH

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H,0FFH,0BFH

DL1MS: MOV R6,#14H

DL1: MOV R7,#100

DJNZ R7,$

DJNZ R6,DL1

RET

ZINT0: PUSH A

INC 75H

MOV A,,75H

CJNE A,#10,ZINT01

MOV 75H,#0

ZINT01: POP A

RETI

ZINTT1: PUSH A

INC 76H

MOV A,76H

CJNE A,#10,ZINT11

MOV 76H,#0

ZINT11: POP A

RETI

keyflag应该是判断某个按键按了几次,不安的时候为0

if(KeyFlag == 0)

{

}

按一次时执行

else if(KeyFlag == 1)

{

if(BUTTON_add == 0 && KeyLock ==0)

{

}

if(BUTTON_reduce == 0 && KeyLock ==0)

{

}

按二次时执行

else if(KeyFlag == 2){

if(BUTTON_add == 0 && KeyLock ==0)

{

}

if(BUTTON_reduce == 0 && KeyLock ==0)

{

}

一楼正解,主要按键扩展标志是用来节省资源的,用最少的按键实现最多的功能!

水温自动控制系统

该系统为一温度控制系统,由于无法确切确定电炉的物理模型,我们采用作t-T(时间-温度)曲线的方法,通过数值分析用三阶多项式拟合t-T曲线。由于采用计算机递归计算,阶数的多少不影响计算的复杂性,所以用三阶多项式拟合。设t(m)=a3m3+a2m2+a1m+a0式中t为时间,m为温度,a3、a2、a1、a0可以通过t-T曲线求出。由于多项式不能完全符合t-T曲线,存在着误差,假设误差为e,m是t-T曲线中的温度,对该误差采用回归递推AR模型进行运算。该模型形式如下:

e(m)=p1e(m-1)+p2e(m-2)+De(m-3)

其中De(m)为白噪声。对此式进行最小二乘法估计,求出参数p1、p2。为简化起见,忽略De(m)得

通过矩阵运算可以求出p1、p2的值,得出整个系统的数学模型为:t(m)+e(m)。在温度控制程序中通过递推即可达到控制目的。实际系统中,温控变量与环境温度有关,所以对不同的设定值,a3、a2、a1、a0可以适当调整,经过程序验证,该方法获得比较理想的效果。

三、方案的比较和实现

1、硬件系统设计

由前面的理论分析可见,本系统是一个典型的闭环控制系统。通过控制算法,对被控制对象中的加热元件电炉丝的平均功率进行控制,达到对水温控制的目的。系统中采用一片Intel8031单片处理器作为主控制器,前向通道为测温部分,后向通道为控制部分。通过按键和数码显示进行人机交互,通过RS232串行通信接口同PC联机进行温度图形化显示打印。

⑴ 测温部分 用于采集被控对象的温度参数。测温部分由温度电压转换,小信号放大及A/D转换三部分组成。

实际情况下,一般IC温度传感器的精度只有07℃~1℃,不符合本题目的静态误差02℃的要求。而电阻传感器的精度可以达到01℃,符合本题目要求。温度传感器是整个控制系统获取被控对象特征的重要部件,这里采用Cul00铜热阻作为温度传感器,其特征参数实测如图1所示。由特性曲线可见,这种热阻探头在系统测量的温度范围内线性特性良好,适用于温度采样使用。

图2 测量分部电路

将温度的变化转变为电压的变化,经过放大后送往A/D转换器转化为数字量以进行处理。Rx为传感器热阻,由电桥实现温度到电压的转换,由运放IC3完成信号的放大,由运放IC4完成信号的调整(具体电路见图2)。

设输入IC3的2、3端电压分别对应为Vi2、Vi1那么

Vout=K(R6/R3)(Vi2-Vi1)

Vout=K(R6/R3)[VrefRw2/(Rw2+R1)-VrefRx/(R2+Rx)]

其中Rx为传感器热阻值,Vref为基准源电压,K为调整系数。

由于Rl>>Rw2(如Rl=100kΩ,Rw2=1kΩ),同样R2>>Rx(如R2=100kΩ,Rx=1kΩ),因而Vout=K(R6/R4)Vref(Rw2-Rx)R2,在后级的A/D满刻度时,那么Vout=5V。

实际电路调节中,已经确定R6,置传感器于0℃环境,调节Rw2,使Vout=0V;置传感器于100℃环境,调节Rw6,使Vout=5V,则完成前向模拟通道的调整。

前向模拟通道的抗干扰性及低漂移、稳定性决定于Vref的稳定性和运算放大器的特性值。系统中采用LM336-50作为Vref的基准源,LM336-50具有较低的电压漂移,稳定性可达20×10-6。运算放大器利用OP07超低漂移高精度运算,其共模抑制比达120dB,增益达104dB,温漂仅为07mV/℃,并且还具有小偏置电流、失调电流等特性,对于保证小信号的低噪音采集,起到了决定性的作用。

A/D采用一片砌ICL7109。ICL7109为双积分型模数转换器,12位输出,分辨率为5/4096=000122V。积分型A/D的抗干扰性优于逐次积分型A/D(如ADC0809)。在该系统中使用ICL7109保证了对采集入的变量的准确量化。本题中测试范围为40℃~90℃,温度的最小分辨率为02℃(发挥部分)。这样,整个系统的温度采用点数为50×5=250。采用一般8位A/D,分辨率为1/256,可以满足要求,但考虑到边界温度测定、系统分布参数影响、温度扩展等因素,8位A/D为临界应用,系统的线性度和准确度都难以得以保证。故我们采用12位A/D转换器。积分型A/D的缺点是转换时间长,ICL7109的最大转换次数为30次/秒。在数字控制系统中,采样周期的选择与系统的稳定性密切相关,在稳定条件下,采样频率fs应为系统最高频率的两倍,即按照采样定理,应该有fs≥2fmax。但采样周期也不应该过小,即选择与被控对象有关,典型情况下,在温度采样中,采样周期一般为10s~20s,因此这里ICL7109的采样速率完全可以胜任。具体电路见图3。

采用稳定的参考电压源,低漂运放和高精度、抗干扰的A/D,并结合电路的正确设计,保证了测温部分的精度和可靠性。

⑵ 控制部分 用于在闭环控制系统中对被控对象实施控制,被控对象为电炉丝,采用对加在电炉丝两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温控制的目的。对电炉丝通断的控制采用美国生产的固态继电器。它的使用非常简单,只要在控制端加上一TTL电平,即可实现对继电器的开关,使用时完全可以用74LS06驱动。

⑶ 人机交互系统(数码显示和按键输入)和803l最小系统 整个闭环系统的中央处理器采用8031单片处理器,基本系统如图3-1-4,其中采用一片RAM62256作为数据存储器使用。根据系统功能的要求,人机交互采用按键和数码管构成,利用8031的I/O采集按键开关量,采用动态显示方式显示实测温度和预设温度,显示数据及所用的控制数据由8031的P1口送出。

e(m一1)=a3(m-1)3+a2(m-1)2+a1(m-1)+a0+p1e(m-2)+p2e(m-3)

⑷ 通信接口 系统设计要求控制系统能同PC联机通信,以利用PC的图形处理功能打印显示温度曲线。由于8031串行口为TTL电平,PC串行口为RS232电平,使用一片MAX232作为电平转换驱动。通信速率为9600波特,数据每秒传输一次。

图3 ICL7109的电路图

⑸ 软件系统设计 系统软件占整个闭环控制的很大分量,控制算法在软件系统中实现。软件总体结构5所示。

根据理论分析可知:加热时间可以用t(m)+e(m)递推。m为传感器温度与设定温度差值,e为拟合曲线与实际曲线的误差。设温度设定值为t,传感器读出的值为t1,其递推公式为

e(m)=a3m3+a2m2+a1m+a0+p1e(m-1)+p2e(m-2)

e(m一1)=a3(m-1)3+a2(m-1)2+a1(m-1)+a0+p1e(m-2)+p2e(m-3)

e(2)=8a3+4a2+2a1+p1e(1)+p2e(O)

为便于进行复杂的运算,程序采用单片机语言Franklin C51编制。

图4 人机交互系统(数码显示和按键输入)和803l最小系统

测试方法和测试结果

1、测试环境

环境温度为247℃。

测试仪器:WD-2型数字温度计(扬州长江仪器厂,精度为01℃,测量范围为-40℃~100℃)

2、测量方法

⑴ 温控系统的标定误差 我们将标准温度计和温控系统探头放人同一容器中,选定若干不同的温度点,记录下标准温度计显示的温度和温控系统显示的温度进行比较。

⑵ 温控系统的静态误差 我们从两个方面来测量静态误差:

① 在不同的温度点同标准温度40℃、60℃、75℃、90℃的温度差。

② 在某一确定的温度点在一段时间内同标准温度的差值。

⑶ PC机显示及打印的温度变化曲线(略)

3、测试结果

对本温控系统进行各种环境、各种条件下测试得到数据,经分析可以得到以下结论:我们的系统完全满足设计要求,静态误差方面可以达到02℃的误差,在读数正确方面与标准温度计的读数误差为08%,即使使用两个标准温度计进行计量,其读数误差也在05%以下。

该系统具有较小的超调值,超调值大约为16%左右。虽然超调为不利结果,但另一方面却减小了系统的调节时间。从其曲线可以看出该系统为稳定系统。

温度控制系统为开环的原因是它没有反馈控制机制。根据查询相关公开信息显示,温度控制系统能根据预设的指令来控制温度,无法感知实际温度的变化并及时调整控制信号。因此,即使环境温度发生变化,控制系统也会按照预设的程序继续工作,无法动态调节从而实现更加精确和稳定的温度控制。

以上就是关于用DS18B20温度模块做的温控系统,如何加入24C02做断电保护,求C程序指导全部的内容,包括:用DS18B20温度模块做的温控系统,如何加入24C02做断电保护,求C程序指导、c语言的单片机控制的空调温度控制系统的源程序、基于MCS-51单片机的精密温度控制系统的设计与实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9842975.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存