<strike id="0k9r3"><p id="0k9r3"></p></strike>
  • <form id="0k9r3"></form>
    <nav id="0k9r3"></nav>
    <em id="0k9r3"><p id="0k9r3"></p></em>
  • <tr id="0k9r3"><source id="0k9r3"></source></tr>
    <form id="0k9r3"></form>
    <sub id="0k9r3"></sub>

      <sub id="0k9r3"><address id="0k9r3"></address></sub>
      1. <form id="0k9r3"></form>

        24小時聯系電話:18217114652、13661815404

        中文

        您當前的位置:
        首頁>
        電子資訊>
        公司新聞>
        單片機開發設計模數轉...

        公司新聞

        單片機開發設計模數轉換器(ADC)簡介


        模數轉換器或ADC有許多不同的實現。本文概述了主要類型,它們的特征和局限性。

        幾乎所有的微控制器都有內置的ADC。即使是基于AVR ATMega系列的小型Arduino,也擁有它們。本文的最后一部分討論了使用此類ADC時應注意的一些問題。但是首先我們將回顧模數轉換的基礎。

        模擬到數字轉換的基礎

        ADC由圖1中的示意圖符號表示。它僅顯示了一個模擬輸入及其等效的數字輸出。所示示例為一個NADC。N通常是624之間的任何值,常見的是8、10、1216。

        輸入是電壓,范圍為0到最大值,取決于實際ADC。假設有N位,則可能有2 N個數字值,則以1位表示的值為(V ADCMAX / 2 N)。

        作為一個例子,如果給定ADC的最大輸入值是5.0V,并且所述ADC10位類型的,則每個比特代表(5V / 2 10),5.00 / 1024,或約4.89mV。因此,該特定ADC的分辨率或量化步長為4.89mV。這是其絕對的理論分辨率。

        在這種特殊情況下,無法將信號解析為優于±4.89mV / 2)的分辨率。此限制稱為量化誤差,并且所有ADC甚至是完美ADC都具有一定程度的量化誤差,具體取決于ADC的分辨率。

        實用的ADC具有更多的誤差源。兩個這樣的錯誤是:差分非線性(DNL)和積分非線性(INL)錯誤。在為特定應用指定ADC時必須考慮這些因素。

        ADC輸出應保持不變時,DNL錯誤就會發生。例如,假設給定輸入的當前輸出代碼為01101100,并且輸入值增加了量化步長的一半。然后,代碼應為01101100 +1位或01101101。

        當輸入電壓低于當前輸入電壓時,也會發生相反的情況。有時,由于各種原因不會發生這種情況。在這種情況下,據說ADC具有±1DNL誤差。

        如果量化級別未在整個輸入范圍內均勻分布,則會發生INL錯誤。例如,假設某個特定的ADC具有12位或4096個計數的分辨率和4.096V基準電壓。每個位數精確地代表了1.000mV的輸入電壓變化。

        因此,4096 mV的輸入電壓應提供1111 1111 1111的輸出,即0xFFF。對于某些ADC4095mV甚至4094mV的輸入仍將提供0xFFF的數字輸出。發生的是,在整個輸入范圍內,1位的值變化很小,只有1.001mV0.999mV。累積的誤差導致一到兩位精度的滿量程誤差。

        稍后將看到,有許多外部因素會進一步降低ADC輸出精度。

        ADC實施

        有多種實現ADC的方法。接下來的幾節介紹了一些較常見的部分。為了使本文相對簡短,僅給出每個此類實現的簡單且有些不完整的描述。

        單斜率和雙斜率積分ADC

        單斜率ADC的框圖如圖2所示。基本操作非常簡單。電容器從輸入源充電,直到其電壓達到V Ref為止,此時比較器跳閘。充電時,由時鐘供電的數字計數器也在進行計數。當比較器跳閘時,它將停止計數,此時達到的計數代表模擬輸入。

        2 –單斜率積分ADC的框圖

        這種方法最常見的變體之一是雙斜率積分ADC。在其中,電容器放電,然后對計數器值求平均值。此技術減輕了積分電容器中介電吸收的影響,介電吸收的影響可能導致ADC讀數錯誤。

        這種類型的ADC是準確的,但是非常慢。例如,它最常用于萬用表中,其中精度比速度更重要。

        Sigma-Delta Σ-ΔADC

        Sigma-DeltaΣ-? ADC框圖如圖3所示。從輸入端開始,差動放大器產生的輸出為 V inDAC輸出。

        1DAC的輸出可以是以下兩個值之一:-V Ref+ V Ref。在這種情況下,最好將積分器視為取前一個值和當前輸入值的移動平均值。

        所以,開始,假設 V in固定在高于0V的很小一點,以便比較器跳閘。其值將為高或1。然后DAC輸出為+ V參考。在下一輪中,將從當前值V in中減去該值。由于先前的值為0V,因此積分器輸出現在將為– V ref。比較器輸出現在將為0,而DAC輸出將為at – V參考。

        在下一個樣本中,由于先前的值是– V Ref,并且差動放大器實際上減去-V Ref,因此將V Ref加到V in。比較器輸出將因此為1。

        此過程繼續進行,因此,對于0VV in,比較器輸出將為101010…的穩定流。記住邏輯1意味著V Ref0表示-V Ref,則如果取N個樣本并取平均值,則很容易發現平均值為0V。比較器之后的處理塊將簡單地將其輸出為單個值0000 ...假定為(V Ref – -V Ref)或2 x V Ref。

        現在,假設V in1V,這是一個5V ADC;±V Ref±2.5V。按照與之前相同的步驟進行操作,輸出將為:1011101…該輸出為1.07V。

        但是,如果采樣更多,則精度會更高,并且該值接近1.00V。因此,Sigma-Delta需要許多樣本才能生成一個輸出。換句話說,需要對輸入信號進行過采樣以減少ADC轉換誤差。

        Sigma-Delta ADC通常用于數字化音頻信號,并在某些微控制器中用作ADC。

        3 – Sigma-Delta ADC的框圖

        閃存ADC

        閃存ADC的操作也許是最容易理解的。圖4給出了閃存ADC的框圖。僅僅是許多比較器,每個比較器都被提供了比前一個電壓高一個位值的參考電壓。因此,對于一個8ADC,需要256個這樣的比較器。對于10位,則需要1024

        閃存轉換器速度很快。它無需任何采樣或繁重的后處理即可直接轉換輸入。問題在于它需要大量的比較器,并且許多比較器占用了芯片上的大量硅面積。因此,僅在需要其他ADC實現方法無法達到的極高速度時才使用閃存ADC。

        剛剛描述的內容實際上稱為全閃存ADC。一種常用的變體是半閃存ADC。它使用兩步過程將實際轉換鏈中所需轉換器的數量減少一半。

        首先,將輸入信號與精確設置為一半V Ref的電平進行比較。如果它較低,則最高有效位MSb設置為0,并且將輸入電壓饋送到比較器鏈,參考電壓設置為V Ref / 2實際獲得剩余位。

        如果輸入信號高于V Ref / 2,則MSb設置為1,從輸入信號中減去V Ref / 2。例如,可以通過使基準電阻的下端偏移+ V Ref / 2來實現。

        比較器鏈再次用于獲取其余位。因此,從本質上講,這使用的是全閃存比較器數量的一半,但要付出額外的比較代價。例如,該技術還可擴展為具有四分之一閃存ADC

        4 –全閃存ADC

        逐次逼近寄存器(SAR

        這是中速ADC中最常使用的ADC技術。SAR ADC的框圖如圖5所示。SAR操作是該ADC的關鍵。最初,它設置為DAC范圍的中點。

        比較器輸出將為高電平或低電平,具體取決于輸入是高于還是低于DAC輸出電平。

        現在,輸入位于DAC范圍的上半部或下半部?,F在,將DAC設置為DAC輸入所處正確范圍的上半部或下半部的中點,從而有效地將該范圍減小到整個范圍的四分之一。

        重復此過程,依次縮小輸入所處的范圍,直到放大到正確的值為止。

        另一種看待這種情況的方式是說,在第一次迭代之后,將知道輸入的MSbit,根據比較器輸出是低電平還是高電平,它的值為01。在下一次迭代之后,將知道下一個MSbit。重復該過程,直到所有輸出位都已知為止。

        未提及的一件事是跟蹤并保持“ TH”塊。如果在ADC轉換過程中更改輸入值,則迭代過程將被中斷。TH塊僅在轉換開始時捕獲輸入值,并在整個轉換過程中保持該值。

        如圖6所示。TH輸出將輸入信號的值保持在被觸發的點,而不管輸入信號隨后的作用如何。轉換完成后,TH將再次返回以跟蹤輸入信號。

        SAR ADC是使用最廣泛的ADC,并且是大多數微控制器的內置ADC中發現的一種。有些使用Sigma-Delta ADC,但大多數使用SAR ADC。

        5 – SAR ADC的框圖

         

        6 – TH框圖

        微控制器ADC

        幾乎所有的微控制器都有內置的ADC,大多數具有多路復用輸入。為了有效使用,應考慮其局限性。

        首先,根據目前為止的內容,很明顯,輸入范圍不能超過ADC V Ref,必須遵守ADC的轉換速率限制。

        例如,Arduino Uno的最大ADC轉換速率小于10KHz。因此,根本無法通過該ADC采樣20Hz20KHz帶寬的完整音頻。

        基于微控制器的ADC的問題全部歸結為微控制器是CMOS器件這一事實,并且用于制造微控制器的硅工藝與實現模擬電路模塊不太兼容。

        因此,例如,DAC和比較器不使用精密電阻器,因為這些電阻實際上很難在CMOS硅工藝中實現。取而代之的是,它們采用了功能等效的設計,即使用電容器。最終結果是微控制器的ADC輸入具有相對較低的阻抗,該阻抗也是電容性的。

        更重要的是,輸入阻抗在轉換過程中會有所變化。這一切都意味著,如果信號源的輸出阻抗很高,則ADC傾向于給出相差甚遠的轉換結果。圖7舉例說明了這一點。

        在此示例中,ADC用于讀取6V電池電壓。為了不使電池過度放電,將R1R2都選擇為20KΩ,以便在電池電壓為6VADC輸入為3.0V。ADCV Ref3.3V;因此,一切都應該正常工作。

        但是,典型的微控制器ADC的輸入阻抗約為10KΩ,如圖所示,它與R2并聯。這將在電池電壓讀數中引起很大的誤差。這種情況下的解決方案是使用一個外部緩沖器來驅動ADC輸入。

        7 – ADC輸入阻抗影響的圖示

        使用微控制器ADC時應考慮的最后一件事是ADC參考。在某些微控制器中,這只是微控制器VDD。

        可以肯定的是,微控制器VDD來自穩壓器,但是穩壓器與適當的參考電壓之間存在很大差異。

        這很容易導致至少兩位精度損失。因此,現在12位微控制器ADC更像是10ADC,并且沒有計算DNLINL錯誤貢獻。

        最重要的是要意識到這些限制,并確定微控制器ADC是否適合該應用。

        請輸入搜索關鍵字

        確定
        国产在线视频在线