91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過電池電壓測量的例程學(xué)習(xí)ADC的使用

CHANBAEK ? 來源:魚香ROS ? 作者:小魚 ? 2023-07-03 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

你好,我是愛吃魚香ROS的小魚。上面兩節(jié)通過LED和按鍵學(xué)習(xí)了GPIO的輸出和輸入。

但這種輸入和輸出只有兩種狀態(tài)HIGH或者LOW,我們稱這種為數(shù)字邏輯,這也是輸入輸出函數(shù)稱為數(shù)字輸入和數(shù)字輸出的原因。

但是電池的電壓是一個(gè)在一個(gè)范圍內(nèi)不斷變化的值,明顯無法通過HIGHLOW來表示,所以本節(jié)我們學(xué)習(xí)使用ADC,將電壓值這個(gè)模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)

本教程所使用硬件平臺(tái)為MicroROS學(xué)習(xí)板V1.0.0,可點(diǎn)擊閱讀原文購買及查看詳情

圖片

一、ADC介紹

ADC(analog to digital converter)模數(shù)轉(zhuǎn)換器是一種非常常見的外設(shè),用于 將電壓等模擬信號(hào)轉(zhuǎn)換為數(shù)字形式 ,以便微控制器可以讀取和處理。

ADC在控制和監(jiān)控應(yīng)用中非常有用,因?yàn)榇蠖鄶?shù)傳感器(例如溫度、壓力、力)都是輸出的模擬電壓,所以我們需要掌握ADC。

與ADC相對應(yīng)的DAC——用于將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),比如將一段二進(jìn)制的音樂文件轉(zhuǎn)換成一段連續(xù)的電壓信號(hào)播放出來就需要DAC。

二、電池電壓測量原理

在我們的開發(fā)板所使用的ESP32單片機(jī)上,自帶了ADC模塊,我們只需要將需要測量的模擬電壓接入相應(yīng)引腳,接著調(diào)用ADC相關(guān)API即可讀取。

因?yàn)锳DC原理是采用電壓比較方式進(jìn)行測量,而我們的單片機(jī)的供電電壓為3.3V,所以測量的電壓范圍最大不能超過3.3V,但我們采用的電池電壓和板子的供電電壓分別是12V和5V的。

所以想要使用單片機(jī)測量電池電壓,那么就要想辦法將板子測量的電壓按照比例縮小即可,根據(jù)初中物理知識(shí),串聯(lián)分壓原理,小魚就設(shè)計(jì)了這樣的電路。

串聯(lián)分壓,左邊接電機(jī)電壓輸入引腳,右側(cè)接地,R18是40.2千歐阻值的電阻,R19是10千歐的,假如此時(shí)VMOTOR的輸入電壓為5V,那么ESP_IO34的電壓就是

圖片

那么如果此時(shí)通過ADC測量出上的電壓,通過下面的等式就可以算出的電壓值。

圖片

三、Arduino ADC API

了解了原理,我們來看看Arduino為我們提供了哪些API可以直接獲取到引腳上的電壓。

3.1 設(shè)置ADC衰減系數(shù)(analogReadResolution)

這個(gè)函數(shù)用來設(shè)置ADC讀取時(shí)的衰減系數(shù)。

輸入到引腳的電壓在輸入到ADC之前可能會(huì)衰減。有 4 種可用的衰減選項(xiàng),衰減越高,可測量的輸入電壓就越高,為了能夠測量到12V以上的電壓,我們采用最高的衰減比-ADC_11db。

typedef enum {
    ADC_0db,
    ADC_2_5db,
    ADC_6db,
    ADC_11db,
} adc_attenuation_t;

3.2 讀取ADC值(analogRead)

此函數(shù)用于獲取給定引腳或ADC通道的ADC原始值,默認(rèn)是12位分辨率,所以這個(gè)讀出來的值的范圍就是0-2^12,也就是最大4096。

uint16_t analogRead(uint8_t pin);
  • pin 要讀取ADC值的GPIO 引腳

返回值:ADC原始值

3.3 讀取電壓值(analogReadMillivolts)

此函數(shù)用于獲取給定引腳或ADC 通道的 ADC 值(以毫伏為單位)。

uint32_t analogReadMilliVolts(uint8_t pin);
  • pin 要讀取ADC值的GPIO 引腳

返回值:此函數(shù)將以毫伏為單位返回模擬值。

四、編寫程序

利用上面的三個(gè)API和計(jì)算公式就可以實(shí)現(xiàn)電壓的測量,新建example04_adc工程,在main.cpp輸入代碼。

/**
 * @file main.cpp
 * @author fishros@foxmail.com
 * @brief 4.電池電壓測量-學(xué)會(huì)使用ADC
 * @version 0.1
 * @date 2023-01-04
 *
 * @copyright Copyright(c) fishros.com  2023
 *
 */
#include < Arduino.h >

void setup()
{
  Serial.begin(115200);
  pinMode(34, INPUT);
  analogSetAttenuation(ADC_11db);
}

void loop()
{
  int analogValue = analogRead(34);                     // 讀取原始值0-4096
  int analogVolts = analogReadMilliVolts(34);           // 讀取模擬電壓,單位毫伏
  float realVolts = 5.02 * ((float)analogVolts * 1e-3); // 計(jì)算實(shí)際電壓值

  Serial.printf("ADC analog value = %d\\n", analogValue);
  Serial.printf("ADC millivolts value = %d\\n", analogVolts);
  Serial.printf("realVolts value = %f\\n", realVolts);
  delay(100);
}

五、測試

根據(jù)第三節(jié)中的原理圖,我們測量的是VMOTOR的電壓,VMOTOR是通過一個(gè)跳線帽選擇連接到5V還是12V上的,詳情可以看下面的原理圖。

圖片

對應(yīng)板子上的位置

圖片

這里我們把跳線帽調(diào)整到左側(cè),讓VMOTOR和5V連接,接著打開串口觀察測量到的電壓值。

圖片

可以看到我們成功的測量到了實(shí)際的電壓值為5.045V,符合正常電壓值。

如果你有整臺(tái)FishBot小車,可以將跳線帽調(diào)整到12V的位置,打開電池電源開關(guān),看看是否可以正常測量到12V的電壓。

六、總結(jié)

本節(jié)我們通過電池電壓測量的例程,學(xué)習(xí)了ADC的使用,電池電壓測量對我們機(jī)器人來說是非常重要的,當(dāng)電壓低的時(shí)候可以進(jìn)行自動(dòng)返回充電,然后等充電完成后再繼續(xù)工作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • adc
    adc
    +關(guān)注

    關(guān)注

    100

    文章

    7524

    瀏覽量

    556166
  • 電池電壓
    +關(guān)注

    關(guān)注

    0

    文章

    215

    瀏覽量

    12289
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1329

    瀏覽量

    56252
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    294

    瀏覽量

    18755
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    MCU ADC如何測量超過6V的VCC電池電壓呢?

    假設(shè)MCU的供電是3.3V,ADC能夠測量電壓范圍是0-3.3V,如果要測量電池電壓6V的這
    的頭像 發(fā)表于 04-07 09:04 ?3908次閱讀

    實(shí)驗(yàn)板用鋰電池供電,怎么測量供電電壓

    我現(xiàn)在用了一個(gè)實(shí)驗(yàn)板,通過電池供電,STM32F103的單片機(jī),通18650的圓柱電池通過升壓達(dá)到5V,讓設(shè)備工作,怎么測量一下1865
    發(fā)表于 04-24 08:27

    請教哪位大俠做過電池內(nèi)阻測量 求助

    大俠好是這樣的,我現(xiàn)在手上有個(gè)案子,測試手機(jī)電池的內(nèi)阻;我一直沒做過電池這塊。查了下資料;交流測量法應(yīng)該可以滿足這個(gè)測試案子;但是就是找不到測試用電路圖;只是原理。還請哪位大俠給個(gè)電路參考下;還有就是測試到的
    發(fā)表于 12-10 16:19

    STM8L的ADC測量VDD電壓詳解+例程

    為1.225V。 ADC選擇內(nèi)部參考電壓作為測量通道,可以測量到內(nèi)部電壓的轉(zhuǎn)化值Nadc。 此時(shí),已經(jīng)VDD的轉(zhuǎn)化值4096,VREFIN
    發(fā)表于 07-02 07:33

    測量電池電壓,請問有辦法在發(fā)射訊號(hào)時(shí),去量測ADC值嗎?

    HI ALL, 目前我有一設(shè)備是SLEEP DEVICE ,我在測量電池電壓發(fā)現(xiàn)個(gè)問題,在發(fā)射訊號(hào)時(shí),實(shí)際電流會(huì)很高,會(huì)導(dǎo)致輸入電池電壓會(huì)被
    發(fā)表于 08-09 06:12

    adc測量電壓沒有用到adc引腳和通道

    想要ADC測量電池電壓,參考了半天例程,寫出來也能電壓得到3.3V,但是我最后發(fā)現(xiàn)竟然沒有用到
    發(fā)表于 11-16 08:50

    怎么使用ADC Delsig來測量系統(tǒng)中車載電池電池容量

    你好,在我的設(shè)計(jì)中,我試圖使用ADC Delsig來測量系統(tǒng)中車載電池電池容量,通過使用PSoC中的A
    發(fā)表于 03-26 16:29

    如何通過電池管理IC提升電池性能?

    或放松狀態(tài)的情況下學(xué)習(xí)容量。溫度測量輸入包括其自己的芯片讀數(shù)以及兩個(gè)外部熱敏電阻。通過結(jié)合所有這些因素,該算法消除了電池接近空電壓以及庫侖計(jì)
    發(fā)表于 03-16 11:13

    通過電池電壓測量例程學(xué)習(xí)ADC模數(shù)轉(zhuǎn)換器的使用

    5.045V,符合正常電壓值?! ∪绻阌姓_(tái)FishBot小車,可以將跳線帽調(diào)整到12V的位置,打開電池電源開關(guān),看看是否可以正常測量到12V的電壓。  六、總結(jié)  本節(jié)我們
    發(fā)表于 03-28 14:39

    電池電壓過低及過電流保護(hù)電路

    電池電壓過低及過電流保護(hù)電路原理圖
    發(fā)表于 11-03 11:07 ?3135次閱讀
    <b class='flag-5'>電池</b><b class='flag-5'>電壓</b>過低及<b class='flag-5'>過電</b>流保護(hù)電路

    延長電池壽命的微功率浪涌阻斷器過電壓過電流保護(hù)

    延長電池壽命的微功率浪涌阻斷器過電壓過電流保護(hù)
    發(fā)表于 04-20 17:12 ?10次下載
    延長<b class='flag-5'>電池</b>壽命的微功率浪涌阻斷器<b class='flag-5'>過電壓</b>和<b class='flag-5'>過電</b>流保護(hù)

    RT1064學(xué)習(xí)筆記(1)--ADC例程(ADC Demo)

    RT1064之ADC例程Ps:本例程主要作用是,展示如何使用QTIMER模塊來實(shí)現(xiàn)正交解碼。主板為:逐飛RT1064 + 母板
    發(fā)表于 11-14 17:36 ?17次下載
    RT1064<b class='flag-5'>學(xué)習(xí)</b>筆記(1)--<b class='flag-5'>ADC</b><b class='flag-5'>例程</b>(<b class='flag-5'>ADC</b> Demo)

    通過電壓測量估算電池剩余容量不準(zhǔn)確

    實(shí)施電池電量計(jì)可以通過多種方式完成,包括使用電壓測量或庫侖計(jì)數(shù)。雖然使用電壓測量一直是一種流行的
    的頭像 發(fā)表于 03-10 10:37 ?4205次閱讀
    僅<b class='flag-5'>通過電壓</b><b class='flag-5'>測量</b>估算<b class='flag-5'>電池</b>剩余容量不準(zhǔn)確

    通過電壓電平轉(zhuǎn)換功能實(shí)現(xiàn)智能電池儲(chǔ)能系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《通過電壓電平轉(zhuǎn)換功能實(shí)現(xiàn)智能電池儲(chǔ)能系統(tǒng).pdf》資料免費(fèi)下載
    發(fā)表于 09-05 09:36 ?0次下載
    <b class='flag-5'>通過電壓</b>電平轉(zhuǎn)換功能實(shí)現(xiàn)智能<b class='flag-5'>電池</b>儲(chǔ)能系統(tǒng)

    如何測量和監(jiān)測暫態(tài)過電壓和瞬態(tài)過電壓?

    測量和監(jiān)測暫態(tài)過電壓(TOV,ms-s 級(jí),低幅值)與瞬態(tài)過電壓(TVS/FTOV,ns-μs 級(jí),高幅值),核心是根據(jù)二者 時(shí)間尺度、幅值范圍、能量特性 的差異,選擇匹配 “采樣率、帶寬、存儲(chǔ)能力
    的頭像 發(fā)表于 09-25 16:35 ?1816次閱讀