冯若晔 , 沈大伟, 祖静
(中北大学 仪器科学与动态测试教育部重点实验室, 山西 太原 030051)
随着工农业生产的日益发展,温度测量逐渐被人们所关注,对于温度的合理调节和控制,对于对温度要求较高的生产环境显得至关重要。本文采用LPC2148作为主要处理器,它具有超小LQFP64封装的32位ARM7TDMI-S微控制器。40KB的片内RAM和512KB的片内FLASH程序存储器。LPC2148具有丰富的I/O口并且I/O口的复用功能使设计更加灵活。
LED温度显示器硬件模块主要包括:模拟信号处理电路、ARM微处理器电路、CPLD逻辑控制电路和LED显示电路,其总体结构如图1所示。
图1 总体原理图
模拟信号经温度传感器被转换成电压信号之后,在被送入A/D转换器之前,需要将此电压信号进行放大和滤波,使其成为适合A/D转化的电压信号。本设计中采用INA128和OPA340来实现放大的作用使用低通滤波器进行滤波以消除干扰信号。INA128为精密低功耗仪表放大器,通过R1进行放大倍数的调节。OPA340为运算放大,两者结合使放大倍数达到理想值。
LPC2148自带2个10位逐次逼近模/数转换器(ADC0和ADC1),测量范围为0V~VREF,10位转换时间大于或等于2.44μs。AD0.7:6,AD0.4:1,AD1.7:0,为模拟输入。VREF为A/D模块参考电压。VDDA和VSSA为模拟电源和地。
本设计采用CPLD(XCR3128)进行逻辑控制。XCR3128具有丰富的I/O口,通过内部逻辑设计,来控制4个LED的显示。通过XCR3128将ARM的I/O进行扩展到达控制7段LED的目的。ARM微处理器的数据经CPLD进行串并转换后由LED进行逐位显示。通过扩展I/O的方式来驱动LED有其绝对的优点:(1)ARM微处理器不需要反复扫描,只需当LED的输出值改变的时候才通过GPIO来更新LED显示,这样就节省了处理器的时间。(2)每一段LED显示段都有一个I/O来控制,因此不需要过大的电流做驱动。
软件部分包括A/D转换C语言编程、CPLD逻辑实现和LED显示输出编程,软件框图如图2所示。
本设计中模拟电压的的输入口选择的是A/D1.6,选用最大10位转换精度,设置全局变量用来存放所得的温度值degree。
Viod cadegree ( )
{
double voltage;
AD1CR= (1<<6) | (Fplck/100000-1)<<8) |(0<<16) | (0<<17) | (1<<21) | (1<<24) ;
//选择A/D转换通道,转换时钟为1MHZ,使用11个时钟转换,启动A/D转换
While((AD1DR& ( (unsigned int)1<<31))==0)
//等待转换结束
votage=2.5*((double) ((AD1DR>>6)&0x3FF))
degree= (int) (votage*100000000/Res);// 通过压降和温度的转换关系得到当前的温度值。
CPLD主要实现I/O的扩展及4位LED的显示。通过逻辑设计达到将数据串并转换的目的,以此来控制每一个LED位的数据显示。
viod playLED(int degree)
int i;
int bit4=degree/1000; //得到温度的百位数值
int bit3=(degree%1000)/100; //得到温度的十位数值
int bit2=(degree%100)/10; //得到温度的个位数值
int bit1=degree%10; //得到温度的小数位数值
for(i=7;i>=0;i--)//更新各个位的显示
{.....
}
图2 总体流程图
图3为CPLD串联并的仿真结果。经过仿真可以明确程序在理论上可顺利通过。因此CPLD对各位LED的显示控制作用可以完成。
图3 Modelsim环境下仿真图
本设计采用LPC2148是基于它的内部资源丰富,低功耗,低成本,存储量大等优点作为出发点,可以利用其内部自带的A/D转换模块,同时其内部的Flash可达512KB,该温度显示器适用于生产生活等各个领域测量范围-20°C~100°C(由所选的温度传感器决定),测量精度为0.1°C,应用范围十分广阔,并且操作简单,显示直观。因此有着很高的实用价值。
[1]周立功.ARM嵌入式系统实验教程(二)[M].北京:北京航空航天大学出版社,2005.
[2]王开,姜宇柏.面向CPLD/FPGA的VHDL设计[M].北京:机械工业出版社,2006.
[3]刘宏杰.可编程逻辑器件的VHDL语言优化设计方法[J].测控技术, 2001(06).
[4]刘辉.C语言程序设计[M].北京:科学出版社,2006.
[5]李战明,丁磊等.基于ARM的多路功能温度监测系统的设计[J].仪表技术与传感器,2005(12):20-25.
[6]李海真,孙运强,许鸿鹰.高精度多路温度采集模块硬件电路设计[J].电子测试,2008 (12):50-60.
[7]张素文,项希.基于ARM的温度采集与显示系统的设计[J].自动化技术与应用, .2007,26(6):100-120.
[8]周立功.ARM微控制基础与实战[M].北京:北京航空航天大学出版社,2005:300-350.