我爱嵌入式系统

当前位置:首页 > 软件天地 > 业内资讯 > 详细内容
基于C8051F020的配电变压器监测终端设计
发布时间:2009/11/7  阅读次数:1172  字体大小: 【】 【】【

摘 要:文章主要介绍了以C8051F020单片机为核心的配电变压器监测终端的设计方案,并给出了硬件和软件的实现方法。
关键词:C8051F020;配电变压器监测终端

引言
配电变压器是将电能直接分配给低压用户的电力设备,其运行数据是整个配电网基础数据的重要组成部分。本文设计了一种集多功能电表、无功投切控制器、采集器等功能于一体的新型配电变压器监测终端。

硬件设计
根据配电变压器终端产品所需实现的功能要求,以单片机C8051F020为核心的硬件结构如图1所示。
C8051F020简介
由于配电变压器监测终端需实现的功能较多,经反复比较,CPU选用C8051F020芯片。该芯片内置有64k Flash、4k RAM、1个SMBus/I2C、1个SPI、2个UART、5个定时器、64个通用I/O口、12位的ADC通道、电压基准(内部、外部)、温度传感器等。并具有以下特点:高速的50MIPS与8051 全兼容的微控制器内核。Flash 存储器可实现在线编程和用于非易失性数据存储(E2PROM 的作用),工作电压典型值为3V( 2.7V~3.3V),全部I/O、RST、JTAG 引脚均允许5V电压输入,工业级温度范围(-45 ~ +85)。片内JTAG 仿真电路提供全速非插入式(不使用在片资源)的电路内仿真支持断点、单步观察点、运行和停止等调试命令,支持存储器和寄存器校验和修改。
监控电路
选用MAX706作为微处理器监控器,主要实现上电复位、监控程序运行和掉电检测功能。电路如图2所示。
MAX706可独立监视跟踪定时器输出。在1.6s内,如果CPU的P2.3脚电平不翻转,则/WDO脚输出低电平,通过/MR手动复位输入端使/RST脚产生复位信号,以防止由于干扰使CPU死机。设跳线器的目的是为了避免在下载程序和调试时MAX706产生复位信号。
VPP为电源的掉电检测信号,当电平降至5.5V以下时,/PFO输出低电平,使CPU进入中断程序进行掉电处理。CPU的P1.5脚被配置成外部中断输入,低电平触发。
日历时钟和存储电路
日历时钟芯片采用RTC4553,该芯片采用内置晶振和独特的数据方法,大大提高了时钟精度和可靠性。RTC4553配有串行外设通信接口,另有 30×4bit SRAM,有2000~2099的百年日历,电池耗电2mA,时钟误差<3 min/年且无需调整,电路如图3所示。
数据存储芯片选用24LC256,32k字节,CPU通过I2C总线对其进行读写操作。主要存储终端运行参数、电量数据、每日电能参数的最大和最小值、各事件发生的时间及当时的电参数,电压合格率和可靠率数据。
负荷曲线的数据量较大,选用4M字节容量的Flash芯片AT45DB321B。
在图3中,RTC4553和AT45DB321B都通过串行外设通信接口(SPI)和CPU交换数据,电量采集模块和USB接口模块也是采用这种方式。由于 C8051F020提供的串行外设接口可工作在主或从模式,并允许将多个器件连接到一个主器件,所以这些器件和CPU之间采用SPI总线相连,CPU工作在主模式,其它器件工作在从模式。
C8051F020的SPI操作很简单,只要向SPI数据寄存器(SPI0DAT)写入待发送字节,就启动了一次数据传输,同时在时钟线上按设定频率提供时钟信号,在数据线上移出数据。
按键和显示电路
采用OMJ中文模块点阵式液晶显示器(带背光,80×160),整屏可显示5×10个汉字,可以实现汉字、ASCII码、点阵图形和变化曲线同屏显示。模块的初始化工作在上电时完成,同时保留了一根复位线供用户使用。硬件接口采用REQ/BUSY握手协议,简单可靠。显示菜单与普通微机上的菜单结构保持一致,以适应操作人员的习惯。通常每屏液晶显示表示一个菜单。
设六个操作按键:上、右、下、左、取消和确认。通过按键和液晶显示器配合可实现装置自检、数据显示和参数设置等功能。
电量采集模块
该模块主要由四块CS5460芯片和日立单片机构成,通过SPI接口每秒钟向主CPU提供电压、电流、频率、功率因数、有功功率、无功功率等实时数据。
通信部分
C8051F020有两个全双工串口:UART0和UART1,通过和RS-485总线收发器MAX3085E相配合构成两个485通信口。
485收发器MAX3085E芯片具有出现故障时自动退出的特点。
在本设计中,由于CPU是3.3V供电,而一些外设,如显示模块、E2PROM芯片等是5V供电的,所以CPU的输出脚应加上拉电阻,并配置成开漏输出。因为CPU的I/O脚是耐5V的,所以5V输入信号可以直接和CPU的输入脚相连。

软件设计
配电变压器监测终端的整套系统软件采用C51编写,编译器采用Keil C51,调试器采用Cygnal 公司的集成开发环境。
配电变压器监测终端软件系统的主程序如图4所示。程序采用了模块化的结构,除主程序框图中所列出的程序模块外,还有定时器0中断子程序模块、外部中断0子程序模块(掉电处理)、I2C中断子程序模块,串口0和1中断子程序模块以及PCA中断子程序模块。
主程序框图中的主循环体大体采用了输入→处理→输出的结构,这有点类似于PLC的工作过程。
定时器0的中断程序主要为软件计数器的计数提供时钟信号,设定为10ms中断一次。由于主循环体中各模块程序运行的实时性要求,即主循环时间不能太长,故各模块程序中的延时部分一般用软件计数器来实现。定时器0中断一次,相应软件计数器加1,计数器计到一定的数后,则相应的条件标志置位,在主循环中通过查询这些标志位来决定相应的程序模块是否执行。
按DL/T 645规定,红外线通信的载波频率为38kHz±1kHz,由于红外线发射时功率较大,故载波信号的占空比定为1:3。
C8051F020 的PCA包含一个16位的计数器和五个捕捉/比较模块,每个模块有自己的控制和捕捉/比较寄存器,每一模块可独立配置为以下四种工作方式:边沿触发捕捉、软件定时器、高速输出或脉宽调制器。本应用中将PCA模块2设置为高速输出方式,当PCA定时器的计数器与模块2的16位捕捉/比较寄存器(PCA0CPH2和PCA0CPL2)匹配时,模块2的CEX2引脚上的逻辑电平就发生变化。
PCA的时基信号配置为SYSCLK/4,SYSCLK为20MHz,则载波信号每周期的PCA时钟数为5000/38=132,保持使输出波形为高电平的PCA时钟数(PWM_HIGH)为33, 保持使输出波形为低电平的PCA时钟数(PWM_LOW)为66。
程序如下:
void PCA_ISR(void) interrupt 9
{
……
else if(CCF2)
{
CCF2=0;
temp=(PCA0CPH2<<8)|PCA0CPL2;
if(PWM_OUT)
{
temp+=PWM_HIGH;
PCA0CPL2=temp;
PCA0CPH2=temp>>8;
}
else
{
temp+=PWM_LOW;
PCA0CPL2=temp;
PCA0CPH2=temp>>8;
}
}
……
}
由于配电变压器终端须实现的功能较多,程序较复杂,需要定义的函数达180多个,故除主函数外,所有其它函数的声明均放在一个头文件中,每个C源程序文件均在开始部分将其包含进来。另外,全局变量达300多个,故将所有全局变量的定义放在一个头文件中,在定义主函数的C源程序的文件开始部分将其包含进来,全局变量的声明放在另一个头文件中,在其它C文件中将其包含进去。这样,修改函数或全局变量时可以避免出错。

结语
以单片机C8051F020为核心的配电变压器监测终端已通过功能测试及电磁兼容性实验,现正在小批量试制。■

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

51RTOS.com 版权所有  

Copyright 20006-2009 我爱嵌入式 ( 51RTOS.com ) All rights reserved 沪ICP备09080633号