课程设计报告多用户电子式电能表的设计Word下载.docx
《课程设计报告多用户电子式电能表的设计Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告多用户电子式电能表的设计Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
![课程设计报告多用户电子式电能表的设计Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/13/64fde5cb-f094-4d99-ac27-7038db08cbfb/64fde5cb-f094-4d99-ac27-7038db08cbfb1.gif)
1%
最小电流:
Imin=2%Ib=0.1A
脉冲数:
1000/kw.h
3﹑AD7755相关参数计算
电能变换电路采用AD7755芯片(Ib=5A,C=1000KW/h),工作时AD7755芯片将电流采样信号和电压采样信号送入缓冲放大器,经模拟乘法器相乘,再经V/F转换器转换将电压信号转换为脉冲信号,AD7755芯片的快速脉冲输出为1000脉冲/KWh,与用户使用电能相对应。
输出的快速脉冲信号送给单片机,我们采用C8051F360单片机对方波信号进行采集和计数,P2口(8位)工作即可对8户电能脉冲进行采集与计数,本实验我们将为每户开辟1个字节的内存计数。
简单的ADE7755外围应用电路是由电流采样电路、电压采样电路、轻载调节电路、频率选择电路、高频输出和低频输出等组成。
现对各个电路进行单独分析。
下图为AD7755性能测试电路
图2.5AD7755性能测试电路
(1)电流采样电路:
图2.6电流采样电路
使用分流器的电流采样电路如图2.6所示,其中F1为分流器,R1、R2为采样电阻,C1、C2为采样电容,他们为电流采样通道提供采样电压信号,采样电压信号的大小由分流器的阻值和流过其上的电流决定。
电流采样通道采用完全差动输入,V1P为正输入端,V1N为负输入端。
电流采样通道最大差动峰值电压应小于470mV,电流采样通道有一个PGA,其增益可由ADE7755的G1和GO来选择,见表1:
表1
G1
G0
增益
最大差动信号
1
±
470Mv
2
235Mv
8
60Mv
16
30Mv
当使用分流器采样时,G1、G0都接高电平,增益选择16,通过分流器的峰值电压为±
30mV,当设计电表为5(20)A规格时,分流器阻值选择为500uΩ,当流过分流器的电流为最大电流20A时,其采样电压为500uΩ×
20A=10mV,不超过峰值电压半满度值,这样考虑能允许对电流信号和高峰值因数进行累计。
当使用互感器采样时,其电路如图2.7所示:
图2.7互感器采样电路
U×
I×
T=1/5×
F1-4×
3600
使用互感器采样时,G1、G0都接低电平,增益选择1,电流采样通道最大差动峰值电压为±
470mV,其差动信号由互感器的二次侧电流流过电阻R30和R31产生,互感器二次侧额定电流为5mA,当过载4倍时,二次侧电流为20mA,其流过电阻R30和R31产生的差动信号为96mV,远小于峰值电压半满度值(235mV)。
R1C1和R2C2组成两个低通滤波器,衰减掉那些无用的高频分量,从而防止有用频带内的失真。
R1、R2、C1、C2阻值、容值的选取对电表的性能有很大的影响,因此取值为R1=R2=300欧,C1=C2=27nF。
(2)电压采样电路:
图2.8电压采样电路
电压输入通道(V2N,V2P)也为差分电路,V2N引脚连接到电阻分压电路的分压点上,V2P接地。
电压输入通道的采样信号是通过衰减线电压得到的,其中R6至R15为校验衰减网络,通过短接跳线J1至J9可将采样信号调节到需要的采样值上,我们设计的电能表基本电流时电压采样值为174.2mV,为了准许分流器的容差和片内基准源8%的误差,衰减校验网络应该允许至少30%的检验范围,根据参数,其调节范围为169.8mV–250mV,完全满足了调节的需要。
这个衰减网络的-3dB频率是由R4和C3决定的,R19、R23、R24确保了这一点,即使全部跳线都接通,R19、R23、R24的电阻值仍远远大于R4,R4和C3的选取要和电流采样通道的R1C1匹配,这样才能保证两个通道的相位进行恰当的匹配,消除因相位失调带来的误差影响。
4、光电隔离电路
在许多应用中,许多电路链接之间需要非直接的连接,从而在提供数据的同时避免来自系统某一部分的危险电压或电流对另一部分造成破坏,造成这种破坏的可能是电源质量低劣、接地故障等各种故障。
电路隔离的主要目的是通过隔离元件把干扰的路径切断,从而达到抑制干扰的目的,保护电子设备。
在两点间避免电流流过,而允许有数据或功率传送时需要使用隔离技术。
电路隔离主要有:
模拟电路的隔离、数字电路的隔离、数字电路与模拟电路之间的隔离。
所使用的隔离方法有:
脉冲变压器隔离法、继电器隔离法、光电耦合器隔离法、直流电压隔离法、A/D转换器隔离法。
传统的光耦隔离电路虽然也能实现很高的线性度,不过这些电路需要的电源种类较多,线路比较复杂,设计成本比较高。
为了解决这些问题,本次设计中一种新的光电耦合结构,由它组成的光耦隔离电路具有很高的线性度,且只需采用普通的光电耦合器和简单的电路结构。
应用这个电路解决了弹载黑匣子的电压采样信号的光电隔离问题。
光电耦合器的工作原理和特性如下。
光电耦合器件是把发光器件(如发光二极管)和光敏器件(如光敏三极管)组装在一起,通过光线实现耦合构成电)光)电的转换器件。
当电信号送入光电耦合器的输入端时,发光器件将电信号转换为光信号。
光信号经光敏器件感应接收,再还原成电信号。
图1是一种典型反相应用电路,当输入端有电流流过时,发光二极管发光,使光电三极管导通,其集电极就有电流IC流过。
光电耦合器其主要特点为:
1)输入、输出之间在电气上相互绝缘;
2)信号传输是单方向的,输出端的噪声不影响输入端;
3)体积小、寿命长、无触点,功耗低;
4)光电耦合器的传输特性具有非线性和随温度变化性;
图1光电隔离电路
5、C8051F360单片机部分管脚及参数
(1)由原理图知:
P2.0~P2.7分配给八个用户,作为脉冲输入端口。
P1.1和P1.0分配给LED显示部分作为时钟信号和数据输入。
P1.6和P1.3分配给24C16作为SCL和SDA信号脚。
P1.4,P1.5和P1.2分配给74HC164作为键盘数据输入,时钟信号和控制输入输出管脚使用
此外,C8051F360功能强大,结构复杂,其余端口与本设计无关,故其分配情况不再详述。
晶振采用24.5MHz,电源使用3.3V。
(2)电源参数
220V~5V的共两套,一套给AD7755,另一套给显示模块和5V~3.3V电源。
5V~3.3V电源供给C8051F360和24C16。
220V~5V转换电路中,相关参数如下:
C1=330uf,为滤波电容;
C2=0.33uf,用于抵消输入线较长时的电感效应,以防止电路产生自激震荡;
C3=1uf,用于消除输出电压中的高频噪声。
6、器件选择
AD7755电能脉冲发生器的选择:
AD7755是美国AD公司生产的专用于功率/电能测量的低成本集成电路。
它的技术指标满足GB/T17215-1998标准规定的准确度等要求。
AD7755有24条引脚,以DIP和SSOP形式封装。
AD7755在电子电能表中的连接如图1所示。
管脚功能如下:
P1DVDD,数字电路电源,5(±
5%)V;
P2AC/DC,高通滤波选择脚,逻辑高,高通滤滤器使能;
P3AVDD,模拟电路电源,5(±
P4、P19NC,未接;
P5-P6V1P-V1N,通道1(电流通道)模拟输入,最大差动输入电压为±
470mV;
P7-P8V2N-V2P,通道2(电压通道)模拟输入,最大差动输入电压为±
660mV;
P9RESET,复位引脚,逻辑低使ADC和数字电路保持复位状态,清内部寄存器;
P10REFIN/OUT,电压基准脚,片上基准为5(±
8%)V,可接外部基准源;
P11AGND,模拟电路参考地;
P12SCF,校准频率选择脚;
P13、P14S1、S0,数-频转换频率选择脚;
P15、P16G1、G0,通道1增益选择脚;
P17-P18CLKIN-CLKOUT,外接时钟,钟频3.579545MHz;
P20REVP,负功率指示脚,电压信号和电流信号之间的相位差>
90°
时变为逻辑高;
P21DGND,数字电路参考地;
P22CF,校准频率输出;
P23、P24F2、F1,低频输出。
AD7755的内部功能框图如下图:
它由模拟电路(模数转换电路、基准电路与电源电压监测电路)和数字信号处理电路两部分组成。
被测电压、电流转换为数字量后,接下来的信号处理都在数字域实现;
AD7755内部的相位校正电路、高通滤波器、乘法器、低通滤波器、数字-频率转换器等都为数字电路。
AD7755内有两个以900kHz过采样速率采样的16位2阶Σ-Δ模数转换器(ADC)。
被测电流经可编程增益放大器(PGA)放大后接电流通道的ADC,并由此ADC转换为对应的数字信号。
再经相位校正和高通滤波,进入乘法器。
乘法器的另一路输入是由电压通道ADC转换而来的、与被测电压对应的数字信号。
相乘后产生瞬时功率信号。
此信号经低通滤波器滤除其中的交流分量,提取出负载消耗的瞬时有功功率。
AD7755对这个瞬时有功功率信号进行一段时间的累计、平均,求得平均有功功率,以较短时间对瞬时有功功率进行累计,求得与瞬时有功功率成正比的高频频率并经CF输出,用于校准或送微控制器累加计数,实现对电能的计量。
电流通道的PGA的增益受管脚G1、G0控制。
高通滤波器是否接入受管脚AC/DC控制。
逻辑高,HPF使能。
用来去除电流通道的直流偏移和由此引起的误差。
高通滤波器接入或断开造成的相移,由相位校正电路校正,使电压通道和电流通道的相位匹配。
如前所述,管脚F1、F2输出与平均有功功率成正上的电压有效值具有下列关系:
fF1=fF2=8.06×
U1×
U2×
G×
(f1-4)/U²
REF
式中,U1、U2分别为电流通道和电压通道输入端的rms差动电压(V),G为电流通道的增益,选择方法见表1;
UREF为基准电压值(V);
f1-4为以S1、S0逻辑输入选择的频率(Hz),选择方法见表2。
表2 f1-4等选择表
表2第7列是与两个通道都输入最大电压所对应的最高输出频率(Hz)。
考虑到实际电网电压存在波动和负载电流可能超载,设计电能表时,两个模拟通道的输入电压一般都留有足够的超量程余地。
比如,取允许的最大值的一半。
表2第5列是用管脚SCF、S1、S0逻辑输入选择的转换系数,CF脚输出的频率为fCF=KfF1
(2)由表2知,CF端输出的频率能高达fF1的2048倍。
7、设计原理图
①单片机整体显示图:
②八段译码显示:
③E2PROM24C16芯片
④键盘部分
⑤AD7755电能脉冲发生器
⑥电源
图2两组稳压电源
三、软件设计
1、主程序框图
2、显示用户及相应电能子程序框图
3、查询键盘程序框图
4、送LED显示子程序框图框图
5、中断子程序框图
6、24C16读程序框图
7、24C16写程序框图
四、程序清单
$NOMOD51
$include(c8051f360.inc)
CLKEQUP1.1;
//LED时钟
DATEEQUP1.0;
//LED数据
SCLEQUP1.6;
24C16串行时钟
SDAEQUP1.3;
74HC164脉冲控制管脚
QLEQUP1.4;
74HC165输出管脚
PLEQUP1.2;
74HC165控制输入输出管脚
CLK165EQUP1.5;
74HC165脉冲控制管脚
PB0EQUP2.0;
P2口依次对应1-8用户
PB1EQUP2.1
PB2EQUP2.2
PB3EQUP2.3
PB4EQUP2.4
PB5EQUP2.5
PB6EQUP2.6
PB7EQUP2.7
ORG00H
LJMPMAIN;
跳转到主程序
ORG0BH
LJMPT0_INT;
跳转中断服务程序
ORG0100H
////////主程序///
MAIN:
LCALLCHUSHI;
对F360进行初始化
LCALLI2C_RD;
读出24C16存储的数据
MAIN1:
MOVSP,#70H;
设置堆栈
MOV20H,P2;
读取外部P2口状态
MOVTMOD,#01H;
定时器赋初值
MOVTH0,#0b1H;
利用计数器T0读取外部脉冲
MOVTL0,#0e0H;
20ms产生一次中断
SETBET0;
T0开中断
SETBEA;
开总中断
SETBTR0;
T0开始计时
BEGIN:
MOVR0,#60h;
将用户一数据送到R0中
MOVR7,#1H;
当前操作户数
LOOP:
MOVR6,#0H;
小数点所在的位数
MOVA,@R0;
把用户脉冲数送到累加器A
MOVB,#10;
除数为10
DIVAB;
相除,商存入A中
PUSHACC;
压栈商
MOVA,B;
把B中所存余数即个位值赋给累加器A
LCALLXS;
调用子程序显示个位
POPACC;
出栈
MOVB,#10
DIVAB
PUSHACC
MOVA,B
LCALLXS;
同理显示十位
POPACC
MOVB,#10
DIVAB
PUSHACC
MOVA,B
LCALLXS;
显示百位
POPACC
显示千位
MOVA,#10
显示-
MOVA,R7
显示户名
LCALLXS
INCR0
INCR7
LCALLDELAY;
调用延时子程序
CJNER7,#9,LOOP;
循环显示完8用户电量
LCALLI2C_WR;
启动24C16写数据
LJMPBEGIN;
调用显示用户及用电量子程序
////////初始化程序//////
CHUSHI:
//MOVSFRPGEN,#01H
MOVSFRPAGE,#0FH
MOVP1MDIN,#0FFH
MOVP1MDOUT,#0EFH;
推挽输出
MOVXBR1,#40H;
交叉开关使能
MOVPCA0MD,#00H关闭看门狗clearWatchdogEnablei
//MOVFLKEY,#0a5H
MOVPSCTL,#13H
MOVOSCICN,#83H;
内部振荡器允许,不分频
RET
/////////中断子程序///////
T0_INT:
MOVTH0,#0b1H;
重新装入初值
MOVTL0,#0e0H
压栈保存累加器A中数据
PUSHPSW;
压栈保存状态字
MOVA,20H;
把之前用户状态送入累加器A中
MOV20H,P2;
把此时用户脉冲状态存入20H存储单元
JNBACC.0,BJ1;
若ACC.0位为低电平跳转到BJ1执行,否则顺序执行
NEXT1:
JNBACC.1,BJ2;
判断外部脉冲的状态
NEXT2:
JNBACC.2,BJ3;
NEXT3:
JNBACC.3,BJ4;
NEXT4:
JNBACC.4,BJ5;
NEXT5:
JNBACC.5,BJ6;
NEXT6:
JNBACC.6,BJ7;
NEXT7:
JNBACC.7,BJ8;
JMPDONE
BJ1:
JBPB0,ADD1;
与原来外部的状态进行比较
JMPNEXT1;
若相等则继续读外部状态
BJ2:
JBPB1,ADD2;
若不等则相应的用户的脉冲数加一
JMPNEXT2
BJ3:
JBPB2,ADD3
JMPNEXT3
BJ4:
JBPB3,ADD4
JMPNEXT4
BJ5:
JBPB4,ADD5
JMPNEXT5
BJ6:
JBPB5,ADD6
JMPNEXT6
BJ7:
JBPB6,ADD7
JMPNEXT7
BJ8:
JBPB7,ADD8
ADD1:
INC60H
JMPNEXT1
ADD2:
INC61H
ADD3:
INC62H
ADD4:
INC63H
ADD5:
INC64H
ADD6:
INC65H
ADD7:
INC66H
ADD8:
INC67H
DONE:
POPPSW;
状态字恢复之前值
POPACC;
出栈,累加器A恢复之前的值
LCALLJIANPAN;
跳转到清零子程序
RETI
////////显示子程序//////////
//----------显示子程序----------------------
XS:
MOVDPTR,#TAB;
把TAB表首地址赋给DPTR
PUSHACC;
对累加器A中内容压栈保护
MOVCA,@A+DPTR;
查询字码表中对应的数
MOVR4,#8;
循环次数8
INCR6;
R6自增一
CJNER6,#04H,XS1;
判断R6是否等于4,等于4显示带小数点的数,不等于4跳转
ANLA,#0EFH;
作逻辑与运算,显示带小数点的数
XS1:
CJNER6,#05H,XS2;
判断R6是否等于5,等于5显示“—”,不等于跳转
MOVA,#0FEH;
显示“—”
XS2:
CJNER6,#07H,LOOP1;
MOVA,45H
CPLA
LOOP1:
RLCA
CLRCLK
MOVDATE,C
SETBCLK
DJNZR4,LOOP1;
POPACC
/////////清零////////////
JIANPAN:
MOV40H,R0;
将原用户数据存入40h单元
MOV38H,#8;
设置循环次数
MOVR0,#60H;
将用户一的数据送到R0中
CLRPL;
将键盘的状态读入74HC165
NOP;
指令延时
NOP
SETBPL;
停止读入键盘状态
XUN:
CLRCLK165;
将按键的状态读出,按下为0
NOP
SETBCLK165;
移出一个键盘的状态
JBQL,DONE1;
判断键盘是否按下
MOV@R0,#0;
若键盘按下,将该用户脉冲清零
INCR0;
指针移到下一户存储地址
JMPDONE2
DONE1:
INCR0
DONE2:
DJNZ38H,XUN;
判断8户用户是否检查完毕
MOVR0,40H;
R0恢复清零之前数据
//////////I2C_WR/////////////////////////
I2C_WR:
LCALLSTART;
发起始条件
MOVA,#0A0H;
发器件地址
LCALLSENDI2C
JBF0,RETURN4;
数据接收错误
MOVA,#0;
发字节地址
接收数据错误
MOVR1,#60H
MOVR2,#10H
LOP1:
MOVA,@R1
LCALLSENDI2C;
发一个数据
INCR1
DJNZR2,LOP1
LCALLSTP
LCALLLDELAY;
写周期延时约10ms
RETURN4:
RET
/////////////////////I2C_RD//////////////////
I2C_RD:
MOVR2,#10H
LCALLSTART;
发送起始条件
JBF0,RETURN3;
MOVA,#0H;
发地址
JBF0,RETURN3
重新