电表设计用于220V/50Hz电网,基本电流10A,最大电流40A。主要由计量模块、系统控制模块、数据显示及存贮模块、通讯模块、RTC实时时钟和电源模块组成。

图2:电表设计系统框图。

电压和电流分别由电阻分压器和电流互感器和锰铜分流器取样,取样信号送入计量芯片STPM01,由STPM01对信号进行采样并转换为数字信号,再经过相位校正,计算出电能、电流、电压等数据,STPM01自动选择电流较大的通道计算电能。这些数据通过SPI接口传送给LPC9401。

LPC9401读取计量芯片数据后,完成电能的累计、存储和显示,并输出电能脉冲,实时检测电表工作状态,记录所发生的窃电事件,给出窃电指示信号。通过红外通讯模块实现对电表数据抄读和设置,电源模块为整个系统提供工作电源,电源掉电后,单片机关闭液晶显示,进入完全掉电模式,将功耗降到最低,仅由后备电池维持单片机内部RTC运行。

P89LPC9401资源十分丰富,具有多种总线接口。其SPI接口用于连接STPM01,I2C接口用于LCD显示和EEPROM数据存贮,UART接口用于红外通信,外部中断1用于掉电检测。为降低成本,采用内部RTC为事件记录提供时标,CPU时钟源也采用内部的RC振荡器,通过DIVM寄存器2分频将CPU时钟调整为3.686MHz,以降低系统功耗。采用内部和外部双看门狗的设计,提供系统可靠性。内部看门狗使用独立振荡器,将STPM01设置为外部看门狗,其看门狗复位信号连接到LPC9401的键盘中断口。

STPM01与P89LPC9401接口设计

STPM01的SPI接口是一个两线口,其数据输入输出是同一个管脚,与标准三线SPI口不同。我们采用了图3所示方法连接两芯片。

作为SPI总线主机,LPC9401输出时钟信号,STPM01依照SCLNLC的时钟信号进行通信。为提高抗干扰性能,在连线中串联一个10~100Ω电阻,该电阻与芯片管脚输入电容构成低通滤波器,滤除连线上的干扰。LPC9401读取STPM01数据时,使用片上的SPI模块。而向STPM01写数据时,不使用SPI总线控制模块,而采用软件模拟SPI时序输出数据。这样设计是考虑到电表运行时,LPC9401很少向STPM01写数据,而读数据非常频繁。这种设计充分利用了芯片的资源,提高了程序运行效率。

取样电路设计

电压取样采用电阻分压,考虑到贴片电阻的耐压有限,选用4只200kΩ电阻做分压器。STPM01电压通道最大输入差分电压为±0.3V,对于50Hz交流电,对应有效值为0.21VRMS,输入信号不能大于此最大值,否则会出现削峰。考虑到余量,对于220V额定电压,我们取0.16VRMS,则