基于ds1b20温度控制设计汇报
摘要
本文关键介绍了一个基于ATC51单片机测温系统,具体描述了利用数字温度传感器DS18B20开发测温系统过程,
关 | 键 | 对 | 传 | 感 | 器 | 在 | 单 | 片 | 机 | 下 | 硬 | 件 | 连 | 接 | , |
软件编程和各模块系统步骤进行了详尽分析,对各部分电路也一一进行了介绍,该系统能够方便实现温度采集和显示,并可依据需要任意设定上下限温度,它使用起来相当方便,含有精度高、量程宽、 灵敏度高、 体积小、 功耗低等优点,适合于我们日常生活和工、农业生产中温度测量,也能够看成温度处理模块嵌入其它系统中,作为其它主系统辅助扩展。DS18B20和ATC52结合实现最简温度检测系统,
有广泛应用前景。
该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,
目录
第一章概述......................................................................................................................................4
第二章单片机人机接口系统软件设计..........................................................................................6
2.1 ATC52............................................................................................................................6
2.2系统组成..........................................................................................................................7
2.4显示按键电路设计..........................................................................................................7
第三章温度测量模块设计..............................................................................................................8
3.1DS18B20介绍....................................................................................................................8
3.2 DS18B20内部结构........................................................................................................10
4.2风扇PWM驱动....................................................................................................................13
4.3制冷片控制和程序设计..................................................................................................13
第五章温度测量试验和分析........................................................................................................14
5.1基础任务..........................................................................................................................14
第六章温度控制试验和分析........................................................................................................15
总结..................................................................................................................................................16
参考 文献....................................................................................................................................17
附录一..............................................................................................................................................18
测控电路和电子电力技术等课程,是多门课程综合性设计。
1.课程设计任务分解
温度测控系统设计
风扇控制电路设计智能测控系统设计 温度控制系统设计
温 数 风 数 键 制 制
度 据 扇 码 盘 冷 冷
传 处 控 管 操 片 片
感 理 制 显 作 控 控
器 程 器 示 程 制 制
程 序 程 程 序 程 电
序 设 序 序 设 序 路
图1.1课程设计任务分解
2.关键仪器设备元件
DS18B20, 单片机实训板、 可编程控制器试验台、场效应管、 计 计
设 设
3.课程设计基础步骤
课程 设 计步 骤 中 控 制 电 路 焊 接 、
软件设计和加温系统组装和箱作部分是课程设计三大关键模块。
电路设计和焊接部分关键是18B20接口电路、
光电隔离和场效应管驱动电路和驱动电路接口。
软件设计关键包含键盘扫描程序、四位数码管动态显示程序、
任意浮点数显示程序、输入参数合成、 计时器程序、 风扇控制程序、
制冷片控制程序和串口通讯程序等。
加温系统组装调试和箱作关键完成加温系统中制冷片、散热片、
风扇组装和上电试运行,箱作关键是用硬纸箱板根据参考尺寸15厘米,
做一个15X15X15箱子就能够,同时考虑加温系统安装和温度传感器部署。
温度测量试验关键是在一系列标准温场下,用传感器测量数据和标准玻璃温度计数据对比,分析测量精度,依据仪器引用误差定设备等级。
温度控制试验分加温和降温两部分,经过设定一个比现场温度低或高温度,然后系统开始工作,并根据一定时间间隔将温度和加/降温时间数值统计出来。分析温度系统工作效率。 当达成设定值后,将其稳定住,并根据一定时间间隔采集数据,分析系统稳定性。
第二章单片机人机接口系统软件设计
2.1ATC52
ATC52是一个低功耗、高性能CMOS8位微控制器,
含 | 有 | 8K在 | 系 | 统 | 可 | 编 | 程 | Flash | 存 | 放 | 器 | 。 |
使用Atmel企业高密度非易失性存放器技术制造。片上Flash许可程序存放器在系统可编程,亦适于常规编程器。在单芯片上,
拥 | 有 | 灵 | 巧 | 8 | 位 | CPU | 和 | 在 | 系 | 统 | ,可 | 编 | 程 | Flash, |
使得ATC52为众多嵌入式控制应用系统提供高灵活、超有效处理方案。
ATC52含有以下标准功效:
8k字节Flash, 256字节RAM,32 位I/O 口线,看门狗定时器, 2
个数据指针,三个16 位定时器/计数器,一个6向量2级中止结构,
全双工串行口, 片内晶振立即钟电路。 另外,ATC52可降至0Hz 静态逻辑操作, 支持2种软件可选择节电模式。空闲模式下, CPU 停止工作,
直到下一个中止或硬件复位为止。8 位微控制器 8K字节在系统可编程 Flash
ATC52。
2.2系统组成
本 | 系 | 统 | 是 | 经 | 过 | 单 | 片 | 机 | 控 | 制 | DS18B20 |
来完成温度测量全过程,系统关键由ATC52单片机、电源、 时钟、 加热、 测温、 显示、 键盘、 报警、复位等电路组成,系统组成框图图3所表示系统组成
图2.2系统组成
2.4显示按键电路设计
显示电 路 由 三 片 74HC595 驱 动 三 块 LED
数码显示器组成,用于显示三位温度值,两位整数,一位小数。
该显示电路是ATC52单片机串行口工作于方法0经典应用。 74HC595 是一个8
位串入并出移位寄存器,和74HC1类似,但其性能优于74HC1,因为74HC595
电路中,74HC595SER 端和ATC51RXD 端相连,用以接收来自ATC51
串行输入信号;74HC595SRCLK 端和ATC51TXD 端相连,
用以接收来自ATC51同时移位时钟脉冲信号;而74HC595锁存信号RCLK
则由ATC51P2.0 控制;74HC595第9位输出Q8用于多片74HC595级联。
本系统中因为按键个数较少,为简化系统设计而采取式按键。
三个按键分别连接到ATC52P0.0,P0.1,P0.2。
ATC52单片机共有四个并行I/O口:P0~P3口。其中P0口有三种用途:
⑴用作8位数据总线DB;
⑵和P2口共同组成16位地址总线AB,P0口为低8位AB;
⑶用作通常I/O口。
由P0口内部结构可知,其输出驱动级为开漏电路,所以当P0口用作通常I/O口时,需外接上拉电阻。
按键功效以下:
⑴K1:加热控制键。按下K1,CPU实施指令“CLRP1.1” ,将P1.1口电平拉低,经74LS04反相后变高,使发光管D1点亮,继电器J动作,J1闭合,加热器开始加热。
⑵K2:严禁加热键。按下K2,CPU实施指令“SETBP1.1” ,将P1.1口电平拉高,经74LS04反相后变低,发光管D1熄灭,继电器动作,J1断开,加热器停止加热。
⑶K3:恒温控制键。按下K3,CPU将目前温度值读入并储存、比较,当温度高于储存值时,实施K2键功效;当温度低于储存值时,实施K1键功效。
3.1 DS18B20介绍
DALLAS最新单线数字温度传感器DS18B20是一个新型“一线器件” ,其体积更小、更适适用于多个场所、 且适用电压更宽、 更经济。DALLAS半导体企业数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12
位 | 转 | 换 | 精 | 度 | , | 测 | 温 | 分 | 辨 | 率 | 可 | 达 | 0.0625摄 | 氏 | 度 | , |
分辨率设定参数和用户设定报警温度存放在EEPROM中,掉电后仍然保留。被测温度用符号扩展16位数字量方法串行输出;其工作电源既能够在远端引入,也能够采取寄生电源方法产生;多个DS18B20能够并联到3根或2根线上,CPU只需一根端口线就能和很多DS18B20通信, 占用微处理器端口较少,
可节省大量引线和逻辑电路。所以用它来组成一个测温系统,含有线路简单,在一根通信线,能够挂很多这么数字温度计,十分方便。
其最大特点是单总线数据传输方法,DS18B20 数据I/O均由同一条线来完成。DS18B20电源供电方法有2种:外部供电方法和寄生电源方法。工作于寄生电源方法时,VDD 和GND均接地,她在需要远程温度探测和空间受限场所尤其有用,原理是当1W ire 总线信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。
但 | 寄 | 生 | 电 | 源 | 方 | 法 | 需 | 要 | 强 | 上 | 拉 | 电 | 路 | , |
软件控制变得复杂(尤其是在完成温度转换和拷贝数据到E2PROM时), 同时芯片性能也有所降低。所以,在条件许可场所,尽可能采取外供电方法。
不管是内部寄生电源还是外部供电,I/O口线要接5KΩ左右上拉电。
在这里采取前者方法供电。图3.1所表示:
图3.1 DS18B20和单片机接口原理图
3.2DS18B20 内部结构
DS18B20 内部整体结构DS18B20内部由 位光刻ROM、温度传感器、
暂存器、EEPROM 等组成,其整体结构图1所表示。
DS18B20暂存器结构DS18B20内部有一个9字节数据暂存器,
用 | 于 | 温 | 度 | 数 | 据 | 存 | 放 | 、 | EEPROM | 中 | 内 | 容 | 拷 | 贝 | 、 |
循环冗余检验码存放和内部计算中间结果暂存等,DS18B20暂存器结构图2所表示。
3.3温度驱动模块
加热测温电路由加热器、继电器、 DS18B20 等组成。系统上电复位时,P1 口为高电平,继电器J不动作,J1 断开,加热器不工作。
依据DS18B20 工作原理,当总线上只有一个DS18B20时,不需要对DS18B20ID
进 | 行 | 识 | 别 | ,单 | 片 | 机 | 无 | 须 | 提 | 供 | DS18B20 |
| 位 | ROM |
编码,而只要使用一条“跳过ROM”命令,然后就可直接对DS18B20
存放器进行操作。在这种情况下,单片机开启DS18B20开始进行温度转换、
读取温度数据步骤图3.3
图3.3温度转换、读取数据步骤
第四章温度控制模块设计
4.1光电隔离控制电路设计
光电 耦合 器亦 称 光电 隔离 器 , 简 称 光 耦 。
光电耦合器以光为媒介传输电信号。它对输入、
输出电信号有良好隔离作用。光耦合器通常由三部分组成:光发射、光接收及信号放大。 输入电信号驱动发光二极管(LED),使之发出一定波长光,被光探测器接收而产生光电流,再经过深入放大后输出。这就完成了电—光—电转换,从而起到输入、输出、 隔离作用。 因为光耦合器输入输出间相互隔离,电信号传输含有单向性等特点,所以含有良好电绝缘能力和抗干扰能力。
对于开关电路,往往要求控制电路和开关电路之间要有很好电隔离,这对于通常电子开关来说是极难做到,但采取光电耦合器就很轻易实现了。图4.1中所表示电路就是用光电耦合器组成开关电路。
在图4.1中,在光电耦合器输入端加电信号使发光源发光,
光强度取决于激励电流大小,此光照射到封装在一起受光器上后,
因光电效应而产生了光电流,由受光器输出端引出,
这么就实现了电一光一电转换。
图4.1光电隔离控制电路设计
4.2风扇PWM驱动
图 | 4.2所 | 表 | 示 | 是 | 风 | 扇 | PWM电 | 。 |
由单片机控制光电耦合器开关来控制场效应管导通。导通后给风扇很大电流以驱动风扇转动
图4.2风扇电路
4.3制冷片控制和程序设计
制冷(制热)工作原理
半导体温差致冷是建立在法国物理学家Peltien帕尔帖效应(即温差效应)
其接点会产生放热和吸热现象,即其两端形成温差而实现制冷和制热。图
基础上具体应用。当电流流经两种不一样性质导体形成接点时,
图4.3 制冷片工作原理
依据上述原理,利用半导体材料制成致冷器称为半导体致冷器,其工作原理图图1所表示。为了便于叙述起见, 以一对N/P型半导体材料组成电偶对介绍工作原理,所谓电偶对就是掼NP结数量。图1中N/P型半导体元件经过铜导流片连接起来,当由N经过铜导流片到P通以正向直流电时,在电场作用下,N型半导体中电子和P型半导体中空穴背向导流(朝接头)运动, 即在导流片接头处N型和P型分别产生电子、空穴。 电子、
空穴产生能量来自晶格振动热能,于是在导流片上产生吸热现象,而在N/P型另一端产生放热现象,从而产生温差。当放热高温侧热量能有效地放热时,吸热低温侧不停地吸热,使其起到致冷作用。
第五章温度测量试验和分析
5.1基础任务
1温度测量精度:±1℃;
2温度控制精度:±3℃;
3制冷片输出功率可调;
4测量温度值LED显示;
5 控制温度值可经过键盘设定; |
2.数据处理和误差分析(最大引用误差)
DS18B20测量范围为-55℃ ~+ 125 ℃ ; 在-10~+85℃范围内,
精 | 度 | 为 | ± | 0.5° | C | , | 测 | 量 | 精 | 度 | 是 | 很 | 高 | 。 |
经过数字转换用数码管显示出来温度和实际温度相差不大。而玻璃温度计本身测量误差就大,人在读温度时候因为光线折射,读取温度就更不正确,所以DS18B20和玻璃温度计测量值有很大差异。相比较而言DS18B20温度测量值更正确。
第六章温度控制试验和分析
*基础任务
1.升温
温度测量数值表
序号 | 1 | 2 | 淘 | 淘 | 豆 | 网 | 7 | 8 | 9 |
系统测量值 | 28.1 | 27.3 | 淘 | 淘 | 豆 | 网 | 28.4 | 28.6 | 28.9 |
时间 | 50s | 54s | 49s | 59s | 58s | 56s | 56s | 55s | 56s |
温度测量数值表
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
系统测量值 | 32 | 31.9 | 31.8 | 31.7 | 31.6 | 31.5 | 31.4 | 31.3 | 31.2 |
时间 | 106s | 110s | 113s | 114s | 116s | 118s | 120s | 121s | 122s |
3.恒温
表3 温度控制性能数据表
控制温度值:32℃ 时间:分钟
时间 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
系统测量值 | 31.8 | 31.9 | 32.1 | 32.1 | 32.3 | 32.1 | 31.9 | 32 | 32.2 |
总结
经过这几天单片机课程设计,我最终完成了数字温度计设计。
在此次设计过程中,我发觉很多问题,即使学过单片机设计,
不过真并不太懂实际设计。经过这次设计真让我长进了很多,
单片机课程设计关键就在于软件算法设计,需要有很巧妙程序算法,
只有我们去试着做了,才能真正掌握, 只学习理论有些东西是极难了解,
即使以前写过几次程序,但我觉写好一个程序并不是一件简单事,有好多东西,
要理论联络实际,把我们所学理论知识用到实际当中,学习单机片机更是如此,
程序只有 在 常 常 写 和 读 过 程 中 才 能 提 升 ,
这就是我在这次课程设计中最大收获。
参考 文 献
[1] 李朝青. 单片机原理及接口技术.北京航空航天大学出版社,[2] [3] 马忠梅等.单片机C语言应用程序设计(第4版), 江世明. 基于Proteus单片机应用技术.电子工业出版社,
[5] [4]
附录一
//安装目录下EXE文件打开后可在电脑上显示目前温度值温控系统程序
#define uint unsigned int
sbitDS=P2^2; //define interface
sbitdula=P2^6;
sbitwela=P2^7;
sbitli=P3^1;
sbitwai=P3^0;
sbithot=P3^2;
sbitup=P3^5;
sbit down=P3^6;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef};
uint temp; // variable of temperature
uint aa=25,bb=0,cc=0,dd=0;
voiddelay(uint count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
} count--;
}
{
uint i;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
} bit tmpreadbit(void) //read a bit |
|
{
uint i;
bit dat;
DS=0;i++; //i++ for delay
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return (dat);
}
uchartmpread(void) //read a byte date
{
dat=0; uchar i,j,dat;
{ j=tmpreadbit();
dat=(j<<7)|(dat>>1); //读出数据最低位在最前面,这么刚好一个字节在DAT里
}
return(dat);
}
voidtmpwritebyte(uchar dat) //write a byte to ds18b20
{
uint i;
uchar j; |
|
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //write 1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{ DS=0; //write 0
i++;i++;
}
}
}
voidtmpchange(void) //DS18B20 begin change
{
dsreset();
delay(1);
tmpwritebyte(0xcc); // address all drivers on bus
tmpwritebyte(0x44); // initiates a single temperature conversion }
uinttmp() //get the temperature
{
float tt;
uchar a,b;
dsreset();
delay(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
temp=b; b=tmpread();
tt=temp*0.0625;
temp=tt*10+0.5;
return temp;
}
voidreadrom() //read the serial
{
uchar sn1,sn2;
dsreset();
delay(1);
tmpwritebyte(0x33);
sn1=tmpread();
sn2=tmpread();
}
voiddelay10ms() //delay
{
uchar a,b;
for(a=10;a>0;a--)
for(b=60;b>0;b--);
}
void display(uint temp) //显示程序
{ uchar A1,A2,A2t,A3,ser;
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
A3=A2t%10;
dula=0;
P0=table[A1]; //显示百位
dula=1;
dula=0;
wela=0; |
|
wela=1;
wela=0;
delay(1);
dula=0;
P0=table1[A2]; //显示十位
dula=1;
dula=0;
wela=0;
P0=0x7d;
wela=1;
wela=0;
delay(1);
dula=0;
P0=0x7b;
wela=1;
wela=0;
delay(1);
}
voidxianshi(uint temp1)
{
uint A5,A6; |
|
A6=temp1%10;
P0=table[A5];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(1);
P0=table[A6];
dula=1;
dula=0;
} | P0=0xdf; |
|
| ||
void keyscan()
{
if(up==0)
{
delay(10);
if(up==0)
{
aa++;
if(aa==50)
{
aa=0;
}
}
}
if(down==0)
{
delay(10);
if(down==0)
{
if(aa==0) {
aa--;
}
}
}
voidmain()
{
uchar a; while(1)
{
keyscan();
tmpchange();
bb=tmp();
bb=bb/10;
cc=aa-1;
dd=aa+1;
if(bb>dd)
{
for(a=10;a>0;a--)
{ xianshi(aa);
li=0;
wai=1;
hot=1;
}
}
if(bb<cc)
{
for(a=10;a>0;a--)
{ | xianshi(aa); |
|
|
display(tmp());
P1=0xf0;
li=0;
wai=0;
hot=0;
}
}
if(bb>=cc&&bb<=dd)
{
for(a=10;a>0;a--)
{
xianshi(aa);
display(tmp());P1=0x00;
hot=1;
}
}
}
} |
|
Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务