版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于單片機正弦波有效值的測量 一簡介本作品以單片機STC12C5A60S2為主控芯片并以此為基礎(chǔ),通過二極管1N5819實現(xiàn)半波整流,使用單片機內(nèi)部自帶10位AD對整流后的輸入信號進行采樣,從而實現(xiàn)對峰值的檢測;同時通過運放LM837對輸入信號進行放大,之后通過施密特觸發(fā)器,將原始信號整形成可被單片機識別的標(biāo)準(zhǔn)脈沖波形,之后配合內(nèi)部計數(shù)器(定時器)達到測量其頻率的目的;這樣,整流和AD采樣實現(xiàn)對輸入信號峰值的檢測;通過放大、整形實現(xiàn)對輸入信號頻率的檢測。二基本功能與技術(shù)指標(biāo)要求(1)輸入交流電壓:1mV50V,分五檔: 1mV20mV, 20mV200mV, 200mV2V, 2V20V, 2
2、0v50V。(2)正弦頻率;1Hz100kHz;(3)檢測誤差:2%;(4)具有檢測啟動按鈕和停止按鈕,按下啟動按鈕開始檢測,按下停止按鈕停止檢測;(5)顯示方式:數(shù)字顯示當(dāng)前檢測的有效是,在停止檢測狀態(tài)下,顯示最后一次檢測到的有效值;(6)顯示:LCD,顯示分辨率:每檔滿量程的0.1%;三理論分析本文要求輸入交流信號,通過電路測量其峰值,頻率,有效值以及平均值,因為輸入的交流信號為模擬信號,而一般處理數(shù)據(jù)使用的主控芯片單片機處理的是數(shù)字信號,所以我們選擇使用數(shù)模轉(zhuǎn)換器AD(Analog to Digital Converter)將輸入的模擬信號轉(zhuǎn)換為數(shù)字信號,并進行采樣;由于要求輸入交流信號
3、電壓峰峰值Vpp為50mV10V,所以如果我們采用AD為8位,則最小采樣精度為528-119.6mv,因此會產(chǎn)生78.4%的誤差,并且題目要求輸入交流信號的頻率范圍為40Hz50kHz,所以為了保證對高頻率信號的單周期內(nèi)采樣個數(shù),我們需要選擇盡量高速度的AD;因此我們選用使用單片機STC12C5A60S2,其內(nèi)部自帶AD為8路10位最高速度可達到250KHz,所以我們可以將最小采樣精度縮小到5210-14.87mv,并且在輸入交流信號頻率最大時(50KHz)在單個周期內(nèi)可采集5個點,因此可保證測量精度。由于該AD只能接受05V的模擬信號輸入,所以當(dāng)我們直接輸入一個雙極性信號時可能損壞AD,因此
4、當(dāng)信號進入AD之前我們要進行半波整流,為此我們設(shè)計了整流電路,在交流信號通過整流電路輸入AD后,由AD實時輸出對應(yīng)模擬信號大小的二進制數(shù),并存入變量MAX中,隨著信號的不斷輸入MAX中只保存AD輸出過的最大值,這樣既可測出輸入信號的峰值;由交流信號有效值表達式 U有效=1Ni=1Nui2可知檢波器應(yīng)當(dāng)首先把輸入的瞬時電壓平方, 然后在一定平均時間內(nèi)取平均值再開方。即可得到交流信號的有效值,然后通過比較峰值和有效值的關(guān)系即可知道該交流信號的波形;由于要檢測交流信號的頻率,所以我們使用單片機內(nèi)部定時器和計數(shù)器,而計數(shù)器只能由上升沿或是下降沿觸發(fā),所以我們想通過施密特觸發(fā)器將輸入交流信號變?yōu)楦叩碗娖?/p>
5、,以便檢測其頻率,而施密特觸發(fā)器CD40106在常溫5V供電下門限電壓VT-=1.4V,VT+=3.6V,而輸入交流信號的峰值最小時為25mV,所以不能保證輸入信號為正的時候施密特觸發(fā)器就能發(fā)生跳變,因此我們要對輸入交流信號進行放大,為此我們設(shè)計了放大電路。四.電路設(shè)計1.電源電路的設(shè)計本次實驗我們采用+5V,5V,+12V,12V的電源,故采用了7805,7905,7812,7912這四塊芯片組成電源電路對作品進行供電。如圖一所示:圖一經(jīng)過測量實際輸出電壓為:+5.12V -5.06V +12.67V -12.02V2分檔設(shè)計由于直接對信號測量時,對小信號的測量產(chǎn)生很大的誤差,為了更有效的利
6、用單片機的資源,故要對待測信號進行分檔處理,但在實際運行中,由于進入放大器之前存在大量電阻產(chǎn)生了很多的噪聲干擾,使輸出波形嚴(yán)重失真,不能有效的利用,故我們舍棄了該部分的電路。 3整流電路的設(shè)計我們使用整流二極管5819實現(xiàn)半波整流,但通過此電路輸出波形會出現(xiàn)一個負(fù)電壓,因此在此基礎(chǔ)上,我們在二極管后加了一個上拉電阻,實現(xiàn)最大程度的消除輸入波形的負(fù)電壓,使其在單片機STC12C5A60S2內(nèi)部AD的可接收信號范圍內(nèi)(0-5V)。輸入信號經(jīng)過整流后進入AD,由AD輸出10位數(shù)字信號,再有單片機進行處理,得出信號的有效值。電路如圖二所示:圖二在實際的測試中,證明該方案可行,能夠?qū)崿F(xiàn)對信號的半波整流處
7、理。4正弦波轉(zhuǎn)方波電路設(shè)計在該電路的設(shè)計中,我們一開始采用555芯片把正弦波轉(zhuǎn)換為方波,但在實際的測試中發(fā)現(xiàn)555只能對高于6V的信號才能使正弦波轉(zhuǎn)換為放波,與我們實習(xí)要求不符合,故舍棄了該方案。在老師的指導(dǎo)下,我們采用了滯回比較器來產(chǎn)生方波。本方案檢測輸入信號頻率的核心電路,信號通過由三個運放LM324組成的運放電路后放大100倍,然后輸入施密特觸發(fā)器使其波形變?yōu)楦叩碗娖?,將此波形輸入到單片機主控芯片,利用單片機內(nèi)部的計數(shù)器和定時器完成對頻率的測量。大部分采用運放LM324構(gòu)成放大100倍電路,位于圖下方由5V電源供電的運放可以產(chǎn)生一個2.5V的直流電壓,將此2.5V的直流電壓輸入到第一級運
8、放后,會使輸入的交流信號上偏2.5V,變?yōu)?-5V,再經(jīng)過100000pF的電容C3濾掉被放大的噪聲以及2.5V直流后,變?yōu)?2.5+2.5的交流信號,之后進入二級放大;如圖所示第二級運放在加入+2.5V直流電壓后輸出為05V的交流信號,至此外加交流信號已被放大100倍;在外加交流信號被放大100倍之后進入施密特觸發(fā)器CD40106,該觸發(fā)器在常溫5V供電下門限電壓 =1.4V ,輸出高電平 ,低電平 , 此部分電路輸出即為這個高低電平。電路如圖三所示:圖三在實際的檢測中發(fā)現(xiàn)放大器并不能將信號放大100倍,故幅值較小的信號不能正常顯示頻率,只要當(dāng)信號的峰峰值大于1.5V時才能使單片機正常顯示信
9、號的頻率。5.單片機電路采用STC12C5A60S2單片機,作為整個系統(tǒng)的控制器,控制各個模塊協(xié)調(diào)工作。運用其內(nèi)部集成的一個AD作為數(shù)模轉(zhuǎn)換器。如圖四所示 圖四6.系統(tǒng)整體電路圖如圖五所示圖五四軟件設(shè)計AD流程圖如圖六 圖七所示采樣是否是大于最大值有效值A(chǔ)D采樣輸出有效值將采樣值存入有效值中開始整流后的信號圖六開始定時器1定時0.05us,定時20次計時器0下降沿計數(shù)CD40106整形后的脈沖定時已完成輸出計數(shù)器的計數(shù)圖七1.正弦波有效值的測量方法工頻正弦電壓信號頻率f和初相位角已知,且0,現(xiàn)以t=0時可作為基準(zhǔn)時間,并在t=0時刻開始進行等間隔采樣,共得到正弦波u(t)的N個測量值(采樣數(shù)據(jù)
10、)u(0),u(1),u(N-1),希望利用這N個測量值來計算正弦波的幅值Um(有效值U)。設(shè)采樣周期為TS,如果不存在噪音,且測量無偏差,則有我們可以設(shè)法利用測量值求解出正弦波參數(shù)。實際上,我們的測量存在誤差,同時信號存在噪音,因此,對每一個測量信號u(k),它與對應(yīng)時刻t=k·TS的正弦波的值存在一個誤差,其中k=0,1,N-1。定義為了利用N個測量值來盡可能準(zhǔn)確的計算正弦波幅值Um,我們定義指標(biāo)函數(shù)為:它是頻率f,幅值Um,初相位角的函數(shù)。我們的目的就是求頻率f,幅值Um,初相位角使得目標(biāo)函數(shù)最小。為此,令可以得到正弦波的幅值為了與正弦波的真正幅值Um表示上的區(qū)別,用UmC表示
11、利用N個采樣數(shù)據(jù)獲得的正弦波幅值計算值,既對于f50Hz(以前面的測量值為準(zhǔn),這里僅為舉例),選擇采樣周期TS 20/200=0.1ms=100us,既每個周期采樣200點(每半個周波100次采樣),是確定的(可以預(yù)先求出,存于sin表中),sin2(2·f·k·TS)同樣作為常數(shù)表,而且本身是一個常數(shù),因此公式(2)變?yōu)楫?dāng)采樣周期很小時,數(shù)值積分系數(shù)C可以用來替代(可以認(rèn)為C是一個周期類的數(shù)值積分,當(dāng)采樣周期很小時,就用積分項來表示)。就可利用N個等間隔測量值計算出正弦信號的峰值Um。正弦波的有效值與峰值的關(guān)系半波絕對值電路:在待測交流信號的正半波,輸出待測信號
12、送AD變換電路,在待測信號的負(fù)半波,輸出0.正半波時,Px.y=0,單片機利用該信號識別是正半波信號,進行AD轉(zhuǎn)換,獲得N個采樣值。在Px.y=1時,單片機暫停AD變換,利用正半波獲得的N個檢測信號計算正弦波的有效值U,頻率f。2.數(shù)據(jù)測量幅值的測量輸入幅值vpp(v)54.543532521.51單片機讀數(shù)(v)3.4863.1432.80421522.092174214051.0450.695誤差(%)-1.4-1.3-0.81.3-1.3-1.40.6-1.4-1.7表1頻率的測量被測信號(Hz)1002001K2K5K10K20K30K40K讀值(Hz)9919799920105032
13、10040200563002540034誤差(%)11.50.10.50.60.40.280.0830.08表23.數(shù)據(jù)分析由上圖可知在輸入信號vpp在0.7v到5v的區(qū)域內(nèi),實驗作品的誤差較小能夠?qū)崿F(xiàn)有效值的測量,當(dāng)頻率在100Hz到40KHz時,在誤差允許范圍內(nèi),作品基本能完成對該信號的準(zhǔn)確測量。4.軟件部分代碼:#include <reg52.h> #include <intrins.h>#define FOSC 12000000L#define BAUD 9600typedef unsigned char BYTE;typedef unsigned int WO
14、RD;sbit LCM_E=P25;/定義接口sbit LCM_RW=P26;sbit LCM_RS=P27;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_SPE
15、EDHH 0x60#define LCM_Data P0/數(shù)據(jù)接口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);unsi
16、gned 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);unsi
17、gned int data_max = 0;unsigned long data_max1,count =0;unsigned int data_change = 150;/0.7Vunsigned char code VP4="Amp:",Freq5="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 i
18、nt PrintFre5 ; unsigned int Print4; unsigned int number4;unsigned int D;void main()unsigned int n=0;Delay400Ms();/啟動等待,等LCM講入工作狀態(tài)LCMInit();/LCM初始化Delay5Ms();/延時片刻(可不要)ET1 = 1;EA=1;InitUart();TMOD = 0x15;/均為16位計數(shù)器 TH0 = 0x00;TL0 = 0x00;TH1 = 0x3C;TL1 = 0xAF; TCON = 0x50;/T1,T0均工作,t1做定時器,t0做計數(shù)器; while
19、(1) ADCONVERT(); n+; if(n>10000)data_max=0;n=0;void To_interrupt(void)interrupt 3 using 1int i ,j;unsigned int Change1,Print4; unsigned long int Change2; TH1 = 0x3C; TL1 = 0xAF;Counter = Counter+;if(Counter = 20) Frequency = (TH0<<8)+TL0;/讀取此時計數(shù)器0的讀數(shù) if(Frequency>=2000)Change1 = (Frequen
20、cy/100)*92; else if (Frequency>=200)Change1 = (Frequency/10)*92)/10; else Change1 = (Frequency*97)/100; for( i=0;i<5;i+)PrintFrei = Change1 % 10;Change1 = Change1 / 10; for(i=4;i>=0;i-) if(i>0)DisplayOneChar(4-i,0,PrintFrei+48); elseDisplayOneChar(4-i,0,PrintFrei+48); DisplayListChar(5-i
21、,0,"Hz"); Change2 = data_max*50; Change2 = Change2/10/1.414;for(j=0;j<=3;j+)Printj = Change2 % 10;Change2 = Change2 / 10; for(j=3;j>=0;j-) if(j>0) DisplayOneChar(10-j,0,Printj+48); else DisplayOneChar(10-j,0,Printj+48); DisplayListChar(11-j,0,"mV"); TH1 = 0x3C; TL1 = 0xA
22、F; TH0 = 0xFF; TL0 = 0xFC; Counter = 0; void IO_ADinit() ADC_CONTR=0xe0; /設(shè)置P1.0為輸入AD轉(zhuǎn)換口 _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
23、_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 da
24、t) 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 WC
25、LCM,BuysC) /BuysC為0時忽略忙檢測if (BuysC) ReadStatusLCM(); /根據(jù)需要檢測忙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
26、_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); /三次顯示模式設(shè)置,不檢測忙信號Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /顯示模式設(shè)置,開始要求每次檢測忙信號Write
27、CommandLCM(0x08,1); /關(guān)閉顯示W(wǎng)riteCommandLCM(0x01,1); /顯示清屏WriteCommandLCM(0x06,1); / 顯示光標(biāo)移動設(shè)置WriteCommandLCM(0x0C,1); / 顯示開及光標(biāo)設(shè)置void DisplayOneChar(BYTE X, BYTE Y, BYTE DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1if (Y) X |= 0x40; /當(dāng)要顯示第二行時地址碼 0x40; X += 0x80; / 算出指令碼WriteCommandLCM(X, 0); /這里不檢測
28、忙信號,發(fā)送地址碼WriteDataLCM(DData);void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData)BYTE ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListLength) /若到達字串尾則退出 if (X <= 0xF) /X坐標(biāo)應(yīng)小于0xF DisplayOneChar(X, Y, DDataListLength); /顯示單個字符 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;
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水穩(wěn)基層施工過程中的風(fēng)險防范措施
- 游戲化思維在小學(xué)生醫(yī)療知識普及中的應(yīng)用研究報告
- 2025年國有企業(yè)領(lǐng)導(dǎo)班子創(chuàng)新驅(qū)動發(fā)展報告范文
- 噴射混凝土施工流程的國際標(biāo)準(zhǔn)對比
- 門診急診候診管理制度
- 農(nóng)產(chǎn)品購銷合作協(xié)議
- 2024年科技硬件供應(yīng)采購合同
- 影視制作公司拍攝期間人員傷亡免責(zé)協(xié)議
- 高層建筑外墻涂裝施工方案
- 旅游行業(yè)行程變更客戶賠償協(xié)議
- 充電樁項目運營方案
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(附含答案)
- 高考對聯(lián)題(對聯(lián)知識、高考真題及答案、對應(yīng)練習(xí)題)
- 新版《鐵道概論》考試復(fù)習(xí)試題庫(含答案)
- 【律師承辦案件費用清單】(計時收費)模板
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- Unit1FestivalsandCelebrations詞匯清單高中英語人教版
- 西方經(jīng)濟學(xué)-高鴻業(yè)-筆記
- 2024年上海市中考語文試題卷(含答案)
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 生豬養(yǎng)殖生產(chǎn)過程信息化與數(shù)字化管理
評論
0/150
提交評論