今天學習一個新的示例,關于Air780E模組LuatOS開發的ADC應用實例,希望大家有所收獲。
1、模數轉換(ADC)概述
1.1 ADC簡介
ADC通常指模擬/數字轉換器,是指將連續變量的模擬信號轉換為離散的數字信號的器件。Cat.1模塊ADC接口主要用來檢測模擬電壓信號量,用于電池電壓檢測,溫濕度檢測,TDS檢測等應用。
1.2 ADC接口介紹
根據Air780E產品手冊內《Air780E_硬件設計手冊_V1.3.3.pdf》可知:
(1)Air780E內部ADC接口精度為12bits外部直流分壓為0-3.4V
(2)Air780E內部具有2個ADC接口,ADC0--AIO3ADC1--AIO4
(3)兩個特殊通道,CPU內部溫度Temp--adc.CH_CPU主供電腳電壓VBAT--adc.CH_VBAT
注意事項:設置分壓(adc.setRange)要在adc.open之前設置,否則無效!!Air780E內部具有2個ADC接口,ADC0和ADC1,如下圖紅框所示:
1.3 輸入電壓的范圍
Air780E關閉分壓后,量程范圍0~1.1V注意:外接輸入電壓切記不可超過量程,否則有燒毀風險!!!
adc.setRange(adc.ADC_RANGE_1_2)--air780E關閉ADC0,1分壓電阻,范圍0~1.1Vadc.setRange(adc.ADC_RANGE_3_8)--air780E開啟ADC0,1分壓電阻,范圍0~3.2V
2、演示功能概述
本章節演示了Air780E內部2個ADC接口,以及2個特殊通道:CPU內部溫度Temp--adc.CH_CPU主供電腳電壓VBAT--adc.CH_VBAT的使用教程。
2.1 通過adc.get()讀取ADC的外部輸入模擬電壓
注:啟用分壓后量程最高也只能到達3.2V,若想測量更高的外部電源電壓,需要外接分壓電阻,具體設計請參考ADC接口設計指導;本教程外部輸入電壓在3.2v以內,需要外部電源與模組共地,保持參考電壓一致。
2.2 通過adc.get(adc.CH_VBAT)讀取供電電壓
2.3 通過adc.get(adc.CH_CPU)讀取CPU溫度
3、準備硬件環境
3.1 開發板準備
使用Air780E核心板,
此核心板的詳細使用說明參考:
https://docs.openluat.com/air780e/product/
Air780E產品手冊中的<<開發板Core_Air780E使用說明VX.X.X.pdf>>,寫這篇文章時最新版本的使用說明為:<<開發板Core_Air780E使用說明V1.0.5.pdf>>;核心板使用過程中遇到任何問題,可以直接參考這份使用說明pdf文檔。
3.2 數據通信線
USB轉typeC數據線一根。
3.3 PC電腦
WINDOWS系統,其他暫無特別要求。
3.4 直流穩壓電源
功耗分析儀Air9000P:
4、準備軟件環境
4.1 下載調試工具
使用說明參考:
Luatools下載和詳細使用
https://docs.openluat.com/Luatools/
4.2 源碼及固件
4.2.1 底層core下載地址:LuatOS固件版本下載地址
https://docs.openluat.com/air780e/luatos/firmware/
本demo使用的固件是core_V1112壓縮包內的LuatOS-SoC_V1112_EC618_FULL.soc
4.2.2 本教程使用的demo:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/adc
4.2.3 下載源碼和固件
5、模數轉換(ADC)軟硬件資
5.1 API接口介紹
本教程使用api接口為:adc-模數轉換-LuatOS文檔
https://wiki.luatos.com/api/adc.html?highlight=adc
5.2 Air780E燒錄說明
將Air780E通過通過usb數據線連接電腦,如下圖所示:
注:1、按住下載模式按鍵(boot鍵)不放,同時再長按開機鍵開機,這時開發板會進入下載模式,Luatools下載進度條會開始跑,這時可以松開boot按鍵。直到工具提示下載完成。2、如果,未能成功進入下載模式,而是進入正常開機模式,這時可以按住boot鍵,再短按復位按鍵,讓開發板重啟,重新進入下載模式。
如何判斷有沒有進入下載模式:可以通過PC端的設備管理器中虛擬出來的USB端口數量來判斷。
正常開機模式:
下載模式:
6、代碼示例介紹
6.1 讀取adc外部輸入模擬電壓
6.1.1 代碼介紹
adc.open()開啟ADC后,通過adc.get(1)獲取ADC1的輸入模擬電壓值。
6.1.2 運行結果展示
可以將adc0/adc1外接穩壓電源供電,注意供電不可超過量程!(本示例啟用分壓后量程0~3.2V),本示例將adc1輸入3V(電源正極接adc1,負極接GND),查看luatools的log如下(返回值單位為mV):
6.2 讀取供電電壓
6.2.1 代碼介紹
6.2.2 運行結果展示
通過下圖可以看到,VBAT端供電電壓為4.1V
6.3 讀取CPU溫度
6.3.1 代碼介紹
6.3.2 運行結果展示
通過下圖可以看到,模組CPU溫度為34攝氏度
7、總結
本教程簡單舉例了如何讀取adc輸入電壓、讀取供電電壓、讀取CPU溫度,除此之外,adc可以將各種連續變化的模擬信號(如溫度、濕度、壓力、電壓、電流等)轉換為離散的數字信號,本模塊內部ADC精度12bits,對許多應用已經足夠,如溫濕度傳感器、壓力傳感器、音頻信號處理等,然而對于需要更高精度的應用,可以外掛更高精度的ADC,如16位,24位等。使用過程中需注意量程范圍,不可超出量程。
8、常見問題
8.1 為什么ADC輸入3V,讀取模擬電壓只有1.1V?
未啟用分壓時,量程最高只能到達1.1V,若想測量3V,需啟用分壓。
8.2 ADC測量電壓來回跳變,為什么?
看外部輸入電壓是否與模塊共地,正常情況需要共地,保持參考電壓一致。
8.3 adc.read()和adc.get()要用哪一個?
adc.read()返回兩個值,一個原始值,一般沒用,可以直接拋棄;另一個是從原始值換算得出的實際值,通常單位是mV。(僅作了解,不建議使用)adc.get()返回的就是計算值,通常單位是mV,推薦使用這個接口來獲取電壓值。
分享完畢,歡迎關注
審核編輯 黃宇
-
adc
+關注
關注
98文章
6498瀏覽量
544661 -
LuatOS
+關注
關注
0文章
76瀏覽量
1944
發布評論請先 登錄
相關推薦
評論