基于某单片机正弦波有效值地测量
- 格式:doc
- 大小:1.08 MB
- 文档页数:23
《单片机应用实践》课程设计任务书学生姓名:杨博专业班级: 电信1303 班指导教师: 孟哲工作单位: 信息工程学院题目: 50Hz正弦波有效值测量仪表的设计与实现初始条件:(1)提供实验室机房及其proteus7.0以上版本软件;(2)《单片机原理与应用》学习。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)选择一本《单片机原理与应用》,认真学习该教程的全部内容,包括汇编语言的理解与应用,51单片机的基本功能与应用;(2)要求用51单片机设计一个测量仪表,能够测量量程200mv~20v的50Hz 正弦波交流电的有效值(3)要求做出仿真,并依照仿真设计实物并对实验结果进行分析和总结;(4)要求阅读相关参考文献不少于5篇;(5)根据课程设计有关规范,按时、独立完成课程设计说明书。
时间安排:(1) 分析课题,完成设计构想两天;(2) 完成仿真一天;(3) 购买元件并完成实物两天;(4) 完成报告书一天;指导教师签名: 年月日系主任(或责任教师)签名: 年月日摘要在实际生产与生活之中,有效值扮演了一个极其重要的角色。
由于有效值能够直接反映出交流信号能量的大小,因此在对于其他物理量例如功率、噪声、失真度、能量转换等的研究上发挥着极其重要的作用。
本次课设完成一个50Hz正弦波有效值测量仪表的设计与实现。
根据要求,本次课设以STC89C52单片机为控制核心,通过电阻分压网络、基于AD736的有效值检测模块、基于LM324的信号放大模块以及基于TLC549的A/D转换模块完成正弦波有效值测量工作,结果通过LCD显示。
关键词:正弦波;有效值;单片机控制;AD736;TLC549.AbstractIn the actual production and life, the effective value plays an extremely important role .Because of the effective value of AC, signal can directly reflect the size of the energy,it’s convenient to study for other physical quantities such as power, noise, distortion, energy conversion and so on.The design and implementation of a 50Hz sine wave effective value measuring instrument is set up in this lesson design. According to the requirements, the class stipulates STC89C52 microcontroller as control core, through the resistance points pressure platform, based on AD736 effective value detection module, based on LM324 signal amplification module and based on TLC549 A / D conversion module to complete sinusoidal RMS measurements. The results through the LCD display.Keywords:sine wave; effective value; single chip microcomputer control; AD736; TLC549.1.设计原理1.1方案设计方案一:采用二极管整流电路,再通过峰值检波电路测得峰值,然后根据波形因数求得相应的有效值。
基于单片机智能RLC测试仪的设计毕业设计摘要本文主要论述了基于凌阳SPCE061A单片机的智能RLC测试仪的设计,利用单片机对R、L、C等参数进行测量,可以充分利用单片机的运算和控制功能,方便地实现测量,使测量精度得到提高。
同时用软件程序代替一些硬件测量电路,可在硬件结构不变的情况下,修改软件以增加新的功能。
能够很好的完成对RLC参数的测量,以满足现代测控系统的需要。
关键词:单片机;SPCE061A;RLC测试仪ABSTRACTIt is mainly discussed in this paper that the design of intellectual RLC parameter measurer based on Lingyang SPCE061A MCU. MCU use of R, L, C, and other parameters measured, can take full advantage of MCU processing and control functions, to facilitate the realization of measurements for improved measurement accuracy. Simultaneously uses the software procedure to replace some hardware metering circuits, may in the hardware architecture invariable situation, revi se software to increase the new very good completing to the RLC parameter survey, satisfy the modern observation and control system the need.Keywords: MCU;SPCE061A;RLC testing device目录摘要 (I)ABSTRACT (II)目录 (III)前言 (V)1 系统测试原理与总体方案设计 (1)RLC测试原理 (1)相位+有效值测量 (1)相位+有效值测量方案的软仿真 (2)RLC参数测量方法 (3)总体设计方案 (4)系统原理框图 (4)整个系统工作流程 (4)系统设计中的难点和关键技术 (5)2 RLC测试仪硬件部分实现 (6)-5V电源的设计 (6)标准正弦信号发生模块 (6)标准正弦信号的原理 (6)AD9850芯片简介 (8)AD9850硬件电路图及单片机程序 (9)3 I-V变换模块 (11)I-V变换方案设计 (11)I-V变换的硬件电路 (11)4 同时采样模块 (12)同时采样模块方案设计 (12)A/D芯片的选择 (12)ADS7861芯片介绍 (13)ADS7861转换时序的逻辑控制 (13)5 单片机系统设计 (16)SPCE061A单片机概述 (16)单片机的电源设计 (16)SPCE061A最小系统 (17)6 RLC测试仪应用软件设计 (18)数据采集模块程序流程图 (18)中断程序流程图 (19)主程序流程图 (19)结论 (21)参考文献 (22)致谢 (23)附录 (24)前言随着微电子技术、计算机技术、软件技术的高度发展及其在电子测量技术与仪器上的应用,新的测试理论、新的测试方法、新的测试领域以及新的仪器结构不断出现,在许多方面已经冲破了传统仪器的概念,电子测量仪器的功能和作用发生了质的变化。
电子系统设计创新与实践设计报告题目:基于单片机正弦波有效值测量仪表设计院(系):信息科学与工程学院专业班级:电子信息工程学生姓名:学号:同组成员:指导老师:肖洪祥职称:副教授2012年7月摘要在实际中,有效值是应用最广泛的参数,电压表的读数除特殊情况外,几乎都是按正弦波有效值进行定度的。
有效值获得广泛应用的原因,一方面是由于它直接反映出交流信号能量的大小,这对于研究功率、噪声、失真度、频谱纯度、能量转换等是十分重要的;另一方面,它具有十分简单的叠加性质,计算起来极为方便。
本文详细介绍一个正弦波有效值测量仪表设计,以STC89C52单片机为控制核心,由交流电压采集模块,正弦波转方波模块,AD转换模块、显示模块等构成。
系统采用交流电压输入信号,经TLC372比较器和LM358放大器进行信号采集,经过AD0809进行数据采样,然后输入到89C52单片机进行交流电压有效值的计算和测量,加上CD4049进行正弦波转换为方波,输入到89C52单片机进行频率的计算和测量,结果用1602液晶显示正弦波的有效值和频率。
关键词:交流电压有效值测量 AD0809 STC89C52AbstractIn 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 题目名称基于单片机的正弦波有效值测量仪表设计。
word目录摘要IAbstractII1 电路设计1信号采集与转换电路设计11.2 单片机控制电路设计2显示电路设计3总体电路42 软件设计53 仿真结果114 心得体会14参考文献15摘要正弦交流信号有效值的测量,需要测量正弦信号的峰值,利用正弦信号有效值的计算公式就可以得到正弦信号的有效值。
要进展基于单片机的正弦信号有效值的测量,需要先将模拟量转换为数字量,将所得的数据经由单片机处理,再将最后的结果显示出来。
设计的电路主要包括信号采集与转换电路,单片机控制电路和显示电路。
其中,有效值的计算在本次设计中主要利用软件局部的设计完成。
关键词:有效值测量,模数转换电路,单片机控制AbstractSinusoidal ac signal effective value measurement, need to measure the peak value of the sine signal, using the sine signal effective value calculation formula of the effective value of sine signal can be calculated out. Must carry on the sine signal RMS measurement based on single chip microputer, need to convert analog to digital quantity, will the data processed by single chip microputer, then the final result of display. Design the circuit mainly includes signal acquisition and conversion circuit, SCM control circuit and display circuit. Among them, the RMS calculation in the design of the main use of the design of the software part is plete. Keywords: RMS measurement, modulus conversion circuit, single chip microputer control1 电路设计为了测得正弦信号的有效值,硬件电路的设计应包括信号的输入采集电路,模拟量与数字量转换电路,单片机控制电路与数字显示电路。
正弦交流信号有效值的测量,需要测量正弦信号的峰值,利用正弦信号有效值的计算公式就可以得到正弦信号的有效值。
要进行基于单片机的正弦信号有效值的测量,需要先将模拟量转换为数字量,将所得的数据经由单片机处理,再将最后的结果显示出来。
设计的电路主要包括信号采集与转换电路,单片机控制电路和显示电路。
其中,有效值的计算在本次设计中主要利用软件部分的设计完成。
关键词:有效值测量,模数转换电路,单片机控制AbstractSinusoidal ac signal effective value measurement, need to measure the peak value of the sine signal, using the sine signal effective value calculation formula of the effective value of sine signal can be calculated out. Must carry on the sine signal RMS measurement based on single chip microcomputer, need to convert analog to digital quantity, will the data processed by single chip microcomputer, then the final result of display. Design the circuit mainly includes signal acquisition and conversion circuit, SCM control circuit and display circuit. Among them, the RMS calculation in the design of the main use of the design of the software part is complete.Keywords: RMS measurement, modulus conversion circuit, single chip microcomputer control1 电路设计为了测得正弦信号的有效值,硬件电路的设计应包括信号的输入采集电路,模拟量与数字量转换电路,单片机控制电路与数字显示电路。
基于单片机正弦波有效值的测量一.简介本作品以单片机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个点,因此可保证测量精度。
(完整word版)基于单片机的正弦波信号发生器的设计毕业设计论文题目:基于单片机的正弦波信号发生器的设计系部:电子信息工程系专业名称:电子信息工程技术班级: 08431 学号:33姓名:顾伟国指导教师:郑莹完成时间:2011 年 5 月12 日(完整word版)基于单片机的正弦波信号发生器的设计基于单片机的正弦波信号发生器的设计摘要:信号发生器的应用越来越广,对信号发生器的频率稳定度、频谱纯度、频率范围和输出信号的频率微调分辨率提出越来越高的要求,普通的频率源已经不能满足现代电子技术的高标准要求。
因而本设计采用了AT89C51单片机为控制核心,通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生1HZ—180HZ的正弦波波形。
通过键盘来控制波形频率变化,并通过液晶屏1602显示其波形以及频率和幅度值的大小。
关键字:信号发生器;AT89C51;D/A转换器DAC0832Based on SCM sine wave signal generator designAbstract:Signal generator used more and more widely, to signal generator frequency stability, the spectrum purity,frequency range and output signal frequency fine-tune resolution higher and higher demands are proposed,the average frequency source cannot have satisfied the high standard requirement of modern electronic technology. So this design USES A AT89C51 as control core,through the D/A converter DAC0832 converts digital signals into analog signals, filter and amplification, finally shown by oscilloscope 1HZ — 180HZ, can produce the sine wave。
Ξ 收稿日期:2006-03-14;修回日期:2006-04-15作者简介:陈古波(1975-),男,重庆人,主要从事实验教学工作.【计算机与自动化】基于单片机MSP430的正弦输出波形设计Ξ陈古波,向险峰,李 双(重庆工学院电工电子技术实验中心,重庆 400050)摘要:根据电力系统模拟测试继电保护的需要,采用MSP430单片机产生正弦信号来控制需要输出的模拟量.介绍了该方法的硬件组成和软件编程,并给出了具体的程序.最后介绍了该设计在实际的测试系统中的应用.关 键 词:正弦波;MSP430F1611;在线编程;象限;继电保护中图分类号:TP21 文献标识码:A 文章编号:1671-0924(2006)08-0087-03The Design of Sinusoidal W ave ’s Output B ased on SCM MSP 430CHE N G u-bo ,XI ANG X ian-feng ,LI Shuang(E lectrical &E lectronic T echnology Lab Center ,Chongqing Institute of T echnology ,Chongqing 400050,China )Abstract :Based on demand of electric power system for simulated relay protection test ,SC M MC U (MSP430)is used to produce sinus oidal signal s o as to control the output of simulative variables.This paper introduces the hardware com ponents and s oftware programming and puts forward specific programs ,and final 2ly introduces the application of the design in actual testing systems.K ey w ords :sinus oidal wave ;MSP430F1611;On-line programming ;quadrant ;relaying protection0 引言 随着工业技术的迅猛发展,人们对电力的运行提出了更高的要求.要保证电力的运行可靠,必须配备先进的检测手段.以往检测电力设备,多采用模拟装置产生正弦信号进行调试,这种方法可控性不强,操作比较繁琐,无法实现自动化测试,精度也不能满足要求.本文中基于单片机MSP430的正弦输出波形设计,采用数字式的方式产生正弦信号,保证了输出的可控性和操作的简单性,能完全实现了自动化测试功能.本文中采用的TI 公司的MSP430单片机,由于指令少,编程语言采用C 语言编程(C430),具有在线编程的功能,可以大大缩短开发周期,降低开发成本.相对于系统机而言,基于单片机的设备由于携带方便,性能可靠,且具有价格优势,更适合于基层的检测调试.1 正弦波的特征 正弦函数的表达式为y =A sin (ωt +θ),由该函数表达式可以得知正弦函数有3个量:幅值A ,初始相位θ,角频率ω(转化为频率f ,其关系式为ω=2πf ).如果这3个量是确定的,正弦函数就只是一个与时间有关的周期函数.2 单片机的选型 单片机选型主要应从以下几个方面入手:①单片机系列产品的完整性是否利于后续产品的升级;②其管脚能否兼容;③RAM 的空间容量;④程序空间的大小;⑤端口及中断的数量;⑥编程方式是否容易;⑦有无硬件乘法器.参数的选择需要根据项目的要求而定,在笔者开发的这个项目中,选用的是TI 公司的MSP430F1611单片机,其主要参数、结构和功能如下:①低电源电压范围:1.8~3.6V ;②从等待到唤醒时间:6μs ;③基本时钟模块配置:第20卷 第8期Vol.20 No.8重 庆 工 学 院 学 报Journal of Chongqing Institute of T echnology2006年8月Aug.2006高速晶体(最高10MH z )、低速晶体(32768H z )、DC O 具有3/7个捕获/比较寄存器的16位定时器T imer-A3/T imer-B7;④两通道串行通信接口可用于异步与同步(软件选择US ART /SPI 模式);⑤具有一个硬件乘法器和12位A/D 转换器———ADC12;⑥2个具有中断功能的8位并行端口———P1和P2;⑦多达48K B 的F LASH ROM 和10K B RAM ;⑧具有串行在线编程和安全熔丝的程序代码保护功能.3 项目的实现3.1 硬件部分.由单片机MSP430的P1和P4口(具有控制I/O 方向、输出、输入的功能)输出16位的正弦函数数值,经过D/A 转换,输出正弦波形.D/A 选用16位、有4路输出的DAC7644.图1为该项目硬件框图:图1 硬件实现电路框图 其中键盘为项目的功能选择部分,通过旋转编码器实现数值输入,开入量采集为继电保护的触点引入处理电路,保护电路用于仪器出口出现故障时切断输出,D/A (DAC7644)将单片机输出的数值转化为所需的正弦波形,滤波放大是将D/A 输出波形进行放大、平整光滑处理,功率模块是将小信号放大,目的是能够提供强负载的大电流、电压,通过外接高精度的检测仪表可以自动调节仪器的输出精度.3.2 软件部分.由于单片机处理的是数字信号,而正弦波是一个连续变化的模拟量,所以就必须对一个周期内的正弦波形进行点数选择(斩波处理).周期内选择的点数越多,得到的波形就越接近真实的波形;但另一方面,由于单片机处理的速度有限,点数如果选取过多,单片机就无法处理其它程序,进而导致死机.本文中在一个周期内(一个周期360°)选择100点,即每隔3.6°计算一个正弦函数值,由单片机中断送出.图2为该程序流程图.由于单片机处理正弦函数的计算会耗去很长时间,如果单片机一边中断送数,一边计算下一个点的正弦函数值,这样在速度响应上就会存在问题.因此该项目采用先计算好一个周期为100点的正弦函数值,存放在RAM 中,在中断送数的过程中只负责取出数据即可.根据正弦函数的特点有:当0°ΦαΦ180° sin α=sin (180°-α)当180°<α<360° sin α=-sin (360°-α)所以,只要0°ΦαΦ90°求出的函数值,周期内其它函数值也就相应确定(在此用sinn[]数组存储以0.1°为步长、0°ΦαΦ90°的正弦函数值),其目的是为了节约单片机的程序空间,如果以0.1°(分辩率)存储一个点(2个字节),90°需要占用1.8K 字节,360°就需要占用7.2K 字节,这会对单片机的有限空间将造成极大浪费.图2 MSP430输出正弦波形程序流程图 由于sinn[]数组只存储了0°ΦαΦ90°的函数值,所以在求整个周期内的函数值时,需要判断该点所处的象限,再进行查表计算.以下为在RAM 中存放周期内100个点的正弦函数值的实现程序:v oid zxcx w (long fz ,float g ,int zero )∥正弦函数初始相位判断及计算{ int n ,n0,t ;float g f ;xx1:∥计算初始相位0°~90°的正弦函数数组n0=g f 310;∥初始点for (n =0;n <100;n ++) ∥总点数为100,正弦波两个点之间相差3.6°, { t =n0+363n ; ∥而sinn[]存储的两个点间隔0.1°if (t >900)g oto c11; ∥第1象限an[n]=0x7fff +zero +(fz 3sinn[t ]>>15);return ; c11: if (t >1800)g oto c22; ∥第2象限t =1800-t ;an[n]=0x7fff +zero +(fz 3sinn[t ]>>15);return ; c22: if (t >2700)g oto c33; ∥第3象限t =t -1800;an[n]=0x7fff +zero -(fz 3sinn[t ]>>15);return ;88重庆工学院学报 c33: if(t>3600)g oto c44; ∥第4象限t=3600-t;an[n]=0x7fff+zero-(fz3sinn[t]>>15);return; c44:∥第1象限 t=t-3600;an[n]=0x7fff+zero+(fz3sinn[t]>>15);return; }}v oid zxa(float vifa,float ga,int zeroa)∥A相正弦函数(幅值、相位、零点){ long a; int n;∥满度为30000 a=vifa32003iF LASH-Valuea+0.5;∥iF LASH-Valuea为修正系数 zxcx w(a,ga,zeroa); for(n=0;n<100;n++) {bn1[23n]=an[n]>>8; bn1[23n+1]=an[n];}}如果一个周期频率f=50H z,则T=1/f=20ms,根据项目要求在一个周期内单片机送出100个点,那么单片机每隔200μs就需送出一个点,下面为定时器中断定时间隔设定的程序.如果要改变周期的频率,只需改变CCR0的值即可,程序如下:∥定时器timer-A设置T ACT L=0x0214; ∥设timer-A时钟源为系统主时钟MC LK(10MHZ),0x0200∥设timer-A为增记数模式,0x0010∥设timer-A定时器清0,0x0004CCT L0=CCIE; ∥中断允许CCR0=2000; ∥定时器设定值,2000=200uS为了得到连续的正弦波形,单片机在送数的过程不能被其他程序中断,只要当定时器的值满足设定值时,就按既定点的顺序送出正弦波的函数值.以下为中断函数程序:#pragma vector=TI MERA0-VECT ORinterrupt v oid T imer-A0(v oid)∥定时器A中断函数{ P5OUT=0X0F; ∥选A通道和W P4OUT=bn1[n1];∥P4口输出高8位 n1++; P1OUT=bn1[n1];∥P1口输出低8位 n1++; if(n1>199)n1=0;∥送完100点后n1置0重新下一个周期送数 P6OUT=0XF0;∥DA片选变低 P6OUT=0XF7;}4 项目的应用 通过单片机实现正弦波的输出,外接电压、电流功率放大模块,就可方便地实现对电压、电流幅值的自由调节、频率大小的改变和相位的随意控制,可广泛应用于电力系统中的继电保护的测试.如可用于电流、电压、频率动作值测试,相位动作边界测试,触点动作时间的测试,整祖传动测试(瞬时故障、永久故障),低周减载测试等等.参考文献:[1] 胡大可.MSP430系列F LASH型超低功耗16位单片机[M].北京:北京航空航天大学出版社,2001.[2] 胡大可.MSP430系列单片机C语言程序设计与开发[M].北京:北京航空航天大学出版社,2003:56-177.[3] 魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航空航天大学出版社,2002.[4] 尹项根.电力系统继电保护原理与应用[M].武汉:华中科技大学出版社,2001.[5] 张举.微型机继电保护原理[M].北京:中国水利水电出版社,2004.(责任编辑 刘 舸)98陈古波,等:基于单片机MSP430的正弦输出波形设计。
第四届电子设计竞赛复试实验报告正弦电压信号的产生与有效值测量*********************************************************************复试题目:设计一个频率为1000Hz的正弦波信号发生器,输出幅值为1V左右。
用单片机搭建一个系统,精确地测量该信号的有效值。
并通过串口送到PC机中,通过串口调试助手软件显示该有效值。
题目要求:1、设计一个1000Hz的正弦波振荡器,输出幅度转换为1V。
2、用单片机自带10位AD作为模数转换芯片,不允许扩展其它AD。
3、串口以9.6K波特率向PC机传输数据,在串行调试助手中,以10进制格式显示该正弦波的有效值。
****************************************************************************************************************************************摘要:通过一RC振荡电路,产生1KHz的正弦波,然后经过峰值检波电路,得到其峰值送入Atmega16单片机,由其内部自带ADC处理,并在软件中得到其有效值,经串口发给PC机,并在串口调试助手上显示电压有效值。
关键字:峰值检波有效值ADC 串口****************************************************************************************************************************************** *******************************论文正文****************************** *********************************************************************一、正弦波发生电路正弦波发生电路需要四部分:放大电路:保证电路能够有从起振到动态平衡的过程,使电路获得一定幅值的输出量,实现能量的控制。
基于单片机正弦波有效值的测量一.简介本作品以单片机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.02V2.分档设计由于直接对信号测量时,对小信号的测量产生很大的误差,为了更有效的利用单片机的资源,故要对待测信号进行分档处理,但在实际运行中,由于进入放大器之前存在大量电阻产生了很多的噪声干扰,使输出波形严重失真,不能有效的利用,故我们舍弃了该部分的电路。
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.正弦波有效值的测量方法工频正弦电压信号)2sin(2)2sin()(ϕπϕπ+=+=ft U ft U t u mt频率f 和初相位角ψ已知,且ψ=0,现以t=0时可作为基准时间,并在t=0时刻开始进行等间隔采样,共得到正弦波u(t)的N 个测量值(采样数据)u(0),u(1),……,u(N-1),希望利用这N 个测量值来计算正弦波的幅值Um (有效值U )。
设采样周期为T S ,如果不存在噪音,且测量无偏差,则有0)0sin()0(==m U u)2sin()0(S m T f U u ⋅⋅=π……)2sin()(S m T K f U k u ⋅⋅⋅=π……))1(2sin()1(S m T N f U N u ⋅-⋅⋅=-π我们可以设法利用测量值求解出正弦波参数。
实际上,我们的测量存在误差,同时信号存在噪音,因此,对每一个测量信号u(k),它与对应时刻t=k ·T S 的正弦波)2sin()(ft U t u m π=的值)2sin()(s m T k f U t u ⋅⋅⋅=π存在一个误差)(k e ,其中k=0,1,…,N-1。
定义)()2sin()(k u T k f U k e S m -⋅⋅⋅=π为了利用N 个测量值来尽可能准确的计算正弦波幅值Um ,我们定义指标函数为:∑∑-=-=-⋅⋅⋅⋅==102102)]()2sin([)(21)(N k s m N k m k u T k f U k e U πε 它是频率f ,幅值Um ,初相位角ψ的函数。
我们的目的就是求频率f ,幅值Um ,初相位角ψ使得目标函数ε最小。
为此,令)1(0)2sin()()2(sin )}2sin()]()2sin({[)(101021-------------------------------------------------=⋅⋅⋅⋅-⋅⋅⋅⋅=⋅⋅⋅⋅-⋅⋅⋅⋅=∂∂∑∑∑-=-=-=N k s N k s m N k s S m m m T k f k u T k f U T k f k u T k f U U U ππππε可以得到正弦波的幅值∑∑-=-=⋅⋅⋅⋅⋅⋅⋅=10210)2(sin )2sin()(N k s N k sm T k f T k f k u U ππ 为了与正弦波的真正幅值Um 表示上的区别,用U mC 表示利用N 个采样数据获得的正弦波幅值计算值,既)2()2(sin )2sin()(10210∑∑-=-=⋅⋅⋅⋅⋅⋅⋅=N k s N k smC T k f T k f k u U ππ 对于f ≈50Hz(以前面的测量值为准,这里仅为举例),选择采样周期T S ≈20/200=0.1ms=100us ,既每个周期采样200点(每半个周波100次采样),199,...,1,0)10sin()2sin(=⋅=⋅⋅⋅k k T k f S ππ是确定的(可以预先求出,存于sin 表中),sin 2(2π·f ·k ·T S )同样作为常数表,而且C T k f N k s =⋅⋅⋅∑-=102)2(sinπ本身是一个常数,因此公式(2)变为)3()2sin()(10C T k f k u U N k smC ∑-=⋅⋅⋅⋅=π当采样周期很小时,数值积分系数C 可以用)4()()(sin 1202t d t T C S ωωπ⎰⋅=来替代(可以认为C 是一个周期类的数值积分,当采样周期很小时,就用积分项来表示)。
就可利用N 个等间隔测量值计算出正弦信号的峰值Um 。
正弦波的有效值与峰值的关系)5(2mCC U U半波绝对值电路:在待测交流信号的正半波,输出待测信号送AD 变换电路,在待测信号的负半波,输出0.正半波时,Px.y=0,单片机利用该信号识别是正半波信号,进行AD 转换,获得N 个采样值。
在Px.y=1时,单片机暂停AD 变换,利用正半波获得的N 个检测信号计算正弦波的有效值U ,频率f 。
2.数据测量幅值的测量表1频率的测量表23.数据分析由上图可知在输入信号vpp在0.7v到5v的区域内,实验作品的误差较小能够实现有效值的测量,当频率在100Hz到40KHz时,在误差允许范围内,作品基本能完成对该信号的准确测量。
4.软件部分代码:#include <reg52.h>#include <intrins.h>#define FOSC 12000000L#define BAUD 9600typedef 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.7Vunsigned 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<5;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<=3;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<<2)+ADC_LOW2;if(data_max<ad_average_result)data_max=ad_average_result; }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不能大于1if (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不能大于1while (DData[ListLength]) //若到达字串尾则退出{if (X <= 0xF) //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周过去了,我们的实习也将步入结束。