单相用电器分析监测装置设计报告.docx

上传人:b****2 文档编号:25888529 上传时间:2023-06-16 格式:DOCX 页数:20 大小:786.07KB
下载 相关 举报
单相用电器分析监测装置设计报告.docx_第1页
第1页 / 共20页
单相用电器分析监测装置设计报告.docx_第2页
第2页 / 共20页
单相用电器分析监测装置设计报告.docx_第3页
第3页 / 共20页
单相用电器分析监测装置设计报告.docx_第4页
第4页 / 共20页
单相用电器分析监测装置设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单相用电器分析监测装置设计报告.docx

《单相用电器分析监测装置设计报告.docx》由会员分享,可在线阅读,更多相关《单相用电器分析监测装置设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

单相用电器分析监测装置设计报告.docx

单相用电器分析监测装置设计报告

单相用电器分析监测装置设计报告

 

2017年全国大学生电子设计竞赛

 

单相用电器分析监测装置(K题)

 

 

2017年8月12日

摘要

 

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本系统先将220V交流电通过电流电压互感器处理成几百毫伏的交流信号,然后由芯片CS5463转换成数字信号并通过SPI串口通信发送给51单片机,最后由单片机处理并显示在LCD12864上。

关键词:

CS5463;电参数测量;51单片机;SPI通讯

 

单相用电器分析监测装置(K题)

【本科组】

一、系统方案

本系统主要由数据采集模块、单片机系统、液晶显示模块组成。

下面分别论证这几个模块的选择。

1、液晶显示器件的论证与选择

方案一:

采用LCD12864液晶显示屏

该屏幕驱动简单,显示信息明确,价格低廉。

与51单片机兼容性良好。

方案二:

采用LCD1206液晶显示屏

该屏幕价格低廉,与51单片机兼容性良好,但是显示内容有限,不能显示详细的信息。

通过比较,我们选择方案一。

2、数据采集模块的论证与选择

方案一:

采用电流互感器与电流变送器。

可以直接测得较为精确的电流,经过加法器抬升后在送到单片机AD采样,可以得到与输入信号一致的电流波形。

方案二:

采用电流互感器与电压互感器。

采用CS5463电能计量芯片,CT118F电流互感器,ZMPT101B电压互感器,可以测出具体的电流值和电压值。

CS5463是一个包含模-数转换器(ADC)、功率计算功能、电能到频率转换器和一个串行接口的完整的功率测量芯片。

它可以精确测量瞬时电压,电流和计算IRMS、VRMS、瞬时功率、有功功率、无功功率。

功能齐全。

综合以上两种方案,选择方案二。

3、方案描述

220V交流信号经过电流互感器及电压互感器处理后变成几百毫伏的交流信号,然后经过电路将信号送入CS5463芯片实现模数转换功能,再通过串口通信将信号传输给51单片机系统。

单片机处理信号后显示在液晶显示器上。

系统总体框图如图1.1所示:

图1.1系统总体框图

二、系统理论分析与计算

1、电流互感器

电流互感器采用CT118F,体积小,精度高,一致性好。

CT118F结构图如图2.1所示。

图2.1CT118F电流互感器结构图

2、电压互感器:

电压互感器采用ZMPT101B,互感器结构图如图2.2所示。

图2.2ZMPT101B结构图

3、信号处理电路:

CS5463芯片是一个包含两个ΔΣ模-数转换器(ADC)、高速电能计算功能和一个串行接口的高度集成的ΔΣ模-数转换器。

图如图2.3所示它可以精确测量和计算有功电能、瞬时功率、IRMS和VRMS,用于研制开发单相2线或3线电表。

CS5460A可以使用低成本的分流器或互感器测量电流,使用分压电阻或电压互感器测量电压。

CS5460A具有与微控制器通讯的双向串口,芯片的脉冲输出频率与有功能量成正比。

CS5460A具有方便的片上AC/DC系统校准功能。

图2.3CS5463引脚图

4、电压和电流测量计算

数字滤波器输出字是基于DC偏移量调整和增益校准(看系统校准部份)。

校准后测量的瞬时电压,电流是有效的。

RMS值是利用近的N(N值放在周期计数寄存器中)个瞬态电压/电流采样值计算,这些值可从Vrms和Irms寄存器中读出。

5、功率测量计算

瞬态电压/电流的采样数据相乘,得到瞬时功率。

N个瞬时功率平均计算出有功功率的值用来驱动电能脉冲E1输出。

电能输出E2是可选的,可指示电能方向,也可输出与视在功率成正比的脉冲。

电能输出E3提供一个与无功功率或视在功率成正比的脉冲输出。

E3还能表示为电压通道的电压符号,或作为PFMON比较器输出。

功率

三、电路设计

1、信号采集和处理电路

220V交流信号经过电流互感器及电压互感器处理后变成几百毫伏的交流信号,然后经过电路将信号送入CS5463芯片实现模数转换功能,信号采集和处理电路如图3.1所示。

图3.1信号采集和处理电路

2、单片机系统

本模块是整个设计的核心部分,设计采用的是STC89C52单片机系统。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52系统的原理图如图3.2所示。

图3.2STC89C52系统的原理图

四、程序设计

本系统采用C语言编程,主函数调用编写好的功能函数实现基本功能。

功能函数有处理电压信号的函数、处理电流信号的函数、处理功率信号的函数、处理温度信号的函数。

程序框图如图4.1所示。

图4.1主函数程序框图

五、测试方案与测试结果

1、测试方案

(1)硬件测试

检查多次,硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

然后使用示波器测量采集模块的波形,220V交流电经电流互感器和电压互感器后的信号波形如图5.1所示。

图5.1硬件测试图

2、测试结果及分析

测试结果如下表所示:

(单位/V/A/W/℃)

类型

测试电流

测试电压

测试功率

负载性质

电磁炉

5.7900

233

1349

感性

电炉子

5.1520

233

1200

阻性

白炽灯

0.2710

233

63

阻性

机顶盒

0.7215

230

165

感性

电热水壶

5.2173

230

1200

阻性

电风扇

0.2732

230

62

感性

五、心得体会

忙碌而又富有激情的四天电子大赛已经过去了,通过这次比赛,我们受益匪浅。

电子大赛不仅仅是一种理论知识的竞赛,更是一种动手能力的比赛,一种团队精神的比赛,一种理论与实际结合的技能大赛。

它需要我们具有足够的能力做好比赛的每一个步骤,要有一颗永不言弃的心,一种强大的团队精神,一种趋人进取的精神动力。

在这次比赛过程中,我们从开始选题、方案论证与选择到零器件的购买、硬件电路的设计、搭建、焊接与测试、程序调试付出的努力远比其他高手付出的多很多。

最后在大家共同的努力下完成了比赛。

参考文献

[1] 谭浩强.C语言程序设计[M].北京:

清华大学出版社,2012

[2]张毅刚.单片机原理与应用设计[M].北京:

电子工业出版社,2015

[3]基于集成芯片CS5463的电测仪表的设计[J].常铁原,王素平.科技资讯,2013

[4]刘月武,李杏春.新型单相双向功率/电能集成电路CS5463的原理与应用[J].仪器仪表用户,2010

[5]张玲玲.基于51单片机的LCD12864程序设计[J].中小企业管理与科技(中旬刊),2015

 

附录1:

完整的测试结果图

附录2:

电路原理图

附录3:

源程序

voidmain()

{

CS5463_Init();

LCM_init();//初始化液晶显示器

LCM_clr();//清屏

chn_disp(tab1);//显示欢迎字

DelayM(500);//显示等留3秒

while

(1)

{

sta=CS5463_GetStatusReg();//检测中断产生的原因

if(0x01==(sta&0x01))//读取电流电压

{

CS5463_ResetStatusReg();//清除标志

CS5463_GetVoltRMS();//获取电压

CS5463_GetCurrentRMS();//获取电流

CS5463_GetPactiveRMS();//获取功率

if(0x02==(sta&0x02))//读取温度

{

CS5463_GetVoltRMS();//获取电压

CS5463_GetTemperature();//温度读取不需要太频繁,所以跟电流电压一起读取

//CS5463_Init();//重新初始化芯片

}

//SndCom1Data(MeasureData,16);

}

}

}

staticvoidCS5463_GetVoltRMS(void)

{

floatG=0.5,result;//typedeffloatfp32;就是浮点类型

inttemp1;//int

uint8temp,i,j;//byte

CS5463ReadReg(REG_VRMSR,RX_Buff);//读取电压有效值

i=0;

result=0;

while(i<3)

{

temp=RX_Buff[i];

j=0;

while(j<8)

{

if(temp&0x80)

{

result+=G;

}

temp<<=1;

j++;

G=G/2;

}

i++;

}//电压在220时取样电压为78mv

result=result*CS5463_VScale;//V_Coff;//计算电压值220V*250mv/(110mv/1.414)=704.8V可以暂时不用

result*=100;//单位为mV(毫伏)12345mv5位你怎么显示

temp1=(uint32)result;

LCM_WriteDatOrCom(0,0x84);

aa=temp1/10000;

LCM_WriteDatOrCom(1,aa+0x30);

bb=(temp1%10000)/1000;

LCM_WriteDatOrCom(1,bb+0x30);

cc=(temp1%1000)/100;

LCM_WriteDatOrCom(1,cc+0x30);

LCM_WriteDatOrCom(1,0x2e);

dd=(temp1%100)/10;

LCM_WriteDatOrCom(1,dd+0x30);

ee=temp1%10;

LCM_WriteDatOrCom(1,ee+0x30);

LCM_WriteString("V");

}

staticvoidCS5463_GetCurrentRMS(void)

{

fp32G=0.5,result;

uint32temp1;

uint8temp,i,j;

CS5463ReadReg(REG_IRMSR,RX_Buff);//读取电流有效值

i=0;

result=0;

while(i<3)

{

temp=RX_Buff[i];

j=0;

while(j<8)

{

if(temp&0x80)

{

result+=G;

}

temp<<=1;

j++;

G=G/2;

}

i++;

}

result=result*CS5463_IScale;//I_Coff;//计算电流值暂时不用

result*=1000;//单位mA(毫安)12345ma

temp1=(uint32)result;

LCM_WriteDatOrCom(0,0x94);

aa=temp1/10000;

LCM_WriteDatOrCom(1,aa+0x30);

bb=(temp1%10000)/1000;

LCM_WriteDatOrCom(1,bb+0x30);

cc=(temp1%1000)/100;

LCM_WriteDatOrCom(1,cc+0x30);

dd=(temp1%100)/10;

LCM_WriteDatOrCom(1,dd+0x30);

ee=temp1%10;

LCM_WriteDatOrCom(1,ee+0x30);

LCM_WriteString("mA");

}

staticvoidCS5463_GetPactiveRMS(void)

{

fp32G=1.0,result;

uint8temp,i,j;

uint32temp1;

CS5463ReadReg(0x14,RX_Buff);//读取有功功率REG_Pactive

temp=RX_Buff[0];

if(temp&0x80)//如果为负数,计算原码

{

RX_Buff[0]=~RX_Buff[0];//本来为取反+1,这里因为精度的原因,不+1

RX_Buff[1]=~RX_Buff[1];

RX_Buff[2]=~RX_Buff[2];

}

i=0;

result=0;

while(i<3)

{

temp=RX_Buff[i];

j=0;

while(j<8)

{

if(temp&0x80)

{

result+=G;

}

temp<<=1;

j++;

G=G/2;

}

i++;

}

result=result*13125;

temp1=(uint32)result;

LCM_WriteDatOrCom(0,0x8C);//26W12345W

aa=temp1/10000;

LCM_WriteDatOrCom(1,aa+0x30);

bb=(temp1%10000)/1000;

LCM_WriteDatOrCom(1,bb+0x30);

cc=(temp1%1000)/100;

LCM_WriteDatOrCom(1,cc+0x30);

dd=(temp1%100)/10;

LCM_WriteDatOrCom(1,dd+0x30);

ee=temp1%10;

LCM_WriteDatOrCom(1,ee+0x30);

LCM_WriteString("W");

if(temp1>9)

{

LED1=0;

}

else

{

LED1=1;

}

}

staticvoidCS5463_GetPactiveRMS(void)

{

fp32G=1.0,result;

uint8temp,i,j;

uint32temp1;

CS5463ReadReg(0x14,RX_Buff);//读取有功功率REG_Pactive

temp=RX_Buff[0];

if(temp&0x80)//如果为负数,计算原码

{

RX_Buff[0]=~RX_Buff[0];//本来为取反+1,这里因为精度的原因,不+1

RX_Buff[1]=~RX_Buff[1];

RX_Buff[2]=~RX_Buff[2];

}

i=0;

result=0;

while(i<3)

{

temp=RX_Buff[i];

j=0;

while(j<8)

{

if(temp&0x80)

{

result+=G;

}

temp<<=1;

j++;

G=G/2;

}

i++;

}

result=result*13125;

temp1=(uint32)result;

LCM_WriteDatOrCom(0,0x8C);//26W12345W

aa=temp1/10000;

LCM_WriteDatOrCom(1,aa+0x30);

bb=(temp1%10000)/1000;

LCM_WriteDatOrCom(1,bb+0x30);

cc=(temp1%1000)/100;

LCM_WriteDatOrCom(1,cc+0x30);

dd=(temp1%100)/10;

LCM_WriteDatOrCom(1,dd+0x30);

ee=temp1%10;

LCM_WriteDatOrCom(1,ee+0x30);

LCM_WriteString("W");

if(temp1>9)

{

LED1=0;

}

else

{

LED1=1;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1