1、单相用电器分析监测装置设计报告单相用电器分析监测装置设计报告2017年全国大学生电子设计竞赛单相用电器分析监测装置(K题)2017年8月12日摘 要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本系统先将220V交流电通过电流电压互感器处理成几百毫伏的交流信号,然后由芯片CS5463转换成数
2、字信号并通过SPI串口通信发送给51单片机,最后由单片机处理并显示在LCD12864上。关键词:CS5463;电参数测量;51单片机;SPI通讯单相用电器分析监测装置(K题)【本科组】一、系统方案本系统主要由数据采集模块、单片机系统、液晶显示模块组成。下面分别论证这几个模块的选择。1、液晶显示器件的论证与选择方案一:采用LCD12864液晶显示屏该屏幕驱动简单,显示信息明确,价格低廉。与51单片机兼容性良好。方案二:采用LCD1206液晶显示屏该屏幕价格低廉,与51单片机兼容性良好,但是显示内容有限,不能显示详细的信息。通过比较,我们选择方案一。2、数据采集模块的论证与选择方案一:采用电流互感
3、器与电流变送器。可以直接测得较为精确的电流,经过加法器抬升后在送到单片机AD采样,可以得到与输入信号一致的电流波形。方案二:采用电流互感器与电压互感器。采用CS5463电能计量芯片,CT118F电流互感器,ZMPT101B电压互感器,可以测出具体的电流值和电压值。CS5463 是一个包含模-数转换器(ADC)、功率计算功能、电能到频率转换器和一个串行接口的完整的功率测量芯片。它可以精确测量瞬时电压,电流和计算IRMS、VRMS、瞬时功率、有功功率、无功功率。功能齐全。综合以上两种方案,选择方案二。3、方案描述220V交流信号经过电流互感器及电压互感器处理后变成几百毫伏的交流信号,然后经过电路将
4、信号送入CS5463芯片实现模数转换功能,再通过串口通信将信号传输给51单片机系统。单片机处理信号后显示在液晶显示器上。系统总体框图如图1.1所示:图1.1 系统总体框图二、系统理论分析与计算1、电流互感器电流互感器采用CT118F,体积小,精度高,一致性好。CT118F结构图如图2.1所示。图2.1 CT118F电流互感器结构图2、电压互感器:电压互感器采用ZMPT101B,互感器结构图如图2.2所示。图2.2 ZMPT101B结构图3、信号处理电路: CS5463 芯片是一个包含两个模-数转换器(ADC)、高速电能计算功能和一个串行接口的高度集成的 模-数转换器。图如图2.3所示它可以精确
5、测量和计算有功电能、瞬时功率、IRMS 和VRMS ,用于研制开发单相2 线或3 线电表。CS5460A 可以使用低成本的分流器或互感器测量电流,使用分压电阻或电压互感器测量电压。CS5460A 具有与微控制器通讯的双向串口,芯片的脉冲输出频率与有功能量成正比。CS5460A 具有方便的片上AC/DC 系统校准功能。图2.3 CS5463引脚图4、电压和电流测量计算数字滤波器输出字是基于DC偏移量调整和增益校准(看系统校准部份)。校准后测量的瞬时电压,电流是有效的。RMS值是利用近的N(N值放在周期计数寄存器中)个瞬态电压/电流采样值计算,这些值可从Vrms和Irms 寄存器中读出。5、功率测
6、量计算瞬态电压/电流的采样数据相乘,得到瞬时功率。N个瞬时功率平均计算出有功功率的值用来驱动电能脉冲E1 输出。电能输出E2是可选的,可指示电能方向,也可输出与视在功率成正比的脉冲。电能输出E3提供一个与无功 功率或视在功率成正比的脉冲输出。E3还能表示为电压通道的电压符号,或作为PFMON比较器输出。功率三、电路设计1、信号采集和处理电路220V交流信号经过电流互感器及电压互感器处理后变成几百毫伏的交流信号,然后经过电路将信号送入CS5463芯片实现模数转换功能,信号采集和处理电路如图3.1所示。图3.1 信号采集和处理电路2、单片机系统本模块是整个设计的核心部分,设计采用的是STC89C5
7、2单片机系统。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52系统的原理图如图3.2所示。图3.2 STC89C52系统的原理图四、程序设计本系统采用C语言编程,主函数调用编写好的功能函数实现基本功能。功能函数有处理电压信号的函数、处理电流信号的函数、处理功率信号的函数、处理温度信号的函数。程序框图如图4.1所示。图4.1 主函数程序框图五、测试方案与测试结果1、测试方案(1)硬件测试检查多次,硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。然后使用示波器测量采集模块的波形,220V交流电经电流
8、互感器和电压互感器后的信号波形如图5.1所示。图5.1 硬件测试图2、测试结果及分析测试结果如下表所示: (单位/V /A /W /)类型测试电流测试电压测试功率负载性质电磁炉5.79002331349感性电炉子5.15202331200阻性白炽灯0.271023363阻性机顶盒0.7215230165感性电热水壶5.21732301200阻性电风扇0.273223062感性五、心得体会忙碌而又富有激情的四天电子大赛已经过去了,通过这次比赛,我们受益匪浅。电子大赛不仅仅是一种理论知识的竞赛,更是一种动手能力的比赛,一种团队精神的比赛,一种理论与实际结合的技能大赛。它需要我们具有足够的能力做好比
9、赛的每一个步骤,要有一颗永不言弃的心,一种强大的团队精神,一种趋人进取的精神动力。在这次比赛过程中,我们从开始选题、方案论证与选择到零器件的购买、硬件电路的设计、搭建、焊接与测试、程序调试付出的努力远比其他高手付出的多很多。最后在大家共同的努力下完成了比赛。参考文献1谭浩强.C语言程序设计M.北京:清华大学出版社,20122 张毅刚.单片机原理与应用设计M.北京:电子工业出版社,20153 基于集成芯片CS5463的电测仪表的设计J.常铁原,王素平.科技资讯,20134 刘月武,李杏春.新型单相双向功率电能集成电路CS5463的原理与应用J. 仪器仪表用户,20105张玲玲.基于51单片机的L
10、CD12864程序设计J.中小企业管理与科技(中旬刊),2015附录1:完整的测试结果图附录2:电路原理图附录3:源程序void main() 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(); /获取电
11、压 CS5463_GetCurrentRMS(); /获取电流 CS5463_GetPactiveRMS(); /获取功率 if(0x02=(sta&0x02) /读取温度 CS5463_GetVoltRMS(); /获取电压 CS5463_GetTemperature(); /温度读取不需要太频繁,所以跟电流电压一起读取 /CS5463_Init(); /重新初始化芯片 /SndCom1Data(MeasureData,16); static void CS5463_GetVoltRMS(void) float G = 0.5,result; /typedef float fp32; 就是浮
12、点类型 int temp1; / int uint8 temp,i,j; / byte CS5463ReadReg(REG_VRMSR,RX_Buff); /读取电压有效值 i = 0; result = 0; while(i3) temp = RX_Buffi; j = 0; while(j8) if(temp&0x80) result += G; temp = 1; j+; G = G/2; i+; /电压在220时取样电压为78mvresult = result*CS5463_VScale;/V_Coff; /计算电压值220V*250mv/(110mv/1.414)=704.8V 可以
13、暂时不用 result *= 100; /单位为mV(毫伏) 12345mv 5位你怎么显示 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; LC
14、M_WriteDatOrCom(1,dd+0x30); ee=temp1%10; LCM_WriteDatOrCom(1,ee+0x30); LCM_WriteString( V);static void CS5463_GetCurrentRMS(void) fp32 G = 0.5,result; uint32 temp1; uint8 temp,i,j; CS5463ReadReg(REG_IRMSR,RX_Buff); /读取电流有效值 i = 0; result = 0; while(i3) temp = RX_Buffi; j = 0; while(j8) if(temp&0x80) result += G; temp = 1; j+; G = G/2; i+; result = result*CS5463_IScale;/I_Coff;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1