摘 要:可编程计数器阵列(PCA) 是某些新型单片机( 如 SST 89 系列) 所具有的增强功能。介绍了基于 SST 89 系列单片机可编程计数器阵列所开发的一种用于纺织机械的智能测速仪表。该仪表可同时测量 5 路脉冲信号的频率, 然后折算出相应的设备工艺参数, 并将其显示在液晶屏上。与常规方法相比, 这种方法的测量范围更大, 也降低了软件的复杂度。
1 智能测速仪表概述
大多数速度测量问题都可以转化为频率测量问题。频率测量的基本方法有计数法和测周期法。前者适用于高频信号, 后者适用于低频信号。一般单片机所具有的定时器 /计数器模块都可以用于测量频率, 但是又都存在一定的缺陷。计数法测量频率的精度取决于采样时间和信号本身的频率; 而测周期法的精度则取主要决于单片机内部的时钟信号频率。如果所测量的信号频率在很大范围内变化, 无论是采用计数法还是测周期法, 都不能保持一致的测量精度。除非采用特殊的方法根据所测量的信号频率调整测量方法并进行补偿。另外一般单片机的定时器 /计数器数量有限, 例如 MCS- 51 系列单片机最多只有 3 个, 无法满足多个通道的要求。
本文针对纺织设备中测速仪表设计, 采用了新型的 SST 89系列单片机。该单片机内的 PCA (Programmable CounterArray)模块, 可以对 5 路脉冲信号进行计数或捕获处理。利用该模块所提供的各种功能, 可以很容易地实现多路脉冲信号的检测与处理。主要用于现场监测纺织设备的运行状态, 并将检测结果换算为工艺参数进行显示。同时可以对某些设备状态进行监控, 当设备出现故障或达到设定值时及时发出报警或控制信号。仪表需要对 5 路脉冲信号进行检测, 并换算为设备的运行参数( 锭子速度、输出速度、捻度、牵伸系数、辅助锭子速度、产量计数) , 在液晶屏上显示出来。该智能测速仪表具有计长、定长功能, 当产量达到设定值时, 能够通过继电器输出控制信号。
在设备的相关部位安装了光电传感器或霍尔传感器以检测有关的速度。由于各路速度信号与工艺参数的换算需要一个比例系数, 因此必须通过键盘输入和修改。另外这些系数以及产量数值等掉电后需要永久存储, 开机后再自动调出, 也需要有相应的存储器支持。
2 SST 89 系列单片机及其主要特点
SST 公司在开发 FLASH 存储器方面具有很大优势, 它将特有的超级 FLASH 技术和小扇区结构与 80C51 内核相结合, 推出了与 MCS- 51 单片机兼容的 SST 89 系列单片机。此种单片机除了增强型 MCS- 51 单片机的全部功能外, 还增加了一些新的功能。其中最主要的就是 IAP(In Application Programming)功能和 PCA 模块。
IAP 提供了能够直接在产品的电路板上对芯片进行编程的手段, 从而能够在不取下芯片的情况下实现产品的软件更新。SST 89 系列单片机具有 2 块独立的片内小扇区 FLASH 存储器, 分别为 BLOCK0 和 BLOCK1。位于 BLOCK0 中的程序可以对 BLOCK1 进行编程; 反过来, 也可以用 BLOCK1 中的程序对BLOCK0 进行编程。
利用这一特点, 配合 SST 公司提供的 IAP 软件 SST EasyI-AP, 通过串口可以很容易地实现对用户应用程序的在线更新,不再需要专用的编程器。另外, SST EasyIAP 软件中还包含了一种监控代码, 它配合 Keil Software 公司 μVision2 软件, 可以直接进行单片机的仿真开发, 而不需要额外购买专用硬件仿真器, 从而节省了用户的开发成本。
PCA 是 SST89 系列单片机新增加的功能。它包括 1 个PCA 专用的 16 位计数器, 5 个可编程的比较 /捕捉比较模块, 每个比较 /捕捉模块都有各自对应的特殊功能寄存器, 且可以运行于 4 种工作方式: 边沿触发捕捉、软件定时器、高速输出、8 位脉冲宽度调制器。最后一个模块还多一种工作方式, 即监视定时器WDT 方式。
PCA 配有专用的中断, 5 个捕捉 /比较模块和 PCA 计数器溢出共用一个中断入口。因此在 PCA 的中断服务程序中必须对中断源进行进一步的查询。图 1 所示为 PCA 的结构原理框图。

3 系统设计
智能测速仪表由电源电路、MCU 及外围电路、LCD、键盘、输出继电器、EEPROM 以及相应的接口电路所组成。如图 2 所示。来自传感器的 5 路脉冲信号经过隔离光耦后连接至 PCA模块的 5 个输入引脚 CEX0- CEX4。LCD 液晶屏能够显示 2 行信息, 可以通过按键进行显示内容的切换。EEPROM 采用串行接口的 93C46, 可以存储 128 字节的数据。

根据设计指标, 传感器输出的脉冲频率一般低于 1000Hz,因此适宜使用 PCA 模块的捕捉功能进行频率测量。在输入脉冲的下降沿, PCA 自动将计数器的计数值存入相应通道的特殊功能寄存器。根据相邻两次捕捉的计数值, 即可计算出脉冲信号的周期和频率。设两次捕捉的计数值分别为 CT1 和 CT2, PCA 计数器的时钟频率为 FCLK, 则所测量的脉冲信号频率为 F=FCLK/(CT2- CT1)。当信号的频率非常低, 以至于 PCA 计数器发生溢出时, 只要记录下溢出的次数 N, 则上 述 公 式 成 为 F =FCLK/[N ×65536+(CT2- CT1)]。
系统软件采用 C 语言编程, 分为两大模块: 主程序模块和 PCA 中断模块。主程序模块的功能是进行系统初始化、运行参数计算与显示, 以及按键的处理。如图 3 所示。

PCA 中断模块的功能则是在发生捕捉后, 及时对捕捉的计数值进行处理。分别计算出相应通道信号的频率。以下 PCA 通道 0 中断服务程序的基本处理过程:

可以推断出信号频率越低, Tx越大, 捕捉寄存器的差值就越大, 误差越小。但是当晶振频率为 12MHz, PCA 捕捉功能可以处理周期小于 65535μs 的信号, 因此在信号频率为 16Hz 以下时,将发生计数器溢出。经过分析, 可以采用多次测量取平均值或者提高晶振频率和晶振频率准确度的方法提高精度。
4 结束语
该测速仪的电路、程序稍加变化即可改造为其他的智能测控仪表, 为其它仪器仪表的功能扩展、更新提供参考与借鉴。
参考文献
[1]FlashFlex51 MCU SST 89E564RD Datasheet,Silicon StorageTechnology Inc.,2003
[2] 徐爱钧.智能化测量控制仪表原理与设计[M].北京: 北京航空航天大学出版社, 2004




