设计报告——温控电路设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

温控电路设计

报告书

姓名:

学校:

专业:

完成日期:2014/05/16

目录

1.设计要求 (1)

2.总体设计方案 (1)

2.1原理分析 (1)

2.2功能模块的实现 (1)

2.2.1控制模块 (1)

2.2.2温度采集模块 (1)

3.控制程序设计 (2)

3.1程序流程图 (2)

3.2程序模块说明 (2)

附录 (3)

1.主函数 (3)

2.ADS1115驱动程序 (6)

3.原理图 (13)

1.设计要求

设计一个温度测量电路,根据设定温度和测量值比较实现以下控制:

定义:

设定温度:ST(单位℃)

测量温度:T(单位℃)

控制逻辑要求:

当ST> T+2时,继电器闭合(如果当前继电器为断开状态,并且断开时间不够3分钟,不允许闭合);

当ST

T-2=

2.总体设计方案

2.1原理分析

根据要求,使用负温度系数的热敏电阻进行温度的测量,使用ADC采集电压,通过单片机计算得到温度值,并依据相应控制逻辑要求控制继电器的动作。

2.2功能模块的实现

2.2.1控制模块

使用89C51单片机进行控制部分的设计,如图1为单片机最小系统原理图,89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS 的8位微处理器,具有廉价、使用简单等优点。本设计中采用89C51单片机完全可以满足要求。

通过单片机根据采集到的数据,控制继电器的动作。

图1

2.2.2温度采集模块

热敏电阻温度测量电路采用简单的电阻分压电路,通过AD采集电压变化,通过单片机计算得出温度值,如图2所示。

TI公司的ADS1115是超小型16位精密模数转换器(ADC),具有板载基准电压和振荡器,通过I2C兼容接口传输数据,工作电压从2.0V到5.5V,取样频率高达860SPS,连续模式的功耗仅为150uA,工作温度从–40℃到+140℃。本设计中使用ADS1115采集电压,满足精度要求。

图2

3.控制程序设计

3.1程序流程图

流程图如图3所示,单片机按照该流程进行温度的采集与继电器的控制。

图3

3.2程序模块说明

程序主要分为ADS1115的电压采集、温度值的计算、根据逻辑控制继电器动作三个部分。

附录

1.主函数

#include

#include"ads1115.h"

#define ST 30.0 //设定温度

sbit relay=P0^7; //继电器控制引脚

float T; //当前温度

int count=0; //定时计数

bit en_relay=1; //继电器允许动作标志位

//温度范围从0~50摄氏度

code float table[]={28.38,27.13,25.94,24.81,23.74,22.72,21.75,20.83,19.95

,19.12,

18.32,17.57,16.85,16.16,15.5,14.88,14.28,13.71,13.17,12.65,

12.16,11.69,11.24,10.81,10.39,10.0,9.623,9.263,8.918,8.588,

8.272,7.97,7.68,7.402,7.136,6.881,6.637,6.402,6.177,5.961,

5.754,5.556,5.365,5.182,5.006,4.837,4.674,4.518,4.368,4.224,4.

085,0};

void Judge(); //逻辑控制函数

void delay(int); //延时函数

int GetTemp(); //获取温度值

///*******************************************

//函数名称:main

//功能:主函数

//参数:无

//返回值:无

//********************************************

void main()

{

TMOD=0x01; //定时器模式设置

TH0=0x3C;

TL0=0xB0;

ET0=1;

TR0=0; //定时停止

EA=1;

while(1)

{

GetTemp();

Judge();

delay(100);

}

}

///*******************************************

//函数名称:Delay

//功能:延时函数

//参数:x 设置延时时间

//返回值:无

//********************************************

void delay(int x)

{

int i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

///*******************************************

//函数名称:GetTemp

//功能:获取电压值并换算成温度值

//参数:无

//返回值:-1:超出范围 1:在测量范围内

//********************************************

int GetTemp()

{

int i;

float vol;

float res;

vol=ADS1115(0,1); //ADS1115的AIN1输入

res=50.0/vol-10.0; //换算得到热敏电阻当前阻值

if(res>28.38 || res<4.085)

return -1;

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

{

if(res<=table[i] && res>table[i+1]) //查表并计算得到温度

{

T=i+(table[i]-res)/(table[i]-table[i+1]);

}

}

return 1;

}

///*******************************************

相关文档
最新文档