摘要:介绍用于工业热工计量分度表计算及其它运算的一种便携计算工具。本设计选择满足高速、大的程序容量需求的单片机,并对系统结构作了说明。
关键词:热工计量 分度表计算 高速单片机 浮点计算
在电力、石化、钢铁等行业中大量使用各类标准或非标准的热电阻与热电偶。为保证测量精度,这些温度测量器件需要定期检定或校准。计量工程师在检定时,需要进行大量的分度表计算。这类计算,尤其是标准温度计的分度表计算,方法复杂、费时费力、容易出错。在些单位因此编制了一些小程序配合计算,但基于微机的程序对于大量的现场计算显得很不方便,计量工程师迫切需要一种快速便捷的计算工具。
本热工计量便携计算工具采用两组单片机作为计算与控制核心。一组芯片用于核心计算及基本控制,另一组芯片专门用于复杂的中文界面显示,两者之间通过SPI总线通讯。这种设计在系统成本增加不多的情况下,简化了设计难度,提高了系统的可靠性。本热工计量便携计算工具可以完成标准热电阻、标准热电偶分度表转换计算;工业热电阻、热电偶分度表转换计算;变送器转换计算;压强、温度等14类物理量约170种单位的转换以及其它复杂的数学函数及浮点计算等,可以充分满足计量工程师现场及实验室的计算需求。
1 计算需求
以比较复杂的标准铂铑10—铂热电偶的分度表计算为例,分析对单片机计算功能的需求。计算方法依据ITS90国际温标及国家技术监督局颁发的JJG75-95《标准铂铑10—铂热电偶》计量检定规程。与一般常规计算不同,热电偶分度表计算具有步骤多、计算嵌套多以及需要大量的浮点乘法甚至指数计算等特点,计算精度为十进制5位有效数字,ANSI规定的单精度浮点计算可以满足精度要求。
考虑一般的计算情形,如果某标准S热电偶锌、锑、铜点热电势已知,测量某温度场的温度,用冰点器作为冷端补偿,此时可以测量得到其热电势,需要计算此时的温场温度。下面是计算过程中用到的计算公式。
参考函数,约有17次乘法及8次加法。
插值函数,有3次乘法及2次加法。
ΔE(t)/μV=a+bt+ct 2
系数计算,有9次乘法及6次加法。
在计算中,需要对参考函数用二分法及线性插值法求其反函数的解,对一般的电压点大约需要进行12次参考函数调用。考虑到其他运算,计算该温度点大约需要做250次单精度浮点乘法计算以及140次单精度浮点加法计算。
如果考虑现场冷端补偿温度不为0℃的情况,上述计算次数需要加倍,即约500次单精度浮点乘法计算以及280次单精度浮点加法计算。
2 选择单片机
2.1 计算精度及速度要求
考虑到计算精度(单精度浮点计算)的需求及价格因素,选择使用8位单片机。
市面上有很多种类的8位单片机,比较典型的有MCS51系列产品。选择了INTEL 8031处理器作为选择的判断基础,使用6MHz石英晶体,用C51编制上述例子的计算程序。在实际计算中,测得完成一次完整的计算约需4秒。对于某些需要指数计算的例子,时间可长达10余秒。由于程序的编制水平不同,不同单片机的结构、指令不同等诸多因素影响,无法精确计算各类8位单片机的运算时间,这个测试结果仅作为判断的依据。
作为实际使用的产品,用户可以接受的计算时间是1秒以内,因此必须采用高速8位单片机。
本热工计量便携计算工具设计功能较多,程序较大,使用C语言编程,生成代码较多。先在INTEL 8031上完成包含输入输出的上述计算的完整程序,生成代码长度约4KB,完成全部功能,最终程序代码长度约为80KB。相对于一般嵌入式微处理器应用,此程序代码相对较多。为精简系统以及保密的要求,采用片内集成ROM或FLASH程序存储器的单片机,要求其程序存储器容量在80KB以上。
由于设计功能较多,需要实时保存大约2KB的参数,即需要2KB以上的EEPROM实时保存数据。另外需要带SPI总线接口以达到快速数据显示的目的,对其它如I/O口数量等没有特殊的需求。
2.3 选择结果
ATMEL公司的ATmega103单片机是基于RISC结构、内置FLASH的单片机,采用Harvard流水线结构,一个时钟周期可以执行一条指令。ATmega103时钟频率为6MHz,由于采用8位RISC结构,速度可以接近1MIPS/MHz,是同样频率传统MCS51系列单片机速度的十几倍。经过测试,可以在0.1秒内完成上述的测试运算,在速度上完全达到了用户期望值。
ATmega103内置128KB的程序FLASH,完全满足所需的程序存储空间。本热工计量便携计算工具最终完成后程序存储量为76KB。ATmega103内置2KB的EEPROM,足够存储中间参数,其他特性也使得电路设计更加简洁。此外,可以使用效率较高的C语言编程。
经过多方比较,最终选择了ATmega103单片机作为核心计算及基本控制处理器。
3 系统结构与工作原理
3.1 硬件结构
本热工计量便携计算工具原理框图如图1所示。
在硬件设计中,较有特点的电路设计说明如下:
电源部分采用MAX713的智能镍镉电池充电电路。MAX713是使用较为广泛的智能充电芯片,设计灵活,使用功率MOSFET组成低功耗的开关型电源,可以在充电的同时为系统供电。稳压部分采用MAX639。MAX639特别适合9V供电,本身带有低电压检测功能。图2是稳压及电压监控电路部分。
图2中,VOLT_IN端是电源输入端,也是MAX713电压输出端。ON_OFF端是开关机键。该端接地开机,Q1导通,为MAX639供电,输出VCC稳压5V。CPU初始化时将TURN OFF PC7端置高电平,Q2导通,保持Q1持续导通。在开机状态下,按开关机键,ON_OFF端接地,OFF INT0外部中断端电平拉低,CPU响应中断后检测PA7端,PA7端为低电平表示有关机请求,此时将TURN OFF PC7端置低电平,Q2截止,Q1截止,实现关机。图2中,LOW BATT PA6是低电压复位输出端。
本系统键盘按键较多(37键),但是为了降低成本,同时充分利用ATmega103现有的I/O口,采用了矩阵键盘设计。特别之处是采用中断键盘响应,统一处理按键信号、关机信号及低电压检测信号,由于AVR单片机有内部上拉电阻,因此简化了电路设计。
3.2 软件结构
由于系统程序较大,采用了模块化编程,充分利用C语言丰富的现成库函数以简化程序设计。图3是系统软件框图。
上一篇:基于神经网络的声测法车辆类型辨识的应用研究
下一篇:ZNC型智能质子磁力仪
- 热门资源推荐
- 热门放大器推荐
- 看TI CTO 2016年看好四大趋势!
- Altera推荐的HDL代码风格2014.pdf
- 本周精彩博文分享
- 请教:wince流接口驱动DllEntry不停被调用,不断加载卸载线程
- Clean Technology Fuels MTC Transformers' Growth
- 【极海 APM32E103VET6S MINI开发板评测】FLASH测试一下
- 超声波模块+步进电机做雷达的童鞋们.来公开源码讨论下吧
- 编译驱动程序出现的问题
- 关于ST Visual Develop环境编译出现bad addressing mode是怎么回事
- PCB新手做的PCB图纸发给PCB厂家做他们说图纸有问题 希望大佬给看下