色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CW32數字電壓電流表軟件教程-實驗五:ADC采樣及顯示

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-05-31 15:28 ? 次閱讀

6.1. ADC基礎知識

6.1.1.什么是ADC

模擬數字轉換器即A/D轉換器,或簡稱ADC,通常是指一個將模擬信號轉變為數字信號電子元件。通常的模數轉換器是將一個輸入電壓信號轉換為一個輸出的數字信號。由于數字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數轉換器都需要一個參考模擬量作為轉換的標準,比較常見的參考標準為最大的可轉換信號大小。而輸出的數字量則表示輸入信號相對于參考信號的大小。

6.1.2. CW32的ADC介紹

CW32F003 內部集成一個 12 位精度、最高 1M SPS 轉換速度的逐次逼近型模數轉換器 (SAR ADC),最多可將 16 路模擬信號轉換為數字信號。現實世界中的絕大多數信號都是模擬量,如光、電、聲、圖像信號等,都要由 ADC 轉換成數字信號,才能由 MCU 進行數字化處理。

主要特性

  • 12 位精度
  • 編程轉換速度,最高達 1M SPS
  • 16 路輸入轉換通道
  • 13 路外部引腳輸入- 內置溫度傳感器- 內置 BGR 1.2V 基準- 1/3 VDD 電源電壓
  • 4 路參考電壓源(Vref)
  • VDD 電源電壓- ExRef(PB04)引腳電壓- 內置 1.5V 參考電壓- 內置 2.5V 參考電壓
  • 采樣電壓輸入范圍:0 ~ Vref
  • 多種轉換模式,全部支持轉換累加功能
  • 單次轉換- 多次轉換
  • 連續轉換
  • 序列掃描轉換
  • 序列斷續轉換
  • 支持單通道、序列通道兩種通道選擇,最大同時支持 4 個序列
  • 支持輸入通道電壓閾值監測
  • 內置信號跟隨器,可轉換高阻抗輸入信號
  • 支持片內外設自動觸發 ADC 轉換

6.1.3. ADC基本參數

分辨率:表示ADC轉換器的輸出精度,通常以位數(bit)表示,比如8位、10位、12位等,位數越高,精度越高。

采樣率:表示ADC對模擬輸入信號進行采樣的速率,通常以每秒采樣次數(samples per second,SPS)表示,也稱為轉換速率,表示ADC能夠進行多少次模擬到數字的轉換。

采樣范圍:指ADC可以采集到的模擬輸入信號的電壓范圍,范圍見下:

0 ≤ ADC ≤ Vref

Vref 為參考電壓,CW32F003有四路電壓參考源見上文。

6.1.4. 基本原理

CW32F003采用的是逐次逼近型的12位ADC,逐次逼近型ADC是一種常見的ADC工作原理,它的思想是通過比較模擬信號與參考電壓之間的大小關系來逐步逼近輸入信號的數字表示。在逐次逼近型ADC中,輸入信號和參考電壓被加入一個差分放大器中,產生一個差分電壓。然后,這個差分電壓被輸入到一個逐步逼近的數字量化器中,該量化器以逐步遞減的方式將其與一系列參考電壓進行比較。具體來說,在每個逼近階段,量化器將輸入信號與一個中間電壓點進行比較,將該電壓點上方或下方的參考電壓作為下一個逼近階段的參考電壓。這個過程一直持續到量化器逼近到最終的數字輸出值為止。

我們數字電壓電流表的采樣電路原理圖如下圖所示,

圖6-1 電壓采樣電路原理圖

如果使用1.5V作為參考電壓,根據R8和R7的阻值配比可以得到最高采樣電壓為:

1.5 / 10 * (220 + 10)= 34.5V

電流采樣的電路原理圖見圖6-2,對電流采樣本質上是對檢流電阻的電壓進行采樣。

圖6-2 電流采樣原理圖

6.2. ADC優點

1.數字信號具有良好的抗干擾性。數字信號是由一系列離散的數字表示,因此可以抵抗模擬信號受到的各種干擾,如噪聲、漂移等。

2.方便數字信號的存儲、處理和傳輸。由于數字信號是離散的,因此它們可以輕松存儲在計算機內存或其他數字設備中,方便進行處理和傳輸。

3.具有可編程性。現代的ADC出現了很多可編程的功能,例如可編程增益、采樣率和濾波器等,可以根據不同的應用場景進行優化。

4.適用性廣泛。ADC被廣泛應用于工業通信、醫療、電子測量、音頻視頻等領域,可轉換各種不同類型的模擬信號,包括電壓、電流、聲音、光信號等。

6.3. ADC應用

ADC的應用非常廣泛。例如,我們可以用ADC將傳感器的模擬信號轉換為數字信號,然后通過計算機進行處理和分析;ADC在音頻處理中也起著重要的作用,將模擬聲音信號轉換為數字信號,并接下來進行數字信號處理;無線電通信中的信號調制也需要使用ADC等。總的來說,ADC在現代電子工程中非常重要,是數字信號處理和控制技術的關鍵部分。

6.4. ADC采樣顯示

在下面我們對CW32F003的ADC通道進行配置,輸入5V電壓給電壓表,CW32將采樣得到的值輸入數碼管顯示,對ADC通道的配置代碼如下;

#include "ADC.h"

uint16_t Volt_Buffer;        //存放ADC采樣值

void ADC_init(void)
{
    ADC_InitTypeDef     ADC_InitStructure;         //ADC配置結構體
    ADC_SerialChTypeDef ADC_SerialChStructure;     //ADC序列通道結構體
    GPIO_InitTypeDef    GPIO_Init_Struct;

    __RCC_GPIOB_CLK_ENABLE(); //打開ADC對應引腳時鐘   
    __RCC_ADC_CLK_ENABLE();   // 打開ADC時鐘

    GPIO_Init_Struct.IT   = GPIO_IT_NONE;
    GPIO_Init_Struct.Mode = GPIO_MODE_ANALOG;//將GPIO的模式配置成模擬功能
    GPIO_Init_Struct.Pins = GPIO_PIN_1;      // PB01是電壓采集引腳
    GPIO_Init(CW_GPIOB, &GPIO_Init_Struct);
    PB01_ANALOG_ENABLE();                    //使能模擬引腳

    ADC_StructInit(&ADC_InitStructure);      // ADC默認值初始化
    ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div4; //ADC工作時鐘配置 PCLK/4 = 6/4 = 1.5Mhz

/*信號電壓較低時,可以降低參考電壓來提高分辨率。改變參考電壓后,同樣二進制表示的電壓值就會不一樣,
  最大的二進制(全1)表示的就是你的參考電壓,在計算實際電壓時,就需要將參考電壓考慮進去。*/
    ADC_InitStructure.ADC_VrefSel    = ADC_Vref_BGR1p5;//參考電壓設置為1.5V
    //由于電壓信號為慢速信號,ADC采樣時間為十個ADC采樣周期以確保準確 
    ADC_InitStructure.ADC_SampleTime = ADC_SampTime10Clk;
    //Sqr為序列配置寄存器,這里只用到了序列0的通道,所以配置成0表示只轉換Sqr0序列
    ADC_SerialChStructure.ADC_SqrEns     = ADC_SqrEns0;     
    ADC_SerialChStructure.ADC_Sqr0Chmux  = ADC_SqrCh9;//配置ADC序列,PB01是ADC的第9通道
    ADC_SerialChStructure.ADC_InitStruct = ADC_InitStructure; //ADC初始化

    ADC_SerialChContinuousModeCfg(&ADC_SerialChStructure);   //ADC序列連續轉換模式配置
    ADC_ClearITPendingAll();           //清除ADC所有中斷狀態
    ADC_Enable();                      // ADC使能
    ADC_SoftwareStartConvCmd(ENABLE);  //ADC轉換軟件啟動命令
}

void Get_ADC_Value(void)               //取得ADC采樣的值傳給全局變量Volt_Buffer
{
    ADC_GetSqr0Result(&Volt_Buffer);
}

在主函數中初始化ADC后在BTIM1的中斷服務程序中調用 Get_ADC_Value 得到ADC采樣的值,再在主函數的 while 循環中調用數碼管顯示函數 Display 將ADC采樣值顯示到數碼管上。下圖為數字電壓電流表接入5V電壓時的采樣顯示圖。可以看到接入5V時ADC采樣得到669,我們可以計算:

(669/4096)* [(1.5/10)*(200+10)] = 5.145 V

其中4096代表CW32的ADC采樣精度12位為2^12=4096,由于我們的測試樣品中220KΩ的電阻被替換成了200KΩ,所以計算公式如上,與萬用表測量數值相符。(各位學員最終收到的版本是220KΩ的電阻)

圖6-3 ADC采樣顯示

圖6-4 萬用表測量5V

6.5. ADC采樣計算

根據上文,ADC所采樣的值雖然準確地顯示在數碼管上,但采樣值仍需要轉換成標準值。計算思路與上述公式類似,只是顯示到數碼管上需要將數值擴大100倍。因此采樣計算的思路為:將采樣得到的值(比如在5V輸入的情況下ADC采樣得到668)用上述計算公式計算得到的結果后乘以100:

(668/4096)* [(1.5/10)*(200+10)] * 100 = 513.7 V

由于變量為整形,最終輸入給顯示函數 Display 的值為513,在 Display 函數里對輸入的值進行判定,如果輸入值大于1000,則數碼管只能顯示xx.x V,所以我們只取輸入值的千百十位;如果輸入值小于1000,比如現在輸入值為513,則數碼管可顯示x.xx V,分別將513的百十個位存入 Seg_Reg 數組中。

最終需要添加一個 Cal_Buffer 變量來存儲 Volt_Buffer 的值、一個電壓計算函數,再修改 Display 函數見下文:

uint16_t Cal_Buffer;  //存儲 Volt_Buffer 的值

#define ADC_REF_VALUE (1500) //擴大1000倍  1.5 * 1000 = 1500
#define R2            (200) //單位:KΩ
#define R1            (10)

void Volt_Cal(void)   //將ADC采樣值轉化為標準值
{
  Cal_Buffer = Volt_Buffer;   //存儲中斷服務程序中取得的ADC采樣值
  Cal_Buffer = (Cal_Buffer * ADC_REF_VALUE > > 12) * (R2 + R1)/R1;//計算得到的值為標準值的1000倍

    if(Cal_Buffer % 10 >= 5)     // 四舍五入
    {
        Cal_Buffer = Cal_Buffer / 10 + 1;  
    }
    else
    {
        Cal_Buffer = Cal_Buffer / 10;   //此時的值為標準值的100倍
    }
}

在while循環中調用數碼管顯示函數Display之前先調用Volt_Cal函數。

int main()
{
  RCC_Configuration();
  Seg_Init();
  Btim1_Init();
  ADC_init();

  while(1)
    {
      Volt_Cal();
      Display(Cal_Buffer); 
    }
}

Display函數的更新如下:

void Display(uint32_t value)
{
  uint8_t Thousands;   //千位
  uint8_t Hundreds;    //百位
  uint8_t Tens;        //十位
  uint8_t Units;       //個位

  Thousands = value / 1000;     //如果輸入值大于1000,只取輸入值的千百十位
  if(Thousands > 0)             //大于0則說明輸入值的千位有值
    {
       Units     = value % 10;
       value     = Units > 5 ? (value + 10) : value; // 根據后一位四舍五入
       Thousands = value / 1000 % 10;                //只取千百十位
       Hundreds  = value / 100 % 10;
       Tens      = value / 10 % 10;

       // 顯示xx.x伏
       Seg_Reg[0] = Thousands;
       Seg_Reg[1] = Hundreds + 10; // 加dp顯示
       Seg_Reg[2] = Tens;
    }

  else                            //如果輸入值的千位沒有值,則取百十個位
    {
        Units     = value % 10;
        Tens      = value / 10 % 10;
        Hundreds  = value / 100 % 10;

        // 顯示x.xx伏
        Seg_Reg[0] = Hundreds + 10; // 加dp顯示
        Seg_Reg[1] = Tens;
        Seg_Reg[2] = Units;
    }
}

最終顯示效果如下圖(輸入接5V):

圖6-5 采樣計算后顯示值

此時萬用表測得電壓如下:

圖6-6 萬用表測量值(5V)

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 差分放大器
    +關注

    關注

    8

    文章

    449

    瀏覽量

    52160
  • ADC
    ADC
    +關注

    關注

    0

    文章

    110

    瀏覽量

    16845
  • 電壓電流表
    +關注

    關注

    0

    文章

    25

    瀏覽量

    2074
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    626
收藏 人收藏

    評論

    相關推薦

    基于CW32F003E4P7的數字電壓電流表產品方案

    產品實物: 一、產品概述 數字電壓電流表,又稱為數顯電流電壓表,是以數字形式顯示,能夠同時檢測電流
    的頭像 發表于 06-25 11:55 ?920次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b>產品方案

    CW32數字電壓電流表軟件進階教程-3.電壓電流標定

    標定是通過測量標準器的偏差來補償儀器系統誤差,從而改善儀器或系統準確度、精度的操作。為了提高電壓電流表在測量時的測量精度和準確度,需要對電壓電流進行標定校準。 常見的標定原理如下:假設一個采樣
    的頭像 發表于 05-31 16:20 ?712次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-3.<b class='flag-5'>電壓電流</b>標定

    CW32數字電壓電流表軟件進階教程-2.電壓電流值做均值濾波

    實驗運行7.1章節例程時 [CW32數字電壓電流表軟件進階教程-1.電壓電流同時
    的頭像 發表于 05-31 15:57 ?489次閱讀

    CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示

    基于[CW32數字電壓電流表軟件教程-實驗七:基本數據處理算法(均值濾波)],可以對電壓電流進行
    的頭像 發表于 05-31 15:50 ?719次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-1.<b class='flag-5'>電壓電流</b>同時<b class='flag-5'>顯示</b>

    CW32數字電壓電流表軟件教程-實驗七:基本數據處理算法(均值濾波)

    有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內的像素總個數。這本是數字圖像處理的一種方法,但也可以用在我們數字電壓電流表
    的頭像 發表于 05-31 15:47 ?364次閱讀

    CW32數字電壓電流表軟件教程-實驗六:串口藍牙發送

    7.1.串口基礎知識 7.1.1.串口介紹 串行接口簡稱串口,也稱串行通信接口或串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口 (Serial Interface)是指數據一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠距離通信,但傳送速度較慢。 7.1.2.串口通信參數介紹 波特率:衡量通信速度的參數,它表示每秒鐘傳送的bit的個數。 數
    的頭像 發表于 05-31 15:45 ?329次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>六:串口藍牙發送

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    5.1.數碼管動態顯示原理 所謂動態掃描顯示即輪流向各位數碼管送出段碼和位碼,利用發光管的余輝和人眼視覺暫留作用,使人眼的感覺好像各位數碼管同時都在顯示。明確了原理,我們要使電壓電流表
    的頭像 發表于 05-31 15:23 ?506次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>四:數碼管動態<b class='flag-5'>顯示</b>

    CW32數字電壓電流表軟件教程-實驗三:數碼管顯示數字

    原理是由多個發光的二極管共陰極或者共陽極組成的成“8”字形的顯示器件。數碼管通過不同的組合可用來顯示數字0~9、字符A ~ F及小數點“.”。數碼管的工作原理是通過控制外部的I/O端口進行驅動數碼管的各個段
    的頭像 發表于 05-31 15:21 ?952次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>三:數碼管<b class='flag-5'>顯示</b><b class='flag-5'>數字</b>

    CW32數字電壓電流表軟件教程-實驗二:按鍵檢測

    3.1.獨立按鍵基礎知識 3.1.1.獨立按鍵結構組成 獨立按鍵實際上是一個非自鎖的輕觸開關,有左右兩個觸點,當按下時左右兩個觸點閉合,當松開時左右兩個觸點斷開。 3.1.2.獨立按鍵控制原理 想要使用外部的按鍵控制單片機有兩種比較常見的方法:IO掃描和外部中斷。對于IO掃描的方式而言,需要單片機以比較高的頻率去不間斷地判斷IO口的輸入電平,隨后根據IO電平來執行后續的邏輯。外部中斷的方式會在章節十二中進行詳細介紹,本章著重介紹IO掃描的
    的頭像 發表于 05-31 15:16 ?853次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>二:按鍵檢測

    CW32數字電壓電流表軟件教程-實驗一:LED原理與驅動

    2.1.LED燈基礎知識 2.1.1.LED燈結構組成 LED燈,也稱發光二極管,是一種能夠將電能轉化為可見光的固態的半導體器件,它可以直接把電轉化為光。LED的內部是一個半導體的晶片,晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極,整個晶片環-氧樹脂封裝起來。常見的LED燈如圖2-1所示。 圖2-1 常見LED燈 2.1.2.LED燈發光原理 半導體晶片由兩部分組成,一部分是P型半導體,另一端是N型半導體。這兩種半導體連接起來的時候,它們之間就形成了一個
    的頭像 發表于 05-31 15:09 ?349次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實驗</b>一:LED原理與驅動

    CW32數字電壓電流表軟件教程):ADC采樣顯示

    模擬數字轉換器即A/D轉換器,或簡稱ADC,通常是指一個將模擬信號轉變為數字信號的電子元件。通
    的頭像 發表于 05-21 10:34 ?1138次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(<b class='flag-5'>五</b>):<b class='flag-5'>ADC</b><b class='flag-5'>采樣</b>及<b class='flag-5'>顯示</b>

    CW32數字電壓電流表軟件教程(三):數碼管顯示數字

    數碼管的顯示原理是由多個發光的二極管共陰極或者共陽極組成的成“8”字形的顯示器件。數碼管通過不同的組合可用來顯示數字0~9、字符A ~ F及小數點“.”。
    的頭像 發表于 05-14 14:20 ?2.5w次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(三):數碼管<b class='flag-5'>顯示</b><b class='flag-5'>數字</b>

    CW32數字電壓電流表軟件教程(一):LED原理與驅動基礎知識詳解

    LED 驅動指的是通過穩定的電源為 LED 提供合適的電流電壓,使其正常工作點亮。LED 驅動方式主要有恒流和恒壓兩種。
    的頭像 發表于 05-06 15:33 ?1741次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(一):LED原理與驅動基礎知識詳解

    CW32數字電壓電流表-產品硬件設計要點

    電壓跟隨器的功能簡化外圍電路 2、使用了和市面電壓電流表的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表頭供電電壓,覆蓋大部分常用電壓范圍 4、板載低成本藍牙通
    的頭像 發表于 04-25 15:20 ?1902次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b>-產品硬件設計要點

    基于單片機的電壓電流表設計

    電子發燒友網站提供《基于單片機的電壓電流表設計.rar》資料免費下載
    發表于 01-12 09:59 ?16次下載
    主站蜘蛛池模板: 色一伦一情一区二区三区| caoporn超碰视频| 精品无码无人网站免费视频| 亚洲色噜噜狠狠网站| 久久99re6热在线播放| 99久久就热视频精品草| 日本性xxx| yw193龙物免费官网在线| 三级aa久久| 国产午夜精品一区二区理论影院| 亚洲理论在线a中文字幕| 免费国产成人高清在线看软件| gratis videos欧美最新| 亚洲xxxx动漫| 女人麻豆国产香蕉久久精品| 高清无码中文字幕影片| 亚洲精品国产自在现线最新| 免费国产成人手机在线观看| 国产精品JIZZ在线观看A片| 姉调无修版ova国语版| 偷窥wc美女毛茸茸视频| 久就热视频精品免费99| 观看免费做视频| 中文视频在线观看| 性xxx免费视频| 日本亚洲精品无码区国产电影 | 医生含着我的奶边摸边做| 久久精品中文字幕免费| 成年人在线视频免费观看| 一个色夫导航| 日韩午夜影院| 美女xx00| 精品一成人岛国片在线观看| 调教日本美女| 伊人草| 日本一卡二卡三卡四卡无卡免费播放 | 睡觉被偷偷进入magnet| 农村脱精光一级| 久久国产精品人妻中文| 国产精品在线手机视频| 一个人高清在线观看日本免费|