1、5.系统设计方案5。1系统总体设计近百年来,温度传感器的发展大致经历以下三个阶段:第一阶段是传统的分立式温度传感器(含敏感元件);第二个阶段是模拟集成的温度传感器/控制器;第三个阶段是智能温度传感器。在近几年中,国际上的许多国家已经研发出关于智能温度控制器的系列产品。智能温度控制器具有可以输出温度控制量以及与温度数据相关的,适配各种微型控制器特点;并且它是在硬件的基础上通过软件实现测试控制功能的,其智能化程度取决于软件的开发水平。智能温度传感器最大的有点就是能对现场测量到温度值进行数据处理和传输,并与上位机进行数据通信。二十世纪九十年代中期智能温度控制器问世了,智能温度控制器是在微电子技术与计
2、算机技术还有自动测试技术的结合产物。二十一世纪以后,智能温度传感器正朝着精度高、功能强、标准化总线、安全性、可靠性、进一步开发虚拟网络温度控制器、研制温度测量还有温度控制系统,这些高科技的方向迅速发展。1.改善低精度和低分辨率过去生产的智能温度传感器存在着精度低和分辨力差的缺点,并且均采用最常用的8位数模转化器。现在很多智能温度的厂家都针对提升精度和提高分辨力方面做足了工作,分辨力达到了0.50。0625,测温精度达到0。5,数模转换器也从8位扩展到了9到12位.很多国外的公司在现有成就的基础上,又生产出不需要数模转换的,13位二进制数据传输精度为2、分辨力最高可达到0。03125的智能温度传
3、感器。2。增加多通道功能为了给研制和开发多路温度测量控制系统提供良好条件,许多智能温度传感器正从单通道向多通道发展,同时新型智能温度传感器的测试功能也在不断增强,还在芯片中增加存储功能.3.总线技术的标准化和规范化总线技术实现标准化和规范化,例如:一线总线、I2C总线、SM Bus总线和SPI总线等总线方式。4。安全性和可靠性5.2工作原理5.2.1 温度控制系统特性研究工程生产中,模拟的建立应该尽量简化,我们将温度控制中的各个参数当作置于温度有关的函数来处理.热量的传播方向总是从高温物体传向低温物体,就算在同一个问题内部进行热传导,也是从高温部分传向低温部分。电热杯加热系统中,主要是通过电热
4、丝产生即通过气体的相互碰撞产生热量进行热传递。温度在传递过程中一定存在时间延时,这个延时时间可能是由于体积的大小产生的。电热杯的传递函数写成 式5-1其中参数K:系统的放大系数、T:时间、t延迟时间、s:复变量。1.放大系数K放大系数K,是被控制对象再次达到平衡状态时,变化输出量和变量输入量的比值。在输入变化作用相同的情况下,K值越大,变化输出量就越大,被控对象的自身稳定性也会越差;相反,K值越小,被控对象的自身稳定性就越好。2.时间常数T时间常数T,是指被控对象输入影响后,输出变量达到新稳态值的快慢.时间常数T,决定动态过程的时间快慢,是被控制对象的动态特性参数。3.延迟时间t滞后时间t是描
5、述这种现象的动态参数.6。智能温度控制器系统硬件设计6.1 系统方案设计6.1.1 FPGA与DAC0832结合的目的温度,是一种具有惯性大、滞后性大、非线性和时变性强等等特点,因此传统的控制方法想达到很高的控制要求使很难实现的。在控制过程中,在温度不断变化的过程中,环境在不断的变化,同时随着加热和降温,加热器件的特性也会变化,这些都是导致温度时变的原因;温度升高外界环境对加热系统吸收热量的程度不同,直接导致了温度的非线性变化。但是随着科学创新,工业发展的强烈需求,各行各业对温度控制的适应性、精度、稳定性方面都提出了更高层次的要求,同时使温度控制进入了智能化的阶段。DAC0832温度传感器是数
6、字型的温度传感器。在温度采集时,不需要通过模数转换器对温度值进行转换,而且在使用时不需要温度标准,就可以直接连接到电路中,因此为硬件电路搭建提供了很大的方便,可以使硬件电路结构简化。同时,DAC0832温度传感器还具有速度快,精度高,成本低的有点。FPGA有丰富的I/O引脚和触发器的资源,同时还具有动态重构、可反复编程的特点,并且可以利用计算机对器件进行功能仿真。仿真过程中如果出现问题,可以及时调整设计方案,极大的提高了FPGA的灵活性和通用性。FPGA还具有体积小、集成度高、结构标准化、可移植性好和并行运算的有点。如果将FPGA和DAC0832结合,利用FPGA控制器实现DAC0832温度传
7、感器的温度采集和控制处理的工作再结合PID智能控制,不但可以提高温度控制的速度、精度、而且还可以提高系统的稳定性。1.2 系统需求分析本设计以这种模拟电路控制在实际应用中很难做到恒温控制,温度会在最终归的预设值附近上下浮动,影响禽蛋的孵化.而且,孵化器的温度设置也是模拟电路,这样是完全达不到精准的温度设置.通过学习FPGA,我设想运用数字电路来对禽蛋孵化器内部温度进行控制,来实现可控,可调,温度恒定的禽蛋孵化器.具体的设计框架如下 图61 设计框架 1.3系统需求分析本设计应用FPGA控制温度整体框图如图6-2所示。硬件系统可以由两部分组成,一部分是信号采集装置,主要是由温度传感器、UART(
8、串口数据通讯电路)组成,另一部分是信号处理装置,主要由JTAG(联机测试的接口)、液晶显示器、FPGA、上位机、继电器、报警器、电源管理. 图6-2 FPGA控制温度整体框图本方案通过前向温度采集电路,采集当前孵化器内部的温度信号,将采集到的模拟信号通过ADC0809模数转换芯片,转变为FPGA可控的数字信号,FPGA芯片根据输入的当前实际温度,控制输出合理的数字信号,再由DAC0832转换为模拟信号,输入到后向加热执行电路,以此来完成对整个孵化器的温度控制。整个系统中,带有温度传感器的前向温度采集电路作为系统的反馈环节,实时反映当前环境的具体温度,具体的电路图如下。 图6-3 前向温度采集电
9、路图6.2系统结构在整个设计系统的硬件中主要包括FPGA、调制/配置电路、时钟电路、复位电路/重配置电路、系统电源电路、继电器、外存储器、LED、独立按键和拨码开关等构成.6.2。1调试/配置电路此电路设计以AD590作为温度触感器,通过添加相应的调节电阻,让温度与输出电压保持一个相对线性的关系其中: :为调零电阻。为调满度电阻。最终得到的温度与输出电压的关系式为: 式6-1 模数转换芯片采用的是ADC0809,具体的连接电路图如下图6-4 ADC0809与FPGA的连接IN0IN7管角中任选一路作为前向温度采集电路的输入,VCC与同时接+5V电压,与GND接地,OUT1OUT8数据输出端连接
10、FPGA,START,OE,EOC,ADDAC均连接FPGA,根据ADC0809的工作时序图,由FPGA给出相应的信号控制ADC0809。数模转换部分采用的是DAC0832,具体连接图如下图65 DAC0832的连接图DI0-DI7分别于FPGA的8位数据输出端相连,因为DAC0832工作在连续的负反馈电路中,故采用直通的工作方式,将WR1与WR2直接与地相连,ILE与CS,Xfer引脚均接至FPGA,有FPGA发送控制信号来控制DAC0832的工作.输出引脚Iout1与Iout2连接一个流压转换器,将输出的电流信号转换为需要的电压信号,并进行适当的放大。最后输出到孵化器的加热电路.FPGA模
11、块控制ADC0809的工作状态,并接收来自ADC0809的数字信号,与键盘输入的预设信号进行比较后,将控制信息传送给DAC0832,经由数模转换器转换后加在发热装置两端,对整个孵化器内部温度进行控制。7。智能温度控制系统软件设计7.1 软件总体设计1 设定定义在系统设计之前,首先需要提出方案、系统设计和FPGA芯片选择等前期工作。然后针对系统指标和复位程度,根据芯片的成本、资源等各方面进行衡量,选择出合理的设计方案和芯片类型。一般情况下,对FPGA的设计采用自顶向下的设计方法,先把整个系统分为几个基本单元,再把每个基本单元划分为下一层的基本单元,按照上述步骤进行,直至可以使用元件库中的元件。1
12、.2 VHDL实现 VHDL实现就是在设计的系统和电路中用硬件描述语言(VHDL)表示出来,并输入给EDA工具的过程.为了避免以往绘制原理图时的可移植性差、效率低下、不易维护的缺点,目前在实际开发中广泛应用的是HDL语言输入法,利用文本描述设计。最常用的两种语言HDL和VDL和VHDL是美国电气与电子工程师协会(IEEE)的标准,它们共同的优点是:语言与芯片工艺无关,利用自顶向下的设计方法,可移植性好,便于模块的划分与移植,具有很强的逻辑描述和方针功能。图71 FPGA的开发流程图7.2 软件程序设计 本文所设计运用程序模块化编程思想将系统各功能模块化,软件系统基本可以分为三个个模块:分频模块
13、、键盘模块、ADC0809控制模块、下面对每个模块进行详细介绍。2.1 分频模块图7-2 分频模块由于外界的时钟源一般都较高,而ADC0809以及键盘扫描模块需要的时钟频率较低,故需要对外界时钟源进行分频,这里外界输入时钟源为20MHz,对其进行64分频.波形仿真图如下:图7-3 分频波形仿真图从波形图可以看出,clk每经过64个脉冲,clk1跳转一次.分频模块工作正常.2 键盘模块图74 键盘模块键盘模块的脉冲输入来自分频模块。其中,输入端口为两位二进制数,分别接两个按键,来对预设温度进行加减调控。输出有两个端口,xianshi端口作为保留端口,存储着当前预设温度的数值,可外接显示设备。zh
14、i端口为信息传送端口,其存储值为当前预设温度值经由采集电路温度-电压公式换算后的十进制数值.换算公式如下: 式7-1例:38摄氏度对应的ADC0809输出数据为538256/100/5,得到十进制值为97;波形仿真图如下:图75 温度减按键图7-6 温度加按键图中,图75为温度减按键,图76为温度加按键,相应的预设温度对应相应的ADC0809输出值,由图2得,当预设温度为38摄氏度时,对应换算后的ADC0809输出数据为97,与计算相符。键盘输入模块工作正常3 ADC0809 控制模块图77 ADC0809控制模块经查阅资料,DAC0832需采用直通式,故,将DAC0832的控制语句直接写在了
15、ADC0809的控制语句块内。ile为输出到ADC0832的输入锁存允许信号,cont为ADC0832WR1,WR2,CS等引脚。Wendu为预设温度的输入引脚.din为ADC0809转换后的输出信号,dout为受FPGA控制的输出到DAC0832的控制信号。clk8为来自为频器的时钟信号。根据ADC0809的时序图,总结出相应的状态转移图,一次来编写控制ADC0809的VHDL语言文件,状态转移图如下图7-8 状态转移图具体波形仿真图如下:图79控制ADC0809的仿真图波形仿真建立在预设温度为38摄氏度的条件下。前面提到,38摄氏度对应的ADC0809输出值为97,VHDL程序中设定,当A
16、DC0809输入值大于或等于97时(当前温度大于或等于预设温度),FPGA输出到DAC0832的控制信号为0,即停止加热。当ADC0809输入值小于92(即36摄氏度,与设定温度相差大于两度)时,FPGA输出到DAC0832的控制信号为255,即以最大功率加热。当ADC0809输入值小于92时,将会细分为5个阶段,即以逐次递减的功率加热。由图可知,ADC0809工作正常。2.4 三模块连接在一块 最后,将三个模块运用元件例化语句连接在一块,并进行电路观察,生成相应的逻辑电路,如下图:图7-10 三模块连接图总体波形仿真如下图:图7-11 总仿真图波形分析:刚开始,FPGAjia置1,预设温度逐
17、渐增加,如下图:图712 温度增加仿真图 当温度到达38摄氏度后停止增加,即将38摄氏度作为预设温度,随后,观察FPGAin与FPGAout。当预设温度为38摄氏度时,输入为97时,对应输出为0,当为92时,对应输出为5,当为96时,对应输出为1,当输入不在92-97之间,输入大于97时,输出为0,输入小与92时,输出为255.观察上图波形仿真,完全符合程序设计.7.3 本章小结本章运用了模块化思想,将系统各个部分模块化,应用主函数调用其他相应的模块,大大的提高了编程效率,减少程序修改,整合过程的工作量。8.实验调试结果8。1 实验条件实验是在恒温下调试出的结果。8.2 实验结果及分析以下图8
18、-1、图82、图8-3、图8.4分别是分频模块、键盘模块、ADC0809控制模块、三模块连接在一起时在仿真正常的统计报告图:图8-1 分频模块分频模块的VHDL文件见附录1图8-2 键盘模块键盘模块的VHDL文件见附录2图8-3 ADC0809控制模块ADC0809模块的VHDL仿真文件见附录3图8-4 三模块连接图总体的VHDL程序见附录43 本章小结应用设计出的软件、硬件对实际的电热杯温度信息测量和控制,得到最适合被设计的智能温度控制器为微分先行PID控制器。9。设计中的问题及解决方法在本次设计中主要遇到的问题是对于FPGA芯片不是很了解,需要查阅很多资料去了解FPGA芯片的一系列管脚即其
19、功能.10。设计心得本文从智能控制的角度出发,在控制领域中应用FPGA,设计并实现了基本FPGA的智能温度控制,我在这次设计中遇到了很多的困难,资料不齐全,而且是很零散的,还重新学习了,但是我都没有放弃,还是一步一步的实现,在这次设计中刚开始我在网上找到的图片是很模糊的,所以我就用protel99这个软件重新画图,但是我已经很久没有画了,都差不多都忘了protel99,我就开始重新学习了,把图给画好了,在这次设计中我学会了怎么在网上自己独立的寻找资料,还知道了自己有哪些不足的地方,自己日后则可以知道忘哪些地方学习咯11.参考文献1.刘美霞,智能温度控制系统(硕士学位论文)南京航空航天大学,20
20、03。2。 韩雪,将国平,马幼军.数字式温度传感器DS18B20在温室环境检测中的应用,仪表技术与传感器,2002(9):29-313. 肖衡,陈春俊。PID温度控制装置的电路设计.计量与测试技术,2003(1):10114陈文军,陈理君。FPGA在窑炉温度模糊控制系统设计.盐城工学报,2006(12):404312.附录附录1程序LIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;STD_LOGIC_ARITH.ALL;STD_LOGIC_UNSIGNED.ALL;entity fenpin isport(clk :in std_logic; 外部输入时钟源 c
21、lk1: out std_logic);end fenpin; -分频后的时钟源architecture b of fenpin is signal count : std_logic_vector(7 downto 0); 信号定义 signal clk2 : std_logic; beginprocess(clk) beginif(clkevent and clk=1) then 计数脉冲上升沿if(count=”01000000”) thencount0);clk2=not clk2; -当达到64个脉冲时count置0,clk2取反else count=count+1; -未达到64脉
22、冲时继续计数; end if;end if;clk1=clk2; -将产生的分频信号给输出端口end process;end b;附录2: library ieee;use ieee。std_logic_1164。all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jianpan isport(clk: -分频后的时钟输入shuru:in std_logic_vector(1 downto 0);-输入端,按键加0位,按键减1位 zhi :out integer; 预设温度转化为ADC0809输出值 x
23、ianshi :out integer); -当前预设温度 end entity;architecture beha of jianpan is signal x:integer range 0 to 200; -定义信号process(clk)begin if(clkevent and clk=1) then case shuru is 检测是否有输入 when 01=x=x+1; -按键加按下,温度+1 when ”10”=if(x=0)then x=0; -按键减按下,判断温度是否为0 else x=x1; -若为0,则依旧为0,否则,温度-1 end if; when others=x
24、=x; -其他按键情况,温度不变 end case; xianshi=x; -将温度赋给显示输出端zhi=x5256/100/5; -将温度转化后赋给输出端end beha;附录3:library ieee;std_logic_1164.all;std_logic_arith。all;std_logic_unsigned.all;entity ADC0809 isport(din :in std_logic_vector(7 downto 0); -ADC0809输出的采样数据 clk8 :in std_logic; -时钟信号 eoc : -ADC0809转换结束指示,高电平有效 ale :
25、out std_logic; ADC0809地址锁存次信号 ile: out std_logic; DAC0832数据锁存允许 cont: out std_logic; -DAC0832控制信号(WR1,WR2,CS,Xfer) start : -ADC0809转换启动信号 oe :out std_logic; -ADC0809数据输出允许信号 wendu:in integer; -温度显示 adda : -ADC0809信号通道控制位 addb : -ADC0809信号通道控制位 addc : -ADC0809信号通道控制位 lock0 : -ADC0809观察数据锁存时钟 dout :ou
26、t std_logic_vector(7 downto 0); -输出到DAC0832的8位数据end ADC0809;architecture beha of ADC0809 is type states is(st0,st1,st2,st3,st4); -定义ADC0809工作状态 signal current_state,next_state:states:=st0; -定义信号 signal regl :std_logic_vector(7 downto 0); signal shuchu : signal lock :std_logic; signal count :std_logic_vector(7 downto 0); adda=1; -地址输入001,选择IN1 addb=0 addc=0; dout=shuchu; -将处理后的数据传输到输出端口 lock0=lock; -数据传输 ile= DAC0832的控制信号 cont=0 com:process(current_state,eoc) -状态转移 case current_state is when st0=ale=0start=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1