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

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

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

淺談IoT Power的Lua腳本開發(fā)應(yīng)用

合宙LuatOS ? 來源:合宙LuatOS ? 作者:讓萬物互聯(lián)更簡單 ? 2022-09-05 14:43 ? 次閱讀

Lua腳本開發(fā)簡單快速,在Cat.1和MCU開發(fā)應(yīng)用中已歷經(jīng)驗(yàn)證并廣受好評。所以LuatOS社群經(jīng)常有人問:合宙推出的口袋神器——IoT Power,可以腳本開發(fā)嗎?

答案肯定是可以。今天我們就來看看,當(dāng)IoT Power遇上Lua腳本開發(fā),會擦出怎樣的火花~

淺談IoT Power的Lua腳本開發(fā)應(yīng)用

合宙IoT Power專為工程師朋友量身打造,外觀近似ZIPPO打火機(jī)大小——既是一款高性能高精度的迷你型可調(diào)電源,也是兼?zhèn)溆涗浄治龉δ艿牡凸?a href="http://www.ttokpm.com/tags/電流/" target="_blank">電流分析儀。

● 測量二極管伏安特性曲線

二極管伏安特性,初中物理課就學(xué)過的一個基本物理法則,相信大家都再熟悉不過了??墒峭ǔy量這個曲線很麻煩,要不停的調(diào)整電壓并記錄電流然后繪圖。

調(diào)整電壓看電流,這不正是IoT Power的強(qiáng)項(xiàng)嘛!那我們只需要寫腳本慢慢升高電壓,然后讀取電流自動繪圖就行了。

說干就干,寫個腳本:

Lua


--該腳本可以測量二極管伏安特性曲線 --測試前請先關(guān)閉輸出,然后將二極管正負(fù)極分別連接至IoT Power

--最終將生成一張圖片

Lua

--該腳本可以測量二極管伏安特性曲線
--測試前請先關(guān)閉輸出,然后將二極管正負(fù)極分別連接至IoT Power
--最終將生成一張圖片

apiMessageBox("提示", "請先選擇需要保存圖表的文件位置")

local path = apiGetSavePath("png")

if not apiSetDevice(0, 0, false) then
apiMessageBox("警告", "獲取不到信息,請確保你已連接設(shè)備!")
print("腳本已退出")
return

end



--開個任務(wù)來測

sys.taskInit(
function()
sys.wait(1000)
--結(jié)果存這里
local c = {}
local v = {}
print("開始測試")
for i = 1, 19 do --mA檔位時
apiSetDevice(i / 10, 1, true)
sys.wait(500)
local tc, tv = apiGetCV()
if tc and tv then
if not (#v > 0 and tv < v[#v]) then
table.insert(c, tc)
table.insert(v, tv)
print("got", tc, tv)
end
end
end
for i = 4, 50 do --A檔位時
apiSetDevice(i, 1, true)
sys.wait(500)
local tc, tv = apiGetCV()
if tc and tv and tv > v[#v] then
table.insert(c, tc)
table.insert(v, tv)
print("got", tc, tv)
end
end

if path then
print(apiPlot(v, c, "二極管伏安曲線", "電壓(V)", "電流(mA)", 500, 500, path))

print("測試結(jié)束!文件已保存在", path)
end
apiSetDevice(0, 0, false)
end)


運(yùn)行一下看看效果:

719f61ec-2cd0-11ed-ba43-dac502259ad0.png

模擬電池放電曲線

在真實(shí)世界里電池的電壓下降不是線性的,所以經(jīng)常會遇到電池前面一段很耐用,但是到了一定電壓以后,電壓開始快速下降。

這種過程原來很難模擬,但是有了腳本就不一樣了。我們可以通過腳本模擬電池放電曲線,達(dá)到和真實(shí)電池一樣的電壓變化。

Lua

--模擬電池放電腳本

--請根據(jù)實(shí)際需求修改這里的變量值

--請先連接設(shè)備,再運(yùn)行腳本

--最大電流限制,單位mA

local maxCurrent = 1000

--電池電量(單位mWh),這里假定0.37Wh(3.7V 100mAh)

local power = 0.37 * 1000

--例子數(shù)據(jù):

--瓦時和毫安時換算

--Wh=V×mAh÷1000

--mAh=Wh÷V×1000



--電量從100%到0%,每10%的電壓(除了最后四個為15%、10%、5%、0%)

local vt = {

4.2,

4.08,

4,

3.93,

3.87,

3.82,

3.79,

3.77,

3.73,

3.7,

3.68,

3.5,

2.5

}

--獲取使用過多少電量后的電池電壓

--傳入值0-100,傳入整型數(shù)字

function getVoltagePercent(used)

if used >= 100 then

return vt[#vt]

end

if used < 80 then --剩余電量大于20%

local now = math.floor(used / 10)

local offset = (used % 10) / 10

return vt[now + 1] - (vt[now + 1] - vt[now + 2]) * offset

else--剩余電量小于20%

local now = math.floor((used - 80) / 5)

local offset = (used % 5) / 5

return vt[now + 9] - (vt[now + 9] - vt[now + 10]) * offset

end

end



sys.taskInit(

function()

print("開始測試!")

local totalPower = 0

local lastPower = apiGetPower()

local lastv = 0

while true do

local pNow = apiGetPower()

local p = pNow - lastPower

--防止比上次小

if p > 0 then

totalPower = totalPower + p

end

lastPower = pNow

--算一下現(xiàn)在用了多少電

local used = math.floor(totalPower / power * 100)

--獲取當(dāng)前電壓

local v = getVoltagePercent(used)

--和上次電壓不同的時候,就設(shè)置一下電壓

if v ~= lastv then

localr = apiSetDevice(maxCurrent, v, true)

if not r then

print("電壓設(shè)置失敗,請檢查數(shù)據(jù)和設(shè)備連接")

end

end

lastv = v

print("已使用電量" .. totalPower .. "mWh," .. used .. "%,輸出電壓" .. v .. "V")

sys.wait(2000)

end

end

)

● 模擬電池內(nèi)阻

電池放電過程中不僅僅是電壓的下降,實(shí)際上內(nèi)阻也會發(fā)生變化。特別是一些低功耗設(shè)備的鋰亞電池,電壓下降以后內(nèi)阻很大導(dǎo)致輸出電流很小,當(dāng)設(shè)備進(jìn)行無線發(fā)射時會遇到電流不夠?qū)е轮貑?。這種現(xiàn)象在研發(fā)階段很難模擬,就會導(dǎo)致設(shè)備實(shí)際工作時長和理論值偏差較大。

通過IoT Power腳本,我們可以設(shè)置在不同電壓下的最大電流模擬電池內(nèi)阻,達(dá)到和真實(shí)世界一樣的情況,方便在研發(fā)期及時發(fā)現(xiàn)問題。

IoT Power使用及技術(shù)交流

最新版本的IoT Power上位機(jī)的腳本控制頁面,即可看到模擬電池放電和測量二極管伏安曲線的兩個示例腳本。

71ce5f56-2cd0-11ed-ba43-dac502259ad0.png



可根據(jù)實(shí)際需求,新建自己的腳本自由發(fā)揮;相關(guān)Lua接口在幫助文檔頁面查找。




審核編輯:劉清

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

    關(guān)注

    147

    文章

    9410

    瀏覽量

    164411
  • 可調(diào)電源
    +關(guān)注

    關(guān)注

    12

    文章

    82

    瀏覽量

    23326
  • lua腳本
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7556
  • IOT
    IOT
    +關(guān)注

    關(guān)注

    186

    文章

    4097

    瀏覽量

    195090
收藏 人收藏

    評論

    相關(guān)推薦

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運(yùn)行腳本文件 在命令行中,可以直接使用腳本文件的路徑來運(yùn)行腳本。例如: ./script. sh 這種方式需要確保
    的頭像 發(fā)表于 08-30 15:17 ?154次閱讀

    shell腳本編寫之本地腳本的編寫和執(zhí)行

    的使用可以參考下一節(jié))將變量值輸出進(jìn)行查看,如下圖,可以看到?jīng)]有輸出var的值;然后再使用source或. 進(jìn)行腳本執(zhí)行,再次查看var變量的值,可以看到成功輸出235,該方式執(zhí)行腳本后的變量,沒有釋放,所以我們經(jīng)常使用source來配置shell環(huán)境變量,后邊講
    發(fā)表于 08-28 09:36

    【龍芯2K0300蜂鳥板試用】+3.移植lua到loongarch

    ,輸入$CC就可以編譯了,輸入loongarch64-linux-gnu-gcc *.c -o lua -lm -O3。生成可執(zhí)行文件lua 將可執(zhí)行文件拖到開發(fā)板中,并添加可執(zhí)行權(quán)限,并執(zhí)行
    發(fā)表于 08-18 03:31

    合宙Air780EP模塊Lua開發(fā)阿里云應(yīng)用指南

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

    涂鴉推出完全開源的open sdk開發(fā)框架!大大降低IoT開發(fā)門檻

    開發(fā)者來說,IoT開發(fā)的難點(diǎn)是什么?首先,IoT涉及到多個領(lǐng)域和多種開發(fā)技術(shù),每一層的技術(shù)接口、協(xié)議都需要跨平臺、跨領(lǐng)域、跨系統(tǒng)的合作協(xié)同
    的頭像 發(fā)表于 04-12 08:14 ?943次閱讀
    涂鴉推出完全開源的open sdk<b class='flag-5'>開發(fā)</b>框架!大大降低<b class='flag-5'>IoT</b><b class='flag-5'>開發(fā)</b>門檻

    RISC-V Linux開發(fā)環(huán)境腳本

    比較多的RISC-V SOC Linux開發(fā)環(huán)境使用CMake/Makefile,雖然也知道些怎么用,但有沒完整系統(tǒng)的這方面學(xué)習(xí)資料?如語法、腳本鏈接結(jié)構(gòu)等,可以分享下深入學(xué)習(xí)
    發(fā)表于 03-31 12:48

    iot可以使用手機(jī)開發(fā)APP來云端控制嗎?

    iot可以使用手機(jī)開發(fā)APP來云端控制嗎?
    發(fā)表于 03-20 08:00

    淺談城市泵站遠(yuǎn)程監(jiān)控系統(tǒng)的開發(fā)

    淺談城市泵站遠(yuǎn)程監(jiān)控系統(tǒng)的開發(fā) 張穎姣 安科瑞電氣股份有限公司?上海嘉定 201801 摘要:針對我國城市泵站設(shè)備普遍偏舊,自動化、信息化管理水平不高,有待實(shí)現(xiàn)泵站遠(yuǎn)程集中監(jiān)控等問題,提出城市系站
    的頭像 發(fā)表于 02-27 15:14 ?304次閱讀
    <b class='flag-5'>淺談</b>城市泵站遠(yuǎn)程監(jiān)控系統(tǒng)的<b class='flag-5'>開發(fā)</b>

    shell腳本調(diào)試技巧

    0、專業(yè)腳本的規(guī)范格式 函數(shù)1函數(shù)2main函數(shù)main$* 1、使用dos2unix命令轉(zhuǎn)換來自windows下開發(fā)腳本 dos2unix默認(rèn)是沒有安裝的,可以yum 安裝
    發(fā)表于 12-28 16:57

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語法錯誤,給出建議增強(qiáng)腳本健壯性。
    的頭像 發(fā)表于 12-27 13:43 ?1600次閱讀
    Shell<b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    腳本調(diào)試工具有哪些?腳本調(diào)試工具怎么用?

    腳本調(diào)試是軟件開發(fā)過程中非常重要的一環(huán),它能幫助開發(fā)者快速定位并解決代碼中的錯誤。大多數(shù)編程語言都提供了各種各樣的腳本調(diào)試工具,本文將介紹一些常見的
    的頭像 發(fā)表于 12-01 14:40 ?645次閱讀

    三次輸入密碼錯誤怎么辦?

    鎖定的是IP,不是輸入的賬戶名或者密碼,也就是說任一一個輸錯3次就會被鎖定 Redis的Lua腳本中實(shí)現(xiàn)了key過期策略,當(dāng)key消失時鎖定自然也就消失了 技術(shù)棧同SpringBoot+Redis+Lua
    的頭像 發(fā)表于 11-28 10:00 ?638次閱讀
    三次輸入密碼錯誤怎么辦?

    腳本錯誤scripterror怎么解決

    分析和排查。以下是一些常見的解決腳本錯誤的方法: 檢查語法錯誤: 仔細(xì)檢查腳本中的代碼,看是否有拼寫錯誤、缺少分號、括號不匹配等語法錯誤。 在一些集成開發(fā)環(huán)境(IDE)或代碼編輯器中,可以借助自動完成、語法高亮等功能來輔助檢查語
    的頭像 發(fā)表于 11-26 14:46 ?5738次閱讀

    shell并行調(diào)用腳本

    在Shell腳本中,可以使用一些技巧來實(shí)現(xiàn)并行調(diào)用。以下是幾種常見的方法: 使用后臺進(jìn)程:在Shell腳本中,可以使用"command2 上述腳本中,每個命令都在末尾添加了"&"符號,它們將在
    的頭像 發(fā)表于 11-08 10:23 ?799次閱讀

    如何使用腳本完成CRC和填充值的自動完成

    恩智浦的MPC架構(gòu)的微控制器使用的開發(fā)環(huán)境IDE是S32DS ,該IDE使用的GNU GCC工具鏈沒有提供對編譯結(jié)果的CRC校驗(yàn)和自動生成工具,所以需要我們制作一個腳本自動生成和填充,腳本調(diào)用Srecord工具執(zhí)行。
    的頭像 發(fā)表于 10-21 09:50 ?699次閱讀
    如何使用<b class='flag-5'>腳本</b>完成CRC和填充值的自動完成