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

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

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

【合宙Air105開發(fā)板試用體驗】PWM+ADC+TIME聯(lián)測

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-12-01 11:00 ? 次閱讀

本文來源電子發(fā)燒友社區(qū),作者:z趙先森, 帖子地址:https://bbs.elecfans.com/jishu_2290905_1_1.html


pwm測試視頻(開發(fā)板體驗視頻,詳見作者原文鏈接內(nèi)容)

@TOC

**本文使用環(huán)境:

電腦:windows10

主控:air105(204MHZ)**

注意:本文默認已經(jīng)搭建好平臺。

前言

首先非常感謝電子發(fā)燒友合宙的大力支持。

這篇文章主要記錄air105的初始lutaos嘗試,之前一直在使用C語言進行開發(fā),這次換一個開發(fā)方式。

主要使用ADC-TIM-PWM,為了提升技術難度,將三個串起來:

使用PC7/PWM5(其他的PWM都不方便接出來)產(chǎn)生1MHZ動態(tài)變化的的PWM,然后由PC4的ADC5獲取,并轉化成實際的電壓。C7產(chǎn)生的PWM通過不斷的改變比較值可以輸出不同的電壓,所以就能夠滿足ADC的采集要求,這里需要注意的是,不能直接測量電源電壓,要不然要燒。。。。。ADC的電壓范圍為0-1.8V

LuatOS對于方案來說非常友好,對新手也比較友好,隔離了底層的驅動,不需要關心底層怎么實現(xiàn),只需要調用官方的API就行,極大的解決了不同芯片重復使用相同外設的問題,非常方便。

一、手冊

1、 AIR105的硬件手冊

查看105的手冊了解其IO分布和各方面的性能,主要看以下幾個:

手冊分別為:

在線wiki

105手冊

1.1、主頻:

在這里插入圖片描述

1.2、ADC和PWM:

在這里插入圖片描述

2、LutaOS編程手冊

2.1. PWM編程

找到在線文檔的LuatOS-SOC接口文檔,并找到PWM模塊,

在這里插入圖片描述

往下翻官方給出了demo實例,手冊中有詳細的說明對于每一個參數(shù)

-- 打開PWM5, 頻率1kHz, 占空比50%
pwm.open(5, 1000, 50)
-- 打開PWM5, 頻率10kHz, 分頻為 31/256,即31的高電平256-31的低電平
pwm.open(5, 10000, 31, 0, 256)

本文需要關心占空比和PWM的頻率,ADC測量電壓時,最好將PWM的頻率稍微打一下二,否者檢測的數(shù)據(jù)可能不準,因為電路沒有濾波采樣到的數(shù)據(jù)不是那么準確。兩個函數(shù)都可以使用。后續(xù)只需要改變占空比即可。

2.2. ADC編程

同樣找到ADC的數(shù)模轉換章節(jié):

在這里插入圖片描述

adc有三個函數(shù):open、read、close。功能和名字一樣非常簡單,各參數(shù)也都有詳細的講解,不再贅述。特別要注意。==AIR105的ADC只能檢測外部1.8V的電壓,不能超過==。。。。。如果需要檢測高電壓,采用電阻分壓的方式,兩個電阻串聯(lián)檢測中間的電壓即可。

在這里插入圖片描述

2.3. TIME編程

查看sys庫,定時器在sys中:

在這里插入圖片描述

如圖該函數(shù)為循環(huán)定時功能函數(shù),需要注意該函數(shù)內(nèi)==不能使用wait函數(shù)。==

二、編程

本文采用定時器對pwm進行調節(jié),首先對定時器和ADC進行編程介紹,然后是PWM。

1、 TIME和ADC編程

local time_num = 0;
local dir_num = 0;
sys.timerLoopStart(function()

    if time_num >= 55 then
        dir_num = 0
    elseif time_num <= 0 then
        dir_num = 1
    end
    
    if dir_num == 1 then
        time_num = time_num + 1;
    else 
        time_num = time_num - 1;
    end
    
   log.info("task", time_num,"adc_read:",adc.read(5)) -- 500毫秒后才會執(zhí)行
    
end, 500)

首先定義兩個變量,一個自加,一個方向。當自加到最大值時,方向取反,依次內(nèi)推,減到最小亦是如此。==最大值為什么設置為55?因為IO口電壓為3V3,按照0-100等份,及55為1.8V左右== 根據(jù)前面的介紹可知,ADC打開后僅使用讀取函數(shù)即可,故在輸出的位置進行打印讀取。

測試結果如下:

在這里插入圖片描述

可以看見測試結果和預想的一樣。

2、PWM編程

有了前面的基礎,PWM編程就會非常簡單,只需要調用相關的函數(shù)即可,同時需要在程序循環(huán)之前的位置打開adc。直接上程序:

sys.taskInit(function()
    adc.open(5) -- 5通道是PC4, 0~1.8v,不要超過范圍使用!!!,其它通道也是同樣的范圍
    while 1 do
        pwm.open(5, 1000000, time_num, 0, 100)  
        sys.wait(200)
    end
    adc.close(1)
end)

這里只看pwm.open(5, 1000000, time_num, 0, 100)即可。time_num為定時器修改的PWM值,范圍是0-55。最后的100表示比較的最大值為100。

為了對PWM進行測試,使用萬用便測量IO口的電壓。測試結果如下:

見開頭視頻

3、 完整程序

話不多說直接上程序。

-- LuaTools需要PROJECT和VERSION這兩個信息
PROJECT = "mytest"
VERSION = "1.0.0"

log.info("mymain", PROJECT, VERSION)

-- 一定要添加sys.lua !!!!
local sys = require "sys"
local time_num = 0;
local dir_num = 0;

--添加硬狗防止程序卡死
if wdt then
    wdt.init(15000)--初始化watchdog設置為15s
    sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
end
--定時器1s

sys.timerLoopStart(function()

    if time_num >= 55 then
        dir_num = 0
    elseif time_num <= 0 then
        dir_num = 1
    end
    
    if dir_num == 1 then
        time_num = time_num + 1;
    else 
        time_num = time_num - 1;
    end
    
    log.info("task", time_num,"adc_read:",adc.read(5)) -- 1000毫秒后才會執(zhí)行, 打印 task A B C
    
end, 500)


sys.taskInit(function()
    adc.open(5) -- 5通道是PC4, 0~1.8v,不要超過范圍使用!!!,其它通道也是同樣的范圍
    while 1 do
        pwm.open(5, 1000000, time_num, 0, 100)  
        sys.wait(200)
        --log.info("adc_read:",adc.read(5))
    end
    adc.close(1)
end)


-- 用戶代碼已結束---------------------------------------------
-- 結尾總是這一句
sys.run()
-- sys.run()之后后面不要加任何語句!!!!!

4、測試

電壓是先變小再變大,然后再變小變大,依次循環(huán)。

見末尾視頻

pwm_adc測試視頻(開發(fā)板體驗視頻,詳見作者原文鏈接內(nèi)容)



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

    關注

    0

    文章

    146

    瀏覽量

    1717
  • Air105
    +關注

    關注

    0

    文章

    48

    瀏覽量

    289
收藏 人收藏

    評論

    相關推薦

    干貨分享:Air780E開發(fā)板如何使用?

    ? 一、概述 CORE-AIR780E 開發(fā)板通信推出的基于 Air780E 模組所開發(fā)
    的頭像 發(fā)表于 10-25 17:46 ?184次閱讀
    干貨分享:<b class='flag-5'>Air</b>780E<b class='flag-5'>開發(fā)板</b>如何使用?

    如何使用Air780E開發(fā)板?看這篇就夠了!

    ? 一、綜述 CORE-AIR780E 開發(fā)板通信推出的基于 Air780E 模組所開發(fā)
    的頭像 發(fā)表于 10-23 17:07 ?244次閱讀
    如何使用<b class='flag-5'>Air</b>780E<b class='flag-5'>開發(fā)板</b>?看這篇就夠了!

    RNDIS網(wǎng)卡應用看這篇!Air780EP低功耗4G模組AT開發(fā)示例

    ** ? 1.1 硬件準備 EVB_Air780EP開發(fā)板一套,包括天線、SIM卡; USB線 WIN10以上PC電腦 1.2 軟件準備 串口工具 如果沒有準備,推薦使用LLCO
    的頭像 發(fā)表于 09-30 06:59 ?403次閱讀
    RNDIS網(wǎng)卡應用看這篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模組AT<b class='flag-5'>開發(fā)</b>示例

    FTP應用看這篇!Air780EP低功耗4G模組AT開發(fā)示例

    780EX/Air724UG… **一、相關準備工作 ** ? 1.1 硬件準備 EVB_Air780EP開發(fā)板一套,包括天線、SIM卡
    的頭像 發(fā)表于 09-29 09:36 ?1715次閱讀
    FTP應用看這篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP低功耗4G模組AT<b class='flag-5'>開發(fā)</b>示例

    低功耗4G模組AIR780EX ——開發(fā)板使用說明

    EVB-AIR780EX 開發(fā)板通信推出的基于 Air780EX 模組所開發(fā)的,包含電源,
    的頭像 發(fā)表于 09-11 11:55 ?523次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模組<b class='flag-5'>AIR</b>780EX ——<b class='flag-5'>開發(fā)板</b>使用說明

    4G模組Air780E開發(fā)板使用手冊

    開發(fā)板Air780E使用說明
    的頭像 發(fā)表于 09-09 18:22 ?542次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>4G模組<b class='flag-5'>Air</b>780E<b class='flag-5'>開發(fā)板</b>使用手冊

    LuatOS開發(fā)板Core_Air780EP使用說明

    Core-Air780EP 開發(fā)板通信推出的基于 Air780EP 模組所開發(fā)的,包含電源
    的頭像 發(fā)表于 09-03 17:38 ?470次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>開發(fā)板</b>Core_<b class='flag-5'>Air</b>780EP使用說明

    低功耗4G模組Air700EAQ——開發(fā)板使用說明

    低功耗4G模組Air700EAQ——開發(fā)板使用說明
    的頭像 發(fā)表于 08-30 17:14 ?1007次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模組<b class='flag-5'>Air</b>700EAQ——<b class='flag-5'>開發(fā)板</b>使用說明

    LuatOS開發(fā)板使用手冊——Air700EAQ

    本文詳細講解了Air700EAQ開發(fā)板的使用說明。
    的頭像 發(fā)表于 08-28 14:37 ?459次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>開發(fā)板</b>使用手冊——<b class='flag-5'>Air</b>700EAQ

    LuatOS開發(fā)板使用手冊——Air700ECQ

    LuatOS開發(fā)板使用說明——Air700ECQ
    的頭像 發(fā)表于 08-23 16:28 ?502次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>LuatOS<b class='flag-5'>開發(fā)板</b>使用手冊——<b class='flag-5'>Air</b>700ECQ

    Air780EP模塊——AT指令MQTT接入OneNET開發(fā)指南

    過程,Air780EP和MQTT是最佳拍檔,讓設備互聯(lián)變得輕松又靠譜。想不想試試這簡單又神奇的操作?那就來吧!本文詳細講解了基于Air80EP
    的頭像 發(fā)表于 08-19 16:40 ?1966次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP模塊——AT指令MQTT接入OneNET<b class='flag-5'>開發(fā)</b>指南

    Air780EP模塊Lua開發(fā)阿里云應用指南

    Air780EP模塊Lua開發(fā)阿里云超詳細教學!看完包學會!
    的頭像 發(fā)表于 08-08 09:00 ?847次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP模塊Lua<b class='flag-5'>開發(fā)</b>阿里云應用指南

    | Air780EP首版LuatOS固件發(fā)布,新品模組內(nèi)測搶先體驗

    11月27日,推出 《9.9盲訂!Air780EP新品4G開發(fā)板福利今日開啟》 鐵粉活動
    的頭像 發(fā)表于 12-11 12:20 ?2654次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b> | <b class='flag-5'>Air</b>780EP首版LuatOS固件發(fā)布,新品模組內(nèi)測搶先體驗

    基于Air001的迷你RGB燈環(huán)

    問題來了,你會親手做來送給最愛的TA嗎?基于Air001的迷你RGB燈環(huán)-開源分享-本項目以Ai
    的頭像 發(fā)表于 11-25 08:04 ?1209次閱讀
    基于<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>001的迷你RGB燈環(huán)

    來了!基于Air32的手持示波器

    兼容主流F103,僅需 3.8元的 Air32系列 超值國產(chǎn)MCU,性能強、開發(fā)快,不少行業(yè)客戶已廣泛應用于量產(chǎn)項目,相比市場主流F103每盤可省數(shù)萬元! 你知道嗎,工程師朋友們極
    的頭像 發(fā)表于 11-20 12:15 ?2069次閱讀