DS18B20注塑机炮筒温度控制仿真

单片机、电路板
连接器、接插件
其他元器件
基于DS18B20的温度控制系统设计
基于DS18B20的温度控制系统设计
摘 要: 该温度控制系统以STC89C52单片机为核心,采用DS18B20数字温度传感器采集温度,并以PWM形式输出,确保温度输出的稳定,再结合PID闭环控制,使系统能够更稳定地运行。先利用Proteus软件结合Keil软件仿真,再用STC89C52单片机进行实测,从而进一步验证了设计的可靠性和准确性,所控制温度的精度能达到&1 ℃范围之内。该系统具有灵活性强、电路简单、可靠性高、易
摘 要: 该温度控制系统以单片机为核心,采用数字温度传感器采集温度,并以PWM形式输出,确保温度输出的稳定,再结合,使系统能够更稳定地运行。先利用软件结合Keil软件仿真,再用STC89C52单片机进行实测,从而进一步验证了设计的可靠性和准确性,所控制温度的精度能达到&1 ℃范围之内。该系统具有灵活性强、电路简单、可靠性高、易于操作等优点,能够实现对温度的稳定控制。关键词: STC89C52;DS18B20;PID闭环控制;Proteus 温度的变化影响各种系统的自动运作,例如冶金、机械、食品、化工等工业中,广泛使用各种加热炉、散热处理、反应炉等,要求对工件的温度进行控制。对于不同的控制系统,其适宜的温度总是在一个范围,超过这个范围,系统或许会停止运行或遭受破坏,因此必须能实时获取温度的变化,对于超过适宜范围的温度能够报警。同时也希望在适宜温度范围内可以由检测人员根据实际情况加以改变。温度控制在工业及日常生活中应用广泛,分类较多,不同温度控制系统的控制方法也不尽相同,其中以PID控制法最为常见。1 温度控制系统的组成及硬件设计 本设计采用STC89C52单片机为处理器,利用温度传感器DS18B20采集温度,结合Keil软件编程[1],实现用PID算法来控制PWM波形的产生,进而控制加热电阻以实现温度控制。该设计利用Proteus仿真为基础,再结合单片机最小系统调试验证结果。系统的总体结构框架图如图1所示。 本温度闭环控制系统由温度传感器、控制器、PWM控制模块、加热电路、键盘和显示模块等部分组成。单片机选用宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机STC89C52RC[2]。温度经过DS18B20传感器模块传给控制器,控制器根据检测值与设定值的偏差,计算PID控制值,其结果通过PWM模块控制加热电路功率,实现对温度的控制。系统硬件电路原理图如图2所示。  LCD1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的两条线是背光电源线。该模块用D0~D7作为8 bit双向数据线,4 bit数据分两次传送,可以节省CPU的I/O口资源[4]。 VSS、VDD分别接地和5 V电源。VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。E(或EN)端为使能(Enable)端,下降沿使能。DB0~DB7为双向数据总线。2 温度控制系统软件设计 系统程序主要包括主程序、初始化子程序、PID计算子程序、温度比较处理子程序、延时子程序、T0中断服务子程序和DS18B20驱动程序等。主程序流程图如图6所示。2.1 加热功率PWM控制 本设计采用的STC89C52单片机虽然不具有4路16位的可编程计数器阵列(SPA)或8位的可调制脉冲输出(PWM)模块,但在本设计中,利用软件编程,通过PID控制,调整PWM占空比,通过P1.5口输出PWM信号,去控制外围加热电路。PWM的输出频率决定于PCA定时器的时钟源。PCA定时器的时钟输入源有4种可供选择,分别是Fosc/12、Fosc/2、定时器0的溢出频率以及P3.4/ECT的输入频率。由于PWM是8位的,因此PWM的输出频率=PCA时钟输入频率/256。本设计采用的是定时器0的溢出频率作为PCA的时钟输入,这样可以通过设置定时器0的计数值改变PWM的频率。本设计先进行温度比较,再采用定时器0中断来实现PWM输出,从而实现温度的实时控制。2.2 PID算法设计 PID调节器是一种线性调节器,它将给定值R(t)与实际输出值C(t)的偏差的比例(P)、积分(I)、微分(D)通过定值线性组合构成控制量,对控制对象进行控制。其模拟PID控制系统原理框图如图7所示。void PIDInit(struct PID*pp){&&{unsigned int dError,Error;Error=pp-&SetPoint-NextPoint;//偏差pp-&SumError+=Error;//积分dError=pp-&LastError-pp-&PrevError;//当前微分pp-&PrevError=pp-&LastError;pp-&LastError=Error;return(pp-&Proportion*Error//比例+pp-&Integral*pp-&SumError//积分项+pp-&Derivative*dError);//微分项}3 实验结果 现利用Keil编辑程序结合Proteus所做的原理图进行仿真处理,仿真结果可以达到设计要求。本设计制作了硬件设计实物,通过PID控制,当加热电阻靠近温度传感器时,测量温度明显上升,并达到31℃(设置温度)。此后加热变缓,温度维持在31℃,系统温度误差精度可达到&1℃之内,并且用蜂鸣器发出鸣响。当加热电阻离开温度传感器,测量温度会降低,当实测温度低于设置温度,蜂鸣器不响。再次设置温度,当加热电阻再次靠近温度传感器时,测量温度又明显上升到设置温度。 为了更好地观察实验结果,证明仿真结果的可靠性,体现本设计对温度控制的稳定性和精确性,经过多次设置不同的温度,实验记录数据如表1所示。从记录数据分析可知,本设计达到了预期的设计目标,控制温度误差范围在&1℃之内。 本系统以单片机为控制核心,采用PID算法进行温度闭环控制,具有控制精度高,能够克服容量滞后的特点,特别适用于负荷变化大、容量滞后较大、控制品质要求高的控制系统[6-7]。以DS18B20温度传感器设计的温度闭环控制系统线路简单、硬件少、成本低廉、软件设计简单,尤其是其具有完善的单总线通信协议,无需复杂的布线,只需3根连线就能很容易地组成多点测温系统,因此在工农业生产和科学研究中有着广阔的应用前景[8]。参考文献[1] 胡寿松.自动控制原理[M].北京:科学出版社,2002.[2] 马淑华,王凤文,张美金,等.单片机原理与接口技术[M].北京:北京邮电大学出版社,2005.[3] 黄建伟.基于DS18B20无线温度测量系统[J].煤矿机械,):118-119.[4] 潘新民,王燕芳.微型计算机控制技术实用教程[M].北京:电子工业出版社,2006.[5] 谭浩强.C程序设计[M].北京:清华大学出版社,1991.[6] 吕俊亚.一种基于单片机的温度控制系统设计与实现[J].计算机仿真,):230-233.[7] 叶丹,齐国生,洪强宁,等.基于单片机的自适应温度控制系统[J].传感器技术,):27-30.[8] 赵娜,赵刚,于珍珠,等.基于51单片机温度测量系统[J].微计算机信息,2007,(12):146-148.
型号/产品名
深圳市辉德胜电子有限公司
深圳市辉德胜电子有限公司
东莞市大岭山杰世电子贸易部
义乌市优享服饰有限公司
深圳瑞琦电子经营部-3月15日一年一度的上海慕尼黑电子展与上海国际博览中...
日,罗德与施瓦茨公司在北京罗德与施瓦茨办公楼召开全...
电源网牵头联合芯派实验室和是德科技联手为电源网网友提供的福利...
牛逼1000帖
赛尔康技术(深圳)有限公司
宁波江北华瑞电子有限公司
最新技术探讨
从守护宝石的超级英雄手中夺取3颗无限宝石;
会议主题:
TI方案在太阳能光伏上的应用
主讲嘉宾:
报名人数:
会议主题:中国工程师巡回研讨会-佛山站
会议时间:
会议地点:佛山银濠假日酒店
报名人数:170
分享:基于DS18B20的多路温度监测系统设计与仿真
来源:电源网
编辑:娣雾儿
在实时温度监控系统中,如大棚温度监控、冷库测温、智能建筑温度控制等系统中,经常需要进行多路温度的采集和检测。快速、可靠地采集到高精度温度数据可为控制系统的工作提供可靠的依据。传统上,温度测量方法多以热敏电阻、热电偶等为温度敏感元件,但都存在可靠性差、精度低、需A/D转换以及线路复杂等的缺点。
本文提出采用美国Dallas公司生产的单总线数字温度传感器DS18B20和AT89C51单片机构成高精度的多路温度系统,在单片机的控制下巡回多路温度,高低温度超限报警,并可实现与上位机通讯等功能。
1 DS18B20 简介
DSl8B20是Dallas公司推出的1-Wire式单总线智能数字温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度,温度测量范围为-55~125
℃;可通过编程实现9~12位的转换精度,对应的可分辨温度分别为0.5 ℃,0.25 ℃,0.125 ℃和0.062 5
℃,可满足高精度设计要求;在9位分辨率时最多在93.75 ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字;电源供电范围3.0~5.5
V;读取或写入信息到DS18B20仅需要单总线接口(即将地址线、数据线、控制线合成一条信号线);测量结果直接输出数字温度信号,串行传送给CPU同时可传送CRC
校验码,具有极强的抗干扰纠错能力;使用可使系统结构简洁,可靠性更高。以上特性使得DSl8B20
非常适用于构建高精度的多路温度采集与检测系统。
2 硬件电路设计
系统原理框图如图1 所示,系统由多片DS18B20、AT89C51单片机、LED
驱动显示电路、温度上下限设定电路、报警提示电路、串行通信接口、时钟电路、复位电路等构成。
系统采用8片DS18B20构成温度采集电路,8
片DS18B20采用单总线与并行输入相结合的方式接至单片机的P1口。单片机巡回采集各路DS18B20送来的温度信息后,通过软件设计算法,将处理后的温度信息及相应的温度路数通过LED数码管显示出来,各路温度值的上下限可通过P3.2~P3.4独立式键盘进行设定。若某路超过温度设定的上下限将进行通过P3.5或P3.6进行报警提示。此外,可通过串行口RS
232 模块将各路温度数据送上位机处理。系统采用Proteus软件设计的仿真电路如图2所示,此时LED显示的是第3路温度值。
声明:本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原网站所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱:。
热门产品推荐
LM76002/LM76003 稳压器是一款易于使用的同步降压直流...
UCC24612 是用于标准和逻辑电平 N 沟道 MOSFET 功率...
18-06-06 13:41
18-05-14 17:04
18-04-28 13:37
18-03-21 09:51
17-02-28 09:21
为了给工程师们提供优质的电子工程知识,电源网有幸邀请国内权威运算放大器应用专家陈永真为大家讲授运算放大器的相关知识。
<font color="#17年电源网工程师巡回培训会-上海站于9月16日召开,会议共计6个议题有近230的工程师到场参与,陶显芳陶老师分享了关于"EMI传导干扰滤波电路的设计“议题,将现场工程师交流推向了高潮!
数字万用表是高精度仪器。数字万用表的双积分ADC是让..
示波器是人们设计、制造或修理电子设备不可或缺的工..
对于精确的科研和企业研发工程来说,仅仅看到热点是..
我们总想着对采下来的数据做更多的处理,示波器更准..
全球电子元器件与开发服务分销商e 络盟推出Aim TTi ..
2018慕尼黑上海电子展
关于电源网
我们的服务
服务时间:周一至周五9:00-18:00
免费技术研讨会
获取一手干货分享
电源网版权
增值电信业务经营许可证:津B2-
网博互动旗下网站:说明:&&DS18B20温度控制系统仿真(keil C和Proteus联调)(DS18B20 temperature control system simulation (keil C and Proteus FBI))
文件列表:
18B20测温系统(液晶,C语言)
............................\
............................\BootLoader.LST
............................\BootLoader.OBJ
............................\
............................\
............................\Delay.h
............................\Delay.LST
............................\Delay.OBJ
............................\ds18b20
............................\DS18B20.DSN
............................\ds18b20.hex
............................\ds18b20.lnp
............................\
............................\ds18b20.Opt
............................\ds18b20.plg
............................\DS18B20.PWI
............................\
............................\ds18b20_Opt.Bak
............................\
............................\Last Loaded DS18B20.DBK
............................\
............................\
............................\LCD.LST
............................\LCD.OBJ
............................\
............................\
............................\One-Wire.LST
............................\One-Wire.OBJ
近期下载者:
相关文件:51单片机数码管显示DS18B20温度测量源程序及仿真_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:150,306贴子:
51单片机数码管显示DS18B20温度测量源程序及仿真收藏
51单片机数码管显示DS18B20温度测量源程序及仿真
密码:s4n2
华芯微特单片机,SYNWIT微控制器凭借超强的性能,优化的连接性设计和高超的稳定性值得您的信赖.SYNWIT控制器让一切都变得不同.
仿真调试通过的超声波测距程序仿真调试通过实物验证过的超声波测距程序 链接:
密码: yk9q
你这个是用数码管显示的还是用LCD显示的?
你好,请问楼主实物操作过DS18b20吗?我仿真可以,但是实物起来确是虚接
请问怎么弄ds18b
请问楼主为什么那个温度传感器在我的电脑上运行的的时候0.2和0.7都显示不了呢?求楼主回答
楼主好人!!!
楼主请问有stc12的程序么
超低功耗,256KB-512KB闪存,可扩展存储器,备有开发板
楼主。。。那个需要按键消除报警怎么做
让我回忆起大学时候的课程设计 记得要求用汇编还有个按键设置温度阈值超限报警的要求
楼主,你好。我用的RP1一直说不只是仿真,怎么办?
楼主有没有倾角测量的
数码管输出
大神ds18b20怎么才能在led12864上显示啊,我用的是52单片机,我自己写的程序总是不行,不显示啊
谢谢楼主,不过我运行之后数码管显示0.0是为什么啊
你调节一下18B20的温度值看看。
我调了,没用
谢谢楼主,弄好啦,之前是因为proteus版本不对
楼主请问你有第一个正轨的毕业论文格式的论文么 、我应付期末
楼主能不能帮个忙
请问楼主,如何在这个的基础上增加一个按键设置温度的模块?我分开写了两个,一个是18b20的显示程序,另一个是按键设置温度的,但是两个合在一起就有问题
#include &reg51.h&#include &stdio.h&#define uchar unsigned char#define uint unsigned intsbit ds=P1^7;sbit beep=P3^7;//定义整型的温度数据float f_//定义浮点型的温度数据uint warn_11=270;//定义温度下限值 是温度值乘以10后的结果uint warn_22=250;//定义温度下限值uint warn_h1=300;//定义温度上限值uint warn_h2=320;//定义温度上限值unsigned char code table[]={0x80,0xd5,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x18/*带小数点*/,0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28/*不带小数点*/};void delay(uint z) //延时程序{ uint x,y; for(x=z;x&0;y--) for(y=110;y&0;y--);}void dsreset(void)//DS18B20复位,初始化函数{ds=0;i=103;while(i&0)i--;ds=1;i=4;while(i&0)i--;}bit tempreadbit(void)//读一位数据函数{
ds=0;i++;//i++起延时作用
i=8;while(i&0)i--;
return(dat);}uchar tempread(void)//读第一字节数据函数{
uchar i,j,
for(i=1;i&=8;i++)
j=tempreadbit();dat=(j&&7)|(dat&&1);//读出的数据最低位在最前面,这样刚好一个字节在dat里 已升级到最新版 }
return(dat);}void tempwritebyte(uchar dat)//向DS18B20写一个字节数据函数{ for(j=1;j&=8;j++)
testb=dat&0x01; dat=dat&&1; if(testb) //写1
ds=0; i++;i++; ds=1; i=8;while(i&0)i--;
ds=0;//写0
i=8;while(i&0)i--;
}}void tempchange(void)//DS18B20开始获取温度并转换{
dsreset();
tempwritebyte(0xcc);//写跳过读ROM指令
tempwritebyte(0x44);//写温度转换指令}uint get_temp()//读取寄存器中存储的温度数据{
uchar a,b;
dsreset();
delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread();//读低八位 b=tempread();//读高八位 temp=b; temp&&=8;
//两个字节组合为1个字 temp=temp|a; f_temp=temp*0.0625;//温度在寄存器中为12位,分辨率为0.0625 temp=f_temp*10+0.5;//乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05;//temp是整型}void display(uchar num,uchar dat) //数据显示程序{ //num是第几个数码管,dat是要显示的数字P2=table[dat];i=0i=i&(~((0x01)&&(num)));P2=i;delay(1);}void dis_temp(uint t)
//显示温度数值函数t传递的是整形的温度值{i=t/100;//除以100得到商,为温度的十位display(0,i);//在第一个数码管上显示i=t%100/10;//100取余再除以10得到商,为温度的个位display(1,i+10);//在第二个数码管上显示i=t%100%10;//100取余再用10取余,为温度的小数位display(2,i);}void warn(uint s){i=s;beep=0;while(i--) {
dis_temp(get_temp()); }
while(i--)
dis_temp(get_temp());
}}void init_com(void)//串口初始化函数{ TMOD=0x20; PCON=0x00; SCON=0x50; TH1=0xFd; //波特率9600 TL1=0xFd; TR1=1;}void comm(char*parr){ do {
SBUF=*parr++;//发送数据while(!TI);//等待发送完成标志为1TI=0;
//标志清零 }while(*parr);//保持循环直到字符为\0}void main(){ uchar buff[4],i; init_com(); while(1) {
tempchange();//温度转换函数 for(i=10;i&0;i--)
dis_temp(get_temp()); }
sprintf(buff,&%f&,f_temp);
for(i=10;i&0;i--)
{dis_temp(get_temp());//温度显示
comm(buff);//串口发送数据
for(i=10;i&0;i--){
dis_temp(get_temp());}}} 楼主 帮忙看看为什么我的数码管上显示不了温度可以吗 数码管位选p0 段选p2
楼主请问一下温度测量怎么切换华氏和摄氏呢
51单片机数码管显示DS18B20温度测量源程序及仿真
密码:s4n2【图片】【图片】
登录百度帐号>> 使用PROTEUS仿真的智能温度计,使用DS18B20测温,C编写
使用PROTEUS仿真的智能温度计,使用DS18B20测温,C编写
所属分类:
下载地址:
DS18B20.rar文件大小:57.08 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
使用PROTEUS仿真的智能温度计,使用DS18B20测温,C编写-PROTEUS simulation using intelligent thermometer, use DS18B20 temperature, C prepared
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
DS18B20.plg173.00 B05-08-08 00:06
4.17 kB04-08-08 18:57
DS18B20.ls153.83 kB04-08-08 18:57
DS18B20.lnp75.00 B04-08-08 18:57
DS18B20.M5117.37 kB04-08-08 18:57
DS18B20.hex2.06 kB04-08-08 18:58
DS18B20.PWI1.87 kB04-08-08 19:01
DS18B20_Uv2.Bak2.41 kB04-08-08 13:17
DS18B20.Uv22.44 kB04-08-08 17:07
DS18B20.SRC15.11 kB04-08-08 18:57
DS18B20.__i57.00 B04-08-08 18:57
DS18B20.LST8.28 kB04-08-08 18:57
DS18B20.OBJ5.11 kB04-08-08 18:57
DS18B204.07 kB04-08-08 18:57
&Last&0.00 B13161 17%
DS18B20.DSN73.87 kB04-08-08 19:01
DS18B20_Opt.Bak1.22 kB04-08-08 19:20
DS18B20.Opt1.22 kB05-08-08 00:06
&DS18B20&0.00 B03-08-08 19:16
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
评价成功,多谢!
下载DS18B20.rar
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:612.566ms - init:0.1;find:1.0;t:0.5;tags:11.2;related:561.3;comment:0.3; 5.8
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧

我要回帖

更多关于 注塑机炮筒温度控制 的文章

 

随机推荐