电压有效值检波器报告_第1页
电压有效值检波器报告_第2页
电压有效值检波器报告_第3页
电压有效值检波器报告_第4页
电压有效值检波器报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.数字式电压真有效值检波器摘要:本设计以MSP430F149单片机为核心,采用数字式真有效值检测方法对任意波形的有效值进展准确测量。前端信号处理电路包括由运放组成的大信号信号衰减电路,由AD7533和OP27组成的可编程放大器对小信号进展放大,由运放组成的绝对值电路,经过处理后的信号输入MSP430的AD转换端口和频率捕捉测量端口,利用软件进展频率测量和信号采集、峰值、有效值的计算,并利用12864液晶对信号频率、峰值、信号类型、有效值进展显示。硬件局部方案综述:测量交流信号有效值最常用的是平均值响应方法。其测量原理是利用平均值AC/DC转换器获得平均值电压V,再根据正弦波有效值与平均值确实定关系,得到被测信号的有效值VRMS。但是这种方法仅适用于不失真的正弦波,假设被测信号存在失真,或者为方波、矩形波、三角波、锯齿波等非正弦波形这种方法就不再成立。而真有效值法在理论上可以求取任意波形信号的真有效值。真有效值的定义式为:(1),经离散化处理并简化为:(2)对于不同畸变率的正弦波,如果N取足够大,一般取N=2k,k=1,2,…就能保证准确测量。一、方案选择:方案一:模拟有效值检波器。由交流信号有效值公式(1)可知,有效值检波器应当首先把输人的瞬时电压平方,然后在一定平均时间内取平均值再开方,再在电表上指示输人信号的均方根值。用模拟乘法器来实现平方器,后继一个运放组成的积分器或RC电路进展平均值运算,再用一个乘法器进展开根号运算以组成有效值检波器,假设用高质量乘法器和平方根器,则系统误差可以降低至满量程的±0.1%。利用此方法,还可以实现出色的带宽和高速精度。图1.模拟真有效值检波器原理图方案二:数字式有效值检波器由A/D转换器、数字信号处理器二大局部组成。A/D转换器把交流信号转换成数字信号,送入数字信号处理器后,再按有效值的计算公式算出有效值,可见有效值的性能取决于A/D的性能。A/D的最主要指标有位数和转换速度,AD的位数又和检波器的线性工作范围和精度有关,数字式有效值检波器是按照有效值计算公式设计的,它受温度的影响很小,其带宽由A/D采样的速度所决定,只要输人信号的频率小于A/D采样频率的一半,就可以得出准确的有效值能。图2.数字有效值检波器原理图综合分析,由于方案一硬件电路相对复杂,电路板的制作、焊接、调试等工作量大,而且精度不容易保证,而方案二的数字式有效值检波器有如下优点:1、线性工作范围大,且随A/D的位数提高而提高2、稳定性好,温度变化影响小3、可以同时显示信号的有效值、峰值、峰峰值。又考虑到可以采用MSP430内部的12位AD进展数模转换,精度高,而且转换速率高,减少硬件电路,节省本钱。故采用方案二。二、AD转换器的选择方案一:采用MSP430内部AD。内部AD的主要特点是:12位高精度,大于200ksps的采样率,软件设定采样保持时间,参考电压软件可编程,ADC核和参考电压模块可以独立关闭,便于控制。方案二:采用外部AD转换器AD7810。AD7810是美国模拟器件公司〔AnalogDevices〕生产的一种低功耗10位高速串行A/D转换器。该产品有8脚DIP和SOIC两种封装形式,并带有内部时钟。它的外围接线极其简单,AD7810的转换时间为2µs,采用标准SPI同步串行接口输出和单一电源〔2.7V~5.5V〕供电。在自动低功耗模式下,该器件在转换吞吐率为1kSPS时的功耗仅为27µW,因此特点适合于便携式仪表及各种电池供电的应用场合使用。方案最初选择方案二,但是在调试AD7810的过程中,发现AD始终不工作,在经过了屡次调试失败后,最终选择方案一。三、信号前端处理处理因为输入到MSP430单片机的信号电压值必须限制到0~3V,所以要采用必要的前端处理电路对信号进展衰减、放大、取绝对值运算,使输入到MSP430单片机的信号满足幅值要求。方案一:采用多路反应电阻加模拟开关选择的方式,对信号进展处理。优点是可以根据需要灵活的对输入信号放大或者衰减,只需改变反应电阻阻值即可。但是由于反应电阻阻值不连续和模拟开关的导通电阻不确定造成放大倍数或者衰减倍数很难准确的到达设定值。方案二:采用T型电阻网络DA转换器AD7533加运放OP27组成可编程电压放大器,由于DA内部电阻阻值准确,且放大倍数容易由单片机端口进展控制。本设计采用方案二,如果输入信号电压峰值在2V以下,经过绝对值处理后,由MSP430单片机的AD直接对未经处理的小信号进展采样,如果输入信号大于2V,采用另一个量程,先对信号衰减1/3,经过绝对值处理后再输入MSP430单片机的AD端口进展采样,采样信号存在数组中,然后找出采样信号峰值,由单片机端口输出适宜电平,将信号放大至需要的倍数,从而构成一个闭环控制系统,提高前端信号处理电路的准确性和稳定性。图3.大信号衰减及小信号放大电路四、信号正值化因为输入到单片机AD的信号不能有负值。所以采用绝对值电路对信号进展正值化处理。方案一:利用运放组成的加法电路在输入信号上叠加一个正的直流信号,但是由于输入交流信号的幅值不可事先预知,所以叠加的直流信号的大小不好确定。而且叠加直流信号后信号有效值发生变化,使测量引入误差。方案二:利用运放组成的绝对值电路进展正值化,绝对值电路与输入信号的极性,幅值无关,并且交流信号取绝对值后有效值不发生变化,所以采用方案二。图4.绝对值电路五、电源稳压模块:运放和DA工作需要稳定的电源,所以采用三端稳压器件L7809和L7909产生稳定的正负9V电源,整个电路板采用正负9V供电,简化了电源模块的设计。图5.正负9V稳压模块六、显示模块采用12864液晶进展显示。12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128(行)×64(列)全点阵液晶显示器组成.可完成图形显示,也可以显示8×4个(16×16点阵)汉字.与CPU接口采用8位数据总线并行输入输出和8条控制线,七种指令,便于单片机控制。七、器件选择在可编程放大模块和绝对值模块用到的运放都采用OP27.OP27是低噪声,精细运放,失调电压小,转换速率快、共模抑制比高,频率特性好,各参数均适合本设计。DA采用AD7533,AD7533是一款低本钱、低功耗、10位、四象限乘法DAC。AD7533能够与TTL或CMOS直接接口,方便与MSP430的接口设计,采用5V至15V电源供电,并且基准电压输入可以为正极性或负极性,因此应用非常灵活。软件局部软件编程思路:关闭看门狗,初始化系统时钟,初始化LCD,初始化定时器A和AD关闭看门狗,初始化系统时钟,初始化LCD,初始化定时器A和ADAD采样端口输入信号,取得输入信号峰值,确定端口P3.0~P3.7以及P4.0、P4.1的输出值,以控制DA可编程放大器放大倍数放大倍数。AD采样端口输入信号,取得输入信号峰值,确定端口P3.0~P3.7以及P4.0、P4.1的输出值,以控制DA可编程放大器放大倍数放大倍数。P1.2端口捕捉信号上升沿,记录定时器初始值并开启AD转换,结果存放在大数组中,P1.2端口再次捕捉信号上升沿,记录定时器的值,AD停顿转换P1.2端口捕捉信号上升沿,记录定时器初始值并开启AD转换,结果存放在大数组中,P1.2端口再次捕捉信号上升沿,记录定时器的值,AD停顿转换根据两次定时器的差值和系统时钟计算出频率,根据存放AD采样结果大数组的值,计算信号有效值即求平方,取平均,再开方。根据两次定时器的差值和系统时钟计算出频率,根据存放AD采样结果大数组的值,计算信号有效值即求平方,取平均,再开方。将计算出来的频率、峰值、有效值在12864液晶上进展显示。将计算出来的频率、峰值、有效值在12864液晶上进展显示。附录程序:#include<msp430*14*.h>#defineuintunsignedint#defineucharunsignedchar#defineLCD_CSBIT0#defineLCD_DATBIT1#defineLCD_SCKBIT2#defineWRBIT2#defineRSBIT1//与LCD显示有关的数据定义ucharflag=0;//P1.2为频率捕捉端口,当上升沿触发捕捉时,flag置为1.uintstr[2]={0};//当两次捕捉发生时,存储定时器的值floatcount=0;//根据定时器的差值和系统时钟计算出信号频率。uintresults[800]={0};//定义一个大数组,存储信号一个周期AD转换值uintad_num=0;//采样信号点的个数uintres_ma*=0;//离散采样信号的最大值floatAD=0;//离散采样信号最大值对应的模拟电压值floatsum=0;//记录所有采样信号对应的模拟电压值的平方和uinttemp=0*03ff;//控制DA放大倍数的端口值floatbeishu=0;//信号放大倍数/***********************系统时钟初始化*********************/voidint_clk(){uchari;BCSCTL1&=~*T2OFF;//翻开*T振荡器BCSCTL2|=SELM1+SELS;//MCLK8MandSMCLK8Mdo{IFG1&=~OFIFG;//去除振荡错误标志for(i=0;i<100;i++)_NOP();//延时等待}while((IFG1&OFIFG)!=0);//如果标志为1继续循环等待IFG1&=~OFIFG;}/***********************************************************//*****************************定时器捕捉功能初始化*********************/voidint_cap(){P1SEL=0*04;//选择P12作为捕捉的输入端子TACCTL1|=CM0+SCS+CAP+CCIE;//上升沿触发捕捉,同步模式、使能中断TACTL|=TASSEL1+MC1;//选择SMCLK时钟作为计数脉冲,不分频}/********************************************************************//**********************************延时1ms函数***********************/voiddelay_1ms(void){uchari;for(i=150;i>0;i--)_NOP();}/********************************************************************//**********************************延时Nms函数***********************/voiddelay_Nms(uintn){uinti=0;for(i=n;i>0;i--)delay_1ms();}/********************************************************************//***********************LCD时钟模拟函数***********************/ucharSyNCH=0*fe;//LCD显示同步字voidget_clk(){P3DIR|=LCD_SCK;_NOP();P3OUT&=~LCD_SCK;_NOP();_NOP();_NOP();_NOP();_NOP();P3OUT|=LCD_SCK;_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();}/********************************************************************//***************************LCD指令传送函数************************/voidinport(uchar,uchardat)//=1,rs=1,=0,rs=0;{uchari,temp;P3DIR|=LCD_DAT;P3DIR|=LCD_CS;P3OUT|=LCD_CS;temp=SyNCH;temp&=~WR;if()temp|=RS;elsetemp&=~RS;for(i=0;i<=7;i++){if((temp<<i)&0*80)P3OUT|=LCD_DAT;elseP3OUT&=~LCD_DAT;get_clk();}delay_Nms(600);temp=dat&0*f0;for(i=0;i<=7;i++){if((temp<<i)&0*80)P3OUT|=LCD_DAT;elseP3OUT&=~LCD_DAT;get_clk();}delay_Nms(200);temp=dat&0*0f;temp=temp<<4;for(i=0;i<=7;i++){if((temp<<i)&0*80)P3OUT|=LCD_DAT;elseP3OUT&=~LCD_DAT;get_clk();}delay_Nms(200);P3OUT|=LCD_DAT;P3OUT&=~LCD_CS;}/********************************************************************//**************************LCD初始化函数***********************/voidint_lcd(){inport(0*00,0*30);inport(0*00,0*01);inport(0*00,0*02);inport(0*00,0*0c);inport(0*00,0*06);}/********************************************************************//************************LCD字符显示函数***********************/voiddispString(uchar*,uchary,uchar*msg)//*为哪一行,y为哪一列。msg为汉字{if(*==0)*=0*80;elseif(*==1)*=0*90;elseif(*==2)*=0*88;else*=0*98;y=*+y;inport(0*00,y);while(*msg){inport(0*01,*msg++);}}/********************************************************************//************************LCD浮点数显示函数***********************/print_float(floatdata){uinttemp;floata;uchara0,a1,a2,a3,a4,a5,a6,a7;temp=data;a=data-temp;a0=temp/10000;a1=(temp-a0*10000)/1000;a2=(temp-a0*10000-a1*1000)/100;temp=(temp-a0*10000-a1*1000)-a2*100;a3=temp/10;a4=temp%10;temp=a*1000;a5=(temp)/100;temp=temp-a5*100;a6=temp/10;a7=temp%10;inport(0*01,a0+0*30);inport(0*01,a1+0*30);inport(0*01,a2+0*30);inport(0*01,a3+0*30);inport(0*01,a4+0*30);inport(0*01,'.');inport(0*01,a5+0*30);inport(0*01,a6+0*30);inport(0*01,a7+0*30);}/********************************************************************//*******************内部AD初始化函数***********************/int_adc(){P6SEL|=0*02;//选择AD通道P6.1ADC12CTL0=ADC12ON+MSC+SHT0_2+REF2_5V+REFON;//采样保持时间为16//个ADC12CLK,参考电压开启,选择2.5VADC12CTL1=SHP+CONSEQ_2;//单通道屡次转换模式ADC12MCTL0=SREF_1+INCH_1;//ref+=REF2_5V,channel=A1ADC12IE=0*01;//使能转换中断ADC12CTL0|=ENC;//使能AD转换器}/********************************************************************//*********************求采样点最大值函数***************************/ad_ma*(){uintorder=0;for(order=0;order<800;order++){if(results[order]>res_ma*)res_ma*=results[order];}}/********************************************************************//********************************************************************//********************控制DA的端口初始化函数**********************/int_port(){P3SEL=0;P4SEL&=!(BIT0+BIT1);P3DIR|=0*ff;P4DIR|=BIT0+BIT1;P3OUT|=0*ff;P4OUT|=BIT0+BIT1;}/********************************************************************//******************DA组成的可编程放大器放大倍数控制函数**********************/DA_ctr(){ADC12CTL0|=ADC12SC;ADC12CTL0&=~ADC12SC;//开启转换while(1){if(ad_num>=750){_DINT();ad_ma*();//求峰值函数if(res_ma*>3500)temp=0*03ff;elseif(res_ma*<200)temp=res_ma*/4;elsetemp=res_ma*/3.2;beishu=1024.0/temp;P3OUT=(temp&0*00ff);P4OUT=((temp>>8)&0*0003);ad_num=0;res_ma*=0;break;}}}/********************************************************************//**********************显示可编程放大器放大倍数函数********************/show_beishu(){dispString(3,0,"倍数");print_float(1024.0/temp);delay_Nms(200);}/********************************************************************//**********************信号频率显示函数********************/show_pinlv(){inport(0*00,0*01);inport(0*00,0*80);print_float(count);inport(0*01,'H');inport(0*01,'Z');delay_Nms(200);}/********************************************************************//******************电压峰值计算及显示函数******************************/show_ad_ma*(){AD=(res_ma**2.5/4095.0);//显示电压峰值dispString(1,0,"峰值");inport(0*01,':');print_float(AD/beishu);inport(0*01,'V');delay_Nms(200);AD=0;}/********************************************************************//*****************采样点数显示函数,用于过程中测试**********************/show_samp_num(){dispString(2,0,"采样点");//显示采样点数inport(0*01,':');print_float(ad_num);delay_Nms(200);}/********************************************************************//********************电压有效值显示函数**********************/show_ad_rms(){dispString(3,0,"有效值");//显示电压有效值inport(0*01,':');print_float(sum/beishu);delay_Nms(200);}/********************************************************************//********************AD中断函数************************/#pragmavector=ADC_VECTOR__interruptvoidADC12ISR(void){ad_num++;results[ad_num]=ADC12MEM0;//读取A0转换结果inport(0*00,0*80);}/********************************************************************//*******************定时器A捕捉控制函数******************************/#pragmavector=TIMERA1_VECTOR__interruptvoidTimer_A(void)//中断效劳程序{switch(TAIV){case2:{flag=1;break;}//置捕捉标志为1case4:break;case10:break;}}/********************************************************************//*************************主函数******************************/voidmain(){ucharnum=0;WDTCTL=WDTPW+WDTH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论