湖南文理学院
课程设计报告
课程名称: 通信系统课程设计 专业班级: 通信1101班 学号(06位 ) 学生姓名: 指导教师: 戴正科 完成时间: 2014年 11 月 21 日 报告成绩:
评阅意见: 评阅教师 日期 2014.11.21
基于FPGA的智能温度控制的设计
目录
1.设计题目 ............................................................... 1 2.设计要求 ............................................................... 1 3.设计作用与目的 ......................................................... 1 4.所用设备(仪器)和软件 ................................................. 2 5.系统设计方案 ........................................................... 2
5.1 系统总体设计 ..................................................... 2 5.2 工作原理 ......................................................... 3
5.2.1 温度控制系统特性研究 ........................................ 3
6.智能温度控制器系统硬件设计 ............................................. 4
6.1 系统方案设计 ..................................................... 4
6.1.1 FPGA与DAC0832结合的目的 ................................... 4 6.1.2 系统需求分析 ................................................ 4 6.1.3系统需求分析 ................................................ 5 6.2系统结构 .......................................................... 6
6.2.1调试/配置电路 ............................................... 6
7.智能温度控制系统软件设计 ............................................... 8
7.1 软件总体设计 ..................................................... 8
7.1.1 设定定义 .................................................... 8 7.1.2 VHDL实现 ................................................... 8 7.2 软件程序设计 ..................................................... 9
7.2.1 分频模块 .................................................... 9 7.2.2 键盘模块 ................................................... 10 7.2.3 ADC0809 控制模块 ........................................... 12 7.2.4 三模块连接在一块 ........................................... 13 7.3 本章小结 ........................................................ 15 8.实验调试结果 .......................................................... 15
8.1 实验条件 ........................................................ 15 8.2 实验结果及分析 .................................................. 15 8.3 本章小结 ........................................................ 17 9.设计中的问题及解决方法 ................................................ 18 10.设计心得 ............................................................. 18 11.参考文献 ............................................................. 18 12.附录 ................................................................. 18
1.设计题目
基于FPGA的智能温度控制的设计
2.设计要求
通过前向温度采集电路,采集当前孵化器内部的温度信号,将采集到的模拟信号通过ADC0809模数转换芯片,转变为FPGA可控的数字信号,FPGA芯片根据输入的当前实际温度,控制输出合理的数字信号,再由DAC0832转换为模拟信号,输入到后向加热执行电路,以此来完成对整个孵化器的温度控制。整个系统中,带有温度传感器的前向温度采集电路作为系统的反馈环节,实时反映当前环境的具体温度。
3.设计作用与目的
在空间生命科学试验中,生命培养模拟地面环境要求,主要研究宇空间因素,如失重、宇宙辐射、真空、高温(或低温)等对生命过程的影响。其中温度对空间生命的生存有直接作用,是空间生物学研究的主要对象。同时由于空间、体积、电功率的限制,对电功率加热器和控制电路方面尽量做到节能、低功耗、小体积。假设模拟地面培养箱内的温度在18℃。这样对控制精度和芯片必须有更高的要求。传统的温度控制方法以设定 为临界点,超出设定允许范围即进行温度调控,低于设定值就加热,反之就停止或降温。这种方法实现简单、成本低,但控制效果不理想,控制温度精度不高、达到稳定点的时间也长,因此,只能用在精度要求不高的场合。对于空间生命科学的温度控制,这样的控制过程远远达不到控制要求。
FPGA是通过硬件语言描述实现并行计算机功能的硬件电路。应用FPGA实现PID控制可以提高PID运算的速度,避免了用单片机实现PID控制按顺序执行命令对运行速度延时性,非线性的影响。同时FPGA实现的PID控制的内在电路可以根据现实需要进行修改,提高了系统的灵活性。采用智能PID控制温度则具有测量控制精度高、成本低、体积小、功耗低的优点。将传统的电路温度控制用芯片取代,因此利用FPGA实现PID的智能温度控制具有深远的意义
1
4.所用设备(仪器)和软件
整个系统的主芯片采用PFGA即现场可编程门阵列,FPGA在结构上由逻辑功能块排列为阵列,并且有可编程的内部连线连接功能块实现的一定的逻辑功能。FPGA由掩膜可编程门阵列可编程逻辑器件演变而来,它具有门阵列的高逻辑密度和通用性,还具有用户可编程的特性。利用功率继电器的通断作为自动开关,控制设定值与控制输入量的关系,通过串口模块和上位机进行通讯,进一步实现在用户操作界面上进行在线修改,时间采样、图形显示、数据保存等功能
5.系统设计方案 5.1系统总体设计
近百年来,温度传感器的发展大致经历以下三个阶段:第一阶段是传统的分立式温度传感器(含敏感元件);第二个阶段是模拟集成的温度传感器/控制器;第三个阶段是智能温度传感器。在近几年中,国际上的许多国家已经研发出关于智能温度控制器的系列产品。智能温度控制器具有可以输出温度控制量以及与温度数据相关的,适配各种微型控制器特点;并且它是在硬件的基础上通过软件实现测试控制功能的,其智能化程度取决于软件的开发水平。智能温度传感器最大的有点就是能对现场测量到温度值进行数据处理和传输,并与上位机进行数据通信。二十世纪九十年代中期智能温度控制器问世了,智能温度控制器是在微电子技术与计算机技术还有自动测试技术的结合产物。二十一世纪以后,智能温度传感器正朝着精度高、功能强、标准化总线、安全性、可靠性、进一步开发虚拟网络温度控制器、研制温度测量还有温度控制系统,这些高科技的方向迅速发展。 1.改善低精度和低分辨率
过去生产的智能温度传感器存在着精度低和分辨力差的缺点,并且均采用最常用的8位数模转化器。现在很多智能温度的厂家都针对提升精度和提高分辨力方面做足了工作,分辨力达到了0.5~0.0625℃,测温精度达到±0.5℃,数模转换器也从8位扩展到了9到12位。很多国外的公司在现有成就的基础上,又生产出不需要数模转换的,13位二进制
2
数据传输精度为±0.2℃、分辨力最高可达到0.03125℃的智能温度传感器。 2.增加多通道功能
为了给研制和开发多路温度测量控制系统提供良好条件,许多智能温度传感器正从单通道向多通道发展,同时新型智能温度传感器的测试功能也在不断增强,还在芯片中增加存储功能。
3.总线技术的标准化和规范化
总线技术实现标准化和规范化,例如:一线总线、I2C总线、SM Bus总线和SPI总线等总线方式。 4.安全性和可靠性
5.2工作原理
5.2.1 温度控制系统特性研究
工程生产中,模拟的建立应该尽量简化,我们将温度控制中的各个参数当作置于温度有关的函数来处理。热量的传播方向总是从高温物体传向低温物体,就算在同一个问题内部进行热传导,也是从高温部分传向低温部分。电热杯加热系统中,主要是通过电热丝产生即通过气体的相互碰撞产生热量进行热传递。温度在传递过程中一定存在时间延时,这个延时时间可能是由于体积的大小产生的。电热杯的传递函数写成
式5-1
其中参数K:系统的放大系数、T:时间、t延迟时间、s:复变量。 1. 放大系数K
放大系数K,是被控制对象再次达到平衡状态时,变化输出量和变量输入量的比值。在输入变化作用相同的情况下,K值越大,变化输出量就越大,被控对象的自身稳定性也会越差;相反,K值越小,被控对象的自身稳定性就越好。
2. 时间常数T
时间常数T,是指被控对象输入影响后,输出变量达到新稳态值的快慢。时间常数T,决定动态过程的时间快慢,是被控制对象的动态特性参数。
3. 延迟时间t
滞后时间t是描述这种现象的动态参数。
3
6.智能温度控制器系统硬件设计 6.1 系统方案设计
6.1.1 FPGA与DAC0832结合的目的
温度,是一种具有惯性大、滞后性大、非线性和时变性强等等特点,因此传统的控制方法想达到很高的控制要求使很难实现的。在控制过程中,在温度不断变化的过程中,环境在不断的变化,同时随着加热和降温,加热器件的特性也会变化,这些都是导致温度时变的原因;温度升高外界环境对加热系统吸收热量的程度不同,直接导致了温度的非线性变化。但是随着科学创新,工业发展的强烈需求,各行各业对温度控制的适应性、精度、稳定性方面都提出了更高层次的要求,同时使温度控制进入了智能化的阶段。
DAC0832温度传感器是数字型的温度传感器。在温度采集时,不需要通过模数转换器对温度值进行转换,而且在使用时不需要温度标准,就可以直接连接到电路中,因此为硬件电路搭建提供了很大的方便,可以使硬件电路结构简化。同时,DAC0832温度传感器还具有速度快,精度高,成本低的有点。
FPGA有丰富的I/O引脚和触发器的资源,同时还具有动态重构、可反复编程的特点,并且可以利用计算机对器件进行功能仿真。仿真过程中如果出现问题,可以及时调整设计方案,极大的提高了FPGA的灵活性和通用性。FPGA还具有体积小、集成度高、结构标准化、可移植性好和并行运算的有点。
如果将FPGA和DAC0832结合,利用FPGA控制器实现DAC0832温度传感器的温度采集和控制处理的工作再结合PID智能控制,不但可以提高温度控制的速度、精度、而且还可以提高系统的稳定性。
6.1.2 系统需求分析
本设计以这种模拟电路控制在实际应用中很难做到恒温控制,温度会在最终归的预设值附近上下浮动,影响禽蛋的孵化。而且,孵化器的温度设置也是模拟电路,这样是完全达不到精准的温度设置。通过学习FPGA,我设想运用数字电路来对禽蛋孵化器内部温度进行控制,来实现可控,可调,温度恒定的禽蛋孵化器。
4
具体的设计框架如下
图6-1 设计框架
6.1.3系统需求分析
本设计应用FPGA控制温度整体框图如图6-2所示。硬件系统可以由两部分组成,一部分是信号采集装置,主要是由温度传感器、UART(串口数据通讯电路)组成,另一部分是信号处理装置,主要由JTAG(联机测试的接口)、液晶显示器、FPGA、上位机、继电器、报警器、电源管理。
图6-2 FPGA控制温度整体框图
本方案通过前向温度采集电路,采集当前孵化器内部的温度信号,将采集到的模拟信号通过ADC0809模数转换芯片,转变为FPGA可控的数字信号,FPGA芯片根据输入的当前实际温度,控制输出合理的数字信号,再由DAC0832转换为模拟信号,输入到后向加热执行电路,以此来完成对整个孵化器的温度控制。整个系统中,带有温度传感器的前向温度采集电路作为系统的反馈环节,实时反映当前环境的具体温度,具体的电路图如下。
5
图6-3 前向温度采集电路图
6.2系统结构
在整个设计系统的硬件中主要包括FPGA、调制/配置电路、时钟电路、复位电路/重配置电路、系统电源电路、继电器、外存储器、LED、独立按键和拨码开关等构成。
6.2.1调试/配置电路
此电路设计以AD590作为温度触感器,通过添加相应的调节电阻,让温度与输出电压保持一个相对线性的关系 其中: :为调零电阻. :为调满度电阻.
最终得到的温度与输出电压的关系式为:
1005 式6-1 ?TU0 模数转换芯片采用的是ADC0809,具体的连接电路图如下
6
图6-4 ADC0809与FPGA的连接
IN0—IN7管角中任选一路作为前向温度采集电路的输入,VCC与VREF?同时接+5V电压,VREF_与GND接地,OUT1—OUT8数据输出端连接FPGA,START,OE,EOC,ADDA-C均连接FPGA,根据ADC0809的工作时序图,由FPGA给出相应的信号控制ADC0809。
数模转换部分采用的是DAC0832,具体连接图如下
图6-5 DAC0832的连接图
DI0-DI7分别于FPGA的8位数据输出端相连,因为DAC0832工作在连续的负反馈电路中,故采用直通的工作方式,将WR1与WR2直接与地相连,ILE与CS,Xfer引脚均接至FPGA,
7
有FPGA发送控制信号来控制DAC0832的工作。输出引脚Iout1与Iout2连接一个流压转换器,将输出的电流信号转换为需要的电压信号,并进行适当的放大。最后输出到孵化器的加热电路。
FPGA模块控制ADC0809的工作状态,并接收来自ADC0809的数字信号,与键盘输入的预设信号进行比较后,将控制信息传送给DAC0832,经由数模转换器转换后加在发热装置两端,对整个孵化器内部温度进行控制。
7.智能温度控制系统软件设计 7.1 软件总体设计
7.1.1 设定定义
在系统设计之前,首先需要提出方案、系统设计和FPGA芯片选择等前期工作。然后针对系统指标和复位程度,根据芯片的成本、资源等各方面进行衡量,选择出合理的设计方案和芯片类型。一般情况下,对FPGA的设计采用自顶向下的设计方法,先把整个系统分为几个基本单元,再把每个基本单元划分为下一层的基本单元,按照上述步骤进行,直至可以使用元件库中的元件。
7.1.2 VHDL实现
VHDL实现就是在设计的系统和电路中用硬件描述语言(VHDL)表示出来,并输入给EDA工具的过程。为了避免以往绘制原理图时的可移植性差、效率低下、不易维护的缺点,目前在实际开发中广泛应用的是HDL语言输入法,利用文本描述设计。最常用的两种语言HDL和VDL和VHDL是美国电气与电子工程师协会(IEEE)的标准,它们共同的优点是:语言与芯片工艺无关,利用自顶向下的设计方法,可移植性好,便于模块的划分与移植,具有很强的逻辑描述和方针功能。
8
图7-1 FPGA的开发流程图
7.2 软件程序设计
本文所设计运用程序模块化编程思想将系统各功能模块化,软件系统基本可以分为三个个模块:分频模块、键盘模块、ADC0809控制模块、下面对每个模块进行详细介绍。
7.2.1 分频模块
图7-2 分频模块
9
由于外界的时钟源一般都较高,而ADC0809以及键盘扫描模块需要的时钟频率较低,故需要对外界时钟源进行分频,这里外界输入时钟源为20MHz,对其进行64分频。波形仿真图如下:
图7-3 分频波形仿真图
从波形图可以看出,clk每经过64个脉冲,clk1跳转一次。分频模块工作正常.
7.2.2 键盘模块
图7-4 键盘模块
键盘模块的脉冲输入来自分频模块。其中,输入端口为两位二进制数,分别接两个按键,来对预设温度进行加减调控。输出有两个端口,xianshi端口作为保留端口,存储着当前预设温度的数值,可外接显示设备。zhi端口为信息传送端口,其存储值为当前预设温度值经由采集电路温度—电压公式换算后的十进制数值。换算公式如下:
1005 式7-1 ?TU0例:38摄氏度对应的ADC0809输出数据为5*38*256/100/5,得到十进制值为97;
10
波形仿真图如下:
图7-5 温度减按键
图7-6 温度加按键
图中,图7-5为温度减按键,图7-6为温度加按键,相应的预设温度对应相应的ADC0809输出值,由图2得,当预设温度为38摄氏度时,对应换算后的ADC0809输出数据为97,与计算相符。键盘输入模块工作正常
11
7.2.3 ADC0809 控制模块
图7-7 ADC0809控制模块
经查阅资料,DAC0832需采用直通式,故,将DAC0832的控制语句直接写在了ADC0809的控制语句块内。ile为输出到ADC0832的输入锁存允许信号,cont为ADC0832WR1,WR2,CS等引脚。Wendu为预设温度的输入引脚。din为ADC0809转换后的输出信号,dout为受FPGA控制的输出到DAC0832的控制信号。clk8为来自为频器的时钟信号。
根据ADC0809的时序图,总结出相应的状态转移图,一次来编写控制ADC0809的VHDL语言文件,状态转移图如下
图7-8 状态转移图
具体波形仿真图如下:
12
图7-9控制ADC0809的仿真图
波形仿真建立在预设温度为38摄氏度的条件下。前面提到,38摄氏度对应的ADC0809输出值为97,VHDL程序中设定,当ADC0809输入值大于或等于97时(当前温度大于或等于预设温度),FPGA输出到DAC0832的控制信号为0,即停止加热。当ADC0809输入值小于92(即36摄氏度,与设定温度相差大于两度)时,FPGA输出到DAC0832的控制信号为255,即以最大功率加热。当ADC0809输入值小于92时,将会细分为5个阶段,即以逐次递减的功率加热。由图可知,ADC0809工作正常。
7.2.4 三模块连接在一块
最后,将三个模块运用元件例化语句连接在一块,并进行电路观察,生成相应的逻辑电路,如下图:
13
图7-10 三模块连接图
总体波形仿真如下图:
图7-11 总仿真图
波形分析:
刚开始,FPGAjia置1,预设温度逐渐增加,如下图:
14
图7-12 温度增加仿真图
当温度到达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-1、图8-2、图8-3、图8.4分别是分频模块、键盘模块、ADC0809控制模块、三模块连接在一起时在仿真正常的统计报告图:
15
图8-1 分频模块
分频模块的VHDL文件见附录1
图8-2 键盘模块
键盘模块的VHDL文件见附录2
16
图8-3 ADC0809控制模块
ADC0809模块的VHDL仿真文件见附录3
图8-4 三模块连接图
总体的VHDL程序见附录4
8.3 本章小结
应用设计出的软件、硬件对实际的电热杯温度信息测量和控制,得到最适合被设计的智能温度控制器为微分先行PID控制器。
17
cont=>FPGAcont,start=>FPGAstart,oe=>FPGAoe,adda=>FPGAadda,addb=>FPGAaddb,addc=>FPGAaddc);
U2:jianpan port map(clk=>c,shuru(1)=>FPGAjian,shuru(0)=>FPGAjia,zhi=>n,xianshi=>FPGAwendu); end beha;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity fenpin is
port(clk :in std_logic; --外部输入时钟源 clk1: out std_logic);end fenpin;
architecture b of fenpin is
signal count : std_logic_vector(7 downto 0); signal clk2 : std_logic; begin
process(clk) begin
if(clk'event and clk='1') then if(count=\
count<=(others=>'0');clk2<=not clk2; else
count<=count+1; end if; end if;
clk1<=clk2; end process; end b;
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity jianpan is
port(clk:in std_logic; shuru:in std_logic_vector(1 downto 0); zhi :out integer; xianshi :out integer); end entity;
architecture beha of jianpan is
signal x:integer range 0 to 200; begin
process(clk)
begin if(clk'event and clk='1') then
case shuru is
--分频后的时钟源 --信号定义 --计数脉冲上升沿 -当达到64个脉冲时count置0,clk2取反 --未达到64脉冲时继续计数; ——将产生的分频信号给输出端口 --分频后的时钟输入
--输入端,按键加0位,按键减1位 --预设温度转化为ADC0809输出值 --当前预设温度 --定义信号 --检测是否有输入
23
when \ --按键加按下,温度+1
when \ --按键减按下,判断温度是否为0 else x<=x-1; --若为0,则依旧为0,否则,温度-1 end if;
when others=>x<=x; --其他按键情况,温度不变 end case;
end if;
xianshi<=x; --将温度赋给显示输出端 zhi<=x*5*256/100/5; --将温度转化后赋给输出端 end process; end beha;
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity ADC0809 is
port(din :in std_logic_vector(7 downto 0); --ADC0809输出的采样数据 clk8 :in std_logic; --时钟信号
eoc :in std_logic; --ADC0809转换结束指示,高电平有效 ale :out std_logic; --ADC0809地址锁存次信号 ile: out std_logic; --DAC0832数据锁存允许
cont: out std_logic; --DAC0832控制信号(WR1,WR2,CS,Xfer) start :out std_logic; --ADC0809转换启动信号
oe :out std_logic; --ADC0809数据输出允许信号 wendu:in integer; --温度显示
adda :out std_logic; --ADC0809信号通道控制位 addb :out std_logic; --ADC0809信号通道控制位 addc :out std_logic; --ADC0809信号通道控制位 lock0 :out std_logic; --ADC0809观察数据锁存时钟 dout :out 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 :std_logic_vector(7 downto 0); signal lock :std_logic;
signal count :std_logic_vector(7 downto 0); begin
adda<='1'; --地址输入001,选择IN1 addb<='0'; addc<='0';
dout<=shuchu; --将处理后的数据传输到输出端口 lock0<=lock; --数据传输
24
ile<='1'; --DAC0832的控制信号 cont<='0';
com:process(current_state,eoc) --状态转移 begin
case current_state is
when st0=>ale<='0';start<='0';lock<='0';oe<='0';next_state<=st1; when st1=>ale<='1';start<='1';lock<='0';oe<='0';next_state<=st2; when st2=>ale<='0';start<='0';lock<='0';oe<='0';next_state<=st1; if(eoc='1')then next_state<=st3; else next_state<=st2; end if;
when st3=>ale<='0';start<='0';lock<='0';oe<='1';next_state<=st4; when st4=>ale<='0';start<='0';lock<='1';oe<='1';next_state<=st0; when others=>next_state<=st0; end case;
end process com; reg:process(clk8) begin
if(clk8'event and clk8='1')
then current_state<=next_state; --在时钟上升沿改变状态 end if;
end process reg; latch1:process(lock) begin
if lock='1'and lock'event then regl<=din; --将输入数据赋给中间变量 end if; end process latch1; kongzhi:process(regl) begin
if(regl
else shuchu<=\ --当前温度大于预设温度,输出0 end if;
end process kongzhi; end beha;
25
26
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库基于FPGA的智能温度控制系统设计在线全文阅读。
相关推荐: