版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、基于AD5933的阻抗測量儀 基于AD5933的阻抗測量儀摘要:設計采用阻抗測量芯片AD5933,以低功耗高性能處理器LUMINARY615作為控制器,利用比例測量,DFT數(shù)字解調(diào),軟件校準和補償?shù)燃夹g實現(xiàn)了對阻抗的高精度測量。通過外接模擬開關并通過軟件設計實現(xiàn)了量程自動轉(zhuǎn)換,并能在不同頻率下進行測量,能通過良好的人機界面來實時控制與顯示。測試結果表明,在一定范圍內(nèi)測量阻抗的幅值相對誤差小于1%,實現(xiàn)了較高精度的阻抗測量。關鍵詞: 阻抗測量 ; AD5933 ;自動量程轉(zhuǎn)換 ;Luminay615目 錄1. 系統(tǒng)設計 1.1 設計要求 1.2 方案比較與論證 1.2.1 系統(tǒng)方案比較與論證 1
2、.2.2 系統(tǒng)方案2. 系統(tǒng)硬件電路設計 2.1 處理器電路設計 2.2 阻抗測量電路設計 2.2.1 AD5933 簡介2.2.2 AD5933工作原理2.2.4 測量電路3.軟件設計 3.1 開發(fā)環(huán)境簡介3.2 I2C通行協(xié)議簡介3.2 軟件設計 4.系統(tǒng)測試 4.1 測試儀器 4.2 測試方法及結果 4.3 誤差分析5.總結6.參考文獻附錄1. 系統(tǒng)設計1.1設計要求要求設計一個較高精度的阻抗測量系統(tǒng),并實現(xiàn)對阻抗的自動測量。1.2方案論證與比較1.2.1系統(tǒng)方案比較與論證方案一:電橋法電橋法是指在橋式電路的某部分施加一電壓,通過調(diào)節(jié)電橋內(nèi)部標準,一直到接于電橋電路中的平衡指示器獲得平衡
3、指示。這時,位于電路未知端的器件和電橋電路的其它元件之間存在確定關系。一般來說,電橋法是傳統(tǒng)阻抗測量中準確度最高方法,特別適于中值阻抗的測量。測量原理如圖1.1所示。圖1.1 電橋電路原理圖 圖1.1中Z1,Z2,Z3,Z4為電橋的四臂的阻抗,E為電橋的信號源,G為電橋的平衡指示器。當電橋橋路平衡時,Uab=0,橋路平衡指示器上無電流流過,根據(jù)基爾霍夫定律,I1=I2,I3=I4,Uca=Ucb,Uad=Ubd。 故I1Z1=I3Z3;I2Z2=I4Z4;以上兩式相比得:Z1/Z2=Z3/Z4。這就是四臂電橋平衡的條件,當橋路中有3個橋臂為已知時,則未知量才可求得。因為阻抗包含電阻分量和電抗分
4、量,在調(diào)節(jié)已知阻抗使電橋達到平衡時,至少需要調(diào)節(jié)兩個。在直流電橋中,因為各臂皆由純電阻組成,故不需要考慮相位問題。對于交流電橋,各臂阻抗都等效為電阻分量和電抗分量。為了使電橋的平衡調(diào)節(jié)簡單化,這兩個調(diào)節(jié)阻抗元件的選擇是非常重要的。最理想的調(diào)節(jié)參數(shù)是能夠分別平衡被測阻抗中的電阻分量和電抗分量。因為阻抗電橋平衡的調(diào)節(jié)和相應的計算極為復雜,所以測量操作繁瑣、費時,且測量范圍受限,這給測量帶來極大不便。方案二:諧振法諧振法是用電感和電容組成的串聯(lián)或并聯(lián)諧振電路,通過電壓表或電流表來確定諧振點,而進行阻抗測量的一種方法。這種方法常用于測量電抗成分與電阻成分之比很大,并組成串聯(lián)或并聯(lián)電路的阻抗。圖1.2為
5、一諧振電路,當被測元件Cx未連接時,電路諧振頻率為: ( C0 為諧振時可調(diào)電容值)圖1.2 諧振法測量阻抗當Cx接入后,保持f值不變,調(diào)節(jié)電容C的值使電路重新諧振,設此時C的值為C2,則Cx=C0-C2諧振法通常是測定回路的參量,而不是單個元件的參量。如果要用諧振法測定單個元件參量,只有在其它回路元件為已知或者它們對于回路的作用可以不予考慮的情況下才能實現(xiàn),所以,諧振法不能用作高準確度阻抗測量,但諧振法具有寬頻帶 (1kHz至1000MHz),操作簡單,適合于高Q元器件測量。方案三:矢量電壓電流法矢量電壓電流法是將測試信號電壓加到被測件,測量信號電流流過被測件,然后由電壓和電流之比計算測試端
6、的阻抗。這種方法可用多端測量結構,在電路中消除殘余阻抗的影響同時測量電路比較簡單、量程寬。電橋電路不需要使用通常的平衡控制,所以便于高速測量且操作容易。其工作原理如圖1.3所示:圖1.3 矢量電壓電流法由精確的電阻R值便可實現(xiàn)阻抗的測量,容易得到下式:以上三種方案各有優(yōu)缺,通過比較,結合設計要求,采用基于矢量電壓電流法的阻抗測量芯片AD5933來實現(xiàn)阻抗測量,能達到高精度,高穩(wěn)定度的要求,且容易實現(xiàn)。1.3 系統(tǒng)方案系統(tǒng)通過Luminary615作為控制器,對AD5933內(nèi)部寄存器讀寫從而控制阻抗測量,外接模擬開關以實現(xiàn)不同量程范圍內(nèi)阻抗的測量。AD5933芯片內(nèi)部集成了內(nèi)置溫度傳感器,數(shù)模轉(zhuǎn)
7、換器和模數(shù)轉(zhuǎn)換器,頻率發(fā)生器.掃描激勵信號通過被測物后,再經(jīng)過放大、濾波、模數(shù)轉(zhuǎn)換,使其變?yōu)閿?shù)字信號后經(jīng)過DFT變換得到阻抗實部值與虛部值,通過與Luminary615進行I2C通信便可實現(xiàn)數(shù)據(jù)處理最終實現(xiàn)阻抗測量。系統(tǒng)設計框圖如圖1.4所示。圖1.4 系統(tǒng)框圖2. 硬件電路設計2.1 處理器電路設計Luminary Micro Stellaris®系列微控制器是首款基于ARM® CortexTM-M3 的控制器,它將高性能的32 位計算引入到對價格敏感的嵌入式微控制器應用中。這些堪稱先鋒的器件,價格與8 位和16 位器件相同,卻能為用戶提供32 位器件的性能,并且所有器件
8、都是以小型封裝的形式提供。Stellaris 系列的LM3S615微控制器擁有ARM 微控制器所具有的眾多優(yōu)點,如擁有廣泛使用的開發(fā)工具,片上系統(tǒng)(SoC)的底層結構IP 的應用,以及眾多的用戶群體。此外,控制器還采用了ARM 可兼容Thumb®的Thumb-2 指令集來降低內(nèi)存的需求量,進而降低成本。Luminary615最小系統(tǒng)電路圖見附錄圖1.1。2.2 阻抗測量電路設計2.2.1 AD5933 芯片簡介AD5933是一種高精度阻抗數(shù)字直接變換系統(tǒng),主要由一個12位、1MSPS的片上頻率發(fā)生器和一個片上模擬數(shù)字轉(zhuǎn)換器(ADC)組成。頻率發(fā)生器可以產(chǎn)生特定頻率的信號激勵外部復阻抗
9、。復阻抗的響應信號由片上模數(shù)轉(zhuǎn)換器ADC采樣后,再通過片上上數(shù)字信號處理器進行離散傅立葉變換(DFT)。在每個輸出頻率,DFT運算處理后都會返回一個實值(R)和虛值(I)。校正后,掃頻軌跡上的每個頻點的阻抗幅值和阻抗相對相位很容易計算。圖2.1給出了AD5933的封裝圖,表2.1給出了AD5933的引腳定義。圖2.2為AD5933內(nèi)部框圖。建議在使用時把所有的電源腳9、10、11都連到一起,統(tǒng)一連接到電源上,同樣所有的地引腳12、13、14也都連接到一起,統(tǒng)一連接到系統(tǒng)地上。圖2.1 AD5933引腳排列表2.1 AD5933引腳定義引腳標號引腳名稱引腳描述1,2,3,7NC空引腳,沒有定義4
10、RFB外部反饋電阻,連接在4和5之間來設置接受端電流電壓轉(zhuǎn)換放大器的增益5VIN輸入到接受阻抗轉(zhuǎn)換放大器,存在VDD/2的參考地6VOUT激勵電壓輸出腳8MCLK芯片外部時鐘輸入,由用戶提供9DVDD數(shù)字電源10AVDD1模擬電源111AVDD2模擬電源212DGND數(shù)字地13AGND1模擬地114AGND2模擬地215SDAI2C數(shù)據(jù)輸入口,需要10k的上拉電阻連接到VDD16SCLI2C時鐘輸入口,需要10k的上拉電阻連接到VDD圖2.2 AD5933內(nèi)部框圖2.2.2 AD5933工作原理用AD5933來實現(xiàn)阻抗測量,這種測量方法實質(zhì)上是一種軟測量方法,即在待測變量難于直接測量的情況下,
11、進行與之相關的易測變量的測量,并依據(jù)易測變量與待測變量之間的數(shù)學關系,建立數(shù)學模型,運用各種數(shù)學計算和估計方法,實現(xiàn)待測變量的測量10。AD5933有一個電壓輸出引腳Vout (圖2.2)。它能發(fā)出一定頻率的正弦掃描信號對外部阻抗 Z() 進行激勵。信號通過被測樣品后,再經(jīng)放大、濾波后被模數(shù)轉(zhuǎn)換器取樣,并進行離散傅立葉變換,最終計算出待測阻抗值。AD5933是通過芯片內(nèi)部的DDS(直接數(shù)字合成器)來產(chǎn)生正弦掃描信號,該信號具有小于1Hz的分辨率。為DDS提供時鐘頻率的,既可以是外部時鐘,也可以是內(nèi)置的振蕩器,可通過軟件進行設置。DDS合成的信號經(jīng)過數(shù)模轉(zhuǎn)換和放大后,即可變?yōu)闇y試需要的掃描激勵信
12、號。該正弦激勵信號有四個幅值可供選擇,其值分別為2v,1v,400mv,200mv。而這些信號的起始頻率,頻率的增加量,和增加的次數(shù),必須預先確定,它們都可通過軟件進行設定。掃描激勵信號通過被測物后,再經(jīng)過放大、濾波、模數(shù)(AD)轉(zhuǎn)換,使其變?yōu)閿?shù)字信號。在這個過程中,反饋電阻RFB的選取至關重要,必須保證輸入到AD轉(zhuǎn)換器的電壓,即Vout×(Rf / Z)×PGA(放大倍數(shù)),既不能超過模數(shù)轉(zhuǎn)換器的最大電壓,也不能太?。ㄒ妶D1)。這是因為電壓太大AD轉(zhuǎn)換器則會飽和,從而使信號失真。太小信號所含信息又不能夠被充分利用。這兩種情況都會使AD轉(zhuǎn)換器不能工作在線性區(qū)域。我們必需通過
13、選取合適的反饋電阻Rf,使Vout×(Rf / Z)×PGA的數(shù)值處在一個適當?shù)姆秶鷥?nèi)以避免上述情況發(fā)生。AD轉(zhuǎn)換器輸出的數(shù)字信號,直接進入數(shù)字信號處理器進行離散傅立葉變換(DFT),傅立葉變換在每個掃描頻率點上進行,其公式如下: 其中f是掃描點的頻率,x(n)是AD轉(zhuǎn)換器輸出值,而cos(n)和sin(n)是在頻率f下由DDS計算產(chǎn)生。計算的結果一般是一個復數(shù)。它的實部用R,虛部用I來表示。 這些就是我們建立被測阻抗數(shù)學模型所需的易測變量值。以下是詳細計算過程。 (1) 幅值計算 阻抗測量的第一步是在每個掃頻點,計算傅里葉變換的幅值,計算公式如下: 幅值= 上式中R為存儲
14、在地址為0x94和0x95寄存器中的實數(shù);I為存儲在地址為0x96和0x97寄存器中的虛數(shù)(注)。例如:實數(shù)寄存器中的十進制數(shù)值為907,虛數(shù)寄存器寄存器中的十進制數(shù)值為516,則幅值= =1043.506。 (2) 增益系數(shù)計算增益系數(shù)的計算是在VOUT引腳和VIN引腳之間連接一個未知阻抗,進行系統(tǒng)校準計算完成的。該系數(shù)被確定后便可以測量計算任何阻抗值。下面是一個計算增益系數(shù)的例子:假設輸出激勵電壓為2V(峰峰值),校正阻抗值為200K,PGA放大倍數(shù)是1倍,電流電壓轉(zhuǎn)換放大器增益電阻為200K,校正頻率為30KHz。該頻點經(jīng)DFT轉(zhuǎn)換后實數(shù)和虛數(shù)寄存器中的內(nèi)容為: 實數(shù)寄存器=0xF064
15、=-3996;虛數(shù)寄存器=0x227E=8830 ; 幅值= =9692.106 增益系數(shù)= = (1/200K)/9692.106=515.819×10-12下面再給出一個已知增益系數(shù)、被測電阻的實部和虛部值計算被測電阻阻值的例子。假設被測電阻為510k,激勵頻率為30kHz,測量得到的實部和虛部值分別為1473和3507,則計算得到的模值為3802.863。 阻抗值= =1/(515.819E-12×3802.863) =509.791k。對于不同的測量頻率點增益系數(shù)是不同的,所以在不同的頻率點上要分別計算增益系數(shù)。在測量過程中可以通過限制電阻的測量范圍來優(yōu)化測量性能。
16、 (3)相角計算及校準在阻抗測量過程中不僅僅要關注電阻的模值,還要知道相角的大小,相角值=arctanI/R。和模值一樣相角也要進行校準。首先對標定電阻進行測量,得到標定電阻的相角,測量電阻的實際相角等于測量計算得到的值減去標定電阻的相角值。值得注意的是測量時通過arctanI/R得到的相角是在-90º到+90º之間的,所以要根據(jù)R和I所決定的象限來把相角變換到所在象限內(nèi)。如果R<0,I>0則說明在第二象限,所以計算時要把相角加上180º;如果R<0,I<0則是在第三象限,計算時要把相角減去180 º。2.2.4 測量電路電路由3
17、.3V穩(wěn)壓器Lm1117提供電源,為實現(xiàn)不同量程范圍內(nèi)阻抗的測量,外接模擬開關CD4051來實現(xiàn)量程轉(zhuǎn)換。電路原理圖見附錄圖1,圖2所示。由于外接模擬開關的導通電阻在300左右,通過測試,當采用運放來實現(xiàn)小阻抗測量時,效果并不明顯,故該電路中沒有采用運放來實現(xiàn)小阻抗測量。3. 軟件設計3.1編程環(huán)境介紹基于ARM公司最新內(nèi)核Cotex-M3 的Luminary615處理器,可以采用IAR編程環(huán)境,IAR編程環(huán)境風格簡易方便,功能齊全,支持JTAG仿真。IAR EWARM Embedded Workbench for ARM 是IAR Systems 公司為ARM 微處理器開發(fā)的一個集成開發(fā)環(huán)境
18、(下面簡稱IAR EWARM)。比較其他的ARM 開發(fā)環(huán)境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點。EWARM 中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM 內(nèi)核、外部設備甚至中斷的軟件運行環(huán)境,從中可以了解和評估IAR EWARM 的功能和使用方法。3.2 I2C通行協(xié)議簡介控制AD5933是通過支持串行接口協(xié)議的I2C總線完成的,AD5933作為一個由主控設備控制的從設備連接到總線上。AD5933有一個7位串行總線從地址。當設備通電后,默認的串行總線地址為0001101(0x0D)。 圖3.1給出了I2C接口一般讀寫操作的
19、時序圖。主設備先進行傳輸數(shù)據(jù)初始化,包括:建立一個起始條件,定義串行數(shù)據(jù)線為自高位到低位傳輸,串行時鐘線保持為高電平時,數(shù)據(jù)流傳送。從設備響應起始條件,傳送一個8位數(shù)據(jù),其中包括7位從地址和一個決定數(shù)據(jù)傳輸方向的讀寫控制位,即數(shù)據(jù)是由從設備讀取或?qū)懭耄?:寫入,1:讀取)。圖3.1 I2C控制時序圖 在第九個時鐘脈沖的前一個低電平時刻,從設備將數(shù)據(jù)線的電位拉低(稱為應答信號)并在該時鐘脈沖的高電平階段保持為低。所選設備等待數(shù)據(jù)進行讀取或?qū)懭?,而總線上的其他所有設備保持空閑狀態(tài)。如果讀/寫位為0,那么主機內(nèi)容寫入從器件。如果讀/寫位為1,主機由從器件讀取數(shù)據(jù)。串行總線上的數(shù)據(jù)傳送在九個時鐘脈沖后
20、傳送一個序列,包括八位數(shù)據(jù)位,一個應答信號位。這數(shù)據(jù)可以是主設備發(fā)出的,也可以使從設備發(fā)出的。數(shù)據(jù)線上的數(shù)據(jù)傳送是在時鐘信號為低并保持穩(wěn)定的時刻進行的,因為當時鐘信號為高電平時,若一個上升沿出現(xiàn),則該信號為停止信號。如果該操作是一個寫操作,從地址的第一數(shù)據(jù)字節(jié),是一個指令字節(jié)。該字節(jié)會通知從器件接下來的工作是什么。它可能是一個指令,告訴從器件進行塊寫操作;也可以是一個寄存器地址,告訴從器件隨后的數(shù)據(jù)將寫入什么地方。因為數(shù)據(jù)流被定義為一個單方向的讀/寫位,從設備在讀操作事是不可能向其發(fā)送指令的。在執(zhí)行讀操作之前,有時需要先進行寫操作告訴從存儲器讀操作的類型,或數(shù)據(jù)讀取的地址。當所有字節(jié)數(shù)據(jù)讀或?qū)?/p>
21、完畢后,會建立停止條件。寫模式下,在第十個時鐘脈沖聲明停止條件期間,主設備將數(shù)據(jù)線電位拉高。讀模式下,在第九個時鐘脈沖之前的低電平段,主設備釋放數(shù)據(jù)線的占用,但從設備并不會把它拉低,這就是所謂的非應答。在第十個時鐘脈沖之前的低電平段,主設備把數(shù)據(jù)線電位拉低,然后在第十個時鐘脈沖到來時又將其拉高,以形成停止條件。3.3 軟件設計AD5933是I2C接口的器件,滿足I2C控制條件,LM3S615通過I/O口模擬I2C協(xié)議實現(xiàn)對AD5933的讀寫操作,通過參數(shù)修正便可以得到正確的結果,通過對CD4051的控制,實現(xiàn)了量程自動轉(zhuǎn)換。系統(tǒng)主程序設計流程圖如圖3.2所示,圖3.3中給出單個阻抗測量軟件流程
22、圖。測量后得到的實部和虛部結果都是十六進制表示。通過I2C通信將數(shù)據(jù)傳至Luminary615進行處理并由Luminary615控制,輔以良好的人機界面,可方便操作。具體程序詳見附錄3.圖3.2 系統(tǒng)設計流程圖寫入頻率掃描參數(shù)到相應寄存器(1) 起始頻率寄存器(2) 掃描頻率點數(shù)(3) 頻率增量設置AD5933進入標準模式寫入開始頻率命令到控制寄存器初始化系統(tǒng)在足夠的建立時間之后開始頻率掃描從實部和虛部寄存器中讀取數(shù)據(jù)測量結束寫入跳到下個頻率或者重復當前頻率命令到控制寄存器NY開始DFT是否完成?頻率掃描完成?NY圖3.3 單個阻抗測量過程軟件流程圖4. 系統(tǒng)測試4.1測試儀器數(shù)字萬用表:UT
23、39A.4.2測試方法與結果在特定頻率下,將電阻、電容等串并聯(lián)接到測試端,從液晶讀出阻抗幅值與相位并記錄下來,再通過數(shù)字外用表測量其值并計算出阻抗實際值。比較測量值與實際值的大小,計算出誤差并進行分析。通過測試,部分結果如表4.1、表4.2及表4.3所示,此處測試激勵源頻率為2KHZ,激勵信號幅值設定為2V。誤差計算公式為:表1 電阻測量結果實際阻抗()測量阻抗()誤差(%)5095426.4837096399.8731.13K1.141K0.9325.54K5.579K0.7119.99K10.0710.00817.6617.6190.23256K56.089K0.159100.6K99.8
24、94K0.702554K555.000K0.181954K954.009K0.0011.93M1.937M0.4054.70M4.646M1.1285.68M5.645M0.6189.71M9.6530.589備注,測量電阻時無相位誤差。表4.2電阻與電容串聯(lián)測量結果理論值測量值誤差(%)阻抗相位(°)阻抗相位(°)阻抗相位電阻值2.1K6K-406.25K-414.172.50電容值13nF電阻值74K84.66K-2976.8K-279.286.89電容值2nF電阻值385K454.29K-32431.02K-315.123.13電容值330Pf電阻值4M4.34M-2
25、94.20M-273.236.89電容值35pF表4.3電阻與電容并聯(lián)測量結果理論值測量值誤差(%)阻抗相位(°)阻抗相位(°)阻抗相位電阻值2.1K1.98K-191.8K-179.0910.52電容值13nF電阻值74K35.88K-6033.15K-577.615電容值2nF電阻值385K204.4K-57199.36K-532.467.02電容值330Pf電阻值4M1.56M-671.53M-621.927.46電容值35pF4.3 誤差分析測量結果表明,對電阻的測量是比較精確的,大電阻范圍內(nèi)精度在1%以內(nèi),由于測量小電阻時模擬開關的導通電阻較大,故測量結果誤差較大
26、。另外,元器件的阻值本身便有一定誤差,在測量電容時尤其能體現(xiàn)出。電阻與電容的串并聯(lián)測量結果表明,阻抗幅值誤差在10%以內(nèi),相位誤差也從2%10%不等。一方面電容的器件誤差本身比電阻大,不同大小電容間誤差大小也不同,另一方面頻率對電容的影響大,對結果也有影響。在電感測量中,由于實驗室電感值較小,阻抗值處在小范圍內(nèi),測量誤差較大。5. 結論該設計采用阻抗測量芯片AD5933實現(xiàn)阻抗測量,外圍電路簡單,測試結果表明,通過Luminary615微控制器控制AD5933測量精度高,穩(wěn)定性好。設計中,標定阻抗的選取對精度有很大影響,且軟件算法對測量值的校準也非常重要。該設計實現(xiàn)了阻抗量程的自動轉(zhuǎn)換,總體測
27、試良好。6.參考文獻12 崔傳金,郭志強,趙楠,左月明.用AD5933實現(xiàn)電導率測量的研究, 機電工技術,2008.37(4)3 高吉祥.全國大學生電子設計競賽培訓系列教程M.北京:電子工業(yè)出版社,2007.12附錄一 元器件清單附表1元件型號標號數(shù)量電容104C1, C3, C5, C314電解電容100UC21電解電容10UC41磁珠L1, L32發(fā)光二極管LEDL21插針P1, P4 ,P2, P3, P55電阻300R11電阻10KR2, R32電阻510R41電阻200R51電阻1KR61電阻10KR71電阻100KR81電阻220KR91電阻1MR121芯片Lm1117U11芯片C
28、D4051U21芯片AD5933U61附錄二 原理圖以及PCB圖附圖1 AD5933 pack板原理圖附圖2 AD5933阻抗測量原理圖附圖3 阻抗測量底座PCB底層附圖4 阻抗測量底座PCB絲印層附圖5 AD5933pack板 PCB頂層附圖6 AD5933pack板 PCB絲印層附圖7 Luminary615 最小系統(tǒng)PCB頂層圖附圖8 Luminary615 最小系統(tǒng)PCB底層圖附圖9 Luminary615 最小系統(tǒng)圖附錄三 程序清單/*文件名:xiangwei.c*功能:通過LM3S615實現(xiàn)對AD5933的控制,實現(xiàn)阻抗測量 *說明:AD5933是I2C接口的,LM3S通過模擬I2
29、C接口實現(xiàn)對AD5933的控制。 */#include "VI2C_LM3S101.H"#include "hw_ints.h"#include "hw_memmap.h"#include "hw_types.h"#include "gpio.h"#include "interrupt.h"#include "sysctl.h"#include "12864.h"#include "ZLG7290.h"#includ
30、e "math.h"#include "7290moni.h"#ifndef uchar #define uchar unsigned char#endif/ I2C引腳的定義。#define SDA GPIO_PIN_3 / 模擬I2C數(shù)據(jù)傳送位#define SCL GPIO_PIN_2 / 模擬I2C時鐘控制位#define SDAA GPIO_PIN_5 /模擬I2C數(shù)據(jù)傳送位#define SCLL GPIO_PIN_4 /模擬I2C時鐘控制位#define AD5933_addr 0x1A /從機地址#define SET_POINT 0xB
31、0 /0xB0命令表示寫入地址unsigned char j=0;/-/ 函數(shù)原形:void delays(unsigned int n)/ 功能描述:延時數(shù)量為n個指令周期。/ 參數(shù)說明:unsigned int n,將要延時的時間數(shù)。/ 返回值:無/-void delays(unsigned int n)/ 軟件延遲函數(shù) volatile int i; for(;n>0;n-) for(i=0;i<10;i+); /-/ 函數(shù)原形:InitAD5933(void)/ 功能描述:AD5933初始化函數(shù)。/ 參數(shù)說明:無。/ 返回值:無/-void InitAD5933(void)
32、 ISend(AD5933_addr,0x82,0x00); /start frequency delays(5); ISend(AD5933_addr,0x83,0xFA); /1kHz delays(5); ISend(AD5933_addr,0x84,0x05); delays(5); ISend(AD5933_addr,0x85,0x00); /increment frequency delays(5); ISend(AD5933_addr,0x86,0x31); /500Hz delays(5); ISend(AD5933_addr,0x87,0x81); delays(5); IS
33、end(AD5933_addr,0x88,0x01); /測量點數(shù) delays(5); ISend(AD5933_addr,0x89,0xFF); delays(5); ISend(AD5933_addr,0x80,0xB1); /標準模式 delays(5); ISend(AD5933_addr,0x81,0x00); /選著內(nèi)部時鐘 delays(5); ISend(AD5933_addr,0x81,0x10); /復位AD5933 delays(5); ISend(AD5933_addr,0x81,0x00); delays(5); ISend(AD5933_addr,0x80,0x1
34、1); /初始化頻率 delays(5); ISend(AD5933_addr,0x8A,0x03); /等待建立周期數(shù) delays(5); ISend(AD5933_addr,0x8B,0xFF); delays(5); ISend(AD5933_addr,0x80,0x21); /啟動頻率掃描 delays(5); /-/ 函數(shù)原形:void display(unsigned int re,unsigned int im)/ 功能描述:顯示函數(shù)。/ 參數(shù)說明:unsigned int re,unsigned int im ,實部和虛部/ 返回值:無/-void display(signe
35、d int re,signed int im) unsigned char a11,y=0,x=0,i=0; signed int revalu=0,imvalu=0; float valu=0; double xishu=0,regist; long int ll; revalu=re; imvalu=im; if(revalu&0x8000) /把帶符號的換算成無符號整數(shù) revalu=(revalu-0x10000)*(-1); x=1; if(imvalu&0x8000) /把帶符號的換算成無符號整數(shù) imvalu=(imvalu-0x10000)*(-1); y=1;
36、 valu=sqrt(imvalu*imvalu+revalu*revalu); /計算幅值 switch(j) case 0: if(valu<13000)&&(valu>8000) xishu=(1/(96.86810); /計算系數(shù) xishu=(1/(xishu*valu)*100000+0.5; /計算阻值 ll=xishu-250; i=1; break; case 1: if(valu<13000)&&(valu>1350) xishu=(1/(13.33726); /計算系數(shù) xishu=(1/(xishu*valu)*1
37、000000+0.5; /計算阻值 ll=xishu-100; i=1; break; case 3: if(valu<12000)&&(valu>1050) xishu=(1/(10.398994); /計算系數(shù) xishu=(1/(xishu*valu)*10000000+0.5; /計算阻值 ll=xishu; i=1; break; case 4: if(valu<12000)&&(valu>1000) xishu=(1/(96.736596); /計算系數(shù) xishu=(1/(xishu*valu)*10000000+0.5;
38、/計算阻值 ll=xishu; i=1; break; case 5: if(valu<2130)&&(valu>1060) xishu=(1/(21.006); /計算系數(shù) xishu=(1/(xishu*valu)*100000000+0.5; /計算阻值 ll=xishu; i=1; break; case 6: if(valu<4800)&&(valu>800) xishu=(1/(96.527914); /計算系數(shù) xishu=(1/(xishu*valu)*100000000+0.5; /計算阻值 ll=xishu; i=1;
39、 break; default: break; if(i=1) /滿足條件則顯示阻值,相位 a0=ll/10000000+48; a1=ll%10000000/1000000+48; a2=ll%1000000/100000+48; a3=ll%100000/10000+48; a4=ll%10000/1000+48; a5='.' a6=ll%1000/100+48; a7=ll%100/10+48; a8=ll%100%10+48; a9='K' a10=0; LCD_WriteStr(4,2,a); regist=ll; if(y=0)&&
40、(x=0) /計算并顯示 atan2(float y, float x); 求y/x(弧度表示)的反正切值 xishu=atan2(imvalu,revalu)*180/3.14+0.5; if(y=1)&&(x=0) /計算并顯示 atan2(float y, float x); 求y/x(弧度表示)的反正切值 xishu=atan2(imvalu*(-1),revalu)*180/3.14-0.5; xishu=xishu+180; if(y=1)&&(x=1) /計算并顯示 atan2(float y, float x); 求y/x(弧度表示)的反正切值
41、xishu=atan2(imvalu,revalu)*180/3.14+0.5; xishu=xishu+180; if(y=0)&&(x=1) xishu=atan2(imvalu,(revalu*(-1)*180/3.14-0.5; /計算并顯示 atan2(float y, float x); 求y/x(弧度表示)的反正切值 xishu=xishu+360; if(ll<1000)&&(ll>400) /相位誤差修正 ll=xishu-89.5; if(ll<10000)&&(ll>=1000) ll=xishu-(
42、-0.0012237*regist+91.46)+0.5; if(ll<100000)&&(ll>=10000) ll=xishu-(-0.0001515*regist+91.016)+0.5; if(ll<1000000)&&(ll>=100000) ll=xishu-(-0.0000179*regist+91.806)+0.5; if(ll<=2000000)&&(ll>=1000000) ll=xishu-(-0.000009675*regist+93.789)+0.5; if(ll<1200000
43、0)&&(ll>2000000) ll=xishu-(-0.00000256*regist+95.444)+0.5; if(ll<0) /判斷正負 ll=ll*(-1); a0='-' a1=ll/100+48; a2=ll%100/10+48; a3=ll%100%10+48; a4=0; LCD_WriteStr(4,3,a); else a0=' ' a1=ll/100+48; a2=ll%100/10+48; a3=ll%100%10+48; a4=0; LCD_WriteStr(4,3,a); /-/ 函數(shù)原形:ReadData(unsigned char addr)/ 功能描述:讀數(shù)據(jù)函數(shù)。/ 參數(shù)說明:unsigned char addr 子地址/ 返回值:數(shù)據(jù)/-unsigned int ReadData(unsigne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化遺產(chǎn)保護與環(huán)境保護-洞察分析
- 醫(yī)生申請換科室申請書范文(6篇)
- 辦公環(huán)境中提升工作效率的色彩配置
- 辦公環(huán)境升級學校導覽系統(tǒng)的設計與體驗
- 健康飲食搭配在辦公環(huán)境中的實踐
- 辦公環(huán)境下光線對學生視力的影響研究
- 企業(yè)內(nèi)部團隊創(chuàng)造力的激勵措施
- 創(chuàng)新科技對創(chuàng)新創(chuàng)業(yè)環(huán)境的提升作用
- 辦公自動化與小學教學質(zhì)量提升
- 利用社交媒體推動學生合作學習的方法
- 北京市海淀區(qū)2021-2022學年七年級上學期期末考試語文試卷(word版含答案)
- 佛山批發(fā)市場匯總
- WordA4信紙(A4橫條直接打印版)
- (精選)甲醇一書一簽Word版
- 國標-墜落防護+帶柔性導軌的自鎖器
- 4 上海市中環(huán)線工程設計案例
- 低濃度顆粒物的測定重量法方法驗證報告
- 食品生產(chǎn)企業(yè)生產(chǎn)線員工食品安全知識培訓
- 介入科工作總結
- 文松海天一多人小品《心理專家》創(chuàng)業(yè)成功到破產(chǎn)劇本臺詞完整版跨界
- 日本簽證在職證明
評論
0/150
提交評論