毕业论文:基于单片机的数字电能表设计


     **大学远程教育 本科生毕业论文(设计) 中文题目 基于单片机的数字电能表设计 学生姓名 *** 专业 电气工程及其自动化 层次年级 专升本 学号 JD17030306009 指导教师 *** 职称 讲师 学习中心**市教师进修学校**学习中心[44] 成绩 2019年4月13日 摘 要 随着中国经济的腾飞,人民生活水平的提高,对电能的需求日益增长,之前传统单一的费率政策已经不能满足需求,电网开始采用新的用电政策,用来平衡高峰用电和低谷用电,保证电网的安全稳定运行。这就对电能表提出了新的要求,如今单片机技术已经广泛应用在各个领域,其有着价格低廉、技术成熟、运行安全稳定等优点,如今单片机控制的电能表逐步取代了传统的电能表。 根据题目要求,本设计采用STC单片机作为主控芯片,对线路实行单相测量,能实现实时测量电流、电压有效值和瞬时功率。电能表带有报警功能,可自行设置报警阈值,超过阈值蜂鸣器报警,从而保护电路。电能表采用模块化设计,采集部分分为电流采集模块,电压采集模块,功率因素采集模块,通过单片机自带的A/D转换器转换成可以处理的数字信号,经过单片机内部程序运算实现对电力参数的实时测量显示功能;单片机最小系统集成了LCD显示模块,通过LCD可实时查看电力参数;电源模块为双路输出,为单片机模块与采集模块分别提供5V与+-12V的稳定直流。软件部分带有设置中断,可随时设置报警值,并根据采集数据转换成可读电力参数。 关键字:单片机;电能表;电力参数;实时显示;报警 Abstract With rapid development of Chinese economy, people's living standards improve and the demand for energy growing day by day. The traditional single rate policy has been unable to meet the demand. In this case ,the grid started the new electricity policy to balance peak power and low electricity, guarantee the safe and stable operation of power grids. This raise a new demand for electric energy meter ,now SCM technology has been widely used in various fields. It has the advantages of low price, mature technology , safe and stable, and now the electric energy meter which controlled by single chip microcomputer gradually replaced the traditional electric energy meter. According to the requirements of the topic, this design uses STC microcontroller as the main control chip, the circuit implementation of single phase measurement, can achieve real-time measurement of current, voltage effective value and instantaneous power. The electric energy meter has the function of alarming, which can set the alarm threshold, if this threshold is exceeded, super buzzer will alarm, so that can protect the circuit. Electric energy meter based on modular design, collecting part is divided into current collecting module, voltage acquisition module, and the power factor of the acquisition module, through the MCU built-in A / D converter that convert the digital signals which can handle, through the internal procedures in the microcontroller operation of electric power parameter measurement display function. MCU minimum system integration of the LCD display module, through the LCD real-time view of the power parameters; power module for the dual output, for the microcontroller module and acquisition module respectively 5V and +-12V to provide a stable DC. The software part is equipped with an interrupt, which can set the alarm value at any time, and can be converted into a readable power parameter according to the collected data. Keywords: microcomputer; electric energy meter; electrical parameter; real-time display; alarm 目 录 摘 要 I ABSTRACT II 1 绪论 1 1.1 课题背景 1 1.2 发展情况 1 1.2.1国际发展情况 1 1.2.2国内发展情况 2 1.3 发展趋势 3 1.4 课题研究基本要求 3 1.5 本章小结 4 2 电能表电力参数与芯片选择 5 2.1 互感器 5 2.2 电能参数的测量 5 2.2.1电压电流有效值 5 2.2.2功率计算 5 2.3 主控模块的选择 6 2.4 显示模块 7 2.5 AD转换 7 2.6 本章小结 7 3 硬件部分 8 3.1 硬件整体结构 8 3.2 主控芯片12c5a60s2 9 3.2.1STC12c5a60s2最小系统设计 9 3.3 LCD1602显示模块 10 3.3.1LCD1602内部存储结构 11 3.3.2初始化设定LCD1602指令 11 3.3.3读写数据 12 3.4 电流采集模块 14 3.4.1 I-V变换部分电路: 14 3.4.2电压跟随器: 15 3.4.3精密整流滤波 15 3.5 电压采样电路 17 3.5.1运放采样 17 3.5.2电压跟随器 18 3.5.3精密整流滤波 18 3.6 电源模块 19 3.6.1桥式整流电路 20 3.6.2稳压芯片电路 20 3.7 功率因素检测电路 21 3.7.1电路原理 22 3.7.2时间相位换算 22 3.8 本章小结 22 4 软件设计 23 4.1 软件思路 23 4.2 显示程序 23 4.3 主程序 24 5调试 25 5.1 硬件调试 25 5.2 软件调试 25 6 结论 26 谢 辞 27 参考文献 28 附录一 基于单片机的数字电能表设计电路原理图 29 附录二 基于单片机的数字电能表设计电路PCB图 32 附录三 基于单片机的数字电能表设计C语言程序 35 1 绪论 1.1 课题背景 电出现在人类历史不过几百年的时间,但其发展之广泛,速度之快是人们意想不到的,这对电能表提出了每个时代不同的需求,人们最开始的时候使用的是电解化学电能表进行计费,而后发明的电磁感应电能表使用了将近一个世纪,虽对其做了诸多改进,技术成熟,但如今已难以满足时代的需求。上世纪经历工业革命后,人类的生产力有了空前的提高,同时带动了科学技术的发展,人类在微电子领域和计算机领域有了重大的技术突破,这就为新一代电能表的产生奠定了基础,其测量精度高,实时电价计算,远程抄表,负荷曲线计算等优势明显,现已取代传统电磁电能表成为未来电能表发展的主流。 随着国家对电力行业的规范化和市场化改革,我国对智能化电网的建设,电能远程抄表系统逐渐普及,实际使用中旧式电能表已经被数字电能表取代,其大部分为国外厂商生产的电能表,且运作良好。电网营运中,电能的测量为整个电网生产,运营不可或缺的环节,故发展更为先进、精准的电能表,对电网的运营有重要的意义。随着国内对用电水平要求的提高,传统的二次设备已经不能满足电网安全稳定运行了,如电网的功率因素会影响设备的正常运行,需对检测设备进行更新换代,实时调整电网各项参数,才能保证电网安全经济运行,减少电能浪费。 随着人民生活水平的提高,用电设备家里从原来的几样变成现在我们无时无刻地离不开电器设备,用电设备已经成为了我们不可或缺的生产力工具,国家的发展离不开电,人民生产离不开电,人民对电能的需求不断增长,这就促进了国家电网的建设,发电厂增多,电压等级升高,发电厂装机容量的增大,传统的二次设备已经不能满足电网的稳定运行,且传统二次设备需值班人数较多,无法满足如今市场化的电力行业经济性要求。一些高新技术产业对电能质量要求颇高,这就要求电网对电力参数做到实时监控。如用电单位的无功功率超标,导致电能不能充分利用,造成电能浪费,若不及时补偿,则可能导致电压波形畸变,对用电设备的寿命和使用造成影响,若不及时调整则会造成用电设备受损。为了保证电网和用电设备安全稳定运行,我们势必要对电网中各项电力参数进行实时监测,对参数进行判断及预判,合理对对各项参数失常进行必要的补偿。故电力参数实时测量时电网安全运行的保证,对电能参数的合理预判可避免故障的发生。 1.2 发展情况 1.2.1国际发展情况 在电力产业发展起步阶段,国际上研发了第一代电能表,初代电能表采用了电解化学原理计费。直到1890年,国际上才发明了以电磁感应为原理的电能表,至今使用该原理的电能表已经有百年历史了。随着国际上对电费制度的改革,提出了新的电价制度如分段费率、预付费制度等一系列新一代电费制度。上世纪七十年代,国际电力行业又迎来了一次新的发展机遇,对电能计量设备提出了如负荷曲线记录、电能质量检测、电能表远距离通讯、智能抄表、实时电价编程等新的要求,传统的铝盘式电能表虽经过诸多改善,但对国际电力行业不断增加的新需求不免力不从心。上世纪中叶,人类的科学技术水平有了一次大的飞跃,在微电子和电子信息领域有了飞跃式进展,技术变革催生了新一代的电能表的产生,基于微电子的高新技术,新一代电能表精度远高于电磁感应式电能表。在电力行业变革的潮流中,世界各地电能表生产厂商意识到电能表要在业内能站稳脚跟就要发展自主设计的表计。不同的供应商和不同的电价系统,在二次设备标准还未完全指定的时代,厂家之间的通讯协议混乱,故制定二次设备生产标准迫在眉睫,在欧洲二次设备大厂的引导下成立了DLMS用户协会,该协会给后来的IEC规约的出台奠定了基础。同样的在北美地区也出台了ANSI规约标准,当时的电力系统中有着不同厂家制造的不同标准的二次设备,其标准混乱不同设备之间的兼容性差,美国Itron公司顺势退出了MV-90表计,其兼容性十分强大,能兼容系统中大部分二次设备,因此在北美乃至世界地区广泛采用,成为那个时代电能表的代表。 1.2.2国内发展情况 我国电能表发展水平并不高,与国际发达国家二次监测设备发展水平相比,是存在较大的差距的,我国在核心技术上,特别是核心部件的材料加工水平远不及国际水平,国内加工精密材料是中国制造的软肋,在精密加工上是远远落后于国外先进水平的,且制造材料的质量也是参差不齐,因此如何提高我国精密加工的工艺水平,是如何提高我国二次设备水平的关键问题。新一代数字式电能表虽在我国已开始逐步取代传统电能表,但我国生产电能表水平仍不高,采用传统的人工加工,设备存在较大的个体差异,设备良品率收到人为因素影响较大。且我国二次设备生产企业规模较少,对研发投入资金较少,导致我国设计电能表缺乏竞争力,国内核心技术研发力度不足,导致国内二次设备发展较为缓慢。 国内电能表可以原理的不同划分为两代,第一代为铝盘式电能表,电流通过线圈产生磁场,与铝盘中的感应电流互斥,驱动铝盘转动,铝盘带动机械传动装置,记录铝盘转动圈数从而达到记录消耗电能的目的,其主要是通过电磁感应来驱动其转动,若电能消耗越快其转速就越快。第一代电能表结构简单,但其测量误差较大,只能采用人工抄表的方式给电网反馈,实时性差,由此催生了第二代电能表。 第二代电能表为数字电能表。随着微电子技术的发展,市面上出现了电能表专用的芯片,集成了当今电力市场要求的多种功能,可通过单片机编写程序和外围电路的设计,实现对电能的自动计量,远程传输,自动抄表等功能,其测量准确度高,稳定性好,成为了现在主流电能表。 上世纪九十年代,国内厂商成功研制数字电能表,开始在华东地区小范围使用,使用至今运行良好稳定,且故障率低,开始被电力管理部门所接受,这给国内的仪表厂商提供了一次发展的机遇,国内厂商经过对国外先进技术的学习和理解,结合本国国情,研发出一批科技含量高的产品。 单相电子式电能表的专用芯片报道1998年全国产量为500万片,而2000年新一代芯片ad7755在中国销量超1000万片,由此推论1998~2000年每年单相电能表产量均有数百万台,仅江苏、浙江两省不完全统计,单相式电能表装用量均大于100万台,以此可以推论全国装用量应不少于数百万台,单相式预付费用卡电能表有相当大的装用量[1]。 1.3 发展趋势 随着近几年国内高新技术的发展,国家制造业得到空前发展,国内电能表的制造技术得到了较大的提高,电磁感应式电能表已经逐渐被新一代的数字式电能表取代,电能表运行的稳定性和测量精度有了较大提升,随着国内电网规模的扩大,初代单相数字电能表已经不能满足电能参数的测量要求,新一代三相式电能表已经开始投放市场。第一代电能表只能单一统计用电量,通过技术革新更新换代为可统计多种电能参数的电能表,其稳定性较高且能统计多种电能参数。在未来电能表的发展趋势中,模块化设计成为了当今的主流,模块化设计有助于增加数字电能表的运行稳定性。 随着微电子技术的发展与成熟,厂商推出了各自的电能计量芯片,相比传统电能表其测量精度更高,且外围电路与配套软件较为简单、价格便宜。所以高度集成化设计与分块化设计成为未来发展的主流。 在实际电网运行过程中某个时间点内各类负载所消耗的电能总和称为电力负荷,其消耗的电能是随时间变化的,可用负荷曲线来描述。当电力负荷大量增加时会形成电网的负荷高峰而当电力负荷减少时又会形成电力负荷低谷。当电力负荷上的峰值和谷值相差很大时会使供电设备容量不能充分利用运行不经济[2],这就要求电网能实时掌握各个时刻的用电情况,而传统电磁式电能表采用的人工抄表的方式有其时滞性,不能满足电网运行经济性要求,因此发展新型多功能电能表是中国电力行业的必然需求。 1.4 课题研究基本要求 一、设计内容 在电力系统运行中,电能参数是表征系统运行状态的重要参数,通过对电能参数的合理预判可一定程度上避免电力故障的发生。本次课程设计要求我们对电网中的电力参数进行测量,要求电能表具有较高的精度,实现实时测量多路电能参数,并具有一定的经济性和便携性。本课题要求利用单片机或DSP设计一个多功能电力参数测试仪。 二、设计要求 1、通过阅读材料认识该领域的发展状况,自学并掌握相关采样电路、变送器的工作原理。 2、了解并掌握电力参数(如U/I、P、Q、λ等)的常用测量方法。 3、至少实现2路不同电能参数的实时在计量与显示。 4、当被测参数超过预置阈值时能通过指示灯闪烁或蜂鸣报警。 1.5 本章小结 本章为本次设计的开篇,介绍电能表在国内外的背景和发展情况,并简要介绍了电能表的发展历程和未来发展趋势,介绍了数字电能表的优势,为下文的设计介绍做了铺垫。 2 电能表电力参数与芯片选择 2.1 互感器 被测对象为电网民用电,电压电流变化周期为50HZ。电压为220v交流电,其数值较高,远超过安全电压,存在一定的危险性。且单片机采样信号低,故需用互感器来将被测信号转换成可采样信号。互感器原理和变压器类似,采用电磁感应原理,一次侧绕组为被测绕组,二次绕组为采样绕组,通过绕组变比的设置,达到降低采样信号的目的。 2.2 电能参数的测量 本次设计的电能表需对线路中的基本参数进行测量,主要的电能参数包括:电压有效值、电流有效值、电路中功率因数角即线路中电压和电流的相位差、线路中视在功率等基本参数。实际应用中,经过大规模采样,供电单位可实时了解各用电单位的用电高峰、电能质量等使用信息,由于电能生产不能储存,故供电单位可通过对收集信息的统计及预判,对电能生产单位进行协调,及对电能质量进行补偿,避免造成电能浪费,提高用电设备的运行效能。 2.2.1电压电流有效值 电流有效值即均方根值:交流电i通过纯电阻电路做的功与直流电I通过相同电路做的功相等,则称I为交流电i的有效值。在电力基本参数的计算时,大多采用的是有效值计算,其公式为 I=1T0Ti2dt (2-1) 类似的,我们对电压有效值的计算有: U=1T0Tu2dt (2-2) 2.2.2功率计算 在正弦交流电的功率计算中包含了有功功率、无功功率、视在功率。在电能计算中,离不开这三个功率之间的关系,故下面我们来讨论这三个功率及功率之间的关系。 电能是用来表征电流做功的物理量,在当今的意义是用户一段时间内消耗的电能量。而对电能微分则是电功率,用来表示电能消耗的快慢。功率分为瞬时功率和平均功率,在大小和方向不发生改变的直流电来说,两者是一致的,但在交流电中,每一刻功率是实时不同的,故若要计算一定时间内消耗的电能值,需对这段时间内功率的瞬时值进行积分。 有功功率:设任意时间电压U(t),电流I(t),这该时间的功率为P瞬时=U(t)×I(t),在交流电中,这是一个实时变化的函数,若要求一个时刻内功率的平均值,则需要对这段时间内的P瞬时进行积分再除以这段时间间隔∆t,即 P平均=t0t1u(t)×i(t)/∆t (2-3) 功率因数:在这里我们引入一个三脚函数cos∅,该三脚函数表示功率因数,功率因数表示电网中实际做功的快慢,端口电压电流有效值的相乘即视在功率,功率因数反应的是负载对电能使用效率的高低,若功率因数低,说明负载中用于交变磁场转换的功率大,降低了电能的使用效率,也会对供电线路造成电压畸变等不良影响。∅为电压信号与电流信号的相位差。对于交流电上式可变为: P平均=t0t1U×Icos∅/∆t (2-4) 外部电路给网络供给的能量和网络真正能应用的能量往往是不相等的,即有功功率往往小于视在功率,我们把这个关系定义为功率因数,它们的比值等于负载U和I之间的相位差,在实际应用中我们往往要提高功率因数,即增加电能的利用率,也保证用电设备的安全稳定运作。功率因数即有功功率和视在功率之间的表达式如下: cos∅=P/S (2-5) 无功功率:在包含有电磁感应原理的负载中,如电机等含有感性负载的用电设备,电能需转换成交变磁场才能使用电负载正常运行,而在电能转换成磁场的过程中需要消耗能量,我们把这部分能量叫做无功功率。 Q=s*s-p*p (2-6) 本次设计的电能表模拟测量的用电器为白炽灯,可视为纯阻性负载,故本次测量的用电设备没有电磁转换,其无功功率可视为0。 视在功率:视在功率是指整个端钮的电压有效值和电流有效值的乘积。反映了外部电路给整个网络供给的能量大小。根据定义我们有: S=UI (2-7) 2.3 主控模块的选择 控制芯片主要分为ARM和STC51两个阵营,由于本次设计的是测量设备,需控制其功耗大小,若不控制功耗,大规模安装则会对电能造成浪费,采用小电压供电的单片机能使整个系统实现低功耗。另一方面由于控制芯片需要处理调度较多数据,故控制芯片需要较快的处理芯片,ARM芯片能实现较快的处理速度,但其价格昂贵、功能繁多对于测量设备性能显得过剩。故考虑采用STC51系列芯片。 STC51芯片最常用的为STC89C51,但其内存较小,处理速度较慢,性能不能满足本次设计需要,经过对STC系列资料的查阅,最终选定了12c5a60s2单片机。12c5a60s2和8051指令、引脚完全相同,其相比8051具有更大的ROM,单片机内部自带了60k的ROM。和常用的8051系列主控芯片对比,选择该主控芯片是因为具有以下优点:相同外围电路的最小系统其处理效能比常用的8051系列主控芯片快8~12倍;主控芯片自带了8路10位的AD,大幅度精简了外围电路,可直接通过编写程序读取模拟测量值;单片机内部自带60k的ROM,远高于传统8051系列单片机,本次设计的程序较长,故需要较大的内部储存空间。综合以上性能、能耗、经济性、集成度等考虑,最终选定12c5a60s2为本次设计的控制芯片。 2.4 显示模块 用于显示的模块常用的有两款,分别为lcd1602和lcd12864 LCD1602是一款由点阵组成的液晶显示屏,能同时显示16列2行字符。它由5x7或5x11为单个字符的点阵,每个点阵可显示一个字符。本设计需显示的信息较为简单,满足了显示需求,也可用编程好的点阵字库来显示简单的中文。 LCD12864是一款自带中文字库的显示模块,字库包含了八千多个16x16的点阵,和128个ASCII字符,由于自带字库,其指令编程简单,也可完成显示图形显示,是常用的显示模块。 考虑到本次设计的电能表需显示的电力参数较为简单,若采用LCD12864功能过剩,LCD1602功能能满足本次设计所有要求,且LCD12864价格是LCD1602的5倍,若大规模生产,成本差别巨大,故本次设计采用LCD1602 2.5 AD转换 本次设计的采样模块通过互感器采集电能参数信号,未处理过的信号为模拟信号,而单片机能够处理的信号为数字信号, 本次选取的主控芯片内部自带了一个10位8路的ad转换器,通过编程可开启P1口的AD转换,无需外加电路。单片机内部自带的AD转换器是电压输入型,电流采样信号为交流的电流信号,需将其进行AD变换成能处理的直流的电压信号,故需加入个电阻负载,使其转换成电压信号,而转换后的信号是很粗糙的信号,含有较多毛刺噪声,需对信号再加工,信号通过精密整流滤波电路,将信号的毛刺噪声去除,信号变成较为平滑的直流信号,最后才能接入单片机进行AD转换,经过滤波后的电路可增加有效分辨,增加测量电路的精确度。 2.6 本章小结 本章主要介绍电能参数的基本运算和基本的采样模块,为下文理解电路打下基础,同时介绍了本次设计对于芯片的选择思路,为下文整体性介绍做铺垫。 3 硬件部分 3.1 硬件整体结构 本次设计的整体方案如图3-1所示,采用模块化设计的思路,每个模块相对独立,却无法独立行使功能,需在单片机协调下完成各个模块功能。单片机把各模块联系在一起,单片机高集成度的系统,把各个模块采集的数据统一处理,使各模块共同工作才构成了具有完善功能的电能表。 图3-1 整体结构 电能表各模块组成如下: (1)控制芯片:STC12c5a60s2是电能表的主控芯片,是电能表的核心硬件,通过合理搭建外围电路,可使单片机行使不通的功能,本次设计单片机协调了电能表各模块的功能,使电能表能测量计算功率,实时显示电力参数,过压过流报警功能。 (2)电能参数采集模块:通过互感器可将电路中大电流转换成小电流,大电压转换成小电压,能让电能表与被测电路实现电气隔离,保护电能表及人员安全,同时使测量的线路电流电压降低到可采集范围。 (3)AD转换模块:本次采用的单片机集成了AD转换模块,降低的电路的复杂程度,对提高电能表可靠性具有积极作用。AD转换是将最初的未经处理的电能参数模拟信号转换成单片机可处理的数字信号,输送给单片机进行运算。 (4)显示模块:采用了常用的LCD1602液晶显示器,行使的是人机互交的工作,采集模块采集的数据经单片机处理计算,最终得出人类可读的数据,再通过LCD显示,实现人机互交。 (5)报警模块:报警模块由设计为蜂鸣器,我们可以通过按键设置报警电压电流阈值,当电流或电压达到阈值,单片机发出报警电平触发蜂鸣器报警。 (6)电源模块:电源模块通过变压器的降压作用将被测电路的高压交流电转换成低压交流电,在经过整理芯片自带的AD变换成可供单片机使用的直流电,本次设计的电源模块具有双路输出,分别是12v与5v,单片机的供给电流为5v,而采样模块经过精密整流电路供给的电压为12v。电源模块的设计十分重要,需输出稳定的高质量直流电才能保证系统的稳定运行。 3.2 主控芯片12c5a60s2 图3-2 1 单片机引脚图 本次设计的电能表采用的控制芯片为STC的12c5a60s2主控芯片, 在众多8051系列主控芯片中, 12c5a60s2有着其独特的竞争力, 12c5a60s2使用的编程指令和常用的8051主控芯片完全相同,和常用8051主控芯片相比有几个优点是本次设计所看重的:首先在同样的外围系统中其处理能力是传统8051单片机的8至12倍;其次是12c5a60s2在其p1口集成了8路10位的AD转换器,可通过编写内部程序可使P1口开启AD转换的功能,可将0~5v的模拟电压信号转换成单片机可处理的数字信号,AD转换器一定程度上降低了电路设计的复杂程度,提高了电能表的稳定性。引脚如图3-2-1。 3.2.1 STC12c5a60s2最小系统设计 图3-2 2 最小系统原理图 单片机最小系统是指能使单片机正常工作的最小外围硬件电路,要发挥其功能需根据设计要求将其他模块通过单片机引脚与单片机相连,实现其他模块与主控芯片的数据交换,最终实现设计所需功能。根据查阅12c5a60s2引脚及用户手册设立如下电路,12c5a60s2最小系统与传统8051系列单片机无异,其P1口自带AD转换,故采集模块经整流后从单片机p1口输入单片机。其原理如图3-2-2。 单片机为可编程性能及强的芯片,常作为电路设计中的主控芯片,其内部集成了中央处理器、具有多功能的数据传输接口(输出/输出)、随机存取储存器、只读储存器等部分,可通过编程实现较为复杂的计算,与外围部件实现数据交换、控制外围电路等功能。而单片机最小系统为让主控芯片运作搭建的最简硬件模块,最小系统一般由四个部分组成,分别为晶振时钟、与外部通讯设备、复位电路、主控芯片组成。 晶振时钟电路为18、19引脚,通常采用石英晶振来引起内部的自激振荡,也可通过外部的时钟电路进行振荡,而两个电容在电路中起起震作用,同时可以微调晶振频率。 复位电路:当单片机运行出现故障或停止运行时需进行复位操作,当单片机9引脚出现两个周期以上的高电平则单片机进行复位。 3.3 LCD1602显示模块 LCD1602是一种常用的液晶显示模块,最多能同时显示32个字符,即2行16列,其主要功能是用来显示字母、数字、符号,其内部自带的储存器CGROM中存储了预设好的160个字符,有阿拉伯数字、常用符号、大小写英文字母和日文假名等常用的字符,该储存器CGRAM允许用户自定义字符,其自带了64字节的空间,我们知道每个字符占用的储存空间为8个字节,故LCD1602允许用户自定义8个字符。对于本次设计需显示的字符较为简单,处于成本及易用性考虑,本次采用LCD1602作为显示模块,下面对LCD1602显示基本原理及功能做简要介绍。 图3-3 1 LCD1602引脚图 LCD1602引脚如下图3-3 1所示: 3.3.1LCD1602内部存储结构 LCD1602内置了三个储存器,分辨是DDRAM,CGRAM,CGROM,这三个储存器功能各不相同,在编程时容易弄混。 DDRAM:是显示用的RAM,其功能使寄存将要外部接收的数据,DDRAM的地址代码与屏幕显示位置一一对应,第一行的地址位为00H~27H,第二行的地址位为40H~67H。每行有40个地址位,但本次设计我们仅用到每行前16个地址位。实际使用中若我们想向00H写入一个数据“A”,实际使用中并不能在相应位置显示出“A”,我们需在DDRAM地址位加上80H才能在指定的位置显示出相应数据。具体原因下文会有介绍。 CGRAM:LCD1602内部再带了一个64字节的存储器,若显示器自带的ASCII码图形不能满足用户需求时,LCD1602允许用户自己建模,CGRAM就是用户建模区。需注意的是LCD1602建模是5X8点阵,而我们常用的字模提取软件不能直接提取5X8代码,我们需在8*8字模中使用靠右的5*8字模提取代码,使代码高三位为0,提取的代码能直接使用。 CGROM:LCD1602内部自带了160个ASCII字符,当用户需显示数据库里的内存时,仅需从CGROM中调用字符地址即可。 3.3.2初始化设定LCD1602指令 1.清屏指令 表3-3 1 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1 功能:初始化设置液晶显示器,即清空DDRAM内容,将光标复位只左上角第一位,归零地址计数器 2.显示器开关控制 表3-3 2 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B 功能:B:控制闪烁开关;C控制光标开关;D控制显示开关;高电平为开,低电平为关。 3.画面、光标位移 表3-3 3 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L * * 功能:S/C为1时画面移动一个字符,S/C为0时光标移动一个字符,R/L为平移方向,1为右移;0为左移。 4.工作方式设置 表3-3 4 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F * * 功能:DL为数据接口设置,高电平时为八位接口,低电平时为四位接口;N为显示行数设置,高电平时为两行,低电平时为单行;F为点阵模式选择,高电平时为5X10点阵,低电平时为5X7点阵。 3.3.3读写数据 LCD1602液晶显示器中有三个管脚RS、R/W、E是控制显示器读写功能的,通过三个管脚的电平变化可实现单片机与显示器信息传递。其电平与对应功能如下图: 表3-3 5 RS R/W E 功能 0 0 下降沿 写命令 0 1 高电平 读忙和AC码 1 0 下降沿 写数据 1 1 高电平 读数据 初始化程序 初始化程序时许对显示器进行显示模式的设定,即把显示器置于写命令状态,需注意的是E管脚是下降沿触发功能的,需注意的是向DDRAM写入地址时需将DB7口置1,这就是在设置显示地址时需在地址位加上80H的原因,故有如下写命令程序段: Void LCD_COM(uchar com) { rs=0; //设置为写命令状态 rw=0; //同上 P2=com; //将命令传送至P2口,显示器I/O角与P2口相连 delay(5); //延迟函数使显示器做接收准备 en=1; //E管脚是下降沿触发,故先将E置于高电平 en=0; //触发写命令状态,显示器接收指令 } 向显示器写入内容 在初始化程序过后,若需向显示器传输显示内容或向CGRAM存入用户自建摸,则需将LCD置于写数据状态,在初始化LCD过后,需用写命令程序设置显示器显示地址,后才能向显示器写入显示内容,写数据程序如下: Void LCD_DAT(uchar dat) { rs=1; //设置为写数据状态 rw=0; //同上 P2=dat; //将数据传送至P2口,显示器I/O角与P2口相连 delay(5); //延迟函数使显示器做接收准备 en=1; //E管脚是下降沿触发,故先将E置于高电平 en=0; //触发写命令状态,显示器接收指令 } 具体显示模块程序设计在后篇会有较为详细介绍,本小节主要介绍LCD1602的基本原理及基本使用的指令,本章介绍的显示器基础设置涵盖了本次设计电能表显示器采用的指令。 3.4 电流采集模块 本次设计采集模块基本思路为:通过电流互感器将电流大信号转换成小信号,在通过I-V变化将交流电流信号转换成交流电压信号,将交流电压信号经精密整流滤波将交流信号转换成直流信号,最后传送给单片机的AD转换部分 电流采集模块分成两个部分介绍,第一部分为基本的I-V变化,第二部分为精密整流滤波,为了提高设计电能表的精度,我们采用电压跟随器进行隔离。下图为电流采集部分的第一部分,如图3-4 1:图3-4 1 电流采集模块 第一部分 3.4.1 I-V变换部分电路: LM358是本次使用的运算放大器,其内部集成了两个独立、高增益、内部频率补偿运算放大器,LM358电源电压范围宽,工作功耗较低,是使用最多的运放芯片之一。 所谓的I-V变化就是将电流信号转换成电压信号,要求输入电流与输出电压成正比,最简单的IV变化是在电路中加入一只电阻R,由欧姆定律我们知道Uo=Ii*R,但这样的电路是不能应用在实际电路中,因为当我们接入负载时,负载电阻叠加在电路中电阻R,使输入输出比值发生变化,故在大多数电路中不能满足设计需求, 考虑到负载电路对IV变化的影响,我们采用一种基于LM358搭建的IV变化电路,本I-V变换电路保证了电流与电压转换的线性关系,剔除了负载电阻对I-V关系的影响,是I-V变化的经典电路之一,下面简要介绍I-V变换的基本原理。采样模块经过电流互感器采集线路电流,电流互感器输出端输入LM358管脚2,如图LM358管脚2所在运算放大器与外围电路组成了IV变化电路,该变化电路的实质是一个跨阻放大器,图中电位器R1与C1组成相位补偿电路,为互感器用户手册推荐加入的补偿电路,实测在我们测量的常规线路中效果并不明显。由理想运算放大器“虚短”我们可知U-=U+;再有运算放大器“虚断”我们知 Ii=UoRf (3-1) 式中Ii为电流互感器输出电流;Uo为I-V变换输出电压;Rf为反馈电阻。由上式我们知输出电压的大小仅由反馈电阻决定,排除了负载阻值对I-V变换线性影响。 3.4.2电压跟随器: 电压跟随器是放大倍数小于并接近一的运算放大器。在实际电路中,我们常使用电压跟随器做缓冲及前后电路的隔离,因为电压跟随器本身有个特性就是输入阻抗高,而输出阻抗低。本次设计的采样电路需采样数据精准度有一定的要求,故考虑在IV变换电路和精密整流滤波电路间加入电压跟随器进行前后隔离,因运放的输出电阻通常较高,若后级电路输入阻抗较小,则输出信号则会在前级电路的输出电阻产生较大的损耗,从而引起信号失真,故我们需在前级电路与后级电路之间加入电压跟随器,其输入阻抗高,输出阻抗低,对前端电路相当于开路,后端电路其输出电阻低,提高了电路的带负载能力,为提高精密整流电路的精密度提供了保障。 图3-4 2 电流采集模块 第二部分 3.4.3精密整流滤波 所谓的滤波电路就是把交流电信号转换成直流电信号的电路。整流电路常用的有三种。其中全波整流和精密整流在功能上是一致的,只是二者适应范围不同,在对于精度要求较高的电路设计中,我们优先采用精密整流电路,因为精密整流滤波电路可较为准确地将小交流电压过零处信号还原为直流电压信号,对提高测量精度有积极作用。 本次设计的整流电路是基于经典精密整流电路设计的,在输出端附近增加了滤波电容,极性电容进行储能滤波,点电容过滤波形的毛刺。按照经典电路的电阻配比令R5=R6;R4=R3=2R7,我们把R3设置位可调电阻,可通过改变R3大小来调节输出增益大小。 精密整流电路运作原理分为两个部分,第一部分为输入电压大于零时,第二部分为输入电压小于零时,下面介绍为第一部分的工作原理: 当输入电压大于0时,由二极管导通特性我们知:此时D1为截至状态相当于开路,而D2位导通状态相当于导线。这样我们U2A和R6和R5构成了反比例运算电路,而因为R6=R5则反比例运算电路的增益为-1,UAO=-1*Ui; 而由U2B、R3、R4、R7组成了一个反向求和电路,由求和电路我们知 UBO=-R3*UAOR7-(R3*UiR4) (3-2) 通过调节电位器R3的大小我们可改变输出增益,本次设计的电路我们令R3=R4=2R7,则上式将变成UBO=Ui,由此我们知道,精密整流电路中当电阻配比满足R5=R6;R4=R3=2R7且输入电压Ui>0时,精密整流电路的输出增益为1,即输出电压等于输入电压。 而当输入电压Ui<0时,集成运放的输出端必有Uo>0,由二极管导通特性我们知道,D1处于导通而D2为截至状态,导致R6中流过的电流为零,故U2A部分运放电路可被视为高阻输出,故没有从U2A输出到U2B的电流,流入U2B的电流只有流经R4的一路电流,此时U2B变为反比例运算器,由因为R3=R4,故由U2B组成的电路为增益为-1的反比例运算电路,其输出为 UBO=-Ui (3-3) 故当Ui<0时精密整流电路输出值为输入电压的绝对值,精密整流电路也成为绝对值电路。 精密整流电路相比全波整流电路输入阻抗较低,可通过调节R3的大小调节电路输出增益的大小,在电位器R3处可并联电容,对输出电压实现滤波作用,提高波形质量。但该电路仅适用于低频信号整理,若当电路频率较高时,输出电压会在过零时出现输出电压的失真,在本小节设计的电路中,二极管需选择导通压降较大的,保证波形的质量。 3.5 电压采样电路 图3-5 1 电压采集模块 第一部分 本次设计的电压采样电路原理和电流采样电路原理类似,区别仅在于电路中I-V变换的部分,采样出来的信号可直接进行精密整流输入到单片机AD模块。其大体结构类似,我们分两个方面来介绍,分别为运放采样电路和精密整流滤波电路。下图即为运放采样部分电路: 3.5.1运放采样 电压信号的采样方式主要有两种,第一种为电阻采样,直接在互感器输出端即34角直接并联采样电阻,电阻采样是最为简单的采样方式,不需要外界电源,成本低但其输出电压有限,负载电阻对测量精度影响较大,考虑到本次设计后级电路较多,故我们采用运放采样法,其精度高,可并联电阻进行相位补偿,同时有较强的带负载能力,但其需外接电源,电路较电阻采样电路负载,降低了电路可靠性,为了满足测量精度及输出电压的要求,设计采用运放采样电路作为本次设计的前端采样电路。 图中U1B及外围电路组成了运放采样模块,R4为限流电阻,因电压互感器限流为2ma,故计算限流电阻得R4=220V/2ma=110KΩ,而单片机内置的A/D转换的电压范围为0~5V,故我们运放采样模块的反馈采样电阻R2+R3=5/2ma,我们在这里加入了一个可调电阻进行微调,使输出电压达到要求的精度。C1为相位补偿电容,为了补偿运放相位滞后,防止运放产生震荡。 在运放采样电路后,我们与电流采样模块设计类似,在精密整流滤波电路与前级电路之间加入了电压跟随器,其目的是进行前后级电路的缓存隔离,提高电路带负载能力,防止后级电路输入电阻过大而导致信号失真。 3.5.2电压跟随器 图3-5 2 电压采集模块 第二部分 电压跟随器后级电路为精密整流滤波电路,该电路将交流信号转换成直流信号,是一种全波整流电路,下面为整流电路的简要原理说明: 所谓的滤波电路就是把交流电信号转换成直流电信号的电路。我们常用的整流电路有三种。其中全波整流和精密整流在功能上是一致的,只是二者适应范围不同,在对于精度要求较高的电路设计中,我们优先采用精密整流电路,因为精密整流滤波电路可较为准确地将小交流电压过零处信号还原为直流电压信号,对提高测量精度有积极作用。 3.5.3精密整流滤波 本次设计的整流电路是基于经典精密整流电路设计的,在输出端附近增加了滤波电容,极性电容进行储能滤波,点电容过滤波形的毛刺。按照经典电路的电阻配比令R5=R6;R4=R3=2R7,我们把R3设置为可调电阻,可通过改变R3大小来调节输出增益大小。 精密整流电路运作原理分为两个部分,第一部分为输入电压大于零时,第二部分为输入电压小于零时,下面介绍为第一部分的工作原理: 当输入电压大于0时,由二极管导通特性我们知:此时D1为截至状态相当于开路,而D2位导通状态相当于导线。这样我们U2A和R6和R5构成了反比例运算电路,而因为R6=R5则反比例运算电路的增益为-1,UAO=-1*Ui; 而由U2B、R3、R4、R7组成了一个反向求和电路,由求和电路我们知 UBO=-R3*UAOR7-(R3*UiR4) (3-4) 通过调节电位器R3的大小我们可改变输出增益,本次设计的电路我们令R3=R4=2R7,则上式将变成UBO=Ui,由此我们知道,精密整流电路中当电阻配比满足R5=R6;R4=R3=2R7且输入电压Ui>0时,精密整流电路的输出增益为1,即输出电压等于输入电压。 而当输入电压Ui<0时,集成运放的输出端必有Uo>0,由二极管导通特性我们知道,D1处于导通而D2为截至状态,导致R6中流过的电流为零,故U2A部分运放电路可被视为高阻输出,故没有从U2A输出到U2B的电流,流入U2B的电流只有流经R4的一路电流,此时U2B变为反比例运算器,又因为R3=R4,故由U2B组成的电路为增益为-1的反比例运算电路,其输出为 UBO=-Ui (3-5) 故当Ui<0时精密整流电路输出值为输入电压的绝对值,精密整流电路也成为绝对值电路。 精密整流电路相比全波整流电路输入阻抗较低,可通过调节R3的大小调节电路输出增益的大小,在电位器R3处可并联电容,对输出电压实现滤波作用,提高波形质量。但该电路仅适用于低频信号整理,若当电路频率较高时,输出电压会在过零时出现输出电压的失真,在整流电路中,二极管需选择导通压降较大的,保证波形的质量。 3.6 电源模块 图3-6 1 电源模块 第一部分 电源模块按照电源种类可分为交流电源和直流电源,交流电源通常为220v 50hz的民用电,但大多用电器内部芯片需要低压直流供电,本次设计的电能表内部需要双路电源供电,对于控制芯片,其需要的是5V直流供电,而其采样系统的运放采用的是正负12V的电压供电,为了满足系统供电要求,我们设计了双路输出的直流稳压电源,将我们常用的220V交流电整流成正负12V和5V直流电输出。本次设计的电源模块分为两个部分,第一个部分为桥式整流电路,第二部分为由整流芯片组成的稳压电路,下面我们来介绍第一部分,设计电路如图3-6 1所示。 3.6.1桥式整流电路 第一部分为桥式整流电路,其关键原理是二极管的单相导通性,是较为常用的小功率整流电路。如图所示,桥式整流电路由四个相同的二极管组成,P1为变压器经过降压的输出端,当交流电处于正半周时D1、D6导通而D2、D5截止,电流经D1流出经过后级电路由D6流回。而在交流电负半周同理,D2和D5导通,电流经D2流入后级电流经D5流回电路。故无论是交流电的正半周还是负半周始终由图中VCC+15流出电路,从VCC-15流出电路,这就构成一个简单的全波整流电路。由桥式整流电路输入输出关系我们有: Uo=0.9U2 (3-6) Io=0.9U2/RL (3-7) 而在桥式整流电路中,每个正负相位分别导通两个二极管,流经二极管的电流为Io/2,二极管的最大整流电流与反向电压应留10%余量。 3.6.2稳压芯片电路 图3-6 2 电源模块 第二部分 第二部分为稳压模块,第二部分模块原理图如下图3-6 2所示: 市电交流电经过变压器降压转换成低压交流电,交流电输入后级电路,即桥式整流电路转换成脉动的直流电,经过C5、C7滤波电容进行滤波,通过三端稳压芯片LM7812和LM7912输出了一个较为平稳的直流电,但市电常有电压波动等情况发生,故我们在三端稳压电路后增加了C1、C8滤波电容,最终输出高精度,稳定性高的直流电。 稳压电路元件参数的选择: 本次设计采用的正负12V输出芯片为LM7812和LM7912,分别为正负12V的稳压芯片,其最大输入电压为35V,最大输出电流为1.5A,稳压芯片对输入电压有一定的要求,一般选择输入电压大于整流芯片输出电压2~3V,为了留出足够的余量,我们选输入电压为正负15v,而考虑到电网10%的波动我们取输入电压为: 15X1.1=16.5V,故我们经变压器降压后电压为16.5V,桥式整流电路后接滤波电容时我们有: I=(1.5~2)IL (3-8) 我们取IL=1A则我们变压器副边功率为P=I*U2=1.5*16.5=24.75W,而我们变压器的效率为0.7~0.8,则我们原边功率需大于35.36w。 对于二极管我们设计输出电流为1A,而每次导通二极管为两只,故流经每个二极管电流为500ma;二极管最大反向耐压为2*16.5=23.33V,故我们选取1N4007为桥式整流电路的二极管。 电容在本次的整流电路中起滤波作用,在我们常用的小功率电源电路中,电容是最常用的滤波电路。而滤波电容的取值有下式计算,而电路中做到精确计算是不现实的,我们只能通过估算选择器件,并留一定的余量。 C=tIc/Vip-p (3-9) t为电容的放电时间,一般取交流电周期的一半,即t=0.5T=0.01s;Ic为电容的放电电流,一般取输出电流的最大值Ic=Iomax;Vip-p为芯片的波纹电压。根据设计需求我们求出C的取值为1515uF,取极性电容,而为了留一定的余量我们取2200uF的电解电容作为滤波电容,为了防止电路自激振荡,我们在滤波电容后增加了100nf的无极性电容。 出于简化电路的目的,我们将整流好的+12V直流电接入LM7805,将12V直流电降压为5v直流电,给单片机进行供电。 3.7 功率因素检测电路 图3-7 1 过零比较原理图 测量功率因数的实质就是比较电压和电流信号之间的相位差,在实际设计电路中实现,考虑的是通过对电压电流信号的过零比较,从而采集两者之间过零点的时间差,通过换算可获得两者之间的相位差。在我国的电力系统中电压频率为50HZ,将电压频率转换成工频周期则为20MS,因此对电路中功率因素检测的精度决定于过零比较电路中高电平宽度的测量。电路中的电流和电压信号分别经过整流和低通滤波,将电压电流信号输入到过零比较器中,过零比较器将零点信号转换成方波信号,传送给单片机,通过比较电流电压过零脉冲信号之间的时间差,通过单片机计算将采集来的电压电流之间的时间差信号转换成相位差信号,达到测量电路中电压电流相位差的目的,通过测量相位差可知电路的功率因数,从而可以知道电路中电能的使用效率,相位差是电能计量的重要参数。图3-7 1为功率因素角测量电路的原理图: 3.7.1电路原理 图中D1、D2为一对整流二极管,将交流信号转换成脉动的直流信号,R3为限流电阻,三极管S8050的最大电流为0.5A,若直接接入电路中,流过三极管的电流超过其额定电流,照成三极管烧毁,R5、C1组成了阻容滤波电路,防止被测电压的毛刺导致三极管勿动。S8050三极管为本次采用的信号输出的关键部件。 本次电路的原理为:将P3接入交流电,交流电经过D1、D2整流变为脉动的直流电,当电压大于三极管的基极导通电压时,三极管导通,则C脚电压=E脚电压=0,则输出到单片机信号为低电平;当被测电压小于三极管的导通电压时,三极管截至,则三脚输出电压等于VCC电压,输出到单片机为高电平。而三极管的导通电压约为0.7V远远小于被测电压220V,故我们可大致将三极管截至电压即向主控芯片输出高电平时的被测电压看为0V。 3.7.2时间相位换算 通过该电路我们知道电压过零时间和电流过零时间,通过单片机比较我们可知电流过零点和电流过零点之间的时间差∆t,而本次采用的主控芯片晶振频率为12MHZ,测量精度远满足要求。知道∆t后我们要将时间差信号换算成相位差,换算公式如下: ∅=∆tT*360o (3-10) 而实际电路中测量出来的相位差和线路中实际相位差具有一定的误差,该误差是由于电路中滤波电路引起的误差,可通过补偿算法对误差进行补偿,通常采用的补偿为查表法和小数补偿算法,经过处理后的数据具有较高的精度。 3.8 本章小结 本章主要介绍了硬件电路的各个模块,及各个模块实现运行的详细的原理,明确各模块电路选型及芯片选型,各模块相对之间的关系。 4 软件设计 4.1 软件思路 本次设计的电能表的主控芯片为单片机STC12c5a60s2设计的,用于接收各模块采样信号,线路采样模块有三个分别是电压采样模块、电流采样模块、过零采样信号,经采样模块采集的信号输入到单片机自带的8路10位AD转换器,单片机接收采样信号后,经过内部程序运算,将采样值换算为实际测量值,将实际测量值显示在LCD1602显示模块上。本次设计的控制模块含有三个按键,可自行设置报警值,三个按键功能分别为选择设置报警电压或电流、所选设置电能参数加、所选设置电能参数减。 4.2 显示程序 向LCD1602写入数据有两种模式,第一种为写入指令即初始化设置,令rs=0、rw=0,en下降沿触发写入,本次初始化设置的顺序为0x38设置字形、I/O接口;0x0c设置显示屏开启,关闭光标;0x06显示地址右移;0x01清屏。其流程图如图4-2 1所示 图4-2 1 初始化指令 图4-2 2 显示数据 第二种指令为写入显示数据,将待显示的数据写入LCD1602的DDRAM寄存器中,寄存器地址代表了所显示字符在LCD1602实际的位置,LCD1602将显示对应寄存器DDRAM存储的待显示内容。其流程图如图4-2 2所示 4.3 主程序 主程序首先对程序、显示器LCD1602、单片机自带AD转换器、定时器进行初始化设置,设定其工作模式,系统将对按键进行扫面,当有按键按下时系统中断,进行报警阈值的设定,单片机将实时接收采集模块采集的模拟信号进行AD转换成数字信号,经过计算将数字信号转换成实际测量值,系统实时比对测量值和设置报警阈值的大小,一旦实际测量值大于报警阈值则单片机给蜂鸣器信号触发报警,单片机将测量的数值实时发送给液晶显示器LCD1602,实现对测量值的实时显示功能。下图4-3 1为主程序流程图 图4-3 1 整体程序流程图 5调试 5.1 硬件调试 调试的思路是分开模块测试调试。首先先从电源部分开始,用万用表的直流档位测试电源输出端,是否有+-12V,+5V的输出,有正常的电压输出以后才能接上电。其次对主控系统的硬件调试,简单写一个是的某个IO口高低电平延时的程序,接上LED,烧写进去,如果LED能闪烁,则代表主控系统工作正常。最后调试检测电压电流部分的PCB,用信号发生器产生50hz的正弦交流电从互感器两端输入,在输出端用万用表测输出电压,调节电位器使得信号的放大倍数达到单片机主控AD采集允许的电压范围没。各个部分调试成功之后,按照原理图,接好每个部分的电源线,信号线。 5.2 软件调试 先写好显示程序,让1602液晶能够显示好自己所需要的程序界面。然后单独写好单片机的AD采集程序,并把数据显示到液晶上,看是否准确。最后按照程序流程图,把逻辑算法用C语言实现。 6 结论 本设计是以单片机STC12c5a60s2为主控芯片的数字电能表,本次设计的硬件电路可实现对市电即民用交流电的电流有效值、电压有效值、电压信号与电流信号之间的相位差测量,通过单片机自带的AD转换器对采集的模拟信号转换成单片机可读的数字信号,经过单片机内部计算程序,将模拟采集的数字信号转换成实际测量值,通过LCD1602显示模块进行显示。本次设计的电能表具有报警功能,提供用户三个按键,分别设定电压电流报警阈值,一旦电压或电流超过阈值,则会引发电能表报警模块,并在LCD1602上显示报警电能参数。 本次设计采用模块化设计的思路,每个模块相对独立,模块之间不会产生影响,各模块之间通过单片机联系到一起,最终实现测量电能参数的功能。本次毕设存在一些不足,例如未采用集成芯片,使实际测量值和芯片相比存在一定的误差,这些不足需在未来的学习工作中不断改进完善,本次设计为未来的改善提供了实践基础。 谢 辞 经过半年的学习时间,本次毕业设计最终圆满完成了。在这个设计中,我深刻体会到实践是检验理论的最好的标准。本设计是对四年学习知识的全面测试,无论在实践能力上还是理论知识上都有很大的提高。 本次设计是在李震老师的悉心指导下完成的。李老师认真负责的工作态度,严谨的做学术研究精神和深厚理论水平都使我受益匪浅。在撰写的过程中,李老师提出了积极的修改意见,帮助我克服了许多困难,使论文得以圆满完成,在这里表达我衷心的感谢!也向在撰写本文的过程中,所有提供帮助的老师同学表示感谢。最后,我要感谢我的母校和老师的辛勤工作,是您无私的奉献,让我能够在知识的海洋畅游,你们的诲人不倦的师德及以身作则的作风必将对我以后的学习、生活及工作产生深刻的影响,在此表达崇高的敬意和衷心的感谢。 参考文献 [1] 曾乃鸿,电子式电能表的发展现状和展望[J]. 华东电力,2001,(9):24-27 [2] 唐亚洲,电力系统交流参数测试仪的研制[D]. 哈尔滨理工大学,2008 [3] 朱敬涛,基于电能芯片ADE7758的三相多功能工业电能表的研究[D]. 天津大学,2007 [4] 康华光,电子技术基础[M]. 北京:高等教育出版社,1999 [5] 缴瑞山,韩全立主编 .单片机控制技术及应用[M]. 北京:高等教育出版社,2003 [6] 谭浩强,C语言设计教程[M]. 北京:清华大学出版社,2007 [7] 王兆安,李民,卓放 .三相电路瞬时无功功率理论的研究[J]. 电子技术学 报,1992,(03):65-68 [8]吴安岚,电能计量基础及新技术[M].北京:中国水利水电出版社,2004 [9] 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京: 电子工业出版社,2007 [10] 王玺,电力系统数字测频方法研究[D]. 郑州大学,2010 [11] 陆延信,郁建中 .三相电路瞬时电流中有功、无功及畸变电流的快速检测装置及其仿真的研究[J]. 电气传动,1991(01):121-126 [12] 唐介,电工学[M].北京:高等教育出版社,2007 [13] 朱芸,乐秀璠,高悬,高精度单相电能测量芯片在电力参数测量中应用[J]. 电力自动化设备,2004,(01):78-80 [14] 余锡存,单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000 [15]Wen XL , Li Y .Research and Design of Intelligent Wireless Electric Power Parameter Detection Algorithm Combining FFT with Wavelet Analysis[C].2009 Proc. Intl.Conf. on Networks Security , Wireless Communications & Trusted Coputing(NSWCTC’09),5-6 May,2009,627-630 附录一 a 主控模块 附录一 基于单片机的数字电能表设计电路原理图 附录一 b 电源模块 附录一 d 电压采集模块 附录一 c 电流采集模块 附录一 e 功率因数采集模块 附录二 b 电源模块 附录二 a 主控模块 附录二 基于单片机的数字电能表设计电路PCB图 附录二 d 电压采集模块 附录二 c 电流采集模块 附录二 e 功率因数采样模块 附录三 基于单片机的数字电能表设计C语言程序 #include "LCD1602.h" #include "key.h" #include "adc.h" sbit buzz=P2^0; //蜂鸣器IO口 float ADC_Value[4]=0; //四个通道ADC值 char temp_char[10],temp_char1[10],temp_char2[10],temp_char3[10]; //显示暂存ADC值 char temp_char4[10]; //显示时间暂存 char temp_char_I[10];//显示阈值暂存值 char temp_char_V[10]; float Threshold_Value_I_F=1.5,Threshold_Value_V_F=1.5; //设定阈值 int Threshold_Value_I=0,Threshold_Value_V=2200; //按键设定阈值 unsigned char Flag_Set=1,Flag_Work=0; //设置模式标志位,工作模式标志位 设置按键几下的次数变量 unsigned char Flag_I=0,Flag_V=0; //报警记录标志位 int count=0,count_time=0,count_time_Filter=0; //计算功率因数时间 float temp_time=5.0; //时间显示暂存变量 float PF=0; //功率因数 int PF_filter(int Data) { int sum = 0,count=0; int temp=0; for ( count=0;count<15;count++) { temp=Data; sum=sum+temp; Delay_MS(10); } return (sum/15); } void Timer0Init(void) //100微秒@12.000MHz { TMOD = 0x01; //设置定时器模式 TL0 = (65536-100)%256; //设置定时初值 TH0 = (65536-100)/256; //设置定时初值 IT0 = 1; //set INT0 int type (1:Falling 0:Low level) EX0 = 1; // enable INT0 interrupt IT1 = 1; //set INT1 int type (1:Falling only 0:Low level) EX1 = 1; // enable INT1 interrupt ET0 = 1; //开定时器0中断 TR0 = 0; //定时器0停止计时 EA = 1; //开总中断 } void main (void) { float temp=0; LCD1602_Init(); Timer0Init(); //定时器初始化 buzz=1; InitADC(); //Init ADC sfr while(1) { if(Key_Count!=2) Key_Module(); //人机交互按键阈值设置模式 if(Key_Count==0||Key_Count==1) { LCD1602_Display(0,0,"Set_I:"); LCD1602_Display(1,0,"Set_V:"); Threshold_Value_I_F=Threshold_Value_I/10.0; Threshold_Value_V_F=Threshold_Value_V/10.0; sprintf(temp_char_I,"%.1f",Threshold_Value_I_F); sprintf(temp_char_V,"%05.1f",Threshold_Value_V_F); LCD1602_Display(0,6,temp_char_I); LCD1602_Display(1,6,temp_char_V); LCD1602_Display(0,9,"A"); LCD1602_Display(1,11,"V"); } else if(Key_Count==2) { LCD1602_Display(0,0,"St:"); LCD1602_Display(1,0,"I:"); LCD1602_Display(1,7,"V:"); LCD1602_Display(1,5,"A "); LCD1602_Display(1,14,"V"); //ADC转换显示到1602部分 ADC_Value[0]=ADC_filter(0)/50.0; //AD换算为实际AD电压值 ADC_Value[0]=ADC_filter(0)/143.0; //电流换算为实际电流值 ADC_Value[1]=ADC_filter(1)*1.91164+41.182; //电压换算为实际交流电压值 ADC_Value[0]=((ADC_filter(0)/50.0)*97.182)+41.182; //AD换算为实际电压值 //幅值限制 //超过阈值,报警指示部分 if(ADC_Value[0]>Threshold_Value_I_F&&Flag_I==0) { buzz=0; //蜂鸣器报警 LCD1602_Display(0,3,"err "); LCD1602_Display(0,7,"I"); LCD1602_Display(0,9," "); Flag_I=1; } else if(ADC_Value[0]Threshold_Value_V_F&&Flag_V==0) { buzz=0; //蜂鸣器报警 LCD1602_Display(0,3,"err"); LCD1602_Display(0,6,"V"); LCD1602_Display(0,9," "); Flag_V=1; } else if(ADC_Value[1]

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 5 香币 [ 分享文档获得香币 ] 0 人已下载

    下载文档