博客專欄

        EEPW首頁 > 博客 > 封神!Air780E模組LuatOS開發:ADC應用實例

        封神!Air780E模組LuatOS開發:ADC應用實例

        發布人:13673998452 時間:2025-01-12 來源:工程師 發布文章

        今天學習一個新的示例,關于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,如下圖紅框所示:

        wKgZoWcwySWAdc3CAA-bS5z-qqw458.png

        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/

         

        3.2 數據通信線

        USB轉typeC數據線一根。

         

        3.3 PC電腦

        WINDOWS系統,其他暫無特別要求。

         

        3.4 直流穩壓電源

        功耗分析儀Air9000P:

        wKgZomcwyWSABgDtAAOU1LzlL6I572.png

         

        4、準備軟件環境

         

        4.1 下載調試工具

        使用說明參考:

        Luatools下載和詳細使用

        https://docs.openluat.com/Luatools/

        4.2 源碼及固件

        4.2.1 底層core下載地址:LuatOS固件版本下載地址

        https://docs.openluat.com/air780e/luatos/firmware/

        wKgaomcwyXeAVu1dAAHZOVUeEJI798.png

        本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鍵,再短按復位按鍵,讓開發板重啟,重新進入下載模式。

        wKgZomcwyZeAHb__AAjbvuLz_84820.png

        如何判斷有沒有進入下載模式:可以通過PC端的設備管理器中虛擬出來的USB端口數量來判斷。

        正常開機模式:

        wKgZoWcwycCASutKAAIthmpHtjY177.png

        下載模式:

        wKgaoWcwybaAGkhxAAHJZklB7TQ096.png

         

        6、代碼示例介紹

         

        6.1 讀取adc外部輸入模擬電壓

        6.1.1 代碼介紹

        adc.open()開啟ADC后,通過adc.get(1)獲取ADC1的輸入模擬電壓值。

        wKgaoWcwydSAXn2OAAJCWSONv_A591.png

        6.1.2 運行結果展示

        可以將adc0/adc1外接穩壓電源供電,注意供電不可超過量程!(本示例啟用分壓后量程0~3.2V),本示例將adc1輸入3V(電源正極接adc1,負極接GND),查看luatools的log如下(返回值單位為mV):

        wKgaoWcwyeGAFGSPAAko9ZdCBpw090.pngwKgZoWcwyeuAOpXLAAdDqYcuOBI511.png

        6.2 讀取供電電壓

        6.2.1 代碼介紹

        wKgaomcwyfaARvF4AALCUiaKVr0603.png

        6.2.2 運行結果展示

        通過下圖可以看到,VBAT端供電電壓為4.1V

        wKgaomcwyf-AcJgnAATO3_uFxAA483.png

        6.3 讀取CPU溫度

        6.3.1 代碼介紹

        wKgZomcwygiAWDRxAAHRr7rfBoU547.png

        6.3.2 運行結果展示

        通過下圖可以看到,模組CPU溫度為34攝氏度

        wKgaomcwyhKAGiiPAAQ-gfCuxH8886.png

        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,推薦使用這個接口來獲取電壓值。

        分享完畢~


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 定襄县| 木兰县| 准格尔旗| 许昌市| 莱州市| 邳州市| 兴仁县| 柘荣县| 绵阳市| 任丘市| 鄂托克前旗| 南溪县| 陕西省| 中超| 甘德县| 多伦县| 平和县| 灌阳县| 新乡县| 华容县| 长葛市| 靖江市| 女性| 双流县| 古田县| 津南区| 大新县| 福鼎市| 化德县| 毕节市| 建瓯市| 德江县| 海兴县| 澄迈县| 融水| 友谊县| 贵定县| 渭南市| 论坛| 调兵山市| 贵溪市|