摘要:为设计一种新型无功动态补偿控制器,以ARM7为核心器件,运用了I2C总线外挂功能模块的方法,本方案外围电路结构简单可靠,实验结果表明本系统具有性能高、实时性好、补偿快速准确等优点。本文重点介绍了基于LPC2220、USB接口芯片D12、I2C和一种新型键盘扫描的系统设计。
关键词:无功动态补偿控制器;ARM;USB;I2C;键盘扫描
0 引言
我国电网线路损耗严重,从发电到用电,在高低配电线路损耗的电量高达25%以上,低压电网的损耗就更大。为了节能降损,改善电网电压质量,常采用并联电容器分级投切方法(静态补偿)进行无功功率补偿。而该方法无法使电网无功功率得到完全的补偿,电网经常处于欠补或过补状态,功率因数不能接近1,不能最大限度发挥供电设备的能力,而且静态补偿有浪涌电流大、补偿时间慢、维护费用高及使用寿命短的缺点。因此,设计了一种无功动态补偿控制器,它通过对电网无功电流、无功电压的快速检测,以无功电流、无功电压为取样物理量,经比较判断而以编码工作方式发出无触点开关的通断信号,进行投切控制。具备断电记忆功能、人机对话功能、手动/自动切换功能,以及较强的抗干扰能力。当无功动态补偿控制器发出投切信号时,无触点开关投入或切除相应的电容器。
最常用的方案多以MCU为核心,控制多路信号的采集于处理。但由于单片机本身的指令周期以及处理速度的影响,对于多通道A/D进行控制及数据处理,普通的MCU往往不容易达到要求。本文采用ARM7为核心来实现数据的采集、存储和传输控制。
1 系统硬件设计
整个无功动态补偿控制器使用ARM7 LPC2220为核心来控制各个功能模块。主要功能模块有A/D前端处理单元、A/D采样单元、数据存储区单元、USB通信单元、液晶显示单元、键盘控制单元、时钟单元、汉字库存储单元。
LPC2220[1,2]是基于一个支持实时仿真和跟踪的32位ARM7TDMI-S CPU,具有内置的8路10位AD转换模块,更重要的是从硬件上支持目前较为通用的高速(400kbps)I2C总线串行通信方式,系统要外挂的功能模块很多,包括片外存储器、液晶驱动器、键盘控制器、时钟芯片等,所以采用I2C总线通信方式,将大部分功能模块挂在I2C总线上。由此可大大简化外围电路,从而降低仪器成本,缩小仪器体积。
A/D前端处理单元包括滤波网络、增益放大,作用是实现对信号的放大、衰减及阻抗匹配,从而满足ADC对输入信号的要求。滤波网络滤除高频噪声和工频信号的干扰,、增益放大通过ARM给出的控制信号实现对模拟信号不同增益的放大[3,4]。A/D采样单元使用LPC2220内置的8路10位AD转换模块,负责把模拟信号转换成数字信号。AD转换模块的基本时钟由VPB外部时钟提供,内置的可分频器可将VPB时钟调整至转换所需的频率。采集的数据在传输到计算机之前所有的数据都必须保存在仪器中,由于要求的数据存储量很大,该系统设置了外扩的数据存储单元。同时可以通过USB通信单元将存储器中的数据上传到微机。系统使用了液晶显示和键盘控制以实现系统和使用者之间的实时交互。不同的按键分别执行不同的任务,如在液晶上显示功率因数、电压、电流、投切延时设定值、投切判据设定值、过压设定值、无功电流、频率等。为方便使用者,控制器可以显示时间,并且可以确定某一批数据采集的时间,所以有专门的时钟单元。人机对话采用汉字显示,而此时液晶需要显示大量的汉字,汉字字库存储在ARM外挂的存储器之中。
4*4
键盘 RS5C372计时控制 PCF8574 键盘控制 A/D前端处理单元 A/D
LPC2220 I2C总线
USB通
信模块 SDA 液晶显示模块
LPH7653 SCL M24M01 1MB EEPROM M24M01 1MB EEPROM
图1 无功动态补偿控制器总体结构
I2C总线系统上挂接的所有外围器件,必须支持两线制I2C串行通信模式,I2C总线上所有的器件和接口模块都连接在同一条SDA和SCL上。每个器件都有一个唯一的地址以供识别,地址码又分为两部分:
(1) 器件类型地址,占高4位,属于固定地址,不可改变;
(2) 引脚设定地址,占低3位,可以通过器件的引脚接线状态来配置。
系统中要接在I2C总线上的外围器件包括:一片接口扩展芯片PCF8574,2片EEPROM存储器M24M01、一片LCD LPH7653以及一片日历时钟芯片RS5C372,均是7位地址格式的器
件。
对于USB接口,采用PHILIPS公司的PDIUSBD12接口器件,PDIUSBD12带有并行总线和局部DMA传输能力,可以任何外部微处理器实现高速并行接口。具有良好的EMI特性的总线供电能力,在挂起时可控制LazyClock输出。
整个系统的运行是一个和用户不断交互的过程,它需要不断接受用户通过键盘输入的命令并将相应的处理信息显示在液晶屏幕上。系统利用I2C总线系统中8位I/O扩展器PCF8574组成的一种新型4×4键盘扫描方案。
图2 键盘的接口电路
与传统的键盘相比较,设计了4个上拉电阻,即在键盘的4行和4列上都接了4个上拉电阻,而传统的键盘的设计是或者4行接4个电阻或者4列接4个电阻,这是两者的本质区别。这就为对键盘的扫描只要2次提供了可能,而传统的键盘需要扫描4次。扫描的方法是:先设P0-P3这4列为1、P4-P7这4行为0,然后读取键盘4列,看是否有键按下。如有,再读一次,判定是否是抖动,如是按键,则把P0-P3值存入寄存器的低字节,接着设P0-P3这4列为0、P4-P7这4行为1,然后读取键盘4行,把P4-P7值存入寄存器的高字节,最后把寄存器的低字节和寄存器的高字节相结合,则可断定按键值。
2系统软件设计
2.1 USB通信的实现
根据USB 协议[5,6],主机通过端点0 向设备发出一些获得相关设备基本状态的命令。这些基本状态可以反映USB设备所属的类别及子类, 反映配置状态、接口状态和端点状态, 主机按照USB 协议与设备建立通道。设备向主机传送相应的描述符,描述符掌握了关于设备的各种信息,包括设备描述符、配置描述符、接口描述符、端点描述符、类描述符、报告描述符。
为了使软件可移植性强、易维护, 采用了分层的方法编写PDIUSBD12 驱动程序。硬件提取层(EPPHAL.C)是固件中最低层代码,其执行对PDIUSBD12和线路硬件与I/O相关的访问。D12 命令接口(D12CI.c ) 实现PDIUSBD12 的命令接口以简化器件的编程。D12中断服务程序(ISR.C ) 它将数据从PDIUSBD12 的内部FIFO取回到CPU存储器,并建立正确的事件标志,以通知主循环程序进行处理。该层的函数及其功能如下: