- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FPGA的具有数字显示的水温测控系统
摘要:电压、电流、温度等模拟量的监测在工业生活中都有很广泛的应用,通过监测到的数据,可以对其进行及时调整,为人们的生产生活带来了便利与保证。系统主电路采用Actel公司提供的Fusion系列FPGA,用以实现温度控制。由于加热和制冷部分的条件限制,只采用模拟的方式。电路可实现温度的显示,设置上、下限温度,超出范围报警以及与PC机通信的功能。系统测量精度和控制精度良好。同时,基于FPGA的硬件系统设计方法操作简单,开发成本较低,已成为当今世界上嵌入式系统硬件开发的主流方法之一。
关键词:Fusion;内部的温度监控模块;ADC模块;OLED显示
测控技术自古以来就是人类生活和生产的重要组成部分。随着科技的发展,测控技术已进入了全新的时代。近年来。电子技术的快速发展,使得计算机广泛用于自动检测和自动控制系统中,以致电压、电流、温度等的监测越来越重要,现在利用数字系统处理模拟信号的情况也越来越多,但数字系统所处理的信号都是不连续的数字信号,而待测的电压、电流、温度等都是模拟量,这就需要将监测到的模拟信号转换成数字信号,最终由系统进行处理。Actel公司出产的新型FPGAFusion系列解决了数/模转换及上电不可运行等一系列难题。Actel公司宣布推出全新的Fusion融合技术,为解决混合式信号的方案带来真正可编程功能的崭新技术。融合技术率先将混合信号的模拟功能、FLASH内存和FPGA结构集成于单片可编程系统芯片中。融合技术将可编程逻辑的优势带进应用领域中,而这些应用领域直至目前只能采用分立模拟元件和混合信号ASIC供应商提供的器件。与此同时,当融合技术与Actel的ARM7和以8051为基础的软MCU内核共用时,可作为终极的软处理器平台。这项新技术能发挥Actel以FLASH为基础FPGA的独特优势,包括高绝缘性、三井结构和支持高压晶体管的能力,以满足混合信号系统设计的严格要求。
1 方案选择
该系统若根据要求可有多种实现方案。
方案一 该方案是传统的一位式模拟控制方案。选用模拟电路,用电位器设定给定值,当反馈的温度值与设定值比较后,决定加热或不回热。但它使系统受环境的影响大,不能实现复杂的控制算法,不能用数码显示,不能用键盘设定。
方案二 该方案是传统的二位式模拟控制方案。其基本思想与方案一相同,但由于采用上、下限比较电路,所以控制精度提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法,而使控制精度做得较高,此外仍不能用数码显示和键盘设定。
方案三 该方案采用CortexM1 FPGA系统来实现。系统硬件用单芯片完成多方面功能,软件编程灵活,自由度大,可用软件编程实现各种控制算法和逻辑控制,还可实现数码显示和键盘设定等多种功能,系统电路框图如图1所示。
方案一和方案二是传统的模拟控制方式,而模拟控制系统难以实现复杂的控制规律,控制方案的修改也较麻烦。方案三是采用以CortexM1为控制核心的控制系统,尤其对温度控制,它能达到模拟控制达不到的控制效果,且可实现显示、键盘设定等多种功能,又易于扩展,大大提高了系统的智能化,也使得系统所测结果精度大大提高。故选择方案三。 [p]
2 器件介绍
该系统采用的处理器核为32位ARM CortexM1,它是ARM与Actel合作开发,是首个专门针对FPGA应用而设计的ARM处理器。CortexM1处理器的运行速度高达68 MHz,可用4 353个逻辑单元(Tiles)来实现。CortexM1处理器采用三级流水线结构,其指令集使用了经典的Thumb-2指令集中一个子集,所以无需更改,即可利用现有的Thumb代码。配置的CortexM1处理器可以连接到先进高性能总线(AHB)上,使得设计工程师能够构建自己的子系统,并能轻易增添外设功能。
2.1 数据采集部分
传感器部分既可采用热敏电阻,也可采用集成的温度传感器。由于热敏电阻的精度、重复性、可靠性都比较差,为了配合开发板的需求,在此采用晶体管作为温度传感器。系统温度检测数据采集部分原理如图2所示。
这里温度传感器采用的是晶体管2N3904,它是双极型晶体管,在使用中要按照图2所示,将其集电极与基极连接起来使用。晶体管的温度将会影响PN结上电流与电压的关系,这是Fusion器件能够实现温度监控的理论基础。送到A/D转换器的电压VADC由下面的公式可以得出:
式中:n为晶体管的理想系数。设计中,2N3904的n=1.008,近似取1。C为模块中ADC的放大倍数,C=12.5;I,i为模块中用到的两个电流源,I=100μA,i=1OμA;k为波尔兹曼常量,k=1.3806×10-23J/K;q为质子的电量,q=1.602×10-19C,正因为采用的q,所以ADC测得温度值单位为开尔文(Kelvin);T为系统要测量的温度,此处为传感器所测量温度。
2.2 键盘控制和控制电路
因为系统在运行时可以与PC通信,故可直接使用PC机设定上、下限温度值,不需要额外设计键盘电路。但是由于条件有限,对于加热和冷却系统可采用简单的模拟方式实现,通过系统给定信号驱动继电器电路,完成加热和冷却效果,并且在超出范围后进行报警。 [p]
2.3 数字显示
该系统采用较先进的液晶显示屏对结果进行显示,形象直观。这里采用的是有机电致发光器件(Organic Light Emitting Device。OLED)SSD1303T6。OLED相对于液晶显示器LCD来说,其主要优势在于驱动电压低,功耗小,主动发光,平板超薄,响应速度快,工艺相对简单等。 SSD1303是晶门公司采用TAB封装的单色OLED模组。这种基于CMOS工艺的驱动IC集成了行、列驱动器、控制器和SRAM,可支持的最大分辨率为132×64,可以显示4色区域色,并可编程实现256灰度.可实现水平滚动显示。SSD1303提供有6800,8080,SPI等用于与微处理器(MCU)进行通信的显示接口模式。该设计中采用SPI接口进行通信。由于OLED控制芯片中未包含字库,这里自行设计了字库,采用8×8点阵显示。字库设计范例如图3所示,其为字符“C”的字库模型。
该设计中所需字符比较简单,按照需要自行设计了字符“O~9”,“.”,“:”,“T”。由于字库较小,采用数组方式存放数据。如下程序所示。
{0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00}, //[1]
{0x00,0x00,0xf1,0x91,0x91,0x8f,0x00,0x00}, //[2]
{0x00,0x00,0x91,0x91,0x91,0xff,0x00,0x00}, //[3]
{0x00,0x00,0x1f,0x10,0x10,0xff,0x00,0x00}, //[4]
{0x00,0x00,0x9f,0x91,0x91,0xf1,0x00,0x00}, //[5]
{0x00,0x00,0xff,0x91,0x91,0xf1, 0x00, 0x00}, //[6]
{0x00,0x00,0x01,0x01,0x01,0xff,0x00,0x00}, //[7]
{0x00,0x00,0xff,0x91,0x91,0xff,0x00,0x00}, //[8]
{0x00,0x00,0x8f,0x89,0x89,0xff,0x00,0x00}. //[9]
{0x04,0x02,0x82,0xfe,0x82,0x02,0x04.0x00}, //T[10]
{0x00,0x60,0x60,0x00, 0x00,0x00,0x00,0x00}, //.[11]
{0x00,0x6c,0x6c,0x00,0x00,0x00.0x00.0x00}, //:[12]
};
3 系统设计
这里设计的温度测控系统采用Actel公司的SoPC解决方案,它基于嵌入式软核CortexM1核,在性能上CortexM1可满足当前大部分嵌入式产品的设计。该系统的主电路采用Actel公司提供的Fusion系列FPGA,实现温度控制,由于加热和制冷部分条件的限制,只采用模拟方式。电路可实现温度显示,设置上、下限温度,超出范围报警以及与PC机通信的功能。系统测量精度和控制精度均良好。 [p]
3.1 硬件设计原理
系统的硬件平台大致可分为以下几个功能模块:模拟输入模块、微处理器及其外围模块、UART模块、时钟产生模块、PWM模块。这些功能模块都由Actel公司提供的知识产权核(IP核)组成。在Coreconsole中,将各个模块配置,通过模块的总线接口与系统总线AHB,APB互联。最终的结果如图4所示。其中,右上角的信号连接为连接到顶层模块的信号。
如图4所示,其中CortexM1为微处理器核,负责处理采集到数据,并产生相应的控制信号给外围控制电路;CoreAHBNvm为控制FLASH的软核,使系统上电即可运行,掉电不丢失;CoreAI为模拟输入模块,负责将外围采集的模拟信号数据转换为数字信号。交由处理器处理;Coreu- ARTapb为串口通行核,负责将处理的数据通过串口发送给PC,使其能实时交互和控制;Core- GPIO和CoreGPlO_01两个核为通用I/O核,分别负责OLED的数据通信和外围控制信号的输出。
系统的外围温度超过上限报警和加热模拟的电路如图5所示。
3.2 软件设计部分
系统主要功能是将系统采集到的模拟信号通过硬件转换成数字信号,将监测到的数据通过UART发送到PC的超级终端加以显示出来;并且可在系统运行初始阶段设置温度的上、下限值,在超出温度范围时报警,且产生相应的控制信号进行加热或者冷却。各个模块的运行由微处理器CortexM1进行协调。系统不断监测模拟输入端,如果模拟输入有变化,就进行A/D转换,并将转换后的结果发送给CortexM1;CortexM1再将接收到的结果在规定时间内通过UART发送到PC的超级终端显示和在系统配接的OLED屏上彩色显示。
该设计的系统应用软件是在Actel公司的SoftConsole开发平台上完成的。由于程序比较复杂,可以分为几个子程序,具体包括:对CoreUART,CoreAI,LED屏等的初始化配置,以及主要功能中CortexM1.c主程序的完成。系统流程图如图6所示。
4 结 语
经实际调试与运行,超级终端上得到了监测到的温度值,并且能实现温度超出范围时报警和正常控制下实现加热和冷却的效果。该设计能实时测量并显示温度值,且精度高,反应快,达到了预期设计目标。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...