0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

可编程!合宙IoT Power与Lua脚本的奇妙碰撞

合宙LuatOS 2022-09-07 09:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Lua脚本开发简单快速,在Cat.1和MCU开发应用中已历经验证并广受好评。所以LuatOS社群经常有人问:合宙推出的口袋神器——IoT Power,可以脚本开发吗?

答案肯定是可以。今天我们就来看看,当IoT Power遇上Lua脚本开发,会擦出怎样的火花~

c3548b8c-2d3b-11ed-9ade-dac502259ad0.gif

浅谈IoT Power的Lua脚本开发应用


c3628db8-2d3b-11ed-9ade-dac502259ad0.jpg

合宙IoT Power专为工程师朋友量身打造,外观近似ZIPPO打火机大小——既是一款高性能高精度的迷你型可调电源,也是兼备记录分析功能的低功耗电流分析仪。

● 测量二极管伏安特性曲线

二极管伏安特性,初中物理课就学过的一个基本物理法则,相信大家都再熟悉不过了。可是通常测量这个曲线很麻烦,要不停的调整电压并记录电流然后绘图。

调整电压看电流,这不正是IoT Power的强项嘛!那我们只需要写脚本慢慢升高电压,然后读取电流自动绘图就行了。

说干就干,写个脚本:

▼ 上下滚动,查看全部 ▼
手机横屏查看更方便

Lua

--该脚本可以测量二极管伏安特性曲线
--测试前请先关闭输出,然后将二极管正负极分别连接至IoT Power

--最终将生成一张图片

apiMessageBox("提示", "请先选择需要保存图表的文件位置")

local path = apiGetSavePath("png")

if not apiSetDevice(0, 0, false) then
apiMessageBox("警告", "获取不到信息,请确保你已连接设备!")
print("脚本已退出")
return

end

--开个任务来测

sys.taskInit(
function()
sys.wait(1000)
--结果存这里
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("测试结束!文件已保存在", path)
end
apiSetDevice(0, 0, false)
end)

运行一下看看效果:

c3751384-2d3b-11ed-9ade-dac502259ad0.png

模拟电池放电曲线

在真实世界里电池的电压下降不是线性的,所以经常会遇到电池前面一段很耐用,但是到了一定电压以后,电压开始快速下降。

这种过程原来很难模拟,但是有了脚本就不一样了。我们可以通过脚本模拟电池放电曲线,达到和真实电池一样的电压变化。

▼ 上下滚动,查看全部 ▼
手机横屏查看更方便

Lua

--模拟电池放电脚本

--请根据实际需求修改这里的变量值

--请先连接设备,再运行脚本

--最大电流限制,单位mA

local maxCurrent = 1000

--电池电量(单位mWh),这里假定0.37Wh(3.7V 100mAh)

local power = 0.37 * 1000

--例子数据:

--瓦时和毫安时换算

--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,传入整型数字

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

--算一下现在用了多少电

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

--获取当前电压

local v = getVoltagePercent(used)

--和上次电压不同的时候,就设置一下电压

if v ~= lastv then

localr = apiSetDevice(maxCurrent, v, true)

if not r then

print("电压设置失败,请检查数据和设备连接")

end

end

lastv = v

print("已使用电量" .. totalPower .. "mWh," .. used .. "%,输出电压" .. v .. "V")

sys.wait(2000)

end

end

)

● 模拟电池内阻

电池放电过程中不仅仅是电压的下降,实际上内阻也会发生变化。特别是一些低功耗设备的锂亚电池,电压下降以后内阻很大导致输出电流很小,当设备进行无线发射时会遇到电流不够导致重启。这种现象在研发阶段很难模拟,就会导致设备实际工作时长和理论值偏差较大。

通过IoT Power脚本,我们可以设置在不同电压下的最大电流模拟电池内阻,达到和真实世界一样的情况,方便在研发期及时发现问题。

c3548b8c-2d3b-11ed-9ade-dac502259ad0.gif

IoT Power使用及技术交流


在最新版本的IoT Power上位机的脚本控制页面,即可看到模拟电池放电和测量二极管伏安曲线的两个示例脚本。

最新客户端/使用说明:
https://iotpower.luatos.com/

c3afc880-2d3b-11ed-9ade-dac502259ad0.png

可根据实际需求,新建自己的脚本自由发挥;相关Lua接口在帮助文档页面查找。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IOT
    IOT
    +关注

    关注

    189

    文章

    4369

    浏览量

    206591
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    思尔芯邀您共聚 FPT 2025,赋能可编程技术新未来

    技术先锋,再启新程!思尔芯将亮相12月2日至5日的2025年国际现场可编程技术大会(FPT),与全球顶尖专家学者及行业伙伴,共同探索可编程技术的前沿发展与应用创新。FPT是亚太地区最具影响力的现场
    的头像 发表于 11-25 09:57 268次阅读
    思尔芯邀您共聚 FPT 2025,赋能<b class='flag-5'>可编程</b>技术新未来

    LUA例程-常用的回调函数使用说明

    详细说明LUA脚本函数功能和对应的应用实例。对于LUA脚本编程有很大的帮助和提高技能。
    发表于 11-24 16:43 0次下载

    LuatOS脚本开发入门:嵌入式运行框架全解析!

    想搞懂LuatOS如何运行Lua脚本?本文深入剖析其嵌入式运行框架,涵盖虚拟机加载、任务协程、系统初始化等关键环节,适合初学者。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS
    的头像 发表于 09-26 17:45 260次阅读
    LuatOS<b class='flag-5'>脚本</b>开发入门:嵌入式运行框架全解析!

    用于 DOCSIS 3.0 上行路径的可编程增益放大器 skyworksinc

    电子发烧友网为你提供()用于 DOCSIS 3.0 上行路径的可编程增益放大器相关产品参数、数据手册,更有用于 DOCSIS 3.0 上行路径的可编程增益放大器的引脚图、接线图、封装手册、中文资料
    发表于 09-01 18:33
    用于 DOCSIS 3.0 上行路径的<b class='flag-5'>可编程</b>增益放大器 skyworksinc

    可编程电源有哪些温度控制措施?

    可编程电源的温度控制措施是保障其长期稳定运行、延长使用寿命的核心设计,主要通过硬件防护、软件监控、散热优化三方面实现。以下是具体措施及分析:一、硬件级温度控制措施 温度传感器实时监测 原理:在电源
    发表于 06-25 14:56

    可编程SLIC语音芯片哪家好?

    在当今数字化快速发展的时代,语音芯片的应用越来越广泛,而可编程SLIC(用户线路接口电路)语音芯片更是凭借其独特的优势,受到众多行业的青睐。那么,面对众多的选择,哪家的可编程SLIC语音芯片更胜一筹
    的头像 发表于 06-12 13:55 543次阅读
    <b class='flag-5'>可编程</b>SLIC语音芯片哪家好?

    吉事励可编程变频电源的特性与应用

    在当今科学技术飞速发展的时代,可编程交流电源作为一种关键的电力设备,在工业生产、科研实验等诸多领域得到了广泛的应用,为各行业的发展提供了强有力的动力支持。 可编程交流电源具有许多显著的特点。 首先
    的头像 发表于 04-21 17:18 462次阅读
    吉事励<b class='flag-5'>可编程</b>变频电源的特性与应用

    爱普生可编程晶振SG-8018CA(X1G005571)在物联网设备中的应用

    随着物联网(IoT)技术的飞速发展,各种智能设备需要高精度、低功耗且灵活可编程的时钟源来确保其稳定运行。爱普生的SG-8018CA(X1G005571)可编程晶振凭借其卓越的性能,成为物联网设备的理想选择。
    的头像 发表于 03-19 17:05 524次阅读

    可编程电子负载的原理及主要应用

    可编程电子负载是电源测试领域的关键设备,能够模拟真实负载条件并动态调整参数,为电源、电池、新能源设备等提供性能验证。源仪电子基于20年行业经验,开发了可编程直流电子负载系列,涵盖高精度测试、动态响应及多通道控制功能,满足从研发到量产的全流程测试需求。
    的头像 发表于 03-15 10:38 1431次阅读
    <b class='flag-5'>可编程</b>电子负载的原理及主要应用

    EPSON SG-8018CG可编程晶振:无线通信领域的高精度时钟解决方案

    在5G、物联网(IoT)和智能终端的快速发展下,无线通信设备对时钟源的性能要求日益严苛。时钟信号的精度、稳定性和功耗直接决定了通信系统的可靠性与效率。爱普生推出的EPSON SG-8018CG可编程
    的头像 发表于 03-05 10:43 999次阅读
    EPSON SG-8018CG<b class='flag-5'>可编程</b>晶振:无线通信领域的高精度时钟解决方案

    可编程交流负载标准

    可编程交流负载标准是电力电子测试领域的重要组成部分,它为交流电源、变频器、逆变器等设备的测试提供了标准化的负载条件。这种可编程性使得测试更加灵活和精确,能够满足不同设备和应用场景的需求。 核心在于其
    发表于 01-15 13:53

    EE-153:ADSP-2191可编程PLL

    电子发烧友网站提供《EE-153:ADSP-2191可编程PLL.pdf》资料免费下载
    发表于 01-14 14:57 0次下载
    EE-153:ADSP-2191<b class='flag-5'>可编程</b>PLL

    爱普生(EPSON) 常规可编程晶振

    常规可编程晶振主要用来替换一般用途的中低频四脚有源晶振,可以满足大多数用途有源晶振的快速交付。爱普生(Epson)作为全球领先的晶体产品供应商,提供了一系列可编程晶振,可以与基波正常振荡器相同
    的头像 发表于 01-13 15:24 1015次阅读
    爱普生(EPSON) 常规<b class='flag-5'>可编程</b>晶振

    可编程交流电子负载各领域的作用

    可编程交流电子负载是一种高精度的测试设备,广泛应用于各种领域。以下是一些主要应用领域及其作用: 电力系统测试:在电力系统的设计和运行中,需要对发电机、变压器和输电线路等进行测试。可编程交流电
    发表于 12-24 14:04

    PLC可编程控制器的简介

    PLC的英文全称为Programmable Logic Controller,也就是可编程序控制器。它是一种将计算机技术与继电器技术结合起来的现代化自动控制装置,1969年,美国数字化设备公司研制出
    的头像 发表于 12-23 09:09 2078次阅读