首页

> 期刊论文知识库

首页 期刊论文知识库 问题

单片机温度检测报警电路论文

发布时间:

单片机温度检测报警电路论文

用DS18B20做的电子温度计,非常简单。#include <> #include\"\"#include <>#include <>//********************************************************#define Seck (500/TK) //1秒中的主程序的系数#define OffLed (Seck*5*60) //自动关机的时间5分钟!//********************************************************#if (FHz==0) #define NOP_2uS_nop_()#else #define NOP_2uS_nop_();_nop_()#endif//**************************************#define SkipK 0xcc //跳过命令#define ConvertK 0x44 //转化命令#define RdDs18b20K 0xbe //读温度命令//*******************************************extern LedOut(void);//*************************************************sbit PNP1=P3^4;sbit PNP2=P3^5;sbit BEEP=P3^2;//***********************************#defineDQ PNP2 //原来的PNP2 BEEP//***********************************static unsigned char Power=0;//************************************union{ unsigned char Temp[2]; //单字节温度 unsigned int Tt; //2字节温度}T;//***********************************************typedef struct{ unsigned char Flag; //正数标志 0;1==》负数 unsigned char WenDu; //温度整数 unsigned int WenDuDot; //温度小数放大了10000}WENDU; //***********************************************WENDU WenDu;unsigned char LedBuf[3];//----------------------------------//功能:10us 级别延时// n=1===> 6Mhz=14uS 12MHz=7uS//----------------------------------void Delay10us(unsigned char n){ do{ #if (FHz==1) NOP_2uS;NOP_2uS; #endif }while(--n);}//-----------------------------------//功能:写18B20//-----------------------------------void Write_18B20(unsigned char n){ unsigned char i; for(i=0;i<8;i++){ DQ=0; Delay10us(1);//延时13us 左右 DQ=n & 0x01; n=n>>1; Delay10us(5);//延时50us 以上 DQ=1; }}//------------------------------------//功能:读取18B20//------------------------------------unsigned char Read_18B20(void){ unsigned char i; unsigned char temp; for(i=0;i<8;i++){ temp=temp>>1; DQ=0; NOP_2uS;//延时1us DQ=1; NOP_2uS;NOP_2uS;//延时5us if(DQ==0){ temp=temp&0x7F; }else{ temp=temp|0x80; } Delay10us(5);//延时40us DQ=1; } return temp;}//-----------------------------------void Init (void){ DQ=0; Delay10us(45);//延时500us DQ=1; Delay10us(9);//延时90us if(DQ){ //0001 1111b=1f Power =0; //失败0 }else{ Power++; DQ=1; }}//----------------------------------void Skip(void){ Write_18B20(SkipK); Power++;}//----------------------------------void Convert (void){ Write_18B20(ConvertK); Power++;}//______________________________________void Get_Ds18b20L (void){ [1]=Read_18B20(); //读低位 Power++;}//______________________________________void Get_Ds18b20H (void){ [0]=Read_18B20(); //读高位 Power++;}//------------------------------------//规范化成浮点数// sssss111;11110000// sssss111;1111()//------------------------------------void ReadTemp (void){ unsigned char i; unsigned intF1=0; char j=1; code int Code_F[]={6250,1250,2500,5000}; ; if ([0] >0x80){ //负温度 =~; //取反+1=源吗 +符号S ; } <<= 4; //左移4位 [0]; // 温度整数 //************************************************** [1]>>=4; //--------------------------- for (i=0;i<4;i++){ //计算小数位 F1 +=([1] & 0x01)*Code_F; [1]>>=1; } ; //温度的小数 Power=0;}//----------------------------------void Delay1S (void){ static unsigned int i=0; if (++i==Seck) {i=0ower++;}}//----------------------------------void ReadDo (void){ Write_18B20(RdDs18b20K); Power++;}/**********************************函数指针定义***********************************/code void (code *SubTemp[])()={ Init,Skip,Convert,Delay1S,Init,Skip,ReadDo,Get_Ds18b20L, Get_Ds18b20H,ReadTemp};//**************************************void GetTemp(void){ (*SubTemp[Power])();}//---------------------------------------------------//将温度显示,小数点放大了 GetBcd(void){ LedBuf[0]= / 10; LedBuf[1]= % 10 +DotK; LedBuf[2]=()%10; if(LedBuf[0]==0)LedBuf[0]=Black; if() return; if(LedBuf[0] !=Black){ LedBuf[2]=LedBuf[1]; LedBuf[1]=LedBuf[0]; LedBuf[0]=Led_Pol; //'-' }else{ LedBuf[0]=Led_Pol; //'-' }}/*//---------------------------------------------------void JbDelay (void){ static long i; if (++i>=OffLed){ P1=0xff; P2=0xff; PCON=0x02; }}*//*****************************************************主程序开始1:2002_10_1 设计,采用DS18B20测量2:采用函数数组读取数码管显示正常!3:改变FHz可以用6,12MHz工作!******************************************************/code unsigned char Stop[3] _at_ 0x3b;void main (void){ P1=0xff; ; while (1){ GetTemp(); GetBcd(); // JbDelay(); LedOut(); }}复制代码 20091012_8b1ef92155560c13b5807ZmoDVSacjwD[1].jpg (12 KB) 2009-10-21 23:21 上传下载次数:0

这是我自己用DS18B20做的温度检测程序,复制给你看看,我这是通过串口可以在电脑上的串口助手上显示出实时的温度:#include<>#include<>#define uint unsigned int#define uchar unsigned charsbit ds=P1^0;bit flag;uchar count_t0;float f_temp;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=122;y>0;y--);}void init() // 串口初始化{TMOD=0x21;SCON=0x50;TH0=0x4c;TL0=0x00;TH1=0xf3;TL1=0xf3;EA=1;ET0=1;TR0=1;TR1=1;}void timer0() interrupt 1{TH0=0x4c;TL0=0x00;if(++count_t0>=20){count_t0=0;flag=1;}}void dsreset(){uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit read_bit(){uint i;bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return dat;}uchar read_byte(){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=read_bit();dat=(j<<7)|(dat>>1);}return dat;}void write_byte(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0;i=8;while(i>0)i--;ds=1;i++;i++;}}}void begin_change(){dsreset();delay(1);write_byte(0xcc);write_byte(0x44);}float get_temp(){uchar a,b;uint temp;float f_temp;dsreset();delay(1);write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();temp=b;temp<<=8;temp=temp|a;f_temp=temp*;temp=f_temp*10+;f_temp=f_temp+;return f_temp;}void main(){init();while(1){if(flag==1){flag=0;begin_change();TI=1;printf("The tempeature is %f\n",get_temp());while(!TI);TI=0;}}}

单片机控制的数字温度计要求四点1.测量范围0-100摄氏度2.分辨率1摄氏度3.采用3位数码管显示4.温度上下限报警输出,即达到预先设定的温度上下限值时,可闪烁显示或蜂鸣器发声报警说的不就是DS18B20.多去了,找不着再向我要.你上论坛找的 多得是 都是现成的不想回答了,已经三遍了在知道里搜索DS18B20,就能找到答案声明:以下的是我复制的DS18B20特点 独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为 V至 V 无需备用电源 测量温度范围为-55 ° C至 125 ℃ 。华氏相当于是-67 ° F到257华氏度 -10 ° C至 85 ° C范围内精度为± ° C温度传感器可编程的分辨率为9~12位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。8引脚封装 TO-92封装 用途 描述5 1 接地 接地4 2 数字 信号输入输出,一线输出:源极开路3 3 电源 可选电源管脚。见"寄生功率"一节细节方面。电源必须接地,为行动中,寄生虫功率模式。不在本表中所有管脚不须接线 。概况框图图1显示的主要组成部分DS18B20的。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。该装置信号线高的时候,内部电容器 储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20的电源也可以从外部3V-5 .5V的电压得到。DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有的数据都读,写都是从最低位开始。DS18B20有4个主要的数据部件:(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8 X5 X4 1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以℃/LSB形式表达,其中S为符号位。表1 DS18B20温度值格式表

已把我毕业论文的一部分发给你了,应该是你想要的。还需要其它的说一声

温度检测报警器单片机论文

是STC89C52RC单片机,没有STC82C52RC单片机的。这种题目,在百度文库里搜索呀,可以搜索到无数个答案的。搜索时,去到STC89C52RC,这样,搜索到的会更多,下载后再改成STC89C52RC单片机就行了。

摘要本设计的温度测量计加热控制系统以AT89S52单片机为核心部件,外加温度采集电路、键盘显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器DSI8B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定再这一温度。人性化的行列式键盘设计使设置温度简单快速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论控制上的控制算法,是控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统及功能单元的优势,再不减少功能的前提下有效的降低了硬件的成本,系统操控更简便。实验证明该温控系统能达到℃的静态误差,℃的控制精度,以及只有%的超调量,因本设计具有很高的可靠性和稳定性。关键词:单片机 恒温控制 模糊控制引言温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。 采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。MSP430系列单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。在单片机中对信号进行采样,为进一步提高测量精度,采样后对信号再进行数字滤波。单片机将检测到的温度信息与设定值进行比较,如果不相符,数字调节程序根据给定值与测得值的差值按PID控制算法设计控制量,触发程序根据控制量控制执行单元。如果检测值高于设定值,则启动制冷系统,降低环境温度;如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。图形点阵式液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。支持汉字显示的图形点阵液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是图形点阵液晶。它与行列式小键盘组成了现代单片机应用系统中最常用的人机交互界面。本文设计了一种基于MSP430单片机的温度测量和控制装置,能对环境温度进行测量,并能根据温度给定值给出调节量,控制执行机构,实现调节环境温度的目的。━、硬件设计1:MSP430系列单片机简介及选型单片机即微控制器,自其开发以来,取得了飞速的发展。单片机控制系统在工业、交通、医疗等领域的应用越来越广泛,在单片机未开发之前,电子产品只能由复杂的模拟电路来实现,不仅体积大,成本高,长期使用后元件老化,控制精度大大降低,单片机开发以后,控制系统变为智能化了,只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品体积变小了,成本也降低了,长期使用也不会担心精度达不到了。特别是嵌入式技术的发展,必将为单片机的发展提供更广阔的发展空间,近年来,由于超低功耗技术的开发,又出现了低功耗单片机,如MSP430系列、ZK系列等,其中的MSP430系列单片机是美国德州仪器(TI)的一种16位超低功耗单片机,该单片机

价格合理!信工毕业 就会单片机

必须要有实物啊,理论的东西都是要靠实物来验证的啊。温度控制系统不难吧,学过电子、单片机的都很轻松的,同学看来你大学过得还挺滋润的啊。去文库看看,基本都会有资料参考的。知识要点:1,AD采样,也就是温度的数据采集。2,中断,采集数据后比较,做相应的处理。

单片机多路温度检测论文

大学是干嘛的地方?无论多高的学历和职称,不会设计、制造教具,不会设计、制造教学仪器,不会维修仪器和设备;用你父母的钱进口教学仪器模仿了委托工厂仿制就是佼佼者;用你父母的钱请校外的人来维修设备、从校外采购配件;用你父母的钱请教学仪器生产企业提供教学实验讲义,将作者填上他们的名字就有教学突出成就奖;教你背诵的公式和外语,永远也比不上美国麻省理工学院在网上公开的教材内容。学生也不要埋怨学费贵,除了上面教师的原因,你们自己的基础实验、专业课就上的迷迷糊糊的,高额投资下的创新实验项目、挑战杯、科技竞赛、毕业论文、商业开发,都见不得阳光,将真金白银变成了一堆堆的垃圾!!!!

二.系统软件设计图4 系统程序流程图 系统程序流程图系统程序流程图如图4所示。 温度部分软件设计DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下:(1)初始化函数//读一个字节函数ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){ DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}//写一个字节函数WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}}(2)读取温度并计算函数ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*;t= tt*10+; //放大10倍输出并四舍五入---此行没用(3)主程序部分见前return(t);}三. 结束语AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。参考文献[1]林伸茂.8051单片机彻底研究基础篇 北京:人民邮电出版社 2004[2]范风强等.单片机语言C51应用实战集锦 北京:电子工业出版社 2005[3]谭浩强.C语言程序设计(第二版) 北京:清华大学出版社 1999[4]夏路易等.电路原理图与电路板设计教程 北京:北京希望电子出版社 2002[5]赵晶.Protel99高级应用 北京:人民邮电出版社 2000[6]聂毅.单片机定时器中断时间误差的分析及补偿[J] 微计算机信息 2002,18(4):37~38

电梯控制系统设计基于西门子PLC的电梯控制系统

液压伺服系统设计 液压伺服系统设计 在液压伺服系统中采用液压伺服阀作为输入信号的转换与放大元件。液压伺服系统能以小功率的电信号输入,控制大功率的液压能(流量与压力)输出,并能获得很高的控制精度和很快的响应速度。位置控制、速度控制、力控制三类液压伺服系统一般的设计步骤如下: 1)明确设计要求:充分了解设计任务提出的工艺、结构及时系统各项性能的要求,并应详细分析负载条件。 2)拟定控制方案,画出系统原理图。 3)静态计算:确定动力元件参数,选择反馈元件及其它电气元件。 4)动态计算:确定系统的传递函数,绘制开环波德图,分析稳定性,计算动态性能指标。 5)校核精度和性能指标,选择校正方式和设计校正元件。 6)选择液压能源及相应的附属元件。 7)完成执行元件及液压能源施工设计。 本章的内容主要是依照上述设计步骤,进一步说明液压伺服系统的设计原则和介绍具体设计计算方法。由于位置控制系统是最基本和应用最广的系统,所以介绍将以阀控液压缸位置系统为主。 全面理解设计要求 全面了解被控对象 液压伺服控制系统是被控对象—主机的一个组成部分,它必须满足主机在工艺上和结构上对其提出的要求。例如轧钢机液压压下位置控制系统,除了应能够承受最大轧制负载,满足轧钢机轧辊辊缝调节最大行程,调节速度和控制精度等要求外,执行机构—压下液压缸在外形尺寸上还受轧钢机牌坊窗口尺寸的约束,结构上还必须保证满足更换轧辊方便等要求。要设计一个好的控制系统,必须充分重视这些问题的解决。所以设计师应全面了解被控对象的工况,并综合运用电气、机械、液压、工艺等方面的理论知识,使设计的控制系统满足被控对象的各项要求。 明角设计系统的性能要求 1)被控对象的物理量:位置、速度或是力。 2)静态极限:最大行程、最大速度、最大力或力矩、最大功率。 3)要求的控制精度:由给定信号、负载力、干扰信号、伺服阀及电控系统零飘、非线性环节(如摩擦力、死区等)以及传感器引起的系统误差,定位精度,分辨率以及允许的飘移量等。 4)动态特性:相对稳定性可用相位裕量和增益裕量、谐振峰值和超调量等来规定,响应的快速性可用载止频率或阶跃响应的上升时间和调整时间来规定; 5)工作环境:主机的工作温度、工作介质的冷却、振动与冲击、电气的噪声干扰以及相应的耐高温、防水防腐蚀、防振等要求; 6)特殊要求;设备重量、安全保护、工作的可靠性以及其它工艺要求。 负载特性分析 正确确定系统的外负载是设计控制系统的一个基本问题。它直接影响系统的组成和动力元件参数的选择,所以分析负载特性应尽量反映客观实际。液压伺服系统的负载类型有惯性负载、弹性负载、粘性负载、各种摩擦负载(如静摩擦、动摩擦等)以及重力和其它不随时间、位置等参数变化的恒值负载等。 拟定控制方案、绘制系统原理图 在全面了解设计要求之后,可根据不同的控制对象,按表6所列的基本类型选定控制方案并拟定控制系统的方块图。如对直线位置控制系统一般采用阀控液压缸的方案,方块图如图36所示。图36 阀控液压缸位置控制系统方块图表6 液压伺服系统控制方式的基本类型伺服系统 控制信号 控制参数 运动类型 元件组成机液电液气液电气液 模拟量数字量位移量 位置、速度、加速度、力、力矩、压力 直线运动摆动运动旋转运动 1.阀控制:阀-液压缸,阀-液压马达2.容积控制:变量泵-液压缸;变量泵-液压马达;阀-液压缸-变量泵-液压马达3.其它:步近式力矩马达 动力元件参数选择 动力元件是伺服系统的关键元件。它的一个主要作用是在整个工作循环中使负载按要求的速度运动。其次,它的主要性能参数能满足整个系统所要求的动态特性。此外,动力元件参数的选择还必须考虑与负载参数的最佳匹配,以保证系统的功耗最小,效率高。 动力元件的主要参数包括系统的供油压力、液压缸的有效面积(或液压马达排量)、伺服阀的流量。当选定液压马达作执行元件时,还应包括齿轮的传动比。 供油压力的选择 选用较高的供油压力,在相同输出功率条件下,可减小执行元件——液压缸的活塞面积(或液压马达的排量),因而泵和动力元件尺寸小重量轻,设备结构紧凑,同时油腔的容积减小,容积弹性模数增大,有利于提高系统的响应速度。但是随供油压力增加,由于受材料强度的限制,液压元件的尺寸和重量也有增加的趋势,元件的加工精度也要求提高,系统的造价也随之提高。同时,高压时,泄漏大,发热高,系统功率损失增加,噪声加大,元件寿命降低,维护也较困难。所以条件允许时,通常还是选用较低的供油压力。 常用的供油压力等级为7MPa到28MPa,可根据系统的要求和结构限制条件选择适当的供油压力。 伺服阀流量与执行元件尺寸的确定 如上所述,动力元件参数选择除应满足拖动负载和系统性能两方面的要求外,还应考虑与负载的最佳匹配。下面着重介绍与负载最佳匹配问题。 (1)动力元件的输出特性 将伺服阀的流量——压力曲线经坐标变换绘于υ-FL平面上,所得的抛物线即为动力元件稳态时的输出特性,见图37。 图37 参数变化对动力机构输出特性的影响a)供油压力变化;b)伺服阀容量变化;c)液压缸面积变化 图中 FL——负载力,FL=pLA; pL——伺服阀工作压力; A——液压缸有效面积; υ——液压缸活塞速度, ; qL——伺服阀的流量; q0——伺服阀的空载流量; ps——供油压力。 由图37可见,当伺服阀规格和液压缸面积不变,提高供油压力,曲线向外扩展,最大功率提高,最大功率点右移,如图37a。 当供油压力和液压缸面积不变,加大伺服阀规格,曲线变高,曲线的顶点A ps不变,最大功率提高,最大功率点不变,如图37b。 当供油压力和伺服阀规格不变,加大液压缸面积A,曲线变低,顶点右移,最大功率不变,最大功率点右移,如图37c。 (2)负载最佳匹配图解法 在负载轨迹曲线υ-FL平面上,画出动力元件输出特性曲线,调整参数,使动力元件输出特性曲线从外侧完全包围负载轨迹曲线,即可保证动力元件能够拖动负载。在图38中,曲线1、2、3代表三条动力元件的输出特性曲线。曲线2与负载轨迹最大功率点c相切,符合负载最佳匹配条件,而曲线1、3上的工作点α和b,虽能拖动负载,但效率都较低。 (3)负载最佳匹配的解析法 参见液压动力元件的负载匹配。 (4)近似计算法在工程设计中,设计动力元件时常采用近似计算法,即按最大负载力FLmax选择动力元件。在动力元件输出特性曲线上,限定 FLmax≤pLA= ,并认为负载力、最大速度和最大加速度是同时出现的,这样液压缸的有效面积可按下式计算: (37) 图38 动力元件与负载匹配图形 按式37求得A值后,可计算负载流量qL,即可根据阀的压降从伺服阀样本上选择合适的伺服阀。近似计算法应用简便,然而是偏于保守的计算方法。采用这种方法可以保证系统的性能,但传递效率稍低。 (5)按液压固有频率选择动力元件 对功率和负载很小的液压伺服系统来说,功率损耗不是主要问题,可以根据系统要求的液压固有频率来确定动力元件。 四边滑阀控制的液压缸,其活塞的有效面积为 (38) 二边滑阀控制的液压缸,其活塞的有效面积为 (39) 液压固有频率ωh可以按系统要求频宽的(5~10)倍来确定。对一些干扰力大,负载轨迹形状比较复杂的系统,不能按上述的几种方法计算动力元件,只能通过作图法来确定动力元件。 计算阀控液压马达组合的动力元件时,只要将上述计算方法中液压缸的有效面积A换成液压马达的排量D,负载力FL换成负载力矩TL,负载速度换成液压马达的角速度 ,就可以得到相应的计算公式。当系统采用了减速机构时,应注意把负载惯量、负载力、负载的位移、速度、加速度等参数都转换到液压马达的轴上才能作为计算的参数。减速机构传动比选择的原则是:在满足液压固有频率的要求下,传动比最小,这就是最佳传动比。 伺服阀的选择 根据所确定的供油压力ps和由负载流量qL(即要求伺服阀输出的流量)计算得到的伺服阀空载流量q0,即可由伺服阀样本确定伺服阀的规格。因为伺服阀输出流量是限制系统频宽的一个重要因素,所以伺服阀流量应留有余量。通常可取15%左右的负载流量作为伺服阀的流量储备。 除了流量参数外,在选择伺服阀时,还应考虑以下因素: 1)伺服阀的流量增益线性好。在位置控制系统中,一般选用零开口的流量阀,因为这类阀具有较高的压力增益,可使动力元件有较大的刚度,并可提高系统的快速性与控制精度。 2)伺服阀的频宽应满足系统频宽的要求。一般伺服阀的频宽应大于系统频宽的5倍,以减小伺服阀对系统响应特性的影响。 3)伺服阀的零点漂移、温度漂移和不灵敏区应尽量小,保证由此引起的系统误差不超出设计要求。 4)其它要求,如对零位泄漏、抗污染能力、电功率、寿命和价格等,都有一定要求。 执行元件的选择 液压伺服系统的执行元件是整个控制系统的关键部件,直接影响系统性能的好坏。执行元件的选择与设计,除了按本节所述的方法确定液压缸有效面积A(或液压马达排量D)的最佳值外,还涉及密封、强度、摩擦阻力、安装结构等问题。 反馈传感器的选择 根据所检测的物理量,反馈传感器可分为位移传感器、速度传感器、加速度传感器和力(或压力)传感器。它们分别用于不同类型的液压伺服系统,作为系统的反馈元件。闭环控制系统的控制精度主要决定于系统的给定元件和反馈元件的精度,因此合理选择反馈传感器十分重要。 传感器的频宽一般应选择为控制系统频宽的5~10倍,这是为了给系统提供被测量的瞬时真值,减少相位滞后。传感器的频宽对一般系统都能满足要求,因此传感器的传递函数可近似按比例环节来考虑。 确定系统方块图 根据系统原理图及系统各环节的传递函数,即可构成系统的方块图。根据系统的方块图可直接写出系统开环传递函数。阀控液压缸和阀控液压马达控制系统二者的传递函数具有相同的结构形式,只要把相应的符号变换一下即可。 绘制系统开环波德图并确定开环增益 系统的动态计算与分析在这里是采用频率法。首先根据系统的传递函数,求出波德图。在绘制波德图时,需要确定系统的开环增益K。 改变系统的开环增益K时,开环波德图上幅频曲线只升高或降低一个常数,曲线的形状不变,其相频曲线也不变。波德图上幅频曲线的低频段、穿越频率以及幅值增益裕量分别反映了闭环系统的稳态精度、截止频率及系统的稳定性。所以可根据闭环系统所要求的稳态精度、频宽以及相对稳定性,在开环波德图上调整幅频曲线位置的高低,来获得与闭环系统要求相适应的K值。 由系统的稳态精度要求确定K 由控制原理可知,不同类型控制系统的稳态精度决定于系统的开环增益。因此,可以由系统对稳态精度的要求和系统的类型计算得到系统应具有的开环增益K。 由系统的频宽要求确定K 分析二阶或三阶系统特性与波德图的关系知道,当ζh和K/ωh都很小时,可近似认为系统的频宽等于开环对数幅值曲线的穿越频率,即ω-3dB≈ωc,所以可绘制对数幅频曲线,使ωc在数值上等于系统要求的ω-3dB值,如图39所示。由此图可得K值。 图39 由ω-3dB绘制开环对数幅频特性a)0型系统;b)I型系统 由系统相对稳定性确定K 系统相对稳定性可用幅值裕量和相位裕量来表示。根据系统要求的幅值裕量和相位裕量来绘制开环波德图,同样也可以得到K。见图40。 实际上通过作图来确定系统的开环增益K,往往要综合考虑,尽可能同时满足系统的几项主要性能指标。 系统静动态品质分析及确定校正特性 在确定了系统传递函数的各项参数后,可通过闭环波德图或时域响应过渡过程曲线或参数计算对系统的各项静动态指标和误差进行校核。如设计的系统性能不满足要求,则应调整参数,重复上述计算或采用校正环节对系统进行补偿,改变系统的开环频率特性,直到满足系统的要求。 仿真分析 在系统的传递函数初步确定后,可以通过计算机对该系统进行数字仿真,以求得最佳设计。目前有关于数字仿真的商用软件,如Matlab软件,很适合仿真分析。

单片机温湿度检测毕业论文

这是我自己用DS18B20做的温度检测程序,复制给你看看,我这是通过串口可以在电脑上的串口助手上显示出实时的温度:#include<>#include<>#define uint unsigned int#define uchar unsigned charsbit ds=P1^0;bit flag;uchar count_t0;float f_temp;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=122;y>0;y--);}void init() // 串口初始化{TMOD=0x21;SCON=0x50;TH0=0x4c;TL0=0x00;TH1=0xf3;TL1=0xf3;EA=1;ET0=1;TR0=1;TR1=1;}void timer0() interrupt 1{TH0=0x4c;TL0=0x00;if(++count_t0>=20){count_t0=0;flag=1;}}void dsreset(){uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit read_bit(){uint i;bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return dat;}uchar read_byte(){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=read_bit();dat=(j<<7)|(dat>>1);}return dat;}void write_byte(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0;i=8;while(i>0)i--;ds=1;i++;i++;}}}void begin_change(){dsreset();delay(1);write_byte(0xcc);write_byte(0x44);}float get_temp(){uchar a,b;uint temp;float f_temp;dsreset();delay(1);write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();temp=b;temp<<=8;temp=temp|a;f_temp=temp*;temp=f_temp*10+;f_temp=f_temp+;return f_temp;}void main(){init();while(1){if(flag==1){flag=0;begin_change();TI=1;printf("The tempeature is %f\n",get_temp());while(!TI);TI=0;}}}

我做的课程设计,用的数码管,也做了protues仿真,你有需要的话,我邮箱是。希望对你有帮助,#include<>sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;/////数码管1断码控制///////////////sbit P15=P1^5;sbit P16=P1^6;sbit P17=P1^7;sbit P32=P3^2;/////数码管2段码控制////////////////sbit up=P3^7;sbit down=P3^6; ////按键操作端口//////////////////sbit P35=P3^5; ////////控制晶闸管端口/////////sbit DQ =P3^3; ///////温度传感器端口///////// #define THCO 0xee#define THLO 0x00unsigned char code duan[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,}; //////////////////////////////////////////int b=0;char pwm=0;int k;char r=0,q=0;static char wendu_1;char hao=20;//////////////////////////////////////////////void delay(unsigned int i){while(i--);}//////////////////////////////////////////Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay(8); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时 大于 480usDQ = 1; //拉高总线delay(14);x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);}////////////////////////////////////////////ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(4);}return(dat);}////////////////////////////////////////////////WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}//delay(4);}/////////////////////////////////////////////////DS18B20程序读取温度ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*;return(t);}xianshi(){/////////////////当前温度显示///////////////////////////// P11=1; P0=duan[wendu_1/1000]; for(k=0;k<1000;k++); P1=0;P12=1; P0=duan[wendu_1/100%10]; for(k=0;k<1000;k++); P1=0;P13=1; P0=duan[wendu_1%100/10]; for(k=0;k<1000;k++); P1=0;P14=1; P0=duan[wendu_1%10]; for(k=0;k<1000;k++); P1=0; ///////////////////////////目标电压显示/////////////// P15=1; P2=duan[hao/1000]; for(k=0;k<1000;k++); P1=0;P16=1; P2=duan[hao/100%10]; for(k=0;k<1000;k++); P1=0;P17=1; P2=duan[hao%100/10]; for(k=0;k<1000;k++); P1=0;P32=1; P2=duan[hao%10]; for(k=0;k<1000;k++); P32=0;////////////////////////////////////////////////////////// }/////////////////////////////////////////////////////////// main(void){ P11=0; P12=0; P13=0; P14=0; P15=0; P16=0; P17=0; P32=0; P35=0; /////////////////////////////////////////////////////////// while(1){ wendu_1=ReadTemperature()/16;//读温度 xianshi(); ///显示系统数据/////////////////////////////////////操作函数//////////////////////////////////// if(down==0) {hao--;} if(up==0){hao++;} ///////////////////////////////////////////////////////////////////hao为理想温度/////wendu_1为实际环境温度/////////////////////////////////////////////////////////////////P35为高时 led灯工作///////////////////////////////////// P35=0; pwm=hao-wendu_1; if(pwm>0) {P35=1;} if(pwm<0) {P35=0;} if(pwm==0) {P35=0;}///////////////////////////////////////////////////////////////// }}

用DS18B20做的电子温度计,非常简单。#include <> #include\"\"#include <>#include <>//********************************************************#define Seck (500/TK) //1秒中的主程序的系数#define OffLed (Seck*5*60) //自动关机的时间5分钟!//********************************************************#if (FHz==0) #define NOP_2uS_nop_()#else #define NOP_2uS_nop_();_nop_()#endif//**************************************#define SkipK 0xcc //跳过命令#define ConvertK 0x44 //转化命令#define RdDs18b20K 0xbe //读温度命令//*******************************************extern LedOut(void);//*************************************************sbit PNP1=P3^4;sbit PNP2=P3^5;sbit BEEP=P3^2;//***********************************#defineDQ PNP2 //原来的PNP2 BEEP//***********************************static unsigned char Power=0;//************************************union{ unsigned char Temp[2]; //单字节温度 unsigned int Tt; //2字节温度}T;//***********************************************typedef struct{ unsigned char Flag; //正数标志 0;1==》负数 unsigned char WenDu; //温度整数 unsigned int WenDuDot; //温度小数放大了10000}WENDU; //***********************************************WENDU WenDu;unsigned char LedBuf[3];//----------------------------------//功能:10us 级别延时// n=1===> 6Mhz=14uS 12MHz=7uS//----------------------------------void Delay10us(unsigned char n){ do{ #if (FHz==1) NOP_2uS;NOP_2uS; #endif }while(--n);}//-----------------------------------//功能:写18B20//-----------------------------------void Write_18B20(unsigned char n){ unsigned char i; for(i=0;i<8;i++){ DQ=0; Delay10us(1);//延时13us 左右 DQ=n & 0x01; n=n>>1; Delay10us(5);//延时50us 以上 DQ=1; }}//------------------------------------//功能:读取18B20//------------------------------------unsigned char Read_18B20(void){ unsigned char i; unsigned char temp; for(i=0;i<8;i++){ temp=temp>>1; DQ=0; NOP_2uS;//延时1us DQ=1; NOP_2uS;NOP_2uS;//延时5us if(DQ==0){ temp=temp&0x7F; }else{ temp=temp|0x80; } Delay10us(5);//延时40us DQ=1; } return temp;}//-----------------------------------void Init (void){ DQ=0; Delay10us(45);//延时500us DQ=1; Delay10us(9);//延时90us if(DQ){ //0001 1111b=1f Power =0; //失败0 }else{ Power++; DQ=1; }}//----------------------------------void Skip(void){ Write_18B20(SkipK); Power++;}//----------------------------------void Convert (void){ Write_18B20(ConvertK); Power++;}//______________________________________void Get_Ds18b20L (void){ [1]=Read_18B20(); //读低位 Power++;}//______________________________________void Get_Ds18b20H (void){ [0]=Read_18B20(); //读高位 Power++;}//------------------------------------//规范化成浮点数// sssss111;11110000// sssss111;1111()//------------------------------------void ReadTemp (void){ unsigned char i; unsigned intF1=0; char j=1; code int Code_F[]={6250,1250,2500,5000}; ; if ([0] >0x80){ //负温度 =~; //取反+1=源吗 +符号S ; } <<= 4; //左移4位 [0]; // 温度整数 //************************************************** [1]>>=4; //--------------------------- for (i=0;i<4;i++){ //计算小数位 F1 +=([1] & 0x01)*Code_F; [1]>>=1; } ; //温度的小数 Power=0;}//----------------------------------void Delay1S (void){ static unsigned int i=0; if (++i==Seck) {i=0ower++;}}//----------------------------------void ReadDo (void){ Write_18B20(RdDs18b20K); Power++;}/**********************************函数指针定义***********************************/code void (code *SubTemp[])()={ Init,Skip,Convert,Delay1S,Init,Skip,ReadDo,Get_Ds18b20L, Get_Ds18b20H,ReadTemp};//**************************************void GetTemp(void){ (*SubTemp[Power])();}//---------------------------------------------------//将温度显示,小数点放大了 GetBcd(void){ LedBuf[0]= / 10; LedBuf[1]= % 10 +DotK; LedBuf[2]=()%10; if(LedBuf[0]==0)LedBuf[0]=Black; if() return; if(LedBuf[0] !=Black){ LedBuf[2]=LedBuf[1]; LedBuf[1]=LedBuf[0]; LedBuf[0]=Led_Pol; //'-' }else{ LedBuf[0]=Led_Pol; //'-' }}/*//---------------------------------------------------void JbDelay (void){ static long i; if (++i>=OffLed){ P1=0xff; P2=0xff; PCON=0x02; }}*//*****************************************************主程序开始1:2002_10_1 设计,采用DS18B20测量2:采用函数数组读取数码管显示正常!3:改变FHz可以用6,12MHz工作!******************************************************/code unsigned char Stop[3] _at_ 0x3b;void main (void){ P1=0xff; ; while (1){ GetTemp(); GetBcd(); // JbDelay(); LedOut(); }}复制代码 20091012_8b1ef92155560c13b5807ZmoDVSacjwD[1].jpg (12 KB) 2009-10-21 23:21 上传下载次数:0

温度相关的毕业设计 ·基于单片机的数字温度计的设计·基于MCS-51数字温度表的设计·单片机的数字温度计设计·基于单片机的空调温度控制器设计·基于数字温度计的多点温度检测系统·设施环境中温度测量电路设计·DS18B20数字温度计的设计·多点温度采集系统与控制器设计·基于PLC和组态王的温度控制系统设计·温度监控系统的设计·用单片机进行温度的控制及LCD显示系统的设计·单片机电加热炉温度控制系统·全氢罩式退火炉温度控制系统·数字温度计的设计·基于单片机AT89C51的语音温度计的设计·基于单片机的多点温度检测系统·基于51单片机的多路温度采集控制系统·基于单片机的数字显示温度系统毕业设计论文·基于MCS51单片机温度控制毕业设计论文·西门子S7-300在温度控制中的应用·燃气锅炉温度的PLC控制系统·焦炉立火道温度软测量模型设计·温度检测控制仪器·智能温度巡检仪的研制·电阻炉温度控制系统·数字温度测控仪的设计·温度测控仪设计·多路温度采集系统设计·多点数字温度巡测仪设计·LCD数字式温度湿度测量计·64点温度监测与控制系统·温度报警器的电路设计与制作·基于单片机的数字温度计的电路设计·全氢煤气罩式炉的温度控制系统的研究与改造·温度检测与控制系统·红外快速检测人体温度装置的设计与研制·具有红外保护的温度自动控制系统的设计·基于单片机的温度测量系统的设计·数字温度计设计·DS18B20温度检测控制·PN结(二极管)温度传感器性能的实验研究·多功能智能化温度测量仪设计·软胶囊的单片机温度控制(硬件设计)·空调温度控制单元的设计·大容量电机的温度保护——软件设计·大容量电机的温度保护 ——硬件电路的设计·基于DS18B20温度传感器的数字温度计设计·热轧带钢卷取温度反馈控制器的设计·基于单片机的温度采集系统设计·多点温度数据采集系统的设计·基于单片机的数字式温度计设计·18B20多路温度采集接口模块·基于单片机的户式中央空调器温度测控系统设计·单片机电阻炉温度控制系统设计·基于单片机的电阻炉温度控制系统设计·基于ARM的嵌入式温度控制系统的设计·基于DS18B20的多点温度巡回检测系统的设计·基于单片机的多点无线温度监控系统·基于MSC1211的温度智能温度传感器·用集成温度传感器组成测温控制系统·室内温度控制报警器·自动温度控制系统·烤箱温度控制系统·基于单片机的电加热炉温度控制系统设计·基于PLC的温度监控系统设计·基于无线传输技术的室温控制系统设计——温度控制器软件设计·温度箱模拟控制系统·基于无线传输技术的室温控制系统设计——温度控制器硬件设计·数字式温度计的设计·温度监控系统设计·基于单片机的电阻炉温度控制系统·基于plc的温度湿度检测和显示系统设计·基于单片机的3KW电炉温度控制系统的设计·腔型肿瘤热疗仪温度控制系统设计·基于AT89S51单片机的数字温度计设计·吹塑薄膜挤出机温度控制与检测系统设计·电加热炉PLC温度自适应控制系统的研究·高压母线温度自动监测装置的设计·高压母线温度自动检测装置·小型热水锅炉单片机温度控制系统·消毒柜单片机温度控制·嵌入式系统在多点温度控制中的应用·单片机温度控制系统·上下限温度报警器的设计·基于单片机的饮水机温度控制系统设计·基于单片机的温度测量系统设计

温湿度检测报警论文

找个做温湿度监控系统的公司,买一个最便宜的表说你试用。。。然后让他们出方案,然后你把方案修改、完善下九 OK了。。。。 哈哈哈。。。。

基于视频的人流量监测系统设计与实现 图像水印识别微信小程序设计与实现 基于重力传感器的飞机大战游戏开发 手机平台加减乘除口算训练游戏开发 基于Android平台的个人移动地图软件开发 面向多种数据源的爬虫系统的设计与实现 基于Zabbix的服务器监控系统的设计与实现 基于新浪微博的分布式爬虫以及对数据的可视化处理 基于分布式的新闻热点网络爬虫系统与设计 舆情分析可视化系统的设计与实现 基于大数据的用户画像的新闻APP设计 基于Android平台的语言翻译程序设计与实现 基于SSH的水电信息管理系统的设计与实现 基于SSM的学科竞赛管理系统

运用温度传感器18b20 与湿度传感器(具体的可自己去淘宝),运用单片机控制,然后获得数据后用无线发射模块,送给终端,终端用单片机控制液晶显示就OK!

下面是以前写过的一篇论文希望对你能有帮助第1章绪论课题研究背景和意义国内外的研究现状温度传感器湿度传感器第2章设计任务分析及方案论证温度传感器的选择湿度传感器的选择控制芯片的的选择单片机输出显示设备选择本章小结第3章硬件电路的设计信号采集温度传感器湿度传感器信号分析单片机的内部结构单片机最小系统信号处理显示电路本章小结第4章软件设计软件总体模块测温度子程序流程图测湿度子程序流程图液晶显示程序流程图本章总结第5章结束语参考文献

相关百科

热门百科

首页
发表服务