范文一:正弦波电流的有效值如何计算
------------------------------------------------------------------------------------------------
正弦波电流的有效值如何计算
如果它的峰峰值是Upp的话那么有效值就是它除以2倍根号2,如果它的幅值是Um的话就除以根号2
物理交变电流中某一时刻的瞬时值与有效值如何计算 记最大值为I
瞬时值=I*cosθ (θ为线圈平面和磁感线夹角)
有效值=?2/2*I
本题:
0.5A=I*cos60
I=1A
有效值=?2/2*I=?2/2 A=0.707 A
物理交变电流的最大值为什么是有效值的根号2倍
这个吗!
其实是用电流产生的热效应来定义的!
交流电的电流是根据正弦或者余弦来变化的!
在相同的时间内如果交流电产生的热量是和直流电相等的话!
这时候你发现直流电的最大值的根号2倍就是交流电的最大值!
所以说最大值除以根号2就是电流的有效值!
真有效值与有效值有什么区别,
有效值是根据发热量定义的,所以用测量热量的方法来间接测量电压或电流就称测真有效值。而根据平方律来测量就称测有效值。 ——————————————————————————————————————
------------------------------------------------------------------------------------------------
我的理解:
真有效值就是真正的有效值,例如通过热量来测量,或者测量均方根值。
而非真有效值, 应该是利用平均值之类的来测量,当波形不是标准的正弦波时,测量到的结果将不准确。
去ADI公司找几份真有效值检测的芯片的数据手册来读读,或许有所帮助。如AD8361(也许型号没记对,大概就是这个)。
一般的有效值的计算,可能是通过峰值或者平均值来推算
例如,对于标准的正弦波,测得峰值为1.414V,那么有效值就是1V。但如果换成三角波,那么结果就不对了。而有些仪器就是这样测的,这样的就不叫真有效值了。
其实那种表的读数叫做有效值,本来就是错误的,但大家都认为它是有效值,所以也就叫惯了吧。我是这样认为的,具体如何,我也没见过权威的解释。
单单从中文文献或术语也许不容易得出区别有效值和真有效值的答案
或就是“得出”,也不容易理解。如果从“根源”上看看英语上怎样说的就容易得到答案----
有效值:virtual VALUE,直接从定义理解---交流电的有效值等于在相同电阻上获得相同功耗(发热)的直流电流/电压。
因为是交流电,必须进行时间平均(积分)后才能得到正确的结果,绝不能用直流电那样用瞬时值代替有效值~详见RMS。 ——————————————————————————————————————
------------------------------------------------------------------------------------------------
平均值:average VALUE,通常是幅值在时间上的平均(积分),本质上就是去除交流成分的意思。如果是整流后的正弦波,就是去除二次谐波以上的正弦波,保存直流成分;如果是单纯的正弦波,平均值就是0,但是,如果站在有效值的角度看平均值,则与绝对值整流后的平均值相同,而不为0,这点比较难理解,也比较容易误解。
均方根值:RMS---root meam square,最原始的是针对正弦波推导出来的,但实际上对所有的波形都适用。电路上的计算基本过程是先平方再平均(积分)最后开方,其中开始时还有绝对值整流的过程。RMS是从有效值的定义里推导出来的计算方法,因此,两者等效。电路实现时,是这种计算方法的迫近。
真有效值:true-RMS,通常说的就是这样,是对复杂波形的RMS扩展。换言之,它是复杂波形的RMS(均方根值),是专门针对复杂波形的术语,对于正弦波,没有必要涉及它,实际算法上true-RMS和RMS完全相同,只是叫法不同而已,其目的不外乎为了突出复杂波形的概念。
上面圈圈说“例如,对于标准的正弦波,测得峰值为1.414V,那么有效值就是1V。但如果换成三角波,那么结果就不对了”,这是对的,但这是从测量电路而言(注意圈圈强调了“测”,----这小子很难犯错误呀,厉害~~),如果因此认为计算方法也是这样,那就错了----因为有的电路本来就只能测量正弦波的有效值,而不能正确测量复杂波形有有效值----正是基于普通方法不能测量复杂波形的“真实有效值”的原因才现出的诸如ADI的AD736等RMS器件来专门对付复杂——————————————————————————————————————
------------------------------------------------------------------------------------------------
波形的“真实有效值”测量问题,“真有效值”的概念也由此产生。同样,认为真有效值是指等效热对比的结果并不正确,实际上两者是一回事,效果上没有区别,只是测量对象不同而已。因为RMS就是来源于有效值的,而有效值源于热等效----更准确地说是功耗等效。
实际中,测量正弦波的有效值可以不采用RMS器件(因为它有固定的系数关系,不用RMS器件可以节省成本,降低功耗),但复杂波形必须使用。
以上是我的理解,不知道有没有错。
——————————————————————————————————————
范文二:正弦波电流的有效值如何计算
正弦波电流?的有效值如?何计算
如果它的峰?峰值是Up?p的话那么?有效值就是?它除以2倍?根号2,如果它的幅?值是Um的?话就除以根?号2
物理交变电?流中某一时?刻的瞬时值?与有效值如?何计算
记最大值为?I
瞬时值=I*cosθ?(θ为线圈平?面和磁感线?夹角)
有效值=?2/2*I
本题:
0.5A=I*cos60?
I=1A
有效值=?2/2*I=?2/2 A=0.707 A
物理交变电?流的最大值?为什么是有?效值的根号?2倍
这个吗!
其实是用电?流产生的热?效应来定义?的!
交流电的电?流是根据正?弦或者余弦?来变化的!
在相同的时?间内如果交?流电产生的?热量是和直?流电相等的?话!
这时候你发?现直流电的?最大值的根?号2倍就是?交流电的最?大值!
所以说最大?值除以根号?2就是电流?的有效值!
真有效值与?有效值有什?么区别, 有效值是根?据发热量定?义的,所以用测量?热量的方法?来间接测量?电压或电流?就称测真有?效值。而根据平方?律来测量就?称测有效值?。
我的理解:
真有效值就?是真正的有?效值,例如通过热?量来测量,或者测量均?方根值。
而非真有效?值, 应该是利用?平均值之类?的来测量,当波形不是?标准的正弦?波时,测量到的结?果将不准确?。
去ADI公?司找几份真?有效值检测?的芯片的数?据手册来读?读,或许有所帮?助。如(也许型号没AD836??1记对,大概就是这?个)。
一般的有效?值的计算,可能是通过?峰值或者平?均值来推算?
例如,对于标准的?正弦波,测得峰值为?1.414V,那么有效值?就是1V。但如果换成?三角波,那么结果就?不对了。而有些仪器?就是这样测?的,这样的就不?叫真有效值?了。
其实那种表?的读数叫做?有效值,本来就是错?误的,但大家都认?为它是有效?值,所以也就叫?惯了吧。我是这样认?为的,具体如何,我也没见过?权威的解释?。
单单从中文?文献或术语?也许不容易?得出区别有?效值和真有?效值的答案?
或就是“得出”,也不容易理?解。如果从“根源”上看看英语?上怎样说的?就容易得到?答案----
有效值:virtu?al VALUE,直接从定义??理解---交流电的有?效值等于在?相同电阻上?获得相同功?耗(发热)的直流电流?/电压。
因为是交流?电,必须进行时?间平均(积分)后才能得到?正确的结果?,绝不能用直?流电那样用?瞬时值代替?有效值~详见RMS?。 平均值:avera?ge VALUE?,通常是幅值?在时间上的?平均(积分),本质上就是?去除交流成?分的意思。如果是整流?后的正弦波?,就是去除二?次谐波以上?的正弦波,保存直流成?分;如果是单纯?的正弦波,平均值就是?0,但是,如果站在有?效值的角度?看平均值,则与绝对值?整流后的平?均值相同,而不为0,这点比较难?理解,也比较容易?误解。
均方根值:RMS---root meam squar?e,最原始的是?针对正弦波?推导出来的?,但实际上对?所有的波形?都适用。电路上的计?算基本过程?是先平方再?平均(积分)最后开方,其中开始时?还有绝对值?整流的过程?。RMS是从?有效值的定?义里推导出?来的计算方?法,因此,两者等效。电路实现时?,是这种计算?方法的迫近?。
真有效值:true-RMS,通常说的就?是这样,是对复杂波?形的RMS?扩展。换言之,它是复杂波?形的RMS?(均方根值),是专门针对?复杂波形的?术语,对于正弦波?,没有必要涉?及它,实际算法上?true-RMS和R?MS完全相?同,只是叫法不?同而已,其目的不外?乎为了突出?复杂波形的?概念。
上面圈圈说?“例如,对于标准的?正弦波,测得峰值为?1.414V,那么有效值?就是1V。但如果换成?三角波,那么结果就?不对了”,这是对的,但这是从测?量电路而言?(注意圈圈强?调了“测”,----这小子很难?犯错误呀,厉害~~),如果因此认?为计算方法?也是这样,那就错了----因为有的电?路本来就只?能测量正弦?波的有效值?,而不能正确?测量复杂波?形有有效值?----正是基于普?通方法不能?测量复杂波?形的“真实有效值?”的原因才现?出的诸如A?DI等的RMSAD736器??件来专门对?付复杂波形?的“真实有效值?”测量问题,“真有效值”的概念也由?此产生。同样,认为真有效?值是指等效?热对比的结?果并不正确?,实际上两者?是一回事,效果上没有?区别,只是测量对?象不同而已?。因为RMS?就是来源于?有效值的,而有效值源?于热等效----更准确地说?是功耗等效?。
实际中,测量正弦波?的有效值可?以不采用R?MS器件(因为它有固?定的系数关?系,不用RMS?器件可以节?省成本,降低功耗),但复杂波形?必须使用。
以上是我的?理解,不知道有没?有错。
范文三:正弦波电流的有效值若何计算[指南]
正弦波电流的有效值如何计算
如果它的峰峰值是Upp的话那么有效值就是它除以2倍根号2,如果它的幅值是Um的话就除以根号2
物理交变电流中某一时刻的瞬时值与有效值如何计算
记最大值为I
瞬时值=I*cosθ (θ为线圈平面和磁感线夹角)
有效值=?2/2*I
本题:
0.5A=I*cos60
I=1A
有效值=?2/2*I=?2/2 A=0.707 A
物理交变电流的最大值为什么是有效值的根号2倍
这个吗!
其实是用电流产生的热效应来定义的!
交流电的电流是根据正弦或者余弦来变化的!
在相同的时间内如果交流电产生的热量是和直流电相等的话! 这时候你发现直流电的最大值的根号2倍就是交流电的最大值! 所以说最大值除以根号2就是电流的有效值!
真有效值与有效值有什么区别, 有效值是根据发热量定义的,所以用测量热量的方法来间接测量电压或电流就称测真有效值。而根据平方律来测量就称测有效值。
我的理解:
真有效值就是真正的有效值,例如通过热量来测量,或者测量均方根值。
而非真有效值, 应该是利用平均值之类的来测量,当波形不是标准的正弦波时,测量到的结果将不准确。
去ADI公司找几份真有效值检测的芯片的数据手册来读读,或许有所帮助。如AD8361(也许型号没记对,大概就是这个)。
一般的有效值的计算,可能是通过峰值或者平均值来推算
例如,对于标准的正弦波,测得峰值为1.414V,那么有效值就是1V。但如果换成三角波,那么结果就不对了。而有些仪器就是这样测的,这样的就不叫真有效值了。
其实那种表的读数叫做有效值,本来就是错误的,但大家都认为它是有效值,所以也就叫惯了吧。我是这样认为的,具体如何,我也没见过权威的解释。
范文四:基于单片机正弦波有效值测量仪表设计
摘 要
在实际中,有效值是应用最广泛的参数,电压表的读数除特殊情况外,几乎都是按正 弦波有效值进行定度的。 有效值获得广泛应用的原因, 一方面是由于它直接反映出交流信 号能量的大小,这对于研究功率、噪声、失真度、频谱纯度、能量转换等是十分重要的; 另一方面,它具有十分简单的叠加性质,计算起来极为方便。
本文详细介绍一个正弦波有效值测量仪表设计,以 STC89C52单片机为控制核心,由 交流电压采集模块,正弦波转方波模块, AD 转换模块、显示模块等构成。系统采用交流 电压输入信号, 经 TLC372比较器和 LM358放大器进行信号采集, 经过 AD0809进行数据采 样,然后输入到 89C52单片机进行交流电压有效值的计算和测量,加上 CD4049进行正弦 波转换为方波,输入到 89C52单片机进行频率的计算和测量,结果用 1602液晶显示正弦 波的有效值和频率。
关键词:交流电压 有效值测量 AD0809 STC89C52
Abstract
In practice, the effective value is the most widely used parameters, voltage meter except in special circumstances, are almost as effective value of sine wave for calibration. Effective value and widely applied reasons, partly because it directly reflects the AC signal energy, the study of power, noise, distortion, frequency spectrum purity, energy conversion is very important; on the other hand, it has a very simple superposition property, calculation is very convenient.
This paper describes an effective value of sine wave measuring instrument design, using STC89C52SCM as control core, by the AC voltage acquisition module, sine wave to square wave module, the AD conversion module, display module. The system adopts the AC input signal, the comparator TLC372and LM358 amplifier for signal acquisition, through AD0809 data sampling, and then input to the SCM 89C52AC voltage effective value calculation and measurement, and CD4049are converted to square wave sine wave, input to the SCM 89C52frequency calculation and measurement, the results with the 1602 liquid crystal display sinusoidal RMS and frequency.
Key words: Ac voltage RMS measurement AD0809 STC89C52
目 录 1. 概述
1.1 题目名称
1.2 功能和指标要求
1.3相关情况概述
2. 技术方案
2.1有效值测量的方法
2.2设计思路
2.3总体技术方案
3. 硬件设计
3.1信号采集电路
3.2正弦波转方波电路
3.3 ADC0809电路
3.4单片机最小系统和 1602显示电路
3.5电源电路
4. 软件设计
4.1 频率测量
4.2幅度测量
4.3软件测试
1. 概述
1.1 题目名称
基于单片机的正弦波有效值测量仪表设计。
1.2 功能和指标要求
1)输入交流电压:5V~50V;
2)正弦频率:50Hz ±5Hz ;
3)检测误差:≤ 2%
4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮 停 止检测;
5)显示方式:数字显示当前检测的有效值。在停止检测状态下,显示最后一次检测 到的有效值;
6)显示分辨率:0.1V
7)工作电源:电网 AC220V ,要求在电网电压变化±15%范围内能够正常工作。 1.3相关情况概述
在日常的生产、生活和科研中,工频电无处不在,所谓工频就是电力供电系统交流电 的频率,我国国家规定工频为 50赫兹,即周期为 0.02秒,英、美等国规定的工频为 60赫兹。因此,对工频电的测量也是一个应用广泛的实际问题。传统的测量仪器在使用时需 要预先估计待测值的测量范围,多数情况下都要从较大量程档位逐次向小量程档位切换, 增加了操作的复杂性,且易发生误操作损坏仪器。
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入, 同时带动 传统控制日新月异更新。 在实时监测和自动控制的单片机应用系统中, 单片机往往作为一 个核心部件来使用。电子计算机的飞跃进步,单片机的普及与推广,为数字多用表智能化 做出了贡献。
作为重要的测量工具,工频有效值多用表的发展可以说见证了现代工业的发展和科 技进步。从传统的模拟多用表,到现在精确度和灵敏度越来越高的数字仪表,多用表的发
展可谓是日新月异。目前的工频有效值多用表的设计大概可以分为以下几类:
(1)基于单片机的数字工频有效值多用表,这类仪表中,最有代表性的是 89C52系列 的。由于 8位机在价格和性能方面的优点,这类仪表可以说是越来越成熟,并且能根据不 同的场合选用不同的核心芯片来满足实际的要求。
(2) 将传统测量方法和现代数字化测量方法有机结合起来, 能适用于工频交流电特征, 同时也能适用于非工频电参数测量,以提高通用性。在这类系统中,由单片机实现测量控 制、数据分析处理、显示和量程自动转化等功能;由 CPLD 器件和高速 A/D芯片组成双通 道高速同步数据采集电路,由锁相倍频电路实现工频周期内均匀等样间隔。
2. 技术方案
2.1有效值测量的方法
(1)有效值的定义:时变量的瞬时值在给定时间间隔内的均方根值。对于周期量,时间 间隔为一个周期。
(2)测量有效值有三种方案:
方案一:采用二极管整流电路,再通过峰值检波电路测得峰值,然后根据波形因数求 得相应的有效值。
方案二:利用单片机控制 A/D对一个周期内的信号进行连续多点采样,然后在软件中 根据有效值计算公式求均方根就可得到有效值。
方案三:采用专用有效值检测芯片如 AD736直接将交流信号转换直流有效值信号。
方案选择:方案一硬件电路较复杂,且能测得的波形有限,对不同的波形还需根据其 波形因数采取不同的换算关系。方案二软件计算,编程难度不大,而方案三软硬件都较简 单,但是资金投入比较大,故设计中选用方案二。
2.2设计思路
本课题主要实现的是交流电压有效值和频率的测量, 我们首先要对交流电压进行硬件 采集,通过电压比较器 TLC372CP 及其外围电路,输出信号源的峰值,再通过 AD 转换输入 单片机,把采集到的数据通过软件计算,求均方根即得交流电压的有效值;第二个模块则 是测量频率,对频率的测量,我们应该先把正弦波转换为方波,利用 STC89C52自带的定 时 /计数器 T0, T1来测量频率, T0用作定时器,工作在模式 2(八位自动重装) ,定时 1秒, T1则用来计数, 工作在模式 1(十六位定时器) , 一秒结束时输出 T1的值, 即为频率。 然后输出到 LCD1602进行显示。
2.3总体技术方案
本实习的设计方案是采用 STC89C52单片机芯片来做控制模块,把采集到的正弦波幅 度经过 ADC0809转换成数字, 然后通过软件编程计算实现幅度测量, 把计算得到的正弦波 有效值显示在 1602第一行。在采集正弦波幅度的同时,我们启动定时器,采集正弦波的 的时间,通过软件编程计算正弦波的频率,把正弦波的频率显示在 1602的第二行。
图 2-1 系统总框图
系统概述
本设计是基于 STC89C52单片机的数字电压表,并且能够显示频率,主要运用 ADC0809芯片来进行电压从模拟量转化到数字量, STC89C52单片机为控制核心,以 1602为显示器 件。八位的 A/D转换器分辨率为 0.0196,当输入电压为 5V 时输出数据为 255。该系统主 要包括四个模块:电源(输出 +12、 +5、 -12、 -5V ) , A/D转换模块,单片机控制模块和液 晶显示模块。电源模块将 220V 、 50HZ 交流经过变压、整流、滤波和稳压,稳压采用 7812、 7805、 7912、 7905稳压芯片实现。 A/D模块采用 ADC0809对电压进行模拟到数字的转换, 转换完成后输入到单片机, ADC0809采样所需标准频率设定为 500KHZ ,通过单片机的 ALE 端,可以输出 2MHZ 频率,再利用 74LS74进行四分频,即可得基准频率。主控模块以单片 机及其外围电路构成控制 A/D采样,进行数据的转换,最后由液晶输出显示。
3. 硬件设计
3.1信号采集电路
我们选用的是 TLC372和 2个 LM358芯片组成信号采集电路, TLC372是双路差动比较 器, LM358放大器是比较电路的核心器件, LM358是适合于电池供电的低功耗器件,有两个独立的、 高增益的、内部频率补偿的双运算放大器。两片 LM358配合使用就能够将输入线圈的电流信号转换成 双极性的电压信号输出,可以用于单片机控制的存储器中待机波形与实时采样波形数据的比较辨别。
图 3.1信号采集电路
3.2正弦波转方波电路
测量正弦波频率的方法有很多种, 但是我们一般选用过零比较器或施密特触发器把正 弦波转换为方波,再进行方波的频率测量。本模块由 8050三极管将要测量的交流电压的 频率进行放大,经过反相器 CD4049,对交流信号进行转换为方波,以便单片机采集信号 并测量。
CD4049是一块 COMS 金属 /非金属氧化物半导体数字集成电路 , 通用性非常强,应用很 广泛,主要功能是对数字信号倒相、对模拟信号进行转换,对不规则数字信号进行整形或 波形变换,信号放大等,通过组合和设置阻容反馈,可以非常容易的制作信号发生、信号 缓冲放大、单稳触发、双稳触发、延时控制装置等。
图 3.2正弦波转方波原理图
图 3.3正弦波转方波仿真图
3.3 ADC0809电路
ADC0809是带有 8位 A/D转换器、 8路多路开关以及微处理机兼容的控制逻辑的 CMOS 组件。它是逐次逼近式 A/D转换器,可以和单片机直接接口。 ADC0809由一个 8路模拟开 关、一个地址锁存与译码器、一个 A/D转换器和一个三态输出锁存器组成。多路开关可选 通 8个模拟通道,允许 8路模拟量分时输入,共用 A/D转换器进行转换。三态输出锁器用 于锁存 A/D转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完 的数据。
74LS74是一个双 D 触发器, 将单片机 ALE 端的信号四分频后, 提供给 ADC0809做基准频 率。
范文五:基于单片机正弦波有效值的测量
基于单片机正弦波有效值的测量
一.简介
本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。 二.基本功能与技术指标要求
(1)输入交流电压:1mV~50V,分五档:
① 1mV~20mV,② 20mV~200mV,③ 200mV~2V,④ 2V~20V,⑤ 20v~50V。
(2)正弦频率;1Hz~100kHz;
(3)检测误差:≤2%;
(4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测;
(5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值;
(6)显示:LCD,显示分辨率:每档满量程的0.1%;
三.理论分析
本文要求输入交流信号,通过电路测量其峰值,频率,有效值以
及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为50mV~10V,所以如果我们采用AD为8
位,则最小采样精度为
,因此会产生78.4%的误差,并且题目要求输入交流
信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD;
因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz
,所以我们可以将最小采样精度缩小到
,并且在输入交流信号频率最大时(50KHz)在单个
周期内可采集5个点,因此可保证测量精度。
由于该AD只能接受0~5V的模拟信号输入,所以当我们直接输入一个双极性信号时可能损坏AD,因此当信号进入AD之前我们要进行半波整流,为此我们设计了整流电路,在交流信号通过整流电路输入AD后,由AD实时输出对应模拟信号大小的二进制数,并存入变量MAX中,随着信号的不断输入MAX中只保存AD输出过的最大值,这样既可测出输入信号的峰值;由交流信号有效值表达式
可知检波器应当首先把输入的瞬时电压平方, 然后在一定平均时间内取平均值再开方。即可得到交流信号的有效值,然后通过比较峰值
和有效值的关系即可知道该交流信号的波形;由于要检测交流信号的频率,所以我们使用单片机内部定时器和计数器,而计数器只能由上升沿或是下降沿触发,所以我们想通过施密特触发器将输入交流信号变为高低电平,以便检测其频率,而施密特触发器CD40106在常温5V供电下门限电压=1.4V,而输入交流信号的峰值最小时为25mV,所以不能保证输入信号为正的时候施密特触发器就能发生跳变,因此我们要对输入交流信号进行放大,为此我们设计了放大电路。
四.电路设计
1.电源电路的设计
本次实验我们采用+5V,—5V,+12V,—12V的电源,故采用了
7805,7905,7812,7912这四块芯片组成电源电路对作品进行供电。如
图一所示:
图一
经过测量实际输出电压为:+5.12V -5.06V +12.67V -12.02V
2.分档设计
由于直接对信号测量时,对小信号的测量产生很大的误差,为了更有效的利用单片机的资源,故要对待测信号进行分档处理,但在实际运行中,由于进入放大器之前存在大量电阻产生了很多的噪声干扰,使输出波形严重失真,不能有效的利用,故我们舍弃了该部分的电路。
3.整流电路的设计
我们使用整流二极管5819实现半波整流,但通过此电路输出波形会出现一个负电压,因此在此基础上,我们在二极管后加了一个上拉电阻,实现最大程度的消除输入波形的负电压,使其在单片机STC12C5A60S2内部AD的可接收信号范围内(0-5V)。输入信号经过整流后进入AD,由AD输出10位数字信号,再有单片机进行处理,得出信号的有效值。电路如图二所示:
图二
在实际的测试中,证明该方案可行,能够实现对信号的半波整流处理。
4.正弦波转方波电路设计
在该电路的设计中,我们一开始采用555芯片把正弦波转换为方波,但在实际的测试中发现555只能对高于6V的信号才能使正弦波转换为放波,与我们实习要求不符合,故舍弃了该方案。在老师的指导下,我们采用了滞回比较器来产生方波。本方案检测输入信号频率的核心电路,信号通过由三个运放LM324组成的运放电路后放大100倍,然后输入施密特触发器使其波形变为高低电平,将此波形输入到单片机主控芯片,利用单片机内部的计数器和定时器完成对频率的测量。大部分采用运放LM324构成放大100倍电路,位于图下方由5V电源供电的运放可以产生一个2.5V的直流电压,将此2.5V的直流电压输入到第一级运放后,会使输入的交流信号上偏2.5V,变为0-5V,再经过100000pF的电容C3滤掉被放大的噪声以及2.5V直流后,变为-2.5—+2.5的交流信号,之后进入二级放大;
如图所示第二级运放在加入+2.5V直流电压后输出为0—5V的交流信号,至此外加交流信号已被放大100倍;在外加交流信号被放大100倍之后进入施密特触发器CD40106,该触发器在常温5V供电下门限电压 =1.4V ,输出高电平 ,低电平 , 此部分电路输出即为这个高低电平。电路如图三所示:
图三
在实际的检测中发现放大器并不能将信号放大100倍,故幅值较小的信号不能正常显示频率,只要当信号的峰峰值大于1.5V时才能使单片机正常显示信号的频率。
5.单片机电路
采用STC12C5A60S2单片机,作为整个系统的控制器,控制各个模块协调工作。运用其内部集成的一个AD
作为数模转换器。如图四所示
图四
6.
系统整体电路图如图五所示
图五
四.软件设计
AD流程图如图六 图七所示
图六
图七
1.正弦波有效值的测量方法
工频正弦电压信号
u(t)=Umsin(2πft+?)=2Usin(2πft+?)
t
频率f和初相位角ψ已知,且ψ=0,现以t=0时可作为基准时间,并在t=0时刻开始进行等间隔采样,共得到正弦波u(t)的N个测量值(采样数据)u(0),u(1),……,u(N-1),希望利用这N个测量值来计算正弦波的幅值Um(有效值U)。
设采样周期为TS,如果不存在噪音,且测量无偏差,则有
u(0)=Umsin(0)=0
u(0)=Umsin(2π?f?TS)
……
u(k)=Umsin(2π?f?K?TS)
……
u(N-1)=Umsin(2π?f?(N-1)?TS)
我们可以设法利用测量值求解出正弦波参数。
实际上,我们的测量存在误差,同时信号存在噪音,因此,对每一个测量信号u(k),它与对应时刻t=k·TS的正弦波u(t)=Umsin(2πft)的值u(t)=Umsin(2π?f?k?Ts)存在一个误差e(k),其中k=0,1,…,N-1。定义
e(k)=Umsin(2π?f?k?TS)-u(k)
为了利用N个测量值来尽可能准确的计算正弦波幅值Um,我们定义指标函数为:
N-11N-12ε(Um)=∑e(k)=∑[Um?sin(2π?f?k?Ts)-u(k)]2 2k=0k=0
它是频率f,幅值Um,初相位角ψ的函数。我们的目的就是求频率f,幅值Um,初相位角ψ使得目标函数ε最小。为此,令
?ε(Um)N-1
=∑{[Um?sin(2π?f?k?TS)-u(k)]?sin(2π?f?k?Ts)}?Umk=0
=Um?∑sin(2π?f?k?Ts)-∑u(k)?sin(2π?f?k?Ts)=02
k=0k=0N-1N-1
-------------------------------------------------(1)可以得到正弦波的幅值
Um=∑u(k)?sin(2π?f?k?T)s
k=0
N-1
k=0N-1 ∑sin2(2π?f?k?Ts)
为了与正弦波的真正幅值Um表示上的区别,用UmC表示利用N个采样数据获得的正弦波幅值计算值,既
UmC=∑u(k)?sin(2π?f?k?T)s
k=0
N-1
k=0N-1(2) ∑sin2(2π?f?k?Ts)
对于f≈50Hz(以前面的测量值为准,这里仅为举例),选择采样周期TS ≈20/200=0.1ms=100us,既每个周期采样200点(每半个周波100次采样),
sin(2π?f?k?TS)
=sin(10π?k)k=0,1,...,199
是确定的(可以预先求出,存于sin表中),sin2(2π·f·k·TS)同样作为常数表,而且
∑sin
k=0N-12(2π?f?k?Ts)=C
本身是一个常数,因此公式(2)变为
UmC=∑u(k)?sin(2π?f?k?T)s
k=0N-1
C(3)
当采样周期很小时,数值积分系数C可以用
1C=??sin2(ωt)d(ωt)TS02π(4)
来替代(可以认为C是一个周期类的数值积分,当采样周期很小时,就用积分项来表示)。
就可利用N个等间隔测量值计算出正弦信号的峰值Um。
正弦波的有效值与峰值的关系
UC UmC
2(5)
半波绝对值电路:
在待测交流信号的正半波,输出待测信号送AD变换电路,在待测信号的负半波,输出0.
正半波时,Px.y=0,单片机利用该信号识别是正半波信号,进行AD转换,获得N个采样值。在Px.y=1时,单片机暂停AD变换,利用正半波获得的N个检测信号计算正弦波的有效值U,频率f。
2.数据测量
幅值的测量
表1
频率的测量
表2
3.数据分析
由上图可知在输入信号vpp在0.7v到5v的区域内,实验作品的误差较小能够实现有效值的测量,当频率在100Hz到40KHz时,在误差允许范围内,作品基本能完成对该信号的准确测量。
4.软件部分代码:
#include #include #define FOSC 12000000L #define BAUD 9600 typedef unsigned char BYTE; typedef unsigned int WORD; sbit LCM_E=P2^5;//定义接口 sbit LCM_RW=P2^6; sbit LCM_RS=P2^7; sfr ADC_CONTR = 0xBC; sfr ADC_RES = 0xBD; sfr ADC_LOW2 = 0xBE; sfr P1ASF = 0x9D; sfr AUXR = 0x8e; #define ADC_POWER 0x80 #define ADC_FLAG 0x10 #define ADC_START 0x08 #define ADC_SPEEDLL 0x00 #define ADC_SPEEDL 0x20 #define ADC_SPEEDH 0x40 #define ADC_SPEEDHH 0x60 #define LCM_Data P0//数据接口 void InitUart(); void SendData(BYTE dat); void Delay(unsigned int n); void IO_ADinit() ; void ADC_Power_On() ; void get_ad_result() ; void ADCONVERT() ; void WriteDataLCM(BYTE WDLCM); void WriteCommandLCM(BYTE WCLCM,BuysC); BYTE ReadDataLCM(void); BYTE ReadStatusLCM(void); unsigned int GetADCResult(BYTE ch); void LCMInit(void); void DisplayOneChar(BYTE X, BYTE Y, BYTE DData); void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData); void Delay5Ms(void); void Delay400Ms(void); void Disp_number(unsigned int num,BYTE n); void ShowResult(BYTE ch); unsigned int GetADCResult(BYTE a); unsigned int data_max = 0; unsigned long data_max1,count =0; unsigned int data_change = 150;//0.7V unsigned char code VP[4]={"Amp:"},Freq[5]={"Freq:"}; unsigned int Counter = 0; unsigned int data_last = 0;BYTE ch = 0; unsigned int Frequency = 0; unsigned int nn =0,flag = 0,flag1 = 0,nn1=0; unsigned int PrintFre[5] ; unsigned int Print[4]; unsigned int number[4]; unsigned int D; void main() { unsigned int n=0; Delay400Ms();//启动等待,等LCM讲入工作状态 LCMInit();//LCM初始化 Delay5Ms();//延时片刻(可不要) ET1 = 1; EA=1; InitUart(); TMOD = 0x15;//均为16位计数器 TH0 = 0x00; TL0 = 0x00; TH1 = 0x3C; TL1 = 0xAF; TCON = 0x50;//T1,T0均工作,t1做定时器,t0做计数器; while(1) { ADCONVERT(); n++; if(n>10000){data_max=0;n=0;} } } void To_interrupt(void)interrupt 3 using 1 { int i ,j; unsigned int Change1,Print[4]; unsigned long int Change2; TH1 = 0x3C; TL1 = 0xAF; Counter = Counter++; if(Counter == 20) { Frequency = (TH0<8)+tl0; 读取此时计数器0的读数="" if(frequency="">=2000)Change1 = (Frequency/100)*92; else if (Frequency>=200)Change1 = ((Frequency/10)*92)/10; else Change1 = (Frequency*97)/100; for( i=0;i<> { PrintFre[i] = Change1 % 10; Change1 = Change1 / 10; } for(i=4;i>=0;i--) { if(i>0)DisplayOneChar(4-i,0,PrintFre[i]+48); else{DisplayOneChar(4-i,0,PrintFre[i]+48); DisplayListChar(5-i,0,"Hz"); } } Change2 = data_max*50; Change2 = Change2/10/1.414; for(j=0;j<> { Print[j] = Change2 % 10; Change2 = Change2 / 10; } for(j=3;j>=0;j--) { if(j>0) DisplayOneChar(10-j,0,Print[j]+48); else { DisplayOneChar(10-j,0,Print[j]+48); DisplayListChar(11-j,0,"mV"); } } TH1 = 0x3C; TL1 = 0xAF; TH0 = 0xFF; TL0 = 0xFC; Counter = 0; } } void IO_ADinit() { ADC_CONTR=0xe0; //设置P1.0为输入AD转换口 _nop_(); //ADC_CONTR需要四个指令延时 _nop_(); _nop_(); _nop_(); } void ADC_Power_On() { ADC_CONTR|=0x80; _nop_(); _nop_(); _nop_(); _nop_(); } void get_ad_result() { unsigned int q=0,ad_average_result; ADC_RES=0; ADC_LOW2=0; ADC_CONTR|=0x08; while(!(ADC_FLAG&ADC_CONTR)) ; ADC_CONTR&=0xE7; ad_average_result=(ADC_RES<> if(data_max void ADCONVERT() { ADC_Power_On(); IO_ADinit(); get_ad_result(); } void InitUART() { SCON = 0x5a; PCON|= 0x80; } void SendData(BYTE dat) { while(!TI); TI = 0; SBUF = dat; } void Delay(unsigned int i) { unsigned char j; for(i; i > 0; i--) for(j = 200; j > 0; j--) ; } void WriteDataLCM(BYTE WDLCM) { ReadStatusLCM(); //检测忙 LCM_Data = WDLCM; LCM_E = 0; LCM_RS = 1; LCM_RW = 0; LCM_E = 0; //若晶振速度太高可以在这后加小的延时 LCM_E = 1; LCM_E = 0; } void WriteCommandLCM(BYTE WCLCM,BuysC) //BuysC为0时忽略忙检测 { if (BuysC) ReadStatusLCM(); //根据需要检测忙 LCM_Data = WCLCM; LCM_E = 0; LCM_RS = 0; LCM_RW = 0; LCM_E = 1; LCM_E = 0; } BYTE ReadDataLCM(void) { LCM_E = 0; LCM_RS = 1; LCM_RW = 1; LCM_E = 1; LCM_E = 0; return(LCM_Data); } BYTE ReadStatusLCM(void) { LCM_Data = 0xFF; LCM_E = 0; LCM_RS = 0; LCM_RW = 1; LCM_E = 1; LCM_E = 0; while (LCM_Data & 0x80) //检测忙信号 { LCM_E=0; LCM_E=1; } return(LCM_Data); } void LCMInit(void) //LCM初始化 { LCM_Data = 0; WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号 Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号 WriteCommandLCM(0x08,1); //关闭显示 WriteCommandLCM(0x01,1); //显示清屏 WriteCommandLCM(0x06,1); // 显示光标移动设置 WriteCommandLCM(0x0C,1); // 显示开及光标设置 } void DisplayOneChar(BYTE X, BYTE Y, BYTE DData) { Y &= 0x1; X &= 0xF; //限制X不能大于15,Y不能大于1 if (Y) X |= 0x40; //当要显示第二行时地址码 0x40; X += 0x80; // 算出指令码 WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码 WriteDataLCM(DData); } void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData) { BYTE ListLength; ListLength = 0; Y &= 0x1; X &= 0xF; //限制X不能大于15,Y不能大于1 while (DData[ListLength]) //若到达字串尾则退出 { if (X <= 0xf)="">=> { DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符 } ListLength++ ; X++ ; } } void Disp_number(unsigned int num,BYTE n) { BYTE a; //个位 BYTE b; //十位 BYTE c; //百位 BYTE d; //千位 // BYTE e; //万位 switch(n) { case 1:WriteDataLCM(num); break; case 2:b=num/10; a=num%10; WriteDataLCM(number[b]); WriteDataLCM(number[a]); break; case 3:c=num/100; b=num%100/10; a=num%10; WriteDataLCM(number[c]); WriteDataLCM(number[b]); WriteDataLCM(number[a]); break; case 4:d=num/1000; c=num%1000/100; b=num%1000%100/10; a=num%10; WriteDataLCM(number[d]); WriteDataLCM(number[c]); WriteDataLCM(number[b]); WriteDataLCM(number[a]); break; } } //5ms延时 void Delay5Ms(void) { unsigned int TempCyc = 5552; while(TempCyc--); } //400ms延时 void Delay400Ms(void) { BYTE TempCycA = 5; unsigned int TempCycB; while(TempCycA--) { TempCycB=7269; while(TempCycB--); }; } 五.实习总结: 匆匆的4周过去了,我们的实习也将步入结束。4周的实习让我感受良多;在这4周中我们从一开始的原理图方案的设计到实习实物的制作再到对作品的调试到最后的验收,经历了种种挫折与挑战。但在同伴的不懈努力以及老师的细心指导下,我们的作品在不断的辩证下产生了,虽然它简陋而粗糙,但它却依旧是我们汗水与努力的结晶。经过此次实习使我们学到许多,我们拥有了能够独立完成作品的能力,同时加强了我们的动手能力,增进了同学间的友谊。当在实习中也出现了种种问题,比如由于设计方案的不合理使我们一度陷入了进退两难的境地,最终只能浪费一块板,重新做了块新板。又例如由于 焊接的粗心导致了多次数据的检测错误等等。不管怎么说这都是一次有意义的实习。最后感谢我们可敬的老师,感谢他们辛苦的付出。 六.参考文献 《单片微机原理及应用》 清华大学 主编: 方方 《模拟电子电路》 北京大学出版社 主编 :宋树祥 《电子系统设计创新与实践实习指导书》 《模拟电子技术基础简明教程》清华大学 主编: 杨素行 转载请注明出处范文大全网 » 正弦波电流的有效值如何计算