恒温箱设计Word下载.docx
《恒温箱设计Word下载.docx》由会员分享,可在线阅读,更多相关《恒温箱设计Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
core?
component,?
plus?
acquisition?
circuit,?
keyboard?
display?
circutal?
sensor?
DS18B20,?
determinant?
dynamic?
in?
order?
easily?
solid-state?
relays?
for?
switching?
device.?
This?
works?
both?
on?
current?
real-time?
can?
be?
controlled?
enable?
users?
reach?
required?
temperature,?
make?
it?
constant?
at?
this?
temperature.?
Key?
words:
microcontroller;
temperature?
control;
DS18B20
《计算机控制系统》课程课外设计制作大作业内容及考核要求
1.课题名称:
2.自制恒温箱要求
如图1所示,恒温箱采用木箱或纸箱(外形尺寸不大于30cm×
30cm×
30cm),内置白炽灯泡(功率不大于100W)用于加热。
或自选制冷板制冷。
交作品时,恒温箱外面贴上标签,标签上注明:
课题名称,学生姓名,专业班级,学号,指导教师姓名,学院名称。
3.控制系统功能与技术指标要求
(1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。
(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。
(3)采用单片机或PLC作为控制器。
(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。
(5)采用自制按键或PC机的键盘作为温度给定值输入。
(6)恒温箱实际温度达到给定值时(误差要求±
1℃)需声光提示,声音时延5秒后停止。
(7)恒温箱最高温度≤60℃。
(8)系统操作流程是:
1)确认系统各硬件连线就绪,无安全隐患;
2)系统上电;
3)设置温度给定值后,启动系统工作,系统进入温度自动控制工作状态。
4)系统工作完毕后,若不需系统工作,则可关闭系统电源,查看并确保系统无安全隐患后可离开。
4.考核要求
(1)本课题验收答辩时间地点:
第12周验收答辩(具体时间地点待定)。
(2)答辩资格需同时满足以下2个要求:
1)系统硬件和软件联调成功,可实现温度自动控制,提交系统实物(答辩后自己保管)。
2)提交设计报告(设计报告须独立完成,若发现两个报告有拷贝或抄袭的,将同时取消两个学生的考核成绩)。
(3)设计报告规范及要目
1)封面(含课题名称,学院名称,学生姓名,专业班级,学号,任课教师)
2)本课题设计制作要求
3)系统方案设计(或设计思想),含系统总体结构框图
4)硬件设计,含硬件选型和系统硬件电路原理详图或实际连线详图
5)软件设计,含软件功能设计、软件流程设计和单元程序清单
6)调试记录及结论,含硬件及软件单元调试和系统调试记录
7)心得体会(据个人实情独立撰写,发现抄袭拷贝者课程成绩计0分)
8)附件(含程序清单)
9)参考文献。
5.备注
1)若采用可控硅平滑控制灯泡发热量方案且答辩思路清楚,设计报告规范,本次作业成绩可在90分以上;
采用继电器开关控制灯泡的成绩一般不超过90分;
若采用其他方案有创意设计的,经考核老师确认,成绩也可在90分以上。
2)同学可自选题目,经过老师同意后,可代替本题目完成课外设计制作。
3)购买器件费用大致50元左右,原则上自理。
若确有经费困难,可报告老师协助解决。
特别注意用电安全!
小心用电!
1系统方案设计
系统整体框图如下图:
图1.系统原理总框图
上面的系统总体框图中,该系统中微控制器采用AT89C52单片机最小系统,温度显示采用LED显示模块、声光报警器模块、DS18B20温度采集模块、按键输入设定温度模块、继电器驱动模块。
2硬件设计
2.1温度检测电路?
本设计采用数字输出温度传感器DS18B20,该器件具有超小的体积、超低的硬件开销、抗干扰能力强,精度高,功耗低的特点,可直接输出9-12位的数字信号,通过单总线接口传输给单片机进行信号处理,最高12位分辨率时在-55℃?
~?
125℃温度范围内精确度可达到±
0.5摄氏度,温度检测电路如图2所示。
图2.温度检测电路
2.2单片机的选择
系统采用STC公司的推出的新一代高速/低功耗/超强抗干扰的单片机
STC89C52作为主控芯片,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有?
8K?
在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8?
位CPU?
和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,?
32?
位I/O?
口线,看门狗定时器,内置4KB?
EEPROM,MAX810复位电路,3个16?
位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外?
STC89C52?
可降至0Hz?
静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU?
停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
只有在外接时钟、电源和复位电路时才能工作,能使其正常工作的最小系统如图3所示。
图3.单片机最小系统
2.3显示电路模块
本设计要求采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。
方案一:
LED数码管显示
因为要求同时显示给定温度和实际温度,所以需使用两块四位数码管,同时选取两块74HC573作为数码管锁存器,采用动态显示,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
图4.数码管连接原理图
方案二:
1602LCD液晶显示
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
图5.1602连接原理图
综合比较,因为液晶显示设计比较复杂而成本较高,且数码管也可以满足此设计要求,并且数码管便宜实惠,所以本次设计选择数码管作为显示模块。
2.4继电器驱动模块
本设计用单片机的一个I/O口来控制继电器的通断从而控制灯泡的亮灭,以此来达到控制温度的要求。
下图是继电器的连接仿真图:
图6.继电器仿真连线图
3软件设计
本设计采用单片机控制灯泡从而控制恒温箱,按下电源按钮后,默认设置温度为30度,可通过加减按钮来调节设置温度,在通电的一瞬间,单片机会将从DS18B20得到的温度与设定温度对比,如果此温度小于设定温度,则继电器通电,灯泡发亮,此时恒温箱内温度慢慢升高,当恒温箱温度大于等于设定温度时,继电器断电,灯泡熄灭,同时声光提示5秒,在整个控制过程中可以随时调整设定温度。
3.1温度设定模块程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
uinttemp;
ucharflag1;
uintsheding=30;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
voidkeyscan()
{
uchars1,s2;
if(S2==0)
{
while(S2==0);
sheding++;
}
if(S3==0)
while(S3==0);
sheding--;
s1=sheding/10;
s2=sheding%10;
dula=0;
P0=table[s1];
dula=1;
wela=0;
P0=0xfe;
wela=1;
delay(3);
P0=table[s2];
P0=0xfd;
delay
(1);
}
3.2温度读取及声光报警控制模块流程图及程序
流程图:
是
否
图7.系统流程图
程序:
voiddelay(uintz)//延时函数,单位ms
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
voiddsreset(void)//DS18B20复位,初始化函数
uinti;
DS=0;
i=103;
while(i>
0)i--;
DS=1;
i=4;
bittmpreadbit(void)//读一位数据函数
bitdat;
i++;
//i++起延时作用
dat=DS;
i=8;
while(i>
return(dat);
uchartmpread(void)//读一个字节数据函数
uchari,j,dat;
dat=0;
for(i=1;
i<
=8;
i++)
j=tmpreadbit();
dat=(j<
<
7)|(dat>
>
1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
return(dat);
voidtmpwritebyte(uchardat)//向DS18B20写一个字节数据函数
ucharj;
bittestb;
for(j=1;
j<
j++)
testb=dat&
0x01;
dat=dat>
1;
if(testb)//写1
i++;
else
//写0
voidtmpchange(void)//DS18B20beginchange
dsreset();
tmpwritebyte(0xcc);
//addressalldriversonbus
tmpwritebyte(0x44);
//initiatesasingletemperatureconversion
uinttmp()//getthetemperature
floattt;
uchara,b;
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<
//twobytecomposeaintvariable
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
returntemp;
voiddisplay(uinttemp)//显示程序
ucharA1,A2,A2t,A3;
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
A3=A2t%10;
P0=table[A1];
//显示百位
P0=0xdf;
P0=table1[A2];
//显示十位
P0=0xbf;
P0=table[A3];
//显示个位
P0=0x7f;
voiddeal(uinta,b)//处理函数
uchari=5000;
a=a/10;
if(S4==1)
if(a==b)
{
jdq=0;
if(flag_s==0)
led=0;
//led灯提示
beep=0;
//蜂鸣器提示
while(i--)
keyscan();
display(tmp());
delay
(1);
}//用显示程序实现5s延时
led=1;
beep=1;
flag_s=1;
}
}
elseif(a<
b)
{
jdq=1;
flag_s=0;
}
else
P1=0xff;
jdq=0;
flag_s=0;
voidmain()
uchara;
beep=1;
flag_s=0;
jdq=0;
do
{
tmpchange();
deal(temp,sheding);
for(a=10;
a>
a--)
{
display(tmp());
keyscan();
}while
(1);
4调试过程及结果分析
4.1?
软件调试?
软件调试首先是在keil编译器下进行,包括源程序编译及运行调试。
接着链接proteus进行硬件实时调试。
4.2硬件调试
原计划是按仿真焊接电路,但由于在焊接时不小心将电路板烧坏,所以后来使用开发板来完成设计,在调试过程中,因为火线和零线借口设计过于接近,导致短路过一次,后将两个接口改远,经测试可以使用,在调试过程中,恒温箱达到设定温度后灯泡熄灭,但由于箱子过小,灯泡熄灭后的余温还会使温度上升,过一会才能降到设定温度,这是本次设计的一个缺陷。
4.3?
结果分析?
能够达到基本的控制要求,即恒温箱实际温度达到给定值时,有声光提示,并且声音时延5秒后才停止。
5心得体会
在本次设计的过程中,遇到了很多大大小小的挫折,如在焊接电路板时由于不小心将板子烧坏,还有在通电时,发生短路,将宿舍都弄得跳闸了,实在是吓了我一跳,阿姨还和我说要是再跳闸就不给我们开电了,还好后来经过仔细排查,找除了是电路短路的原因,并改良了电路,终于勉强完成的本次实验。
实验完之后心情很复杂,因为在实验之初,我本来以为仿真通过不会出现很大的问题,但在实际中完全不是那么一回事,要考虑到各种实际问题,算是给了我一个教训,在选箱子的时候对于箱子的大小考虑的也不周全,导致箱子初次达到设定温度时会溢出一两度,使温度不能精确控制,这也是需要改良的部分,通过这次课程课外设计,使我了解到了一定不能眼高手低,要把理论和实践结合起来。
在设计的过程中查阅了很多资料,丰富了我的知识,希望在以后的学习生活中能够继续进步。
参考文献
[1]李伟.计算机控制系统(第二版)[M].北京:
清华大学出版社,2015.
[2]康华光.电子技术基础[M].北京:
高等教育出版社,2015
[3]姜志海黄玉清.单片机原理及应用[M].北京:
电子工业出版社,2013
附件
器件清单:
恒温箱器件清单
名称
型号
数量
开发板
QX-MCS51
1
电源底座
电源接口
2
温度传感器
继电器
蓝色5V
二极管
1N4148
三极管
8050
灯泡
100W
电源线
粗线
电源插头
二相
灯泡底座
匹配灯泡
导线
杜邦线
6
程序代码:
sbitDS=P2^2;
sbitdula=P2^6;
sbitwela=P2^7;
sbitbeep=P2^3;
sbitS2=P3^0;
sbitS3=P3^1;
sbitS4=P3^2;
sbitled=P1^0;
sbitjdq=P1^1;
bitflag_s;
unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
//initiates