電壓有效值檢波器報告_第1頁
電壓有效值檢波器報告_第2頁
電壓有效值檢波器報告_第3頁
電壓有效值檢波器報告_第4頁
電壓有效值檢波器報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

-.z.數(shù)字式電壓真有效值檢波器摘要:本設(shè)計以MSP430F149單片機為核心,采用數(shù)字式真有效值檢測方法對任意波形的有效值進展準確測量。前端信號處理電路包括由運放組成的大信號信號衰減電路,由AD7533和OP27組成的可編程放大器對小信號進展放大,由運放組成的絕對值電路,經(jīng)過處理后的信號輸入MSP430的AD轉(zhuǎn)換端口和頻率捕捉測量端口,利用軟件進展頻率測量和信號采集、峰值、有效值的計算,并利用12864液晶對信號頻率、峰值、信號類型、有效值進展顯示。硬件局部方案綜述:測量交流信號有效值最常用的是平均值響應(yīng)方法。其測量原理是利用平均值A(chǔ)C/DC轉(zhuǎn)換器獲得平均值電壓V,再根據(jù)正弦波有效值與平均值確實定關(guān)系,得到被測信號的有效值VRMS。但是這種方法僅適用于不失真的正弦波,假設(shè)被測信號存在失真,或者為方波、矩形波、三角波、鋸齒波等非正弦波形這種方法就不再成立。而真有效值法在理論上可以求取任意波形信號的真有效值。真有效值的定義式為:(1),經(jīng)離散化處理并簡化為:(2)對于不同畸變率的正弦波,如果N取足夠大,一般取N=2k,k=1,2,…就能保證準確測量。一、方案選擇:方案一:模擬有效值檢波器。由交流信號有效值公式(1)可知,有效值檢波器應(yīng)當首先把輸人的瞬時電壓平方,然后在一定平均時間內(nèi)取平均值再開方,再在電表上指示輸人信號的均方根值。用模擬乘法器來實現(xiàn)平方器,后繼一個運放組成的積分器或RC電路進展平均值運算,再用一個乘法器進展開根號運算以組成有效值檢波器,假設(shè)用高質(zhì)量乘法器和平方根器,則系統(tǒng)誤差可以降低至滿量程的±0.1%。利用此方法,還可以實現(xiàn)出色的帶寬和高速精度。圖1.模擬真有效值檢波器原理圖方案二:數(shù)字式有效值檢波器由A/D轉(zhuǎn)換器、數(shù)字信號處理器二大局部組成。A/D轉(zhuǎn)換器把交流信號轉(zhuǎn)換成數(shù)字信號,送入數(shù)字信號處理器后,再按有效值的計算公式算出有效值,可見有效值的性能取決于A/D的性能。A/D的最主要指標有位數(shù)和轉(zhuǎn)換速度,AD的位數(shù)又和檢波器的線性工作范圍和精度有關(guān),數(shù)字式有效值檢波器是按照有效值計算公式設(shè)計的,它受溫度的影響很小,其帶寬由A/D采樣的速度所決定,只要輸人信號的頻率小于A/D采樣頻率的一半,就可以得出準確的有效值能。圖2.數(shù)字有效值檢波器原理圖綜合分析,由于方案一硬件電路相對復(fù)雜,電路板的制作、焊接、調(diào)試等工作量大,而且精度不容易保證,而方案二的數(shù)字式有效值檢波器有如下優(yōu)點:1、線性工作范圍大,且隨A/D的位數(shù)提高而提高2、穩(wěn)定性好,溫度變化影響小3、可以同時顯示信號的有效值、峰值、峰峰值。又考慮到可以采用MSP430內(nèi)部的12位AD進展數(shù)模轉(zhuǎn)換,精度高,而且轉(zhuǎn)換速率高,減少硬件電路,節(jié)省本錢。故采用方案二。二、AD轉(zhuǎn)換器的選擇方案一:采用MSP430內(nèi)部AD。內(nèi)部AD的主要特點是:12位高精度,大于200ksps的采樣率,軟件設(shè)定采樣保持時間,參考電壓軟件可編程,ADC核和參考電壓模塊可以獨立關(guān)閉,便于控制。方案二:采用外部AD轉(zhuǎn)換器AD7810。AD7810是美國模擬器件公司〔AnalogDevices〕生產(chǎn)的一種低功耗10位高速串行A/D轉(zhuǎn)換器。該產(chǎn)品有8腳DIP和SOIC兩種封裝形式,并帶有內(nèi)部時鐘。它的外圍接線極其簡單,AD7810的轉(zhuǎn)換時間為2μs,采用標準SPI同步串行接口輸出和單一電源〔2.7V~5.5V〕供電。在自動低功耗模式下,該器件在轉(zhuǎn)換吞吐率為1kSPS時的功耗僅為27μW,因此特點適合于便攜式儀表及各種電池供電的應(yīng)用場合使用。方案最初選擇方案二,但是在調(diào)試AD7810的過程中,發(fā)現(xiàn)AD始終不工作,在經(jīng)過了屢次調(diào)試失敗后,最終選擇方案一。三、信號前端處理處理因為輸入到MSP430單片機的信號電壓值必須限制到0~3V,所以要采用必要的前端處理電路對信號進展衰減、放大、取絕對值運算,使輸入到MSP430單片機的信號滿足幅值要求。方案一:采用多路反應(yīng)電阻加模擬開關(guān)選擇的方式,對信號進展處理。優(yōu)點是可以根據(jù)需要靈活的對輸入信號放大或者衰減,只需改變反應(yīng)電阻阻值即可。但是由于反應(yīng)電阻阻值不連續(xù)和模擬開關(guān)的導(dǎo)通電阻不確定造成放大倍數(shù)或者衰減倍數(shù)很難準確的到達設(shè)定值。方案二:采用T型電阻網(wǎng)絡(luò)DA轉(zhuǎn)換器AD7533加運放OP27組成可編程電壓放大器,由于DA內(nèi)部電阻阻值準確,且放大倍數(shù)容易由單片機端口進展控制。本設(shè)計采用方案二,如果輸入信號電壓峰值在2V以下,經(jīng)過絕對值處理后,由MSP430單片機的AD直接對未經(jīng)處理的小信號進展采樣,如果輸入信號大于2V,采用另一個量程,先對信號衰減1/3,經(jīng)過絕對值處理后再輸入MSP430單片機的AD端口進展采樣,采樣信號存在數(shù)組中,然后找出采樣信號峰值,由單片機端口輸出適宜電平,將信號放大至需要的倍數(shù),從而構(gòu)成一個閉環(huán)控制系統(tǒng),提高前端信號處理電路的準確性和穩(wěn)定性。圖3.大信號衰減及小信號放大電路四、信號正值化因為輸入到單片機AD的信號不能有負值。所以采用絕對值電路對信號進展正值化處理。方案一:利用運放組成的加法電路在輸入信號上疊加一個正的直流信號,但是由于輸入交流信號的幅值不可事先預(yù)知,所以疊加的直流信號的大小不好確定。而且疊加直流信號后信號有效值發(fā)生變化,使測量引入誤差。方案二:利用運放組成的絕對值電路進展正值化,絕對值電路與輸入信號的極性,幅值無關(guān),并且交流信號取絕對值后有效值不發(fā)生變化,所以采用方案二。圖4.絕對值電路五、電源穩(wěn)壓模塊:運放和DA工作需要穩(wěn)定的電源,所以采用三端穩(wěn)壓器件L7809和L7909產(chǎn)生穩(wěn)定的正負9V電源,整個電路板采用正負9V供電,簡化了電源模塊的設(shè)計。圖5.正負9V穩(wěn)壓模塊六、顯示模塊采用12864液晶進展顯示。12864是一種圖形點陣液晶顯示器,它主要由行驅(qū)動器/列驅(qū)動器及128(行)×64(列)全點陣液晶顯示器組成.可完成圖形顯示,也可以顯示8×4個(16×16點陣)漢字.與CPU接口采用8位數(shù)據(jù)總線并行輸入輸出和8條控制線,七種指令,便于單片機控制。七、器件選擇在可編程放大模塊和絕對值模塊用到的運放都采用OP27.OP27是低噪聲,精細運放,失調(diào)電壓小,轉(zhuǎn)換速率快、共模抑制比高,頻率特性好,各參數(shù)均適合本設(shè)計。DA采用AD7533,AD7533是一款低本錢、低功耗、10位、四象限乘法DAC。AD7533能夠與TTL或CMOS直接接口,方便與MSP430的接口設(shè)計,采用5V至15V電源供電,并且基準電壓輸入可以為正極性或負極性,因此應(yīng)用非常靈活。軟件局部軟件編程思路:關(guān)閉看門狗,初始化系統(tǒng)時鐘,初始化LCD,初始化定時器A和AD關(guān)閉看門狗,初始化系統(tǒng)時鐘,初始化LCD,初始化定時器A和ADAD采樣端口輸入信號,取得輸入信號峰值,確定端口P3.0~P3.7以及P4.0、P4.1的輸出值,以控制DA可編程放大器放大倍數(shù)放大倍數(shù)。AD采樣端口輸入信號,取得輸入信號峰值,確定端口P3.0~P3.7以及P4.0、P4.1的輸出值,以控制DA可編程放大器放大倍數(shù)放大倍數(shù)。P1.2端口捕捉信號上升沿,記錄定時器初始值并開啟AD轉(zhuǎn)換,結(jié)果存放在大數(shù)組中,P1.2端口再次捕捉信號上升沿,記錄定時器的值,AD停頓轉(zhuǎn)換P1.2端口捕捉信號上升沿,記錄定時器初始值并開啟AD轉(zhuǎn)換,結(jié)果存放在大數(shù)組中,P1.2端口再次捕捉信號上升沿,記錄定時器的值,AD停頓轉(zhuǎn)換根據(jù)兩次定時器的差值和系統(tǒng)時鐘計算出頻率,根據(jù)存放AD采樣結(jié)果大數(shù)組的值,計算信號有效值即求平方,取平均,再開方。根據(jù)兩次定時器的差值和系統(tǒng)時鐘計算出頻率,根據(jù)存放AD采樣結(jié)果大數(shù)組的值,計算信號有效值即求平方,取平均,再開方。將計算出來的頻率、峰值、有效值在12864液晶上進展顯示。將計算出來的頻率、峰值、有效值在12864液晶上進展顯示。附錄程序:#include<msp430*14*.h>#defineuintunsignedint#defineucharunsignedchar#defineLCD_CSBIT0#defineLCD_DATBIT1#defineLCD_SCKBIT2#defineWRBIT2#defineRSBIT1//與LCD顯示有關(guān)的數(shù)據(jù)定義ucharflag=0;//P1.2為頻率捕捉端口,當上升沿觸發(fā)捕捉時,flag置為1.uintstr[2]={0};//當兩次捕捉發(fā)生時,存儲定時器的值floatcount=0;//根據(jù)定時器的差值和系統(tǒng)時鐘計算出信號頻率。uintresults[800]={0};//定義一個大數(shù)組,存儲信號一個周期AD轉(zhuǎn)換值uintad_num=0;//采樣信號點的個數(shù)uintres_ma*=0;//離散采樣信號的最大值floatAD=0;//離散采樣信號最大值對應(yīng)的模擬電壓值floatsum=0;//記錄所有采樣信號對應(yīng)的模擬電壓值的平方和uinttemp=0*03ff;//控制DA放大倍數(shù)的端口值floatbeishu=0;//信號放大倍數(shù)/***********************系統(tǒng)時鐘初始化*********************/voidint_clk(){uchari;BCSCTL1&=~*T2OFF;//翻開*T振蕩器BCSCTL2|=SELM1+SELS;//MCLK8MandSMCLK8Mdo{IFG1&=~OFIFG;//去除振蕩錯誤標志for(i=0;i<100;i++)_NOP();//延時等待}while((IFG1&OFIFG)!=0);//如果標志為1繼續(xù)循環(huán)等待IFG1&=~OFIFG;}/***********************************************************//*****************************定時器捕捉功能初始化*********************/voidint_cap(){P1SEL=0*04;//選擇P12作為捕捉的輸入端子TACCTL1|=CM0+SCS+CAP+CCIE;//上升沿觸發(fā)捕捉,同步模式、使能中斷TACTL|=TASSEL1+MC1;//選擇SMCLK時鐘作為計數(shù)脈沖,不分頻}/********************************************************************//**********************************延時1ms函數(shù)***********************/voiddelay_1ms(void){uchari;for(i=150;i>0;i--)_NOP();}/********************************************************************//**********************************延時Nms函數(shù)***********************/voiddelay_Nms(uintn){uinti=0;for(i=n;i>0;i--)delay_1ms();}/********************************************************************//***********************LCD時鐘模擬函數(shù)***********************/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指令傳送函數(shù)************************/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初始化函數(shù)***********************/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字符顯示函數(shù)***********************/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浮點數(shù)顯示函數(shù)***********************/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);}/********************************************************************//*******************內(nèi)部AD初始化函數(shù)***********************/int_adc(){P6SEL|=0*02;//選擇AD通道P6.1ADC12CTL0=ADC12ON+MSC+SHT0_2+REF2_5V+REFON;//采樣保持時間為16//個ADC12CLK,參考電壓開啟,選擇2.5VADC12CTL1=SHP+CONSEQ_2;//單通道屢次轉(zhuǎn)換模式ADC12MCTL0=SREF_1+INCH_1;//ref+=REF2_5V,channel=A1ADC12IE=0*01;//使能轉(zhuǎn)換中斷ADC12CTL0|=ENC;//使能AD轉(zhuǎn)換器}/********************************************************************//*********************求采樣點最大值函數(shù)***************************/ad_ma*(){uintorder=0;for(order=0;order<800;order++){if(results[order]>res_ma*)res_ma*=results[order];}}/********************************************************************//********************************************************************//********************控制DA的端口初始化函數(shù)**********************/int_port(){P3SEL=0;P4SEL&=!(BIT0+BIT1);P3DIR|=0*ff;P4DIR|=BIT0+BIT1;P3OUT|=0*ff;P4OUT|=BIT0+BIT1;}/********************************************************************//******************DA組成的可編程放大器放大倍數(shù)控制函數(shù)**********************/DA_ctr(){ADC12CTL0|=ADC12SC;ADC12CTL0&=~ADC12SC;//開啟轉(zhuǎn)換while(1){if(ad_num>=750){_DINT();ad_ma*();//求峰值函數(shù)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;}}}/********************************************************************//**********************顯示可編程放大器放大倍數(shù)函數(shù)********************/show_beishu(){dispString(3,0,"倍數(shù)");print_float(1024.0/temp);delay_Nms(200);}/********************************************************************//**********************信號頻率顯示函數(shù)********************/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);}/********************************************************************//******************電壓峰值計算及顯示函數(shù)******************************/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;}/********************************************************************//*****************采樣點數(shù)顯示函數(shù),用于過程中測試**********************/show_samp_num(){dispString(2,0,"采樣點");//顯示采樣點數(shù)inport(0*01,':');print_float(ad_num);delay_Nms(200);}/********************************************************************//********************電壓有效值顯示函數(shù)**********************/show_ad_rms(){dispString(3,0,"有效值");//顯示電壓有效值inport(0*01,':');print_float(sum/beishu);delay_Nms(200);}/********************************************************************//********************AD中斷函數(shù)************************/#pragmavector=ADC_VECTOR__interruptvoidADC12ISR(void){ad_num++;results[ad_num]=ADC12MEM0;//讀取A0轉(zhuǎn)換結(jié)果inport(0*00,0*80);}/********************************************************************//*******************定時器A捕捉控制函數(shù)******************************/#pragmavector=TIMERA1_VECTOR__interruptvoidTimer_A(void)//中斷效勞程序{switch(TAIV){case2:{flag=1;break;}//置捕捉標志為1case4:break;case10:break;}}/********************************************************************//*************************主函數(shù)******************************/voidmain(){ucharnum=0;WDTCTL=WDTPW+WDTH

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論