乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      TMS320F2812的AD及其精度校準(zhǔn)

       molei 2015-04-03
      TMS320F2812內(nèi)部集成了ADC轉(zhuǎn)換模塊,該模塊具有如下的功能:
      112ADC核,內(nèi)置了雙采樣-保持器(S/H);
      2.順序采樣模式或者同步采樣模式;
      3.模擬輸入:0V3V;(2812的AD不能輸入負(fù)壓,如果有負(fù)電平輸入,需要通過絕對(duì)值電路將負(fù)電平轉(zhuǎn)換為正電平之后再輸入到AD)
      4.快速轉(zhuǎn)換時(shí)間運(yùn)行在25MHz,ADC時(shí)鐘,或12.5MSPS;
      516通道,多路選擇輸入;
      6.自動(dòng)序列化,在單一時(shí)間段內(nèi)最大能提供16個(gè)自動(dòng)A/D轉(zhuǎn)換,每個(gè)轉(zhuǎn)換可編程對(duì)16個(gè)輸入通道中的任何一個(gè)進(jìn)行選擇。
      7.序列發(fā)生器可按2個(gè)獨(dú)立的8狀態(tài)序列發(fā)生器或1個(gè)16狀態(tài)序列發(fā)生器。


      我們?cè)陧?xiàng)目實(shí)際研發(fā)過程中采用的AD采樣的硬件電路如下圖所示:

      1為電流信號(hào)檢測(cè)與調(diào)理電路,電壓信號(hào)的檢測(cè)與調(diào)理電路與此相類似。從電流傳感器輸出的信號(hào)CT1首先經(jīng)過了由R1、C1組成的低通濾波電路,濾除高頻干擾信號(hào),然后通過U1構(gòu)成的電壓跟隨器,實(shí)現(xiàn)了電路前后兩級(jí)的隔離。由于2812I/O口輸入電平必須低于3.3V,因此在芯片引腳的輸入前端加了一個(gè)穩(wěn)壓管Z1,使AD口輸入的電壓幅值不超過3V。

      TMS320F2812雖然有12位精度,但在實(shí)際的使用過程中,我們發(fā)現(xiàn),ADC的轉(zhuǎn)換結(jié)果誤差較大,如果直接將此轉(zhuǎn)換結(jié)果用于控制回路,必然會(huì)降低控制精度,最大的轉(zhuǎn)換誤差可以達(dá)到9%。那么如何來提高AD采樣的精度呢,下面列出了幾種常見的方法:
      1.硬件角度
      (1)硬件濾波,濾除干擾信號(hào);
      (2)電路板布線時(shí)需要注意不要讓ADCINxx引腳運(yùn)行在靠近數(shù)字信號(hào)通路的地方,這樣能使耦合到ADC輸入端的數(shù)字信號(hào)開關(guān)噪聲大大降低;
      (3)采用適當(dāng)?shù)母綦x技術(shù),將ADC模塊電源引腳和數(shù)字電源隔離;
      (4)如果采樣電路部分是經(jīng)過多路開關(guān)切換的,可以在多路開關(guān)輸出上接下拉電阻到地;
      (5)采樣通道上的電容效應(yīng)也可能會(huì)導(dǎo)致AD采樣誤差,因?yàn)椴蓸油ǖ郎系牡刃щ娙菘赡苓€在保持有上一個(gè)采樣數(shù)據(jù)的數(shù)值的時(shí)候,就對(duì)當(dāng)前數(shù)據(jù)進(jìn)行采樣,會(huì)造成當(dāng)前數(shù)據(jù)不準(zhǔn)確。如果條件允許,可以在每次轉(zhuǎn)化完成后現(xiàn)將輸入切換到參考地,然后在對(duì)信號(hào)進(jìn)行下一次采樣。
      2.軟件角度
      (1)多次采樣取平均值算法,最為簡單;
      2數(shù)字濾波算法,例如采用中值濾波法,具體方法為:連續(xù)采樣20個(gè)數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行排序之后,去掉最小的5個(gè)和最大的5個(gè),然后取中間10個(gè)采樣數(shù)據(jù)的平均值。
      3軟件校正算法。F2812ADC轉(zhuǎn)換精度較差的主要原因是存在增益誤差(Gain Error)和偏置誤差(Offset Error),要提高轉(zhuǎn)換精度就必須對(duì)兩種誤差進(jìn)行補(bǔ)償,下面將具體介紹這種實(shí)用的補(bǔ)償方法。
      理想的12ADC應(yīng)該是沒有增益誤差和偏置誤差的,因此其轉(zhuǎn)換的計(jì)算公式為:
      Y=x*mi
      其中,x=input count=inputvoltage*4095/3.0V

      Y=output count

      Mi=ideal gain=1
      但是,實(shí)際上F2812AD是存在增益誤差和偏置誤差的,其轉(zhuǎn)換的計(jì)算公式如式2所示:
      Y=x*ma+mb
      其中,ma=actual gain


      B=actualoffset
      (與輸入為0時(shí)相關(guān))
      實(shí)際的和理想的轉(zhuǎn)換計(jì)算曲線如圖2所示:


      在校正的時(shí)候,首先選用ADC的任意兩個(gè)通道(例如A1,A2)作為參考輸入通道,并分別
      輸入已知的直流參考電壓,通過讀取相應(yīng)的結(jié)果寄存器獲取轉(zhuǎn)換值,利用兩組輸出值便可求
      ADC模塊得校正增益和校正偏置,然后利用這兩個(gè)值對(duì)其他通道轉(zhuǎn)換數(shù)據(jù)進(jìn)行補(bǔ)償。
      首先,計(jì)算兩個(gè)通道得參考電壓轉(zhuǎn)換后得理想結(jié)果。在講述算法之前,我們先來看看各個(gè)參數(shù)之間的關(guān)系,如下圖所示:
      由圖可以得到各參數(shù)之間的關(guān)系如下:
      y = x * ma + b
      ma = (yH – yL)/(xH – xL)
      b = yL – xL*ma
      CalGain = (xH – xL)/(yH – yL)
      CalOffset = yL * CalGain – xL
      x = y * CalGain – CalOffset

      A1通道加2.5V,給A2通道加0.5V
      A1input=VHigh=2.5V,則2.5*4095/3.0=3413(理想值)
      A2input=VLow=0.5V,則0.5*4095/3.0=683(理想值)

      校正C語言的算法如下:
      #defineHIGH_IDEAL_COUNT 3413//理想高值
      #defineLOW_IDEAL_COUNT 683//理想低值
      #define SAMPLES20//采樣次數(shù)

      //定義所需的各個(gè)變量
      Uint16Avg_HighActualCount;
      Uint16Avg_LowActualCount;
      Uint16Sum_HighActualCount;
      Uint16Sum_LowActualCount;
      Uint16 CalGain;
      Uint16CalOffset;
      Uint16HighActualCount[SAMPLES];
      Uint16LowActualCount[SAMPLES];

      //變量初始化
      Voidinitvar (void)
      {

      Avg_HighActualCount=0;
      Avg_LowActualCount=0;

      Sum_HighActualCount=0;
      Sum_LowActualCount=0;

      CalGain=0;
      CalOffset=0;

      Uint16 I;
      For(i=0;i<SAMPLES;I++)
      {
      HighActualCount[I]=0;
      LowActualCount=0;

      }
      }

      //計(jì)算增益和偏置的函數(shù)
      Voidcalerror (void)
      {

      Static Unit16 i;//采樣計(jì)數(shù)
      Uint16k;

      HighActualCount=AdcRegs.AdcResult1>>4;//讀采樣數(shù)據(jù)
      LowActualCount=AdcRegs.AdcResult2>>4;

      If(i>=SAMPLES)//采樣滿規(guī)定次數(shù)
      {
      i=0;
      for(k=0;k<SAMPLES;k++)
      {
      Sum_HighActualCount+= HighActualCount;
      Sum_LowActualCount+=LowActualCount;
      }
      Avg_HighActualCount= Sum_HighActualCount/SAMPLES;//多次采樣取平均值
      Avg_LowActualCount= Sum_LowActualCount/SAMPLES;

      CalGain = (HIGH_IDEAL_COUNT - LOW_IDEAL_COUNT)//計(jì)算增益系數(shù)
                / (Avg_HighActualCount  - Avg_LowActualCount);
      CalOffset =Avg_LowActualCount*CalGain - LOW_IDEAL_COUNT; //計(jì)算偏置
      }
      I++;
      }

      //ADC_ISR中,對(duì)各個(gè)通道進(jìn)行校正:
      Interrupt
      Adc_Isr (void)
      {
      。。。。。。。。。。
         newResult n= AdcRegs.ADCRESULTn*CalGain - CalOffset;
      。。。。。。。。。。
      }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多