发布时间 : 星期六 文章基于FPGA的微波炉控制器设计 - 毕业设计论文更新完毕开始阅读18940167f5335a8102d220b9
基于FPGA 的微波炉控制器设计
4.2.4. 温度控制
温度控制子模块,主要涉及到温度的测定和控制。本设计采用模拟温度传感器AD590和模数转换器ADC0809实现对温度的检测。
AD590用于模拟微波炉内食品的温度,AD590温度传感器的感测能力是温度每升高1K就增加1μA的电量,该电流流入10kΩ电阻后,将产生10mV(0.01V)的电压。而0℃(等于273K)时,输出电流273 μA,经I/V转换后,将产生2.73 V的电压。如果测到的电压为x V时,则可由( x-2.73)÷0.01得到要测量的温度。温度传感器AD590的输出经过放大器后,将电压引入ADC0809的Vin (+) 管脚,由ADC0809进行模数转换。
ADC0809是8位模数转换器,测量精度为0.02 V,当ADC0809的转换值为x 时,所测温度为:T=(x ×0.02-2.73)÷0.01=x ×2-273。ADC0809将当前温度转换成数字量后送入FPGA控制芯片,控制芯片对由键盘输入的加热最高温度给定值进行比较,即通过直接比较设定值和测得值的BCD编码,当炉内温度高于给定温度时,立即停止加热,并输出控制信号提示报警灯亮,从而实现对温度的控制。
具体设计过程中,涉及到数据的采集、时钟定时和温度控制。数据采集主要完成温度的处理,时钟定时主要对温度起定时作用,温度控制部分的输入信号来自数据处理和时钟定时后的输出,当实际输出温度小于预输出温度值时,输出信号控制微波炉继续加热。
以下是该设计的流程图,如图4.16所示:
- 25 -
西南石油大学本科毕业设计(论文)
图4.16 温度控制部分流程图
数据采集主要完成温度的处理,实现T=(x×0.02-2.73)÷0.01的运算,数据调整为对应的数字信号,在读取ADC0809的数据后,先将转换数据左移1位(相当于乘以2),然后减去273,当温度达到某一数值时,使能信号和清零信号为?1?,此时时钟开始计时。
根据上述分析,编写该温度控制器的VHDL程序,其主要程序如下: --数据采集部分
PROCESS (CLK,DATA) BEGIN
IF (CLK'EVENT AND CLK=1) THEN
IF (tout>=(cout-6) AND tout<=(cout+5)) THEN --设定值上下5度的范围内开始计时
enout<=1; ELSE enout<=0; END IF;
- 26 -
基于FPGA 的微波炉控制器设计
-- 时钟定时部分
PROCESS (CLK ,clearing , enin )
VARIABLE s , m : INTEGER RANGE 0 TO 60; VARIABLE e : INTEGER RANGE 0 TO 24; VARIABLE d : BIT; BEGIN
d:=clearing XOR enin; IF (d=0) THEN s:=0; m:=0' e:=0;
ELSIF (CLK'EVENT AND CLK=1) THEN s:=s+1; IF (s=10) THEN s:=0;m:=m+1; IF (m=10) THEN m:=0;e:=e+1; IF (e=24) THEN e:=0; … hourout <= e; --控制部分 BEGIN
IF (tin<(cin+5)) THEN --cin是参数设定值 temp<=1; ELSE temp<=0; END IF;
IF (CLK'EVENT AND CLK=1) THEN control_bcd<=temp; END IF;
- 27 -
西南石油大学本科毕业设计(论文)
IF (hour>hourin) THEN ALARM<=1; ELSE ALARM<=0; END IF;
将各部分进行元件例化,生成相应的电路符号,连接成该温度控制器的内部原理图,如图4.17所示:
clockCLKeninclearininst1ddataCLKINPUTVCCINPUTVCChourout[3..0]ccontrolCLKDATA[7..0]enoutclearouttout[7..0]cout[7..0]data[7..0]CLKtin[7..0]cin[7..0]hourin[3..0]COOKLOADRESETinst7control_bcd[15..0]ALARMOUTPUTOUTPUTcontrol_bcd[15..0]ALARMinstCOOKINPUTVCCINPUTVCCINPUTVCCLOADRESET 图4.17 温度控制器内部组成原理图
其中,输入信号CLK为系统时钟脉冲,DATA为输入数据,输出信号control_bcd为输出控制信号,外接译码电路,ALARM为蜂鸣提示。
4.2.5. 控制模块的实现
综合上述分析,对该控制模块进行完整设计,以下是该模块顶层文件关键代码。 U1:KZQ PORT MAP
(RESET,SET_T,START,TEST,CLK,DONE,COOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP,ALARM); U2:ZZQ PORT MAP
(DATA1,TEST_TMP,CLK_TMP,DONE_TMP,DATA_TMP,LOAD_TMP,ALARM); U3:KWQ PORT MAP
(CLK,DATA_TMP,COOK_TMP,LOAD_TMP,RESET_TMP,control,ALARM); U4:JSQ PORT MAP
(COOK_TMP,LOAD_TMP,CLK,DATA_TMP,SEC_L,SEC_H,MIN_L,MIN_H,DONE,ALARM);
- 28 -