1.单片机温度控制系统的论文
51单片机温度控制系统设计摘要:目前,一个学习与应用单片机的高潮在全社会大规模地兴起。
学习单片机的最有效方法就是理论与实践并重,用80C51单片机自制了一个温度控制系统,重点介绍了该系统的硬件结构及编程方法。关键词:单片机;温度传感器;模/数转换器 单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
目前,一个学习与应用单片机的高潮在全社会大规模地兴起。学习单片机的最有效方法就是理论与实践并重,用80C51单片机自制了一个温度控制系统,重点介绍了该系统的硬件结构及编程方法。
1单片机温度控制系统的组成及工作原理在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。以下简单分析了单片机温度控制系统设计过程及实现方法。
现场温度经温度传感器采样后变换为模拟电压信号,经低通滤波滤掉干扰信号后送放大器,信号放大后送模/数转换器转换为数字信号送单片机,单片机根据输入的温度控制范围通过继电器控制加热设备完成温度的控制。本系统的测温范围为0℃~99℃,启动单片机温度控制系统后首先按下第一个按键开始最低温度的设置,这时数码管显示温度数值,每隔一秒温度数值增加一度,当满足用户温度设置最低值时再按一下第一个按键完成最低温度的设置,依次类推通过第二个按键完成最高温度的设置。
然后温度检测系统根据用户设定的温度范围完成一定范围的温度控制。2温度检测的设计系统测温采用AD590温度传感器,AD590是美国模拟器件公司生产的单片集成两端感温电流源。
它的主要特性如下:2.1流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数;即式中:Ir-流过器件(AD590)的电流,单位为mA;T-热力学温度,单位为K。2.2 AD590的测温范围为-55℃~+150℃;2.3 AD590的电源电压范围为4V~30V;2.4输出电阻为710MW;2.5精度高。
AD590温度传感器输出信号经放大电路放大10倍,再送入模/数转换器ADC0804,转换后送单片机。根据AD590温度传感器特性以及放大10倍后的电压值与现场温度的比较发现,实际温度转换后送入单片机的值与按键输入数值之间有一定的差值,模/数转换器送入单片机的数值是按键输入值得2.5倍。
由于单片机不能进行小数乘法运算,所以先对按键输入进行乘5,然后根据运算结果及程序状态字的状态再进行循环右移一位,如果溢出标志位为低电平时直接对累加器进行一次带进位循环右移,如果溢出标志位为高电平时,先对进位标准位CY位置为高电平,然后再进行一次带进位循环右移,通过上述操作使按键输入的温度值与模/数转换器送入单片机的温度值相统一。3结论给出了用单片机在0℃~99℃之间,通过用户设置温度上限、下限值来实现一定范围内温度的控制;给出了温度控制系统的硬件连接电路以及软件程序,此系统温度控制只是单片机广泛应用于各行各业中的一例,相信通过大家的聪明才智和努力,一定会使单片机的应用更加广泛化。
参考文献[1]李广弟,朱月秀,王秀山.单片机基础[M].北京:北京航空航天大学出版社,2001,7.[2]万光毅,严义,邢春香.单片机实验与实践教程[M]. 北京:北京航空航天大学出版社,2006,4. 你好,我有相关论文资料(博士硕士论文、期刊论文等)可以对你提供相关帮助,需要的话请加我,7 6 1 3 9 9 4 5 7(扣扣),谢谢。
2.论文单片机温度控制系统的(程序清单)
本设计的温度测量及加热控制系统以 AT89S52 单片机为核心部件,外加温度采集电路、键盘及显示电路、加热控制电路和越限报警等电路。
采用单总线型数字式的温度传感器 DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定在这一温度。
人性化的行列式键盘设计使设置温度简单快速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论上的控制算法,使控制精度完全能满足一般社会生产的要求。
通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。 实验证明该温控系统能达到 0.2℃的静态误差,0.45℃的控制精度,以及只有 0.83%的超调量,因而本设计具有很高的可靠性和稳定性。
关键 词: 单片机 恒温控制 模糊控制 1引 言 温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。
硬件 系统的设计 1、电路总体原理框图 温度测量及加热系统控制的总体结构如图 1 所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、与报警装置和系统核心 AT89S52单片机作为微处理器。
图 1:系统总体原理框图 温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与用户设定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量。
以此控制量控制固态继电器开通和关断,决定加热电路的工作状态,使水温逐步稳定于用户设定的目标值。在水温到达设定的目标温度后,由于自然冷却而使其温度下降时,单片机通过采样回的温度与设置的目标温度比较,作出相应的控制,开启加热器。
当用户需要比实时温度低的温度时,此电路可以利用风扇降温。系统运行过程中的各种状态参量均可由数码管实时显示。
2、温度采集电路的设计 温度采集电路模块如图 2 示。DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。
其中 DQ 为数字信号输 入/输出端;GND 为电源地;VDD 为外接供电电源输入端。 2图 2:温度采集电路 DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展的二进制补码读数形式提供,以 0.0625℃/LSB 形式表达,其中 S 为符号位。
这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1再乘于 0.0625 即可得到实际温度。 3、键盘和显示的设计 键盘采用行列式和外部中断相结合的方法,图 3 中各按键的功能定义如下表 1。
其中设置键与单片机的 INT 0 脚相连,S 0 −−S 9 、YES、NO 用四行三列接单片机 P0 口,REST键为硬件复位键,与 R、C 构成复位电路。模块电路如下图 3: 表 1:按键功能 按键 键名 功能REST 复位键 使系统复位RET 设置键 使系统产生中断,进入设置状态S 0 −−S 9 数字键 设置用户需要的温度YES 确认键 用户设定目标温度后进行确认NO 清除键 用户设定温度错误或误按了 YES 键后使用3图 3 键盘接口电路 显示采用 3 位共阳 LED 动态显示方式,显示内容有温度值的十位、个位及小数点后一位。
用 P2 口作为段控码输出,并用 74HC244 作驱动。P1.0—P1.2 作为位控码输出,用 PNP 型三极管做驱动。
模块电路如下图 4: 4、加热控制电路的设计 图 4 显示接口电路 用于在闭环控制系统中对被控对象实施控制,被控对象为电热杯,采用对加在电热杯两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温控制的目的。对电炉丝通断的控制采用 SSR-40DA 固态继电器。
它的使用非常简单,只要在控制端 TTL 电平,即可实现对继电器的开关,使用时完全可以用 NPN 型三极管接成电压跟随器的形式驱动。当单片机的 P1.3 为高点平时,三极管驱动固态继电器工作接通加热器工作,当单片机的 P1.3 为低电平时固态继电器关断,加热器不工作。
控制电路图如下图 5: 4图 5 加热控制电路 5、报警及指示灯电路的设计 当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为三声断续的滴答滴答的叫声。在本系统中我们为用户设计了越限报警,当温度低于用户设置的目标温度 10 度或高于 10 度时蜂鸣器为连续不断的滴答滴答叫声。
当单片机 P1.7 输出高电平时,三极管导通,蜂鸣器工作发出报警声。P1.7 为低电平时三极管关断,蜂鸣器不工作。
D1 为电热杯加热指示灯,P1.5 低电平有效;D0 为检测到 DS18B20 的指示,高电平有效;D10 为降温指示灯,低电平有效。报。
3.基于单片机温度测量与控制 毕业论文
摘要
本设计的温度测量计加热控制系统以AT89S52单片机为核心部件,外加温度采集电路、键盘显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器DSI8B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定再这一温度。人性化的行列式键盘设计使设置温度简单快速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论控制上的控制算法,是控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统及功能单元的优势,再不减少功能的前提下有效的降低了硬件的成本,系统操控更简便。
实验证明该温控系统能达到0.2℃的静态误差,0.45℃的控制精度,以及只有0.83%的超调量,因本设计具有很高的可靠性和稳定性。
关键词:单片机 恒温控制 模糊控制
引言
温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。 采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。MSP430系列单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。
温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。在单片机中对信号进行采样,为进一步提高测量精度,采样后对信号再进行数字滤波。单片机将检测到的温度信息与设定值进行比较,如果不相符,数字调节程序根据给定值与测得值的差值按PID控制算法设计控制量,触发程序根据控制量控制执行单元。如果检测值高于设定值,则启动制冷系统,降低环境温度;如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。
图形点阵式液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。支持汉字显示的图形点阵液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是图形点阵液晶。它与行列式小键盘组成了现代单片机应用系统中最常用的人机交互界面。
本文设计了一种基于MSP430单片机的温度测量和控制装置,能对环境温度进行测量,并能根据温度给定值给出调节量,控制执行机构,实现调节环境温度的目的。
━、硬件设计
1:MSP430系列单片机简介及选型
单片机即微控制器,自其开发以来,取得了飞速的发展。单片机控制系统在工业、交通、医疗等领域的应用越来越广泛,在单片机未开发之前,电子产品只能由复杂的模拟电路来实现,不仅体积大,成本高,长期使用后元件老化,控制精度大大降低,单片机开发以后,控制系统变为智能化了,只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品体积变小了,成本也降低了,长期使用也不会担心精度达不到了。特别是嵌入式技术的发展,必将为单片机的发展提供更广阔的发展空间,近年来,由于超低功耗技术的开发,又出现了低功耗单片机,如MSP430系列、ZK系列等,其中的MSP430系列单片机是美国德州仪器(TI)的一种16位超低功耗单片机,该单片机
4.单片机课程设计 单片机温度的检测与显示的设计
用18b20做很简单啊。
温度的子程序给你,,你重定义一下接口,主程序已经调用出温度了,你送到显示就行了。
/* 延时t毫秒 */ void delay(uint t) { uint i; while(t--) { /* 对于11.0592M时钟,约延时1ms */ for (i=0;i<125;i++) {} } } /* 产生复位脉冲初始化DS18B20 */ void TxReset(void) { uint i; DQ = 0; /* 拉低约900us */ i = 100; while (i>0) i--; DQ = 1; // 产生上升沿 i = 4; while (i>0) i--; } /* 等待应答脉冲 */ void RxWait(void) { uint i; while(DQ); while(~DQ); // 检测到应答脉冲 i = 4; while (i>0) i--; } /* 读取数据的一位,满足读时隙要求 */ bit RdBit(void) { uint i; bit b; DQ = 0; i++; DQ = 1; i++;i++; // 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效 b = DQ; i = 8; while(i>0) i--; return (b); } /* 读取数据的一个字节 */ uchar RdByte(void) { uchar i,j,b; b = 0; for (i=1;i<=8;i++) { j = RdBit(); b = (j<<7)|(b>>1); } return(b); } /* 写数据的一个字节,满足写1和写0的时隙要求 */ void WrByte(uchar b) { uint i; uchar j; bit btmp; for(j=1;j<=8;j++) { btmp = b&0x01; b = b>>1; // 取下一位(由低位向高位) if (btmp) { /* 写1 */ DQ = 0; i++;i++; // 延时,使得15us以内拉高 DQ = 1; i = 8; while(i>0) i--; // 整个写1时隙不低于60us } else { /* 写0 */ DQ = 0; i = 8; while(i>0) i--; // 保持低在60us到120us之间 DQ = 1; i++; i++; } } } /* 启动温度转换 */ void convert(void) { TxReset(); // 产生复位脉冲,初始化DS18B20 RxWait(); // 等待DS18B20给出应答脉冲 delay(1); // 延时 WrByte(0xcc); // skip rom 命令 WrByte(0x44); // convert T 命令 } /* 读取温度值 */ void RdTemp(void) { TxReset(); // 产生复位脉冲,初始化DS18B20 RxWait(); // 等待DS18B20给出应答脉冲 delay(1); // 延时 WrByte(0xcc); // skip rom 命令 WrByte(0xbe); // read scratchpad 命令 tplsb = RdByte(); // 温度值低位字节(其中低4位为二进制的“小数”部分) tpmsb = RdByte(); // 高位值高位字节(其中高5位为符号位) } void main(void) { do { delay(1); // 延时1ms convert(); // 启动温度转换,需要750ms delay(1000); // 延时1s RdTemp(); // 读取温度 } while(1); }。
5.如何基于飞思卡尔单片机使用lcd12864显示实时的温度曲线
我那时候用的是吴鉴鹰单片机开发板,各方面还是不错的。
从刚开始接触单片机,到现在已经有4年的时间了,在这期间学习和使用了51单片机、飞思卡尔单片机,LPC2138,PIC16F887等系列的单片机,每接触一款单片机,都会经历熟悉其基本开发,然后将其用于项目中的过程,对于如何学习一款单片机,自己做了如下的总结。
大家都知道,51单片机是最容易入门的,不仅因为其编程简单,更重要的是网上的资料非常丰富。所以一般学习单片机开发的都将51单片机作为入门开发的首选。我学习51单片机的时候是采用这样的一个步骤进行学习的:
第一步(熟悉的过程):买了一款51单片机开发板,然后就开始了我的学习之旅,刚开始的时候没有去看视频教程,而是对着一本实验教材进行学习,那本实验教材的名字记不清楚了,但是其内容就是围绕单片机的LED灯进行控制,将51单片机内部的各个功能部件全部都使用到了,这样就能使我在很短的时间内,通过控制LED灯的亮、灭熟悉了51单片机的内部的各种资源,这时对51单片机也就没有感到陌生了。所以,个人觉得,学习单片机,要从实验入手,先熟悉单片机再说,开发语言开始使用的是C语言。
第二步(进阶的过程):有了第一步的基础之后,接下来的便是进阶的过程,当时,我看的是郭天祥十天学会单片机的视频教程,因为这个教程从基础到复杂的编程慢慢深入,讲的比较的全面,而且也生动,所以那一阶段,也是我学习单片机进步最快的阶段,每次听课的时候,按照上面的实验,以及课堂上面调试程序时出现的一些问题,自己认真的在电脑上进行调试,并分析产生故障的原因,让我有了一定的开发基础。在看完了视频教程之后,后面又对基础的知识进行了下补习,主要是看单片机原理性的教材,因为有些细节性的东西还是要从教材上面获得。
第三步(项目实战的阶段):学习单片机的时候,虽然也编写了一些程序,但是那些都是一些很小的模块程序,并没有起到综合应用的目的,所以在这之后,我和另外一个学习硬件的同学一起组成了一个小的团队,进行项目实践开发,那时候,实验室的条件比价好,有很多的器件可以自己使用。所以,我们就设计了我们的第一个作品,基于单片机的液体点滴监控系统。做这个系统时,就将以前单片机所学的知识,做了一个综合的应用,包括有LCD1602控制,串口的控制等。
经过以上三个步骤的学习之后,对于51单片机的开发基本上就算入门了。而对于其他类型的单片机,如飞思卡尔单片机,LPC2148 ARM7单片机,PIC16F887等,虽然每个系列的功能不一样,但是最基本的编程思想还是一样的,不同的可能就是编译器,程序下载的软件等差别,所以有了51单片机的开发基础之后,学习其他单片机所采用的方法就是一个差异化的学习,学习各种单片机不同的地方,这样,就能很快的熟悉一款新的型号的单片机。
如在学习PIC16F887这个系列的单片机时,我首先做的工作不是去阅读数据手册,而是先拿着DEMO代码,在编译软件中编译、链接、生成HEX文件,然后将其下载到开发板中跑起来,这个过程主要就是学习其软件的基本操作,有了这个基础之后,就能自己进行编程、测试。之后就是熟悉其编程的模式,所谓其编程模式,就是寄存器的控制,中断程序的编写,熟悉了这个操作,也就能控制其他的功能模块了,如串口的控制、I2C硬件控制器的控制。这些基本的开发熟悉了之后,接下来便是学习差异的部分,例如PIC单片机C语言中,其堆栈深度不能超过8级,超过了之后,将会使得程序出现跑飞的现象。而且内存的分配完全要靠自己来控制,分成了4个BANK的数据,BANK0,BANK1,BANK2,BANK3 等。这些就是每个系列单片机所独有的一些东西,这些东西需要详细的了解,因为它们可能为你的编程带来很大的便利。
以上就是我学习单片机的总结,如果大家有更好的学习方法,希望大家能够提出来,一起讨论,共同进步。
6.基于单片机的自动温控系统的设计.毕业论文开题报告
热电致冷器件特别适合于小热量和受空间限制的温控领域。改变加在器件上的直流电的极性即可变致冷为加热,而吸热或放热率则正比于所加直流电流的大小。Pe1tier 温控器的设定温度可以在一个较宽的范围内任意选择,可选择低于或高于环境温度。
在本系统中我们选用了天津蓝天高科电源有限公司生产的半导体致冷器件 TES1-12739,其最大温差电压 14.7V,最大温差电流3.9A最大致冷功率33.7W。
1.5 其它部分
系统采用Samsung(三星)公司生产的真空荧光数码显示屏 VFD用来实时显示当前温度,以观察控制效果。键盘和串行通信接口用来设定控制温度和调整PID参数。系统电路原理图如图3所示。
2 系统软件设计
系统开始工作时,首先由单片机控制软件发出温度读取指令,通过数字温度传感器 DS18B20 采样被控对象的当前温度值T1并送显示屏实时显示。然后,将该温度测量值与设定值T比较,其差值送 PID控制器。PID 控制器处理后输出一定数值的控制量,经DA 转换为模拟电压量,该电压信号再经大电流驱动电路,提高电流驱动能力后加载到半导体致冷器件上,对温控对象进行加热或制冷。加热或制冷取决于致冷器上所加电压的正负,若温控对象当前温度测量值与设定值差值为正,则输出负电压信号,致冷器上加载负电压温控对象温度降低;反之,致冷器上加载正向电压,温控对象温度升高。上述过程:温度采样-计算温差-PID调节-信号放大输出周而复始,最后将温控对象的温度控制在设定值附近上下波动,随着循环次数的增加,波动幅度会逐渐减小到某一很小的量,直至达到控制要求。为了加快控制,在进入PID控制前加入了一段温差判断程序。当温度差值大于设定阈值Δt时,系统进行全功率加热或制冷,直到温差小于Δt才进入PID控制环节。图4为系统工作主程序的软件流程图.
3 结论
本文设计的基于单片机数字PID控制的精密温度控制系统,在实际应用中取得了良好的控制效果,温度控制精度达到±0.1℃。经48小时连续运行考验,系统工作稳定,有效地降低了辐亮度标准探测器的温度系数,使辐亮度标准探测器在温度变化较大的环境中也能保持其高精度,为实现基于探测器的高精度辐射定标的广泛应用奠定了基础。
本文作者创新点:在原来基于PC的PID温控系统的基础上,设计了由单片机、数字式温传感器DS18B20和半导体致冷器组成的精密温度控制系统。该温控系统的应用为高精度光辐射测量仪器-辐亮度标准探测器的小型化、智能化提供了有利条件。
7.急求基于51单片机的LCD显示实时数据曲线
先实现划线的函数,把相邻的采样点转化为屏幕坐标之后,连接起来就可以了,下面划线函数可以作为参考
void Line(char x1,char y1,char x2,char y2)
{
char xdelta; // width of rectangle around line
char ydelta; // height of rectangle around line
char xinc; //increment for moving x coordinate
char yinc; //increment for moving y coordinate
char rem; //current remainder
//Bool bit = 0;//used for dashed lines
char s,e; //Start,End
//See if the line is horizontal or vertical. If so, then call special routines.
if (y1 == y2)
{ //draw a horizontal line
if(x1 > x2 ) s = x2,e = x1;
else s = x1,e = x2;
for(; s y2 ) s = y2,e = y1;
else s = y1,e = y2;
for(; s x1)? 1 : -1;
yinc = (y2 > y1)? 1 : -1;
// draw the first point
//SetPixel( x1, y1, 1);
if (xdelta >= ydelta)
{
rem = xdelta / 2;
for (;x1 != x2; x1 += xinc)
{
SetPixel(x1, y1,1);
rem += ydelta;
if (rem >= xdelta){
rem -= xdelta;
y1 += yinc;
}
}
}
else
{
rem = ydelta / 2;
for (;y1 != y2; y1 += yinc)
{
SetPixel(x1, y1,1);
rem += xdelta;
if (rem >= ydelta) {
rem -= ydelta;
x1 += xinc;
}
}
}
}
g_nCoordinateX = x2;//
g_nCoordinateY = y2;
}
转载请注明出处众文网 » 毕业论文--单片机控制温度实时曲线的显示