基于FPGA的自动温度采集控制系统设计

2018-09-06 10:57:51 来源:elecfans
标签:

随着当前工业控制自动化日益普及,对于工作环境中的温度控制也越来越重要。本设计即是针对某些需要持续恒温的特殊环境而设计的自动温度采集控制系统。该系统采用FPGA作为硬件核心部分,有效地利用FPGA在可编程门阵列方面的优点,最大限度的使硬件电路软件化,减少了可视硬件的规模,降低了硬件加工、布线以及元器件采购方面的成本与复杂性,从而降低了故障排查方面的繁杂性。使硬件电路简洁,降低了整体占用的空间。相对于其他的温度控制系统,具有小巧,维护维修方便的优点,大大的提高了可维护性,同时由于采用的元器件都比较常见,整体成本较低。因此很适用于一些小规模同时对温度精度要求不高的场合。

 

1 系统工作原理

通过传感器实现对外界环境温度的采集,并将采集到的温度信号传送给FPGA芯片,FPGA芯片能够自主地对采集的温度信号进行处理,并能通过LED显示当前温度,同时自动将采集到的温度信号与预设的温度进行比较得出正确的比较结果,通过I/O端口输出控制外围设备对环境温度进行控制,从而达到实时温度控制的目的。本设计中主要有温度采集模块、FPGA芯片模块、LED数字显示模块三部分,系统原理框图如图1所示。

 

 

通过FPGA编程来实现对温度传感器的实时温度数据采集,并且实时地处理采集到的数据,将采集到的数据转换为BCD码通过8段LED数码管显示出此前的温度。与此同时,采集到的数据将会与存储在芯片里的温度预设值比较,并自动产生比较结果,控制外围设备对被测空间的温度实施调节控制,从而达到恒温的目的,温度传感器采集出的温度数据通过二进制数组片选选择数据通过LED显示,选择的数据再与标准温度进行比较,温度过高降温处理、温度过低则升温处理。

 

2 主要功能模块的实现

控制模块如图2所示,其中两个PNP三极管的作用是在P1输出控制信号时起到开关作用,根据图中的三极管接法,当输出控制信号为低电平时,三极管通导,此时P2继电器中有电流通过,使其3和6引脚接通。设计中由于采用的三极管对电流的要求较高,而又由于继电器内部可以认为相当于是一个电感,因此在继电器刚刚上电的时刻,三极管发射极和集电极电流将会很大,很容易将三极管烧毁,因此加装稳压二极管D2,使继电器上电工作的时刻,瞬间电流通过二极管回路而不是通过三极管,就可以有效保护三极管不被烧毁。

 

 

外部输出信号为低电平时,p2回路导通,引脚6与引脚3有电流,p3导通开始工作,当温度过低时,灯泡点亮;当温度过高时,风扇工作。从而实现对温度的实时控制。

 

3 软件设计及仿真结果

本设计中采用FPGA芯片作为核心控制部分。在本设计中软件模块主要包括温度传感器控制及数据接收模块,温度数据处理模块,温度显示模块。

 

3.1 温度数据处理模块

传感器数据处理模块tempture的顶层电路图如图3所示,它的作用主要是将12位二进制的温度信号转换为用BCD码表示的3位十进制数,输入的12位温度信号中其中的高8位二进制代码转换为2组4位的BCD码,例如输入二进制码为“00010110”,代表十进制数为“22”,输出 BCD码为“00100010”对应的十进制数个位、十位均为“2”和“2”;然后将剩余的低4位二进制代码转换为4位BCD码,如输入二进制码为 “1110”,代表10进制数小数为“0.875”,若只取一位小数位,则取“8”,其BCD码可表示为“1000”。通过三个输出端口分别输出十位、个位和小数位。

 

 

对温度数据处理模块tempture-进行仿真测试。假定预设置输入温度二进制的代码为“000101111011”,则其对应十进制数应为:“23.6”。仿真结果如图4所示。

 

根据顶层原理图,a[3. 。 0]输出为温度数值的十位数,b[3..0]输出为温度数值的个位数,c[3..0]输出为温度数值的小数位。则仿真图中,shi、fen、ge三位输出的数字分别为“2”、“3”、“6”,仿真结果与预测转换结果一致。

 

3.2 温度显示模块

设计采用了4个8段式的LED数码管可以动态显示温度的百位、十位、个位与分位。下图为温度显示模块的顶层电路,由图可知,模块由片选模块、译码转换模块与计数器三者组成。片选模块主要由一个二进制计数器和四选一电路组成。

 

 

当系统工作时,先将二进制计数器在clk控制下依次连续产生4个两位二进制数组,来控制片选模块选择性的输出shi[3..0]、ge[3..0]、fen[3. 。 0]、bai[3. 。 0]四路输入信号中任意的一路。将选出的这一路输入信号交给译码转换模块,利用二进制计数器产生的连续二进制数组,可以控制译码器依次输出对应的4位二进制数组来依次点亮各个LED数码管。最后,可以在LED上显示出数字,读取结果。

 

对温度显示模块display进行软件仿真测试,设置输入shi[3..0]、fen[3..0]、ge[3..0]分别是“0100”、“0011”、“0010”,则其对应10进制数应为“43.2”。仿真结果如图6所示。

 

 

由仿真示意图可看出,片选信号由时钟信号控制循环变化,而对应输出的ledout端也依次输出shi,fen,ge,bai四个端口输入的数据,且输出的是8位LED数码管显示码,从图中可以读出,当片选信号为“0111”时,对应的输出信号ledout为“11000000”,即表示在数码管上的显示为 0,小数点不亮,表示百位为0;当片选信号为“1011”时,对应的输出信号ledout为“10011001”,在数码管上的显示为4,小数点不亮,表示十位为4;当片选信号为“1101”时,对应输出ledout为“10110000”,在数码管上的显示即为3,表示个位为3;当片选信号为 “1110”时,对应输出ledout为“00100100”,在数码管上的显示即为2,小数点点亮,表示小数位为2。动态扫描后可知,数码管上显示的内容即为“043.2”。与输入的数据相同,说明程序编写正确,系统运用良好。

 

4 测试数据

由表1数据显示,LED数码管上显示的温度与实际测量的温度,从表中可以得出,两者近似相等,误差在0%~0.58%之间,是可以接受的误差范围。表2是指设定了所需温度,记录温度变化的过程与实现这一目标所需的时间。例如第一次中,我们设定的温度为20℃,开始LED上显示的温度值为17.5℃,最后经过自动控制系统温度升高到20.2℃,这一过程共用时30分钟。误差也是存在的,误差在1%左右,也是可以接受的范围。

 

 

5 结束语

从测试结果上看,设计的主要目的已经达到,系统运行可靠,精度也已达到设计要求。但设计中仍存在一定缺陷,主要缺陷在于本设计中所使用的预设温度是固化在程序中,一旦系统开始工作,就不能再更改预设的温度,因此本系统比较适用于不会经常变更设置温度的场合。变更设置温度的场合。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
几款小而美的FPGA学习板
几款小而美的FPGA学习板

任何一种开发板,我都对小个头的感兴趣,因为越是小个头的其实越强大,从中也越能够体会出原设计者的用心和技术含量。

Lattice FPGA的集成化开发环境Diamond的安装配置

为什么要使用Lattice的FPGA?因为真的好用,用过的人都说好!

从概念到FPGA逻辑实现的设计流程
从概念到FPGA逻辑实现的设计流程

今天再啰嗦点玄学 - fpga的设计流程,因为“流程”我们学习任何一门技术都必须事先清楚的重要信息。

FPGA是什么?里面有什么?能做什么?
FPGA是什么?里面有什么?能做什么?

今天在群里有工程师问我,怎么才叫学会了FPGA,怎么才叫学好了FPGA?我相信有很多朋友有类似的问题,因为在多数人的潜意识里,FPGA是非常高深莫测的技术,能够玩转FPGA的都是大神级的人物。

一辆汽车的未来,和一家美国芯片企业的中国梦
一辆汽车的未来,和一家美国芯片企业的中国梦

这辆车到底实现了哪些黑科技,这里卖个关子,因为它将作为一件展品在2019年初的美国CES上亮相,感兴趣的人可以去现场了解一下。而它的主人是现任赛普拉斯公司总裁兼CEO Hassane El-Khoury,今年他也不过39岁,就任赛普拉斯公司CEO时他只有36或37岁。Hassane用自己的亲身经历完美诠释了一个美国梦的实现者的故事。

更多资讯
简单几步让你看懂单片机时序图

操作时序永远是使用任何一片IC芯片的最主要的内容,看懂时序图,再操控这个芯片就非常容易了。而提取芯片器件手册上有用的信息是使用芯片的最基本步骤。

如何实现SoC全生命周期的监测?

SoC的设计越来越复杂,上市时间、软硬件集成、系统级验证、系统性能、异构、网络安全/功能安全等都是设计人员需要考虑的因素。流片前,设计师能通过仿真软件进行验证,但是流片过程中很多意想不到的结果,需要在流片后仍能被准确的检测出来。

如何将单片机的波特率作为形参的函数

不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。

代码分享教你如何使用msp430单片机延时函数

今天看示例程序中出现了__delay_cycles()这个函数,在查找msp430x54x.h这个头文件的时候,发现这个头文件中没有该函数的声明,原来这个函数已经在IAR这个编译器中集成,这里总结一下__delay_cycles();这个函数的具体用法

如何控制51单片机液晶实现计时器的功能?

要想实现人机交互,显示装置是不可缺少的。前面讲到了如何利用单片机控制数码管的显示,这篇文章主要关于如何控制液晶显示,并在此基础上加上定时器的功能,把原来已用数码管显示的定时器搬到液晶屏上来。

Moore8直播课堂