当前位置:首页 > 电阻炉温度控制系统设计
DS?12345678DPYaabcfbgdeecfgdpddpDS?12345678DS?DS?VCC按键电路R125K *5显示电路DPYaabcfbgdeecfgdpddp12345678DPYaabcfbgdeecfgdpddp12345678abcdeDPYafgbefgdpdcdpS0U4S1S2S31011121312340VCC1A02A13A274LS1484EO5GS6EI7GNDD8031(40)169761514581234567891011121314151617181920R2200S4 RSTQ1VCCGNDQ2Q3Q4NPNU1P1.0/T2P1.1/T2EXP1.2P1.3P1.4AT89S51P1.5P1.6P1.7RSTP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSSD8031(40)VCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7EA/VPPALEPSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A84039383736353433323130292827262524232221R84.7kNPNNPNNPN四川理工学院本科毕业(设计)论文
R94.7kR104.7kR114.7kC1R110uF附 录
1. 电阻炉温度控制系统设计—系统原理图
10KR7300 *8C230pFC312MHz30pF晶闸管控制电路VCCVCCR131KU232VCC4VCCT+T-NCSOCSSCK8765SPEAKERQ5PNP2BUFFERSP1R31K1U3R461KR61KMOC60415AC 220VTRIAC34报警电路温度采集转换电路MAX6675C40.1uF1GNDRES2R5C5100PF加热器1K
- 39 -
电阻炉温度控制系统设计
2. 温度采集转换源程序
#include
Sbit MAX6675_CS=P1.2;
Sbit MAX6675_SCK=P1.1; Sbit MAX6675_SO=P1.3;
#define SCK_DELAY=10; /*温度值读取程序*/
Unsigned int ReadMAX6675(void) {
unsigned int Value=0; unsigned char count;
MAX6675_CS=0; /*CS置低电平,启动NAX6675*/ MAX6675_SCK=0;
for(count=0;count<3*SCK_DELAY;count++);
for(count=0;count<16;count++) /*得到16位高字节*/ { Value<=1;
MAX6675_SCK=1; /* SCK置高电平*/ for(i=0;i MAX6675_SCK=0; /*SCK置低电平*/ } MAX6675_CS=1; /*停用MAX6675*/ return Value; } #define ERROR10xffff; #define ERROR20xfffe; /*数据转换程序 */ Unsigned int GetCunrrent Temperaure(unsigned int CurrentValue) { Unsigned int TempValue; /* 定义转换温度值(取D14到D3转换温度值)*/ TempValue= CurrentValue; /*定义从MAX6675读到的数据 */ if(TempValue&0x8000) /*D15=1;标识位错*/ return ERROR1; if(TempValue&0x0004) /*D2=1;热电偶开路*/ return ERROR2; TempValue&=0x7ffb; /*取D14位到D3的值*/ TempValue>=3; /*转换温度值*/ return TempValue; } 3. PID控制算法源程序 #define FiltA 0.1 /*PID控制输出的滤波系数*/ #define FiltB 0.9 /*PID控制输出的滤波系数*/ #define Kp 1.75 /*PID控制器的比例系数*/ - 40 - 四川理工学院本科毕业(设计)论文 #define Ki 0.012 /*PID控制器的积分系数*/ #define Kd 3.5 /*PID控制器的微分系数*/ int Err[4][2]; int InteE[]4[2]; int OnMs[4][2]; /* funetion: unsigned char pid(unsigned char i,unsigned char j,unsigned char k,unsigned char l) deseription: this funetion for pid control parameter: i:->channel j:->time k:->set temprature l:->actual temprature retturn: adjust_time一>adjust time */ viod pid(undigned char ch.,int refval) { int DiscE,Tmpr; Err[ch][1]=refval-GetTmp(GetData6675(ch+1)); /*e(k)*/ if(Err[ch][1]>=Emax) InteE[ch][1]= InteE[ch][0]+ Err[ch][1]; else InteE[ch][1]= InteE[ch][0]; DiscE= Err[ch][1]- Err[ch][0]; Tmpr=Kp* Err[ch][1]+Ki* InteE[ch][1]+Kd* DiscE. OnMs[ch][1]=GetOnMs(FiltA*OnMs[ch][0]+ FiltB*Tmpr); Err[ch][0]= Err[ch][1]; InteE[ch][0]= InteE[ch][1]; OnMs[ch][0]= OnMs[ch][1]; } /* funetion: int GetonMs(int OnTime) deseription: output control time parameter: none return: ftmp */ int GetOnMs(int OnTime) { int ftmp; if(OnMs<=0) ftmp=0; else if(OnMs<=100) ftmp=100; - 41 - 电阻炉温度控制系统设计 else ftmp= OnTime; return; } 4. 看门狗程序 #include #include sfr AUXR = 0x8E; /*定义寄存器*/ sfr WDTRST = 0xA6; void clr_wdt(); main() { AUXR = 0xff; /*初始化看门狗相关寄存器*/ while(1) /*主循环*/ { clr_wdt(); /*8191个机器周期内必须至少调用此程序一次,否则看门狗会溢出*/ } } void clr_wdt() { WDTRST = 0x1E; /*清除看门狗指令*/ WDTRST = 0xE1; } - 42 -
共分享92篇相关文档