無論應用場景如何變化,溫度、電壓與外部傳感器信號始終是系統監控的核心。ADC憑借其多通道兼容性、高采樣率與靈活接口,能夠無縫接入各類信號源,實現全兼容、高精度的數據采集。
在智能家居中實時調控溫濕度,在汽車電子中精準監測電池電壓,在工業自動化中可靠采集傳感器數據……這些形態各異的物聯網應用,都離不開一個關鍵組件——模數轉換器ADC。
今天,我們將分享Air8000系列工業引擎內置的ADC接口及其demo示例,帶你體驗簡單高效的LuatOS應用開發。
一、模數轉換ADC
ADC模擬/數字轉換器,是指將連續變量的模擬信號轉換為離散的數字信號的器件。
硬件中的ADC接口主要用來檢測模擬電壓信號量,用于電池電壓檢測、溫濕度檢測、TDS檢測等應用。
1.1 ADC接口簡介
以Air8000A工業引擎為例,提供了豐富且實用的ADC資源,可滿足大多數物聯網應用需求。
精度:12bits
數量:4個ADC接口(ADC0 ~ ADC3)
兩個特殊通道:
主供電腳電壓VBAT : -- adc.CH_VBAT

1.2 輸入電壓范圍
重要安全提醒:外接輸入電壓切勿超過量程,否則可能燒毀模組;設置分壓(adc.setRange)要在adc.open之前設置,否則無效。
我們主流模組軟件上,對ADC都可以配置ADC_RANGE_MAX和ADC_RANGE_MIN兩種量程。
對Air8000系列工業引擎來說:
adc.ADC_RANGE_MIN:對應量程為0-1.5V;
adc.ADC_RANGE_MAX:對應量程為0-3.6V。
當被測電壓≤1.5V :
使用adc.ADC_RANGE_MIN;
當1.5V<被測電壓≤3.6V :使用adc.ADC_RANGE_MAX,無需添加外部分壓電路;
當被測電壓>3.6V:使用ADC_RANGE_MIN,且必須添加外部分壓電路。
測量電壓相關的函數主要有兩個:adc.read(id):讀取adc通道計算值;adc.get(id):獲取adc計算值。
API文檔詳見:https://docs.openluat.com/osapi/core/adc/
二、ADC功能示例demo
本示例主要用于實現ADC通道配置與量程設置,數據采集并處理,循環打印處理過的ADC數據。

示例教程使用Air8000開發板+兩個Air9000P(直流電源)進行演示;外部輸入電壓在3.6V以內,需要外部電源與模組共地,保持參考電壓一致。
2.1 代碼要點解析
核心功能代碼如下,完整demo詳見源碼倉庫最新文件。
1)讀取adc外部輸入模擬電壓
通過adc.get(id)讀取4個普通ADC接口的外部輸入模擬電壓;首先設置量程,然后打開ADC通道0,進行采樣循環,將獲取到的輸入模擬電壓值存入數組,接下來關閉ADC通道0,最后進行數據處理、打印。

2)讀取供電電壓
通過adc.get(adc.CH_VBAT)讀取VBAT電壓:

3)讀取CPU溫度
通過adc.get(adc.CH_CPU)讀取CPU溫度:

4)數據處理函數
當通道樣本數大于2時,先對樣本升序排序并剔除首尾極值,計算剩余樣本的平均值,最后根據標簽(如CPU溫度或電壓)格式化輸出帶單位的處理值及總樣本數,否則記錄樣本不足。

2.2 示例運行結果
參考實操教程搭建好硬件環境,使用Luatools工具給Air8000開發板燒錄相關內核固件和demo腳本代碼。燒錄成功后,自動開機運行。
通過Luatools工具查看相關日志,如下圖示:

2.3 應用場景拓展
本示例簡單演示了如何讀取ADC輸入電壓、讀取供電電壓、讀取CPU溫度,除此之外,ADC可以將各種連續變化的模擬信號(如溫度、濕度、壓力、電壓、電流等)轉換為離散的數字信號。
Air8000系列工業引擎模塊內部ADC精度12bits,對常見應用已經足夠,如溫濕度傳感器、壓力傳感器、音頻信號處理等。
對于需要更高精度的應用:可以外掛更高精度的ADC,如16位、24位等。使用過程中需注意量程范圍,不可超出量程。
今天的內容就分享到這里了~
審核編輯 黃宇
-
adc
+關注
關注
100文章
7511瀏覽量
555929
發布評論請先 登錄
多通道ADC數模轉換器電池管理系統解決方案
【CPKCOR-RA8D1】打造一個迷你系統監控中心:ADC電壓與溫度實時顯示
【CPKCOR-RA8D1】+ 打造一個迷你系統監控中心:ADC電壓與溫度實時顯示
ADC采集精度不良
EEPROM芯片內部的1路14bit ADC, ADC精度受使用通道數和采樣率是怎么樣的?
ADC多通道采集技術:溫度、電壓與外部信號全兼容
評論