倒数第一丑
我做的课程设计,用的数码管,也做了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;}///////////////////////////////////////////////////////////////// }}
熊猫大王
推荐用STC12C5A16AD ,他完全兼容89C51,而且具有很多片内外设如AD,EEPROM之类的,89C51是基础的51单片机,只带有基本的51单片机外设,做测量可能要通过搭电路的方式实现AD等功能不了解你项目的功能需求,还是看自己选择吧,STC12C那个用的时候注意1T时钟系统和12T时钟系统的区别,其他的都是和89C51一样的
拉菲兔兔
用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
yoyobear1988
在食品工业、酿酒行业、石化和工矿企业、环境检测、公安交通管理、社会公用事业等一些国民经济生产和人们工作生活的领域和场合中,常常需要检测特定环境中酒精气体的浓度,以确保工厂企业环境安全和人民生命财产安全[1-4]。如监控酒精生产车间和石化厂的酒精浓度,可以避免工厂起火和爆炸事故的发生;监测工矿企业场地的酒精浓度,能避免工作人员出现酒精中毒等恶性事故;检测司机体内酒精含量,可以防止驾驶人员酒后驾车,减少恶性交通事故的发生。因此,研制酒精气体浓度检测仪具有十分广阔的现实和潜在的市场需求,并具有十分重要的意义。传统的酒精气体检测仪因传感器性能、电路设计、数据处理算法等原因,存在着气体选择性不高、抗干扰性能差、智能化程度低、仪器操作复杂、无法实时保存和调看数据等突出问题[3-4]。鉴于此,笔者设计和研制了一种无线智能酒精浓度探测仪,弥补了传统酒精检测仪器的缺点和不足。
1 系统总体方案
该酒精浓度探测仪由发送端和接收端两部分组成,其原理框图分别如图1和图2所示。发送端主要包括酒精浓度传感器与A/D转换电路、STC90C52RC单片机、浓度阈值设置与声音报警电路、语音播报电路、LCD显示电路和无线收发电路六部分;接收端由无线收发电路、STC90C52RC单片机、数据接口通信电路和上位计算机组成。
2 系统硬件电路设计
传感器电路与A/D转换电路
TGS2620为日本费加罗(FIGARO)公司生产的一款可以探测气体中酒精浓度的半导体气体传感器,具有灵敏度高、功耗低、寿命长、成本低等特点[5-6]。其电路连接如图3所示,其中,RH为加热器电阻,室温下时为83±8 Ω;RS为传感器电阻,其阻值和还原性气体浓度之间的数学关系为:
通过检测VRL就可以确定出待测气体浓度C。
电路中运放OP07接成电压跟随器形式,对传感器和后级电路进行隔离,减小电源波动和外界因素对采样数据的影响。ICL7660是MAXIM公司生产的小功率极性反转电源转换器,作用是将+5 V电源变换成-5 V电源为OP07供电。其中,CC2采用漏电小、介质损耗低的10 μF钽电容,以提高电源转换效率。TLC1549是TI公司生产的10位分辨率逐次逼近型ADC芯片,具有自动采样和保持、可按比例量程校准转换范围、抗噪声干扰功能,在满刻度时总误差最大仅为±1 LSB。
LCD显示、阈值设置与声音报警电路
16×2个字符液晶显示模块DM-162显示报警阈值和酒精浓度值。为了减少单片机I/O口的使用数量和简化电路结构,采用间接控制(4位数据总线)方式,接口电路如图4上部分所示。初始化时,需写入28H指令码将8位总线转为4位数据接口方式。管脚BLA、BLK和VL分别是液晶背光源正极、负极和显示对比度调整端,RS、E分别是寄存器选择端、读/写信号线和使能端。
酒精浓度阈值设置和声音报警电路如图4下部分所示。当设置键S1按下时,进入阈值设置(初始阈值为500 ppm)界面,再按下键S2或S3,对阈值作增加或减小操作,步长为20 ppm。阈值设置好后写入STC90C52RC单片机片内5 KB EEPROM的第一扇区2000H和2001H地址中,使系统重启不必重新设置。若酒精浓度值大于阈值,将口线置为低电平,三极管8550驱动蜂鸣器发声音报警。
语音播报电路
采用华邦(Winbond)公司的ISD2560语音录放集成芯片作酒精浓度值播放,电路如图5所示。话筒采用差分形式接入到片内前置放大器的MIC端和MIC REF端,以抵消噪声和提高输入共模抑制比。扬声器接成双端输出形式,输出功率为单端用法时功率的4倍。单片机的P2口、和口线分别与地址线A0~A9相连,用来设定ISD2560片内480 KB EEPROM(地址为0H~257H)中存储语音段的起始地址,录音和放音功能均从该起始地址开始,录音过程中信息段地址自动增加。本系统在ISD2560中需录入语音信息有:“当前酒精浓度值为”、“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“百”、“千”、“点”、“ppm(浓度单位)”。由于ISD2560的语音录放时间为60 s,按每秒3个汉字计算,则可录放180个汉字,因此满足播报要求。此外,通过、和口线可以配置ISD2560的操作模式[7-8](地址为300H~3FFH)。口线分别用来控制语音芯片的片选、芯片的开关、录音/放音模式选择。口用来判断芯片的存储空间是否已经填满或者信息存储是否溢出。由于录音时在每个信息段结尾处自动插入标志,当放音遇到该标志时产生宽约为 ms的负脉冲。用口检测到此脉冲的上升沿后才播放另一段录音,避免语音播放不连续。
无线收发电路
系统采用NORDIC公司生产的工作于 5 GHz的ISM频段的单片无线收发器芯片nRF24L01完成无线数据的收发工作,nRF24L01的最高传输速率为2 Mb/s,电路如图6所示。稳压芯片 V将5 V输入电压转换成 V给nRF24L01供电。nRF24L01与单片机接口为四线SPI方式,CSN、SCK、MOSI、MISO管脚分别是SPI的片选使能线、时钟线、数据输入线、数据输出线。IRQ为中断信号线(低电平有效),接至单片机的外部中断管脚,单片机主要是通过该接口线与nRF24L01进行通信并判断数据接收和数据发送是否完成。CE为芯片的RX/TX模式选择线。IREF为参考电流输入端,通过22 kΩ电阻接地。管脚ANT1和ANT2给天线提供平衡的RF输出,通过后接的简单射频网络匹配电路获得单端50 Ω的阻抗输出。网络匹配电路在发送模式时阻止谐波,在接收模式时克制本地振荡漏出。VDD_PA管脚输出 V电压,给片内功率放大器提供电源。
数据接口通信电路
接收端的计算机与单片机间的通信由串行USB接口集成电路CH340T完成,如图7所示。CH340T支持或者通信,具有仿真接口,并且可以升级外围串口设备,支持常用的MODEM联络信号,支持IRDA规范的SIR红外通信,提供RS23RS48RS422接口等功能。CH340T内置有独立的收发缓冲区,支持通信波特率50 b/s~2 Mb/s的单工、半双工、全双工等异步串行通信。图7中,在CH340T芯片的发送脚TXD上反接一个二极管1N4001,防止该引脚将电流倒灌到单片机;在接收引脚RXD上加一个300 Ω的限流电阻来防止单片机对CH340T倒灌电流;从而避免电流倒灌导致不需要供电工作的另一方芯片继续工作。
3 系统软件设计
下位机软件设计
下位机的程序开发和调试是在Keil μVision4集成开发环境下进行的,包括发送端和接收端的软件设计。
发送端软件设计
发送端软件流程如图8所示。单片机上电后进行系统初始化,完成单片机内部系统变量的初始化以及TLC154DM-16ISD2560和nRF24L01等外部设备的初始设置;然后延时大约5 min,预热传感器TGS2620,保证传感器工作正常;程序初始化结束后,系统进入监控状态。若报警阈值设置键按下,进入报警限设置模式;若录音键按下,进入录音模式;然后启动A/D转换获取采样数据,作滤波处理、标度变换和系统误差校正后得到被测酒精浓度值。该值与报警阈值比较,若结果是“大于”或“等于”,启动蜂鸣器发声程序,作声音报警,提示酒精浓度超标;接着该值在DM-162液晶模块上实时显示;最后判断放音键是否按下。若按下则根据酒精浓度值查找ISD2560中对应语音信息的存储地址开始放音;放音结束后,该值由nRF24L01发送程序发送到接收端;待发送完成后,采集、显示和发送新一轮的酒精浓度数据。
发送端软件应用了防脉冲干扰平均滤波法[9]对A/D采样数据作预处理。其原理是:连续采样K次,然后对这K个采样数据进行比较,去除其中的最大值和最小值,计算剩下的K-2个数据的算术平均值作为采样有效值。该方法融合了中位值滤波法和算术平均滤波法的优点,既可去掉脉动性质的干扰,又可消除偶然出现的脉冲性干扰引起的采样值偏差。为加快计算速度,设计数字滤波器时K=10。
为了提高系统的实时性,软件中采用分段线性插值法[10-11]作标度变换。过程如下:(1)按传感器TGS2620的标定曲线,将该曲线进行非等距分段(曲率变化大(小)时,样点距离取小(大)),选取各分段点坐标(VRLi,Ci)(i=0,1,…,M),其中:VRLi和Ci分别为不同样点时传感器输出电压值和对应浓度值;(2)计算相邻样点间的拟合直线斜率ki=(Ci+1-Ci)/(VRLi+1-VRLi)(i=0,1,…,M-1);(3)将M组坐标数据(VRLi,Ci)和对应斜率ki存储于单片机片内EEPROM的第二扇区(地址为2200H~23FFH)中;(4)每采集到一个电压值VRL即查询EEPROM表,找出VRL所在区间(VRLi,Ci)~(VRLi+1,Ci+1),取出该区间(VRLi,Ci)和ki数据,用线性插值公式C=Ci+ki(VRL-VRLi)计算出当前酒精浓度值C。
将采集到的N个样本数据(xi,yi)代入式(5)中即得到系数a、b的值,并存入单片机的内存单元中。系统测量时,将标度变换后的酒精浓度测量值x代入误差校正方程y=ax+b中,即可得到校正后的酒精浓度值y,从而达到消除系统误差的目的。
接收端软件设计
接收端单片机的软件流程如图9所示。接收端开机上电后,程序初始化设置nRF24L01和串口,然后进入监控场景。当nRF24L01接收到一帧完整的酒精浓度数据后,立即通过串口发送到上位机。接收端单片机与PC之间数据交互采用异步通信模式。独立波特率,串口协议设置为:波特率9 600 b/s,8 bit数据位,1 bit停止位,无校验位。
上位机软件设计
上位机用户界面采用通用的基于对象的程序设计语言Microsoft Visual Basic 开发,实现酒精浓度数据的接收、显示和保存。软件用到了串行通信控件MSComm。MSComm控件是Microsoft公司提供的Windows下串行通信编程的ActiveX控件,通过对此控件的属性和事件进行相应的编程操作,即可轻松地实现串行通信。串口通信协议与接收端完全相同。上位机软件的程序流程如图10所示。
4 系统测试
为了检验本系统的测量性能,采用无水乙醇和纯净水按照一定体积比配制标准的酒精溶液作为被测量对象,测试结果如表1所示。其中:单位ppm=μg/mL表示1 mL酒精溶液中含酒精的质量。由测量结果可以看出,测试数据覆盖传感器的量程,测试最大相对误差小于±2%,优于同类设计产品[3-5]。
为了获得本仪器发送端与接收端的最大无错误率的通信距离,在室外进行了nRF24L01随距离的错误率(临界区间)测试实验,结果如表2所示。其中,每米的错误率是10次试验后计算得到的平均值。可见,nRF24L01的传输距离可达到100 m,略高于RFID、ZIGBEE和蓝牙等无线通信技术[12]。
5 主要技术指标
本仪器主要技术指标如下:(1)测量范围:50~5 000 ppm;(2)灵敏度(传感器电阻变化率):;(3)测量精度:≤±2%;(4)传输距离:≤100 m;(5)工作电源:DC+5 V;(6)工作环境温度:-40 ℃~+70 ℃;(7)工作环境相对湿度:0~85%RH。
6 结束语
本文设计研制了一种基于STC90C52RC单片机、TGS2620酒精传感器和nRF24L01无线通信芯片的酒精浓度探测仪。该仪器现已投入到成都市某小型酿酒厂酒池的实际生产中。现场工作情况表明:系统运行正常,工作可靠;系统具有气体选择性和灵敏度高、稳定性好、智能化程度高、通信距离远、功耗低、抗工业干扰能力强、性价比优异等优点。该仪器可以应用于食品加工行业、工矿企业、石油和化学工业、环境检测与保护、社会公用事业、高空作业人员、公安交通管理(如酒后驾车、交通警察执法)等需要现场检测或无线遥测酒精气体浓度的场合中,市场应用前景广阔、推广价值较高。
参考文献
[1] 李海涛.基于QNX的远程车载酒驾智能监控系统[J].电子技术应用,2014,40(8):136-139.
[2] 宋晓宇,高国伟,李世川,等.基于单片机控制的酒精浓度检测系统的设计[J].传感器世界,2017,23(8):18-23.
[3] 俞露芦,陶大锦.基于单片机的酒精浓度检测仪的设计[J].微型机与应用,2014,33(22):34-36.
[4] 葛毓.基于GPRS/GPS的车载酒精检测和控制电路的设计[D].南昌:南昌大学,2010.
[5] Zhang Zhe,Tong Jin,Chen Donghui,et al. Electronic nose with an air sensor matrix for detecting beef freshness[J].Journal of Bionic Engineering,2008,5(1):67-73.
[6] FIGARO Information for TGS sensors[EB/OL].(2008-04-23)[2019-07-03].(1104).pdf.
[7] 程可嘉,王振松,刘晓云.ISD2560在门禁系统语音播报中的应用[J].自动化技术与应用,2009,28(5):75-77.
[8] 胡珍玉.智能语音提示器系统设计[J].应用能源技术,2012,15(12):34-38.
[9] 张秀再,陈彭鑫,张光宇,等.河流水质实时监测系统[J].电子技术应用,2015,41(2):82-85.
[10] 梁晓雷.基于单片机的分段线性插值算法实现[J].电脑知识与技术,2012,8(21):5236-5243.
[11] 韩潇,曾立,占丰,等.基于分段多项式近似的DDFS研究及FPGA实现[J].电子技术应用,2018,44(3):22-30.
[12] 佚名.各种主流无线通信技术[EB/OL].(2018-05-11)[2019-07-03]..
胡仕兵,陈子为
(成都信息工程大学 电子工程学院,四川 成都610225)
汀汀20082008
摘要本文主要介绍了基于PID控制理论的单片机温度的控制。控制器件使用单片机,单片机的应用有利于增加控制的灵活性,提高控制精度,减小控制部分的体积,是现代控制的主要硬件部分。温度是工业控制对象的主要被控参数之一,如冶金,机械,食品,化工各类工业中广泛使用的各种加热炉,热处理炉,反应炉等。在过去多是采用常规的模拟调节器对温度进行控制,本文采用了单片微型机对温度实现自动控制。对不同的升温速率升温,再对某种仪器在不同升温状况下的特性进行检测,达到了较高的精度。应用继电器自整定方法,可以快速整定PID参数,减少工人的工作量,计算出错的几率降低很多。所使用的时间也减少了很多,工作效率大大提高。并应用经验公式快速计算出相应的数值。关键词: PID 单片机 继电器整定 温度控制ABSTRACTThis text mainly introduced the controller of PID in industry produce the control of the controller piece uses a machine, the application of a machine is advantageous to the vivid of the increment control, exaltation control accuracy, let up the control the physical volume of the part, is main hardware part of the modern temperature is a mainly industry controled object, such as metallurgy, machine, food, each kind of industry of chemical engineering in various heating stove of the extensive usage, the hot processing stove, reactor etc..At pass by mostly the emulation modulator adopt of the normal regulations carries on the control to the temperature, this literary grace uses a miniature machine to carry out the automatic control to the on the examination towards heating the velocity to heat differently, again to a certain instrument under the condition that dissimilarity heat of characteristic, come to a the higher relay setting method, It can settle the parameter of PID quickly and reduce the worker's workload, several rates that compute to come amiss lower many. The time also reduced a lot of, Work efficiency raises the empirical formula also to compute a number for correspond quicklyKeyword: PID Single-chip microcomputer Relay setting temperature control绪论温度是生产过程和科学实验中普遍而且重要的物理 参数。在工业生产过程中为了高效地进行生产,必须对生产工艺过程中的主要参数,如温度,压力,流量,速度等进行有效的控制。其中温度的控制在生产过程中占有相当大的比例。准确测量和有效控制温度是优质,高产,低耗和安全生产的重要条件。在工业的研制和生产中,为了保证生产过程的稳定运行并提高控制精度,采用微电子技术是重要的途径。它的作用主要是改善劳动条件,节约能源,防止生产和设备事故,以获得好的技术指标和经济效益。本课题是结合生产实际和科研工作,运用PID算法对温度进行控制,以求达到较好的控制效果。目前先进国家各种炉窑自动化水平较高,装备有完善的检测仪表和计算机控制系统。其计算机控制系统已采用集散系统和分布式系统的形式,大部分配有先进的控制算法,能够获得较好的工艺性能指标。单片微型计算机是随着超大规模集成电路的技术的发展而诞生的。由于它具有体积小,功能强,性价比高等优点,所以广泛应用于电子仪表,家用电器,节能装置,军事装置,机器人,工业控制等诸多领域,使产品小型化,智能化,既提高了产品的功能和质量又降低了成本,简化了设计。本文主要涉及MCS-51单片机在温度控制中的应用。应用单片机实现PID控制算法和PID参数的整定。PID 控制是最早发展起来的控制策略之一, 由于其算法简单、鲁棒性好、可靠性高等优点, 被广泛应用于工业过程控制。当用计算机实现后, 数字 PID 控制器更显示出参数调整灵活、算法变化多样、简单方便的优点。随着生产的发展, 对控制的要求也越来越高, 随之发展出许多以计算机为基础的新型控制算法, 如自适应 PID 控制、模糊 PID 控制、智能 PID 控制等等。1.PID 控制原理模拟 PID 控制系统原理框图如图 1- 1所示, 系统由模拟 PID 控制器和受控对象组成。PID 控制器根据给定值 r(t) 与实际输出值c(t) 构成的控制偏差:(1-1 )将偏差的比例(P)、积分( I) 和微分 (D ) 通过线性组合构成控制量, 对受控对象进行控制。其控制规律为:(1- 2)或写成传递函数形式:(1- 3)式中, 为比例系数, 为积分时间常数, 为微分时间常数。简单说来, PID 控制器各校正环节的作用是这样的:●比例环节: 即时成比例地反应控制系统的偏差信号 , 偏差一旦产生, 控制器立即产生控制作用以减小误差。●积分环节: 主要用于消除静差, 提高系统的无差度, 积分作用的强弱取决于积分时间常数 , 越大积分作用越弱, 反之则越强。● 微分环节: 能反应偏差信号的变化趋势(变化速率) , 并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号, 从而加快系统的动作速度, 减小调节时间。2. PID控制规律及对系统稳定性的影响控制器输出与偏差信号之间的函数关系称为控制规律。控制规律决定了控制器的特性。在控制器输出稳定之前,偏差 与输出之间的相互关系,称为控制器的动态特性。在控制器上施加恒定的偏差,经过一段时间,控制器的输出达到稳定,偏差 与输出 的相互关系称为控制器的静特性。控制器的输入与输出信号的相互关系如图所示。图中 为偏差信号,通常用测量值与给定值只差在全量程范围中所占的百分数来表示:
我做的课程设计,用的数码管,也做了protues仿真,你有需要的话,我邮箱是。希望对你有帮助,#includesbit P11=P1^1;sbit P12=
在食品工业、酿酒行业、石化和工矿企业、环境检测、公安交通管理、社会公用事业等一些国民经济生产和人们工作生活的领域和场合中,常常需要检测特定环境中酒精气体的浓度,
摘要本设计的温度测量计加热控制系统以AT89S52单片机为核心部件,外加温度采集电路、键盘显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器
相关范文:基于单片机监控系统的研究【摘要】文章所设计的基于单片机监控系统汽车行驶记录仪所实现的主要功能:记录汽车停车前2秒内的行驶速度,并能实时地显示汽车行驶的
一、毕业设计题目及要求 (2个) 1、基于单片机控制的电动机Y-△启动的设计 要求:1)控制器为单片机,电动机为三相异步电动机;2)启动时间为3秒;3)由按键设