当前位置:文档之家› 多用户电能表的设计

多用户电能表的设计

课程设计报告课程名称:多用户电能表的设计

姓名:专业:电气工程及其自动化班级:学号:

指导老师:

开课时间:

提交时间:

前言

多用户电子式单相电能表采用单片机作为中央处理器,每块电能表可对多达24户的用电情况进行集中检测、循环显示。各户的用电量可以就地读取。多用户电子式电能表采用了“分户用电、集中检测”的方式,与传统感应式电能表相比,有效地提高了电能计量的准确性,而且整机体积小、质量轻、安装方便。

在多用户电子式电能表的前面板上有6位LED显示器,前两位为分户号,后4位为分户用电量,所显示的用电量与分户号相对应,分户循环显示,每3s切换一户。

此外,电能表还必须有断电保护功能,确保用户在断电后能够保存之前的用电数据,在恢复供电时能够继续按照断电前得数据开始计数。

同时,该类电能表还必须有清零功能,每个控制单元上都对每户设置了相应的清零开关,当相应的用户开关按下时,该用户的用电量亦随之清零。

目录

一设计任务及要求-----------------------------------------------------4二设计原理分析--------------------------------------------------------4 三硬件电路设计--------------------------------------------------------4 3.1设计参数----------------------------------------------------------------4 3.2参数计算----------------------------------------------------------------5 3.3器件选择-----------------------------------------------------------------6 3.4AD7755相关电路---------------------------------------------------------8 3.5互感器采样电------------------------------------------------------------9 3.6用户清零电路的设计----------------------------------------------------10四软件设计--------------------------------------------------------------11 4.1 流程图-------------------------------------------------------------------11 4.2 程序内容----------------------------------------------------------------15 五设计总结--------------------------------------------------------------24 六参考资料--------------------------------------------------------------24

一设计任务及要求

设计任务:多用户电子式单相电能表设计与调试

设计目的:了解单片机在电力系统中的应用,在全面掌握单片机的功能的基础上,初步接触它在本专业的应用范围。要求独立完成,培养我们独立自主的习惯。

设计内容:硬件设计与软件设计。硬件设计包括:C8051F360单片机整体电路设计、基于AD7755的电能脉冲发生器电路设计;软件设计包括:用C8051F360单片机及编写具有掉电保存功能和清零功能的用户电量显示程序。

设计要求:①AD7755电能脉冲发生器电路仅作电路硬件设计,其电能脉冲由C8051F360单片机P2口所接拨码开关产生的脉冲模拟。②用户电量显示要求精确到小数点后3位③1000个电量脉冲为1度电④每个用户显示时间为3S左右⑤为防止突然停电而使用户电量数据丢失,要求能将电量数据保存,需要设计单片机24C16模块,使其具有掉电保存功能。⑥为了能够方便记取各个用户电量,需要为每一户设计清零程序。

二设计原理分析

设计总体框图:

三硬件电路设计

3.1设计参数

基准电压:240V×±10%

基准电流:Ib=5A

最大电流:Imax=4Ib=20A

计量精度:1%

最小电流:Imin=2%Ib=0.1

脉冲数:3200/kw.h

3.2参数计算

①以AD7755设计的电能表的相关参数计算

配合C8051F360芯片的16进制算法与课程设计的参数要求,参考基本电流与脉冲的建议数,选定基准电流Ib=5A,每kw.h计度需要的脉冲数为1000,即CF的输出为1000imp/ kw.h。

线路电压240V,基本电流Ib为5A,动态范围400(规定准确度的电流范围为2%Ib~Imax,即100mA~40A);计度器的电表常数C为1000imp/ kw.h,即AD7755发1000个脉冲,单片机记录1 kw.h电。为满足电流通道的动态范围且留有充分的余量,选用350μΩ的分流器;以其将负载电流转换为电压,接V1P和V1N。线路电压经电压分压器分压,也降到允许的最大电压范围之内,接V2P和V2N。负载电流为基本电流(5A)时,线路的功耗为P=240×5=1.2 kw。

选择f1-4=3.4Hz,SCF=0,S1=0, S0=1,此时CF频率为f1的32倍,所要求的频率恰为f1,f2段的脉冲计数标准为100imp/ kw.h。

乘以此常数得Ib情况下的输出频率:

fF1=P×C=1.2×1000/3600=0.33333333Hz

查AD7755数据表,所选择f1-4=3.4Hz,满足最大电流为40A和再留有足够余量的要求。

fF1=8.06×U1×U2×G×f1-4U2REF

U1=5×350=1750μV=1.75mV

并以最大电流产生的压降和表1,选择G=16

U2=fF1×U2REF8.06×U1×G×f1-4=0.030555×2.528.06×1.75×16×3.4=248.9mV

原理图中R1、C1,R2、C2,R3、C3,R4∥(R5~R16)、C4为抗混叠滤波器。因为AD7755以900kHz过采样速率采样,故大大简化了抗混叠滤波器的设计。不过,两个通道之间的相位匹配非常重要。例如,当cosφ=0.5时,0.2°的外部相位误差将产生0.6%的测量误差。为使两个通道的相位匹配,电阻、电容的取值分别为R1=R2=R3=R4=1kΩ(精度为1%);C1=C2=C3=C4=33nF;R5= 300kΩ,R6= 150kΩ,R7= 75kΩ,R8=39kΩ,R9=18kΩ,R10=9.1kΩ,R11=5.1kΩ,R12=2.2kΩ,R13=1.2k Ω,R14=560Ω,R15=R16=330kΩ。考虑到选用的分流器和基准源都存在允差,原理图中设置了校准网络,通过短接或断开J1~J10,可在±30%范围内进行调节。因为R15+R16=660kΩ,大于大于R4(1kΩ),因此,即使R5~R14全部短接,这条支路的-3dB频率仍由R4和C4的值决定。据厂家介绍,从J1~J10全部接通变化到J1~J10全部断开,50Hz处产生的相移仅为0.0004°。考虑到分流器存在寄生电感,较大时需要进行补偿。当分滤器阻值很小时,如,小于200μΩ,特别要注意此问题。AD7755的供电电压由电容分压器分压、二极管整流、RC滤波和7805 IC稳压产生。7805的输出以C13(10μF)和C12(100nF)退耦,接AD7755的DVDD。VDD再经R22(10Ω)、C10(100nF)和C11 (220μF)滤波,接AD7755的模拟电路电源管脚AVDD。AD7755的CLKIN和CLKOUT管脚接3.579545MHz晶体和2只22pF陶瓷电容。考虑抗电磁干扰,除原有的滤波电路外,原理图电流输入通道中增加了Z3、Z4铁氧体,电源电路部分增加了由Z1铁氧体、C16电容和MOV1金属氧化物压敏

电阻组成的滤波网络等。

②C8051F360单片机部分管脚及参数 由原理图知:

P1.0~P1.7分配给八个用户,作为脉冲输入端口。

P2.0和P2.1分配给LED 显示部分作为时钟信号和数据输入。 P2.4和P2.5分配给24C16作为SCL 和SDA 信号脚。

此外,C8051F360功能强大,结构复杂,其余端口与本设计无关,故其分配情况不再详述。

晶振采用11..0592MHz ,电源使用3.3V 。 ③电源参数

240V~5V 的共两套,一套给AD7755,另一套给显示模块和5V~3.3V 电源。5V~3.3V 电源供给C8051F360和24C16。

240V~5V 转换电路中,相关参数如下:

C1=330uf ,为滤波电容;C2=0.33uf ,用于抵消输入线较长时的电感效应,以防止电路产生自激震荡;C3=1uf ,用于消除输出电压中的高频噪声。

3.3器件选择

本设计采用的是C8051F360单片机为核心的电路板。C8051F360单片机整体电路板包含:C8051F360单片机、LED/FMQ 报警、RS-232通信、USB 接口、电源接口、LM336-2.5、下载/复位、外接器件、5V--3.3V 、两路AD 输入、信号输入、PCF8563、24C16、74HC165、74HC164显示等模块。本次设计中主要用到的部分有C8051F360单片机、PCF8563、24C16和74HC164显示等模块。

C8051F360单片机为主要部件,它具有片内上电复位电路、VDD 监视器、看门狗定时器和时钟振荡器器件,是真正能独立工作的片上系统。FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051 固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗。其P1.0,P1.1口产生的脉冲向74HC164显示输送数据,使其显示相关信息,P2口接拨码开关,模拟AD7755电量脉冲,PCF8563、24C16部件实时存储用户电量信息,并在掉电后保存,单片机上电复位后能够从中读取数据。

以下是电路板的相关电路图。

C1104/0.L22-L19L4L5L6L11-L13L14 74HC164显示电路

C8051F360电路

E2PROM 24C16芯片

两组稳压电源

3.4AD7755相关电路

AD7755在低频输出端提供平均功率信息,在高频输出端输出频率正比有效功率的脉冲,AD7755还有自校准功能。AD7755内部包含一个对AVdd电源引脚的监控电路。在AVdd上升到4V之前,AD7755一直保持在复位状态。当AVdd降到4V以下,AD7755也被复位,此时F1、F2和CF都没有输出。下图是AD7755的相关电路图。

AD7755功能框图

AD7755性能测试电

AD7755引脚排列图

表1

3.5互感器采样电路

当使用互感器采样时,其电路如图所示:

P

V1N

H1

互感器采样电路

使用互感器采样时,G1、G0都接低电平,增益选择1,电流采样通道最大

差动峰值电压为±470mV ,其差动信号由互感器的二次侧电流流过电阻R30和R31产生,互感器二次侧额定电流为5mA ,当过载4倍时,二次侧电流为20mA ,其流过电阻R30和R31产生的差动信号为96mV ,远小于峰值电压半满度值(235 mV )。 R1C1和R2C2组成两个低通滤波器,衰减掉那些无用的高频分量,从而防止有用频带内的失真。R1、R2、C1、C2阻值、容值的选取对电表的性能有很大的影响,因此取值为R1= R2=300欧,C1=C2=27nF 。

3.6用户清零电路的设计

排阻

如图,即为电能表的用户清零电路,采用74HC165芯片作为清零信号的接收和发出的端口。74HC165是8位并行输入,互补串行输出移位寄存器。当移位/置入控制端/PL为低电平时,并行数据(P0-P7)被置入寄存器中,而时钟信号(CLK1,CLK2)及串行数据(SER)均无关。当移位/置入控制端(/PL)为高电平时,置数功能被禁止。当时钟信号CLOCK1、CLOCK2中任意一个为低电平且/PL端为高电平时,另一个时钟可以输入;当时钟信号CLOCK1、CLOCK2中任意一个为高电平时,另一个时钟被禁止。

四软件设计4.1 流程图设计4.1.1主函数流程图

4.1.2 AT24C16读写函数流程图

4.1.4数码管显示函数流程图

4.2 程序内容

$NOMOD51

$include (c8051f360.inc)

ORG 00H

CLK EQU P1.1;74164时钟输入端

DATE EQU P1.0;74164数据输入端

SDA EQU P1.3;串行数据/地址输入端

SCL EQU P1.6;串行时钟输入端

KEY0 EQU P2.0

KEY1 EQU P2.1

KEY2 EQU P2.2

KEY3 EQU P2.3

KEY4 EQU P2.4

KEY5 EQU P2.5

KEY6 EQU P2.6

KEY7 EQU P2.7;设置8个开关(8户)引脚

XIN0 EQU 10H

XIN1 EQU 11H

XIN2 EQU 12H

XIN3 EQU 13H

XIN4 EQU 14H

XIN5 EQU 15H

XIN6 EQU 16H

XIN7 EQU 17H;定义新脉冲存放的地址单元

PL EQU P1.2

QL EQU P1.4

CLK165 EQU P1.5

JR EQU 20H

////0000000

JMP MAIN

ORG 000BH

LJMP TO_INT

ORG 0100H

MAIN: CALL CHUSHI ;初始化

CALL I2C_RD ;读24C16

MOV JR,P2 ;读取外部P2口的状态

MAIN1: MOV TMOD,#01H

MOV TH0,#0D8H

MOV TL0,#0F0H ;设定时初值,中断时间为0.01s

SETB ET0

SETB EA

SETB TR0 ;定时时间到进入T0中断,检查外部脉冲

BEGIN: LCALL JIANPAN

MOV R0,#XIN0 ;取第一户新增的脉冲数

MOV R1,#1 ;循环显示8户电能,R1代表户数

LOP: MOV R6,#00H

MOV A,@R0

CALL SHUCHU ;显示千分位

CALL SHUCHU ;显示百分位

CALL SHUCHU ;显示十分位

MOV B,#10

DIV AB

PUSH ACC

MOV A,B

CALL XSD ;显示带小数点的数

MOV A,#0

POP ACC

CALL XIANSHI

CALL XIANSHI

MOV A,#10 ;显示-

CALL XIANSHI

MOV A,R1 ;显示用户

CALL XIANSHI

CALL DELAY

INC R1

INC R0

CJNE R1,#9,LOP

LCALL JIANPAN

JMP MAIN1

;***************初始化子程序******************

CHUSHI:

MOV SFRPAGE,#0FH

MOV P1MDIN,#0FFH ;数字输入

MOV P1MDOUT,#0EFH ;推挽输出

MOV XBR1,#40H ;交叉开关使能

MOV PCA0MD,#00H ;关闭看门狗

MOV PSCTL,#13H

MOV OSCICN,#83H ;内部振荡器允许,不分频

MOV DPTR,#tab

RET

;***************读24C16子程序******************

I2C_RD: MOV R0,#XIN0

MOV R4,#7

CALL STA0

MOV A,#0A0H

CALL SDBYTE

JB F0,I2C_RD

MOV A,#0

CALL SDBYTE

JB F0,I2C_RD

CALL STA0

MOV A,#0A1H

CALL SDBYTE

JB F0,I2C_RD

RERD: CALL DUSHU

MOV @R0,A

INC R0

DJNZ R4,RERD

INC R0

SETB F0

CALL DUSHU

MOV @R0,A

CALL STP0

RET

;**************定时中断子程序************

TO_INT: MOV TH0,#0D8H

MOV TL0,#0F0H ;重装初值

PUSH ACC

MOV A,JR ;将原来P2口的状态送给寄存器A

MOV JR,P2 ; 分别读各位脉冲并记录脉冲数

JNB ACC.0,COMP1 ;通过电平的比较判断新脉冲与NEXT2: JNB ACC.1,COMP2 ;原来的脉冲是否一样,一样则

NEXT3: JNB ACC.2,COMP3 ;判断下一个开关状态,若不一样

NEXT4: JNB ACC.3,COMP4 ;则将相应的用户脉冲数加一

NEXT5: JNB ACC.4,COMP5

NEXT6: JNB ACC.5,COMP6

NEXT7: JNB ACC.6,COMP7

NEXT8: JNB ACC.7,COMP8

JMP JIXU

COMP1: JB KEY0,JIA1

JMP NEXT2 ;依次判断8个开关的状态COMP2: JB KEY1,JIA2

JMP NEXT3

COMP3: JB KEY2,JIA3

JMP NEXT4

COMP4: JB KEY3,JIA4

JMP NEXT5

COMP5: JB KEY4,JIA5

JMP NEXT6

COMP6: JB KEY5,JIA6

JMP NEXT7

COMP7: JB KEY6,JIA7

JMP NEXT8

COMP8: JB KEY7,JIA8

JMP JIXU ;8个开关状态全部检查完返回程序

JIA1: INC XIN0 ;将新增加的脉冲数存入到新的地址单元中

JMP NEXT2

JIA2: INC XIN1

JMP NEXT3

JIA3: INC XIN2

JMP NEXT4

JIA4: INC XIN3

JMP NEXT5

JIA5: INC XIN4

JMP NEXT6

JIA6: INC XIN5

JMP NEXT7

JIA7: INC XIN6

JMP NEXT8

JIA8: INC XIN7

JIXU: INC R6

POP ACC

RETI

;****************取余并显示*************

SHUCHU: MOV B,#10

DIV AB ;将取到的脉冲数除以10,商存入寄存器A,余数存入寄存器B

PUSH ACC ;将商压入堆栈

MOV A,B

CALL XIANSHI

POP ACC

RET

;******************显示子程序****************

XIANSHI:PUSH ACC

MOVC A,@A+DPTR ;取余数的段码值

MOV R4,#8

LOP1: RRC A

JC SET1

JNC SET0

SET1: CLR CLK

SETB DATE

SETB CLK ;捕捉一个上升沿,写入数据

DJNZ R4,LOP1

JMP RETURN

SET0: CLR CLK

CLR DATE

SETB CLK

DJNZ R4,LOP1

RETURN: POP ACC

RET ;分别写入一个数的八位二进制码;******************显示带小数点的数******************

XSD: PUSH ACC

MOVC A,@A+DPTR

ANL A,#0F7H ;与点的显码与

MOV R4,#8

LOOP1: RRC A

JC SETO1

JNC SETO0

SETO1: CLR CLK

SETB DATE

SETB CLK

DJNZ R4,LOOP1

JMP RETURN2

SETO0: CLR CLK

CLR DATE

SETB CLK

DJNZ R4,LOOP1

RETURN2:POP ACC

RET

;**************延时3s程序****************

DELAY: ;误差 0us

MOV R7,#0FFH

DL1:

MOV R6,#7FH

DL0:

MOV R5,#20H

DL2:

DJNZ R5,DL2

DJNZ R6,DL0

DJNZ R7,DL1

NOP

RET

;**************写数据到24C16************

I2C_WR: CALL STA0

MOV A,#0A0H

CALL SDBYTE

JB F0,I2C_WR

MOV A,#0

CALL SDBYTE

JB F0,I2C_WR

MOV R3,#8

MOV R0,#10H

REWR: MOV A,@R0

CALL SDBYTE

JB F0,I2C_WR

INC R0

DJNZ R3,REWR

CALL STP0

CALL LYANSHI

MOV R0,50H

POP PSW

POP ACC

RET

;************软件延时10ms子程序************** LYANSHI: MOV R4,#60 LOOP3: MOV R5,#0FAH

LOOP4: NOP

DJNZ R5,LOOP4

DJNZ R4,LOOP3

RET

;**************启动24C16***************

STA0: SETB SCL

NOP

SETB SDA

NOP

NOP

NOP

NOP

CLR SDA

NOP

NOP

NOP

NOP

CLR SCL

RET

;************终止24C16***********

STP0: CLR SDA

NOP

相关主题
文本预览
相关文档 最新文档