基于单片机的电能表设计.docx
- 文档编号:4534867
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:35
- 大小:538.45KB
基于单片机的电能表设计.docx
《基于单片机的电能表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的电能表设计.docx(35页珍藏版)》请在冰豆网上搜索。
基于单片机的电能表设计
基于单片机的电能表设计
设计分工:
本次电能表设计中,我主要负责电能计量模块、实时时钟模块和IC卡模块的软硬件设计。
1.1设计任务
利用单片机和接口技术设计、研制一种新型电能表,可实现峰谷用电量和剩余金额,并用LCD显示。
1.2设计目的
(1)进一步了解有关单片机、存储电路、IC卡的应用;
(2)掌握信号获取、传输、处理及检测的一般方法;
(3)综合运用已有的理论和技术,制定设计方案,掌握用电量的测量方法;
(4)学会应用存储电路、IC卡、单片机组建一个实际测量系统,提高设计者的应用能力;
(5)通过测量、计算、显示,能运用所学知识并学会查阅有关资料,培养仪器仪表设计的基本技能,为今后的深入学习等奠定基础。
1.3设计要求
参考利用存储电路、IC卡、单片机及其接口技术研制出一种新型电能表,设计内容包括:
(1)详细了解所选用的存储电路、IC卡、单片机的工作原理和工作特性;
(2)设计合理的计算测量电路;
(3)用单片机、IC卡、LCD的显示技术实现测量电路,单片机的指令系统开发相关的应用程序,并对程序作详细的分析和解释。
(4)列出制作该装置的元器件,搭建试验电路,并进行试验验证调试。
(5)撰写详细的设计技术报告。
1.4设计方案与技术分析
此电能表主要由计量模块、单片机、IC卡模块、LCD显示、EEPROM存储器、实时时钟电路及电源电路等部分组成。
其硬件系统框图如下图1所示。
其中,单片机以AT89C51为电能表的核心控制芯片,它是电能表的“大脑”,外围所有的硬件模块都是在它的控制协调下进行工作的。
单片机通过控制在其中的各种程序,控制着其它硬件模块的工作状态,由它智能化地形成并可靠地提供电能计算、时段判断、费率切换、IC卡读写、电能量控制及负荷控制等功能。
1.4.1AT89C51单片机简介
Ⅰ、89C51单片机的基本组成
本电能表的硬件设计原则是在低功耗的前提下,实现多功能目的,该芯片功耗低,特别适用于电能表控制线路多、功能全、功耗低的要求。
它能方便地读取IC卡的数据,并控制液晶显示器的工作,同时还可以将电能表的数据存入EEPROM进行永久保存并可通过串口送至表外的数据终端,大大地提高了电能表的智能化功能。
在一小块芯片上,集成了一个微型计算机的各个组成部分,即89C51单片机芯片内包括:
(1)一个8位的微处理器(CPU)。
(2)片内256字节数据存储器RAM/SFR,用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。
(3)片内4KB程序存储器FlashROM,用以存放程序、一些原始数据和表格。
(4)4个8位并行I/O端口P0-P3,每个端口既可以用作输入,也可以用作输出。
(5)两个16位的定时器/计数器,每个定时器/计数器都可以设置成计数方式。
(6)具有5个中断源、两个中断优先级的中断控制系统。
图1硬件系统框图
(7)一个全双工UART的串行I/O口,用于实现单片机之间或单片机与PC机之间的串行通信。
(8)片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
(9)具有节电工作方式,即休闲方式和掉电方式。
以上各个部分通过片内八位数据总线相连接。
Ⅱ、89C51单片机引脚及其功能
如图2所示为单片机AT89C51的引脚图。
图2单片机AT89C51的引脚图
(1)XTAL1(19脚):
振荡器反相放大器及内部时钟发生器的输入端。
(2)XTAL2(18脚):
振荡器反相放大器的输出端。
(3)RST(9脚):
复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
(4)P0口(39~32脚):
P0口是一个漏极开路的8位准双向I/O端口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向口锁存器写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
(5)P3口(10~17脚):
P3口是一组带有内部上拉电阻的8位双向I/O多功能口。
P3口输出缓冲器可驱动4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口,此时,被外部拉低的P3口将用上拉电阻输出电流。
当CPU不对P3口进行SFR寻址访问时,即用作第二功能输出/输入线时,由内部硬件使锁存器Q置1。
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处低电平10ms来完成。
在芯片擦除操作中,代码陈列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
1.4.2电能计量芯片模块
采用现在比较流行的电能计量芯片CS5460A实现对电能等电量的采集和测量。
CS5460A是Crystal公司推出的用于测电流、电压、功率等的芯片,是CS5460的增强版,精度高、性能强且成本低。
CS5460A包含两个ΔΣ模-数转换器(ADC)、高速电能计算功能和一个串行接口的高度集成的ΔΣ模-数转换器。
它可以精确测量和计算有功电能、瞬时功率、IRMS和VRMS,用于研制开发单相2线或3线电表。
CS5460A可以使用低成本的分流器或互感器测量电流,使用分压电阻或电压互感器测量电压。
CS5460A具有与微控制器通讯的双向串口,芯片的脉冲输出频率与有功能量成正比。
CS5460A具有方便的片上AC/DC系统校准功能。
“自引导”的特点使CS5460A能独自工作,在系统上电后自动初始化。
在自引导模式中,CS5460A从一个外部EEPROM中读取校准数据和启动指令。
使用该模式时,CS5460A工作时不需要外加微控制器,因此当电表用于大批量住宅电能测量时,可降低电表的成本。
并且本芯片集成度较高便于编程控制,故本设计采用此方案。
CS5460A概述
Ⅰ、基本结构及功能
图3CS5460内部结构图
CS5460A的内部机构图如上图3所示,其组成模块如下:
·一个电流通道可编程增益放大器其增益为10和50可选
·一个电压通道固定增益放大器,其增益为10
·两个同时采样的AD模数转换器
·两个高速数字滤波器
·两个可选用的高通滤波器
·一个功率计算引擎
·一个片内电压基准
·一个可以检测电力不足或电源故障的电源监视器
·一个持续监视串口通讯的看门狗
·一个可选的内部时钟发生器
·一个双向串行接口
·一个电能、脉冲变换器
·一个校准用SRAM
Ⅱ、主要特性
(1)在片计算和处理功能;
(2)可以从串行E2PROM智能“自引导”,不需要微控制器,具有电能-脉冲转换功能;
(3)具有AC或DC系统校准功能;
(4)具有简单的三线数字串行接口,可以方便地进行读写;
(5)看门狗定时器;
(6)片上2.5V基准(60×10-6/OC),单电源+5V或双向2.5V±10℅电源;
(7)具有功率方向输出指示;
(8)能够测量瞬时电压、瞬时电流、瞬时功率、电能、电压有效值和电流有效值,能完成电能/脉冲转换;
(9)电能测量精度:
0.1%;
(10)具有相位补偿和系统校准功能;
(11)具有机械计度器/步进电机驱动器;
(12)内带电源监视器;
(13)电能数据线性度:
在1000:
1动态范围内线性度为±0.1%;
(14)功率消耗<12mW;
(15)电源配置:
VA+=+5V,VA-=0V;VD+=+3V至+5V
或VA+=2.5V,VA-=-2.5V;VD+=+3V
1、控制命令字
CS5460A包含一系列控制命令,对CS5460A写入指定的控制字,即可完成相应的操作。
这些控制命令包括:
(1)、启动转换命令(Oxe8)
只要对CS5460A写OXE8控制命令,CS5460A即开始进行AD转换,并输出计算结果,这
个命令一般在CS5460A复位操作完成后输入,以使CS5460A进入正常工作状态。
(2)、同步命令0(OXFE)及同步命令1(OXFF)
这两个命令主要用在一连串的读写命令之前,复位串行通信接口。
(3)Power_up/HaltControl(OXAO)
这个命令主要用在系统校准之前,以中断CS5460A正在执行的操作,而执行系统校准命令。
(4)系统校准命令字:
110VIRGO
这个命令完成指定的某项系统校准。
V、I、R、G、O的说明如下:
VI:
00-不允许出现00
01-电流通道选择
10-电压通道选择
11-电压电流通道同时选择
R:
0-DC校准
1-AC校准
G:
0-正常操作
1-执行增益校准
O:
0-正常操作
执行偏置校准
2、控制寄存器
(1)、ConfigRegister(OX00)
Default:
=0x000001
PC6PC5PC4PC3PC2PC1PC0GI
EWAPH1PH0SI1SI0EODDL1DL0
RSVHPFIHPFICPUK3K2K1K0
K[3:
0]:
指示将主频MCLK分频作为CS5460A内部时钟DCLK:
有效值分别为1、2、4。
0001:
DCLK=MCLK/1
0010:
DCLK=MCLK/2
0100:
DCLK=MCLK/4
IHPF:
电流通道高通滤波器控制位
0=禁止高通滤波器,1=使用所有的滤波器
VHPF:
电压通道高通滤波器控制位
0=禁止高通滤波器,1=使用所有的滤波器
RS:
CS5460A复位控制位,当RS=1,CS5460A复位,复位周期至少10个机器周期
DCO:
当EOD=1,EDIR作为通用输出口,其输出电平由DC0决定。
DC1:
当EOD=1,EOUT作为通用输出口,其输出电平由DC1决定。
EOD:
EOUT,EDIR允许控制位。
0:
允许EOUT/EDIR输出(DEFAULT)
1:
用户定义的控制输出端
SI[1:
0]:
中断信号输出控制
00:
低电平有效(DEFAULT)。
01:
高电平有效。
10:
下降沿有效。
11:
上升沿有效。
EWA:
允许多片CS5460A的EOUT和EDIR连接在一起(DEFAULT=0)。
GI:
电流增益控制
0=增益为10;
1=增益为50;
PC[6:
0]:
相位补偿,CS5460A没有自动相位补偿功能,通过调整PC[6:
0]值可以实现-2.8度到+2.8度的相位补偿。
(2)CYCLECOUNTREGISTER(0X05)
Bit23bit22bit0
这个寄存器的值决定每秒钟完成计算的次数,其计算方法请参见后面的例子。
(3)、PULSERATEREGISTER(0X06)
Bit18bit17bit-5
这个寄存器的值决定在某一功率时CS5460A每秒钟输出的脉冲数。
其值的设置请参见后面的计算方法。
(4)、STATUSREGISTER
DRDYEOUTEDIRCRDYMATHRESIORVOR
PWORIRORVROREOREOORRESID3ID2
ID1ID0WDTVODIODLSDO/IC
状态寄存器指示CS5460A的状态,在正常操作模式下,写一个“1”到任一bit都会使该bit位置0,写0将保持该寄存器原态,利用这个特征,用户将读回的值重新写回到该寄存器,即可清掉置1的位。
/IC:
数据无效指示。
读状态寄存器时判断该位可以确定该寄存器的值是否有效。
LSD:
低电压指示,当PFMON相对于VA-电平值低于2.5V时,该位置1。
IOD:
电流超界指示位,当输入电流值大于指定的满度电流时,该位置1。
VOD:
电压超界指示位,当输入电压值大于指定的满度电压时,该位置1。
WDT:
看门狗标识位,当MCLK=4.096MHZ,K=1时,如果超过五秒钟没有读能量寄存器,该位置1。
ID[3:
0]版本标识。
EOR:
当计算出的能量值太大或太小超出范围时,该位置1。
EOOR:
当EOUT设置的输出频率太小,而在测量低能耗时,该位置一会指示EOUT输出超界。
VROR:
电压超界。
IROR:
电流超界。
PWOR:
功率校准超界。
VOR:
电压校准超界。
IOR:
电流校准超界。
MATH:
计算错误(譬如被0除)。
CRDY:
转换完成。
EDIR:
当累加能量小于0时该位置1。
EOUT:
EOUT输出超界。
DRDY:
数据准备好或控制操作完成。
(5)、CONTROLREGISTER(0X1C)
RESRESRESRESRESRESRESRES
RESRESRESRESRESRESRESSTOP
RESMECHRESINTLSYNCNCPUNOSCSTEP
STOP:
1=结束EEPROMBOOT模式。
RES:
保留。
MECH:
加宽EOUT和EDIR的输出脉宽。
INTL:
设置/INT引脚为开漏方式。
SYNC:
使CS5460A内部AD转换脉冲与转换命令同步。
NOOSC:
停止振荡器振荡。
STEP:
允许EOUT和EDIR输出作为步进马达驱动信号。
Ⅲ、操作时序
CS5460A串行口包括4条控制线:
串行时钟(SCLK)、串行数据输入(SDI)、串行数据输出(SDO)和片选(CS),器读写时序如图4所示:
图4CS5460A操作时序图
CS5460A的串行接口部分集成了一个带有发送/接收缓冲器的状态机,状态机在SCLK的上升沿解释8位命令字。
根据对命令的解码,状态机将执行相应的操作,或者为被寻址的寄存器的数据传输做准备。
读操作需将被寻址的内部寄存器的数据传送到发送缓存区,写操作在数据传输前要等24个SCLK周期。
内部寄存器用于控制ADC的功能,所有寄存器都是24位。
上电复位后,串行状态机初始化为命令模式,等待接收有效的命令(输入串口的前8为数据)。
在完成对有效命令的接收和解码后,状态机将指示转换器执行系统操作或从内部寄存器输入输出数据。
当启动了读命令,串口将在下8个、16个或24个SCLK周期启动SDO脚上的寄存器内容的转移(从高位开始)。
寄存器读指令可以终止在8位的边界上(例如,读出时可只读8,16或24位)。
同样,数据寄存器读出允许采用“命令链”。
因此读寄存器时,微控制器可同时发送新指令,新指令将被立即执行,并可能终止读操作。
例如,命令字送入状态机读取某一输出寄存器,进行了16个连续的读数据串行时钟脉冲后,执行写命令字(如状态寄存器清零命令),数据从SDI引脚输入,同时剩下的8位读出数据被传送到SDO引脚。
又如,用户仅需从读操作中获取16位有效位时,可在SDO读出8位数据后从SDI输入第二个读命令。
在读周期,当从SDO引脚输出数据时,必须用SYNC0指令(NOP)使SDI引脚处于选通态。
如图5所示计量模块。
图5CS5460A与AT89C51的硬件连接
1.4.3EEPROM存储器模块
Ⅰ、AT24C01简介
AT24C01是美国ATMEL公司的低功耗CMOS串行EEPROM,它内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。
AT24C01中带有片内寻址寄存器。
每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的操作。
所有字节都以单一操作方式读取。
为降低总的写入时间,一次操作可写入多达8字节的数据。
图6为AT24C01的引脚图。
各引脚功能如下:
图6AT24C01的引脚图
SCL:
串行时钟。
在该引脚的上升沿时,系统将数据输入到每个EEPROM器件,在下降沿时输出。
SDA:
串行数据。
该引脚为开漏极驱动,可双向传送数据。
A0~A2:
器件/页面寻址。
为器件地址输入端。
Wp:
硬件写保护。
当该引脚为高电平时禁止写入,为低电平时可正常读/写数据。
Vcc:
电源。
一般输入+5V电压。
Vss:
接地。
Ⅱ、硬件原理图
记忆单元硬件原理图如图7所示。
利用单片机AT89C51与24C01进行I2C通信,实现对某一地址内数据的读/写校验操作。
图7记忆单元硬件原理图
1.4.4LCD显示模块
为现实多费率下对相应多项参数的显示,目前大多数相应电能表都采用液晶显示器LCD或发光二极管显示器LED。
LCD的优点是一屏可以显示许多字符,工作电流小,供电系统停电时可利用电池或大容量电容器为显示各项参数提供能量,并且比较美观。
液晶显示模块选用图形液晶显示模块GXM12864,它内含KS0108B/HD61202控制器,是一种采用低功耗CMOS技术实现的点阵图形LCD模块,有8位的微处理器接口,通过内部的128×64位映射DDRAM实现128点×64点大小的平板显示。
该液晶显示模块使用KS0108B作为列驱动器,同时使用KS0107B作为行驱动器。
KS0107B不与CPU发生联系,只要提供电源就能产生行驱动信号和各种同步信号,比较简单。
液晶显示模块GXM12864的工作原理图如图8所示。
图8LCD显示模块GXM12864的工作原理图
电位器R15的作用是调节提供给驱动器的供压,从而调节液晶显示的对比度。
RST是复位脚,接高电平Vout1。
数据线DB0~DB7和单片机的P0口相连,控制线D/I、R/W和片选线/CSA、/CSB分别与单片机P2口的6、5、1、0脚相连,使能线与P2.3相连。
在进行液晶显示模块的硬件调试时务必注意正确的接线,尤其是正负电源的接线不能有错,否则会烧坏电路上的芯片。
为避免液晶模块的损坏,在加液晶驱动电压V0/VEE时需要比加逻辑电压VDD滞后50ms;在关电时,液晶驱动电压V0/VEE需要比逻辑电压VDD提前50ms关断。
GXM12864的引脚定义如表1所示。
表1GXM12864的引脚定义
引脚名称
引脚定义
/CSA、/CSB
片选1、2
VSS
数字地
VDD
逻辑电源+5V
V0
对比度调节
D/I
指令数据通道
R/W
读/写选择
E
使能信号、高电平有效
DB0-DB7
8位数据线
RST
复位信号
VEE
液晶驱动电源
A、K
背光正电源端、背光接地端
1.4.5电源电路模块
在一般情况下,液晶器件的驱动需要两种不同的电源电压,一种是+5V(工作电压),另一种是-10V(背景光对比度调节电压)。
所以,使用液晶模块时,需要设计专门的液晶电源电路。
液晶电源电路的作用就是将电压转换成这两种电压信号输出,为液晶显示模块提供工作电压。
本设计中系统采用电池供电,其输入电压为+3V,所以电源部分的设计要求为+3V输入,+5V和-10V双电压输出。
MAX1677是双电压输出升压DC-DC变换器,它是一种专门为LCD提供电源的芯片,可以产生两种可调电压输出。
其输入电压范围(0.7-5.5V)较大,可以依据不同系统提供的安装电池的空间和所需的不同电池电压与容量,灵活的选择电池的种类。
电源模块电路如图9所示。
图中,MAX1677的输入电压Vin=3V,输出两路电压Vout1和Vout2,分别是+5V和-10V,+5V为系统电源,而-10V作为液晶显示模块的背光电源。
图9直流电源的设计
电路中的其他器件说明如下。
L1、L2为CoilCraft的DO1608C-103表贴磁芯电感,电感值为10Uh。
D1、D2是反相耐压大于16V的肖特基二极管,也可选用具有相同耐压参数的其他型号二极管。
电阻R11和R12的比值决定了主输出电压值Vout(对应图中的Vout1)需满足下面的公式:
R11=R12*[Vout/1.25-1](R12的取值范围为10-200千欧姆)
电阻R14和R13的比值决定了LCD对比度输出的电压值VLCD(对应图中的Vout2)需满足下面的公式:
R14=R13*|VLCD|/1.25(V)(R14的取值范围为500-2000千欧姆)
电阻R8和R7的比值决定了系统欠电压监测的门槛电压值VTRIP需满足下面的公式:
R8=R7*[VTRIP/0.614-1](R7≤130千欧姆)
当电池正常时,电池电压过低,输出引脚LBO输出保持高电平;一旦电池电压低于门槛电压,LBO引脚输出为低电平。
如果不是用欠电压监测的话,只需要将第三引脚(LBI)接地即可。
在原理图中,Vin为电源电路的输入端,连接两节1.5V的电池形成便携式仪表的电源;Vout1连接MAX1677的第16引脚,输出+5V的电压,作为系统的电源电压;Vout2连接MAX1677的10引脚,输出-10V的电压,作为液晶显示模块的背光电源电压。
前端电路调理模块的设计
1、电压调理部分
对于系统的前端电压调理部分,我们采用变比为2mA/2mA的电流互感器和高精度电阻作为输入电路部分电路如图10所示。
系统设计采用220V的市电电压输入,首先外接Rx=110k电阻得到2mA的电流,然后通过变比为2mA/2mA的互感器,然后在二次侧连接1个125Ω的定值电阻得到所需的输入电压,可以为CS5460A提供电压信号,不超出芯片的测量范围。
当然电阻R2值可以根据不同的电压来调整。
并加入RC滤波网络对信号初步滤波,并加入放抖动电容保护芯片。
2、电流调理部分
电流调理部分采用变比2000:
1的电流互感器,然后经一精密电阻将电流信号转变成电压信号。
并加入RC滤波网络对信号初步滤波,并加入放抖动电容保护芯片。
经变换后的补测信号以差模电压的形式接到CS5460A的模拟信号输入端。
由于互感器角差的影响,可能造成输入信号的相移,使功率测量的误差增大。
而CS5460A具有相位补偿功能(可进行-2.4°至+2.5°的相位补偿,步进0.34°),可以大大减小互感器角差的影响。
图10前端调理电路
1.4.6实时时钟电路模块
分时计费电度表中利用单片机内部定时器作为时钟基准,无需附加外部元件,通过软件编程和单片机内部的中断就可实现实时时钟功能。
但是这种做法有很多缺点。
由于受到单片机主晶振以及与其相连电容的影响较大,无法做到很高的精度,累计误差大。
主电源掉电时为了维持时钟不停,必须要有外接电池给整个单片机供电,导致仪表本身功耗增大。
外接专用实时时钟是一种专门用于产生同期时钟信息的集成电路芯片,它可以独立于单片机而工作,不受MCU主晶振及其电容的影响,计时精确,月累积误差一般小于lOs。
芯片还具有主电源掉电情况下的时钟保护电路和备份电源自动切换控制电路,可以保证在主电源掉电和其他一些恶劣环境下系统实时实钟的定时准确性。
实时时钟芯片内部集成有一定容量,具有掉电保护特性的静态RAM,可用于保存一些重要数据。
由于芯片可独立工作,主电源掉电时备份电源只需为该时钟芯片供电,可有效降低仪表功耗。
实时时钟芯片与单片机的接口根据其数据传送方式可分为两种:
一种是以并行方式与MCU接口,其数据传送速度较快,但接口扩展电路较复杂,需要考虑接口扩展时的驱动能力,而且并行接口芯片本身占用较大的印制版空间,连线多,不利于缩小仪表体积。
另一种是以串行方式与MCU接口,这种芯片通常为8脚DIP封装,占用空间小,连线简单,一般只需占用CPU的2至3条I/O口线,可有效减小仪表体积,提高工作可靠性。
本设计中采用DSl302芯片,它是美国D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电能表 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)