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

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

3天内不再提示

当IoT Power遇上Lua脚本开发,会擦出怎样的火花

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2022-09-05 14:45 次阅读

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

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

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


合宙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)

运行一下看看效果:

719f61ec-2cd0-11ed-ba43-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脚本,我们可以设置在不同电压下的最大电流模拟电池内阻,达到和真实世界一样的情况,方便在研发期及时发现问题。

IoT Power使用及技术交流


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

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

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

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

审核编辑 :李倩


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

    关注

    1

    文章

    499

    浏览量

    67768
  • 脚本
    +关注

    关注

    1

    文章

    390

    浏览量

    14880
  • lua脚本
    +关注

    关注

    0

    文章

    21

    浏览量

    7590

原文标题:可编程!合宙IoT Power与Lua脚本的奇妙碰撞

文章出处:【微信号:HelloLuatOS,微信公众号:合宙LuatOS】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【正点原子STM32H7R3开发套件试用体验】移植lua解释器

    Lua简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua 是巴西里约热内卢天
    发表于 12-29 13:30

    快来“一起鸿蒙吧”!体验更出色,智慧再升级

    鸿蒙遇上脱口秀,擦出什么样的火花?“一起鸿蒙吧”给出了答案。华为邀请了呼兰、贾耗、漫才兄弟、庞博、小鹿等艺人,用脱口秀独有的风趣幽默方式
    的头像 发表于 12-25 14:45 144次阅读
    快来“一起鸿蒙吧”!体验更出色,智慧再升级

    nginx+lua+redis实现灰度发布

    了这种能力,随时可以基于这种能力和思想调整实现方案:比如nginx+lua+(其他数据源)、nginx+(其他脚本语言) 一、灰度方案: 常见的灰度实现方案: 1.请求路由:通过请求中的标识(如用户ID、设备ID、请求头等)来决定是否将请求路由到灰度环境。可以使用反向代
    的头像 发表于 12-17 10:01 86次阅读

    Open开发新方法!Lua语言快速学习

    很多朋友都问我不会Lua又想open开发,怎么办?我的答复是Lua先学起来,再看LuatOS具体应用示例,上手极快,感兴趣的朋友们,可以参照本文一起学。
    的头像 发表于 12-11 09:31 122次阅读
    Open<b class='flag-5'>开发</b>新方法!<b class='flag-5'>Lua</b>语言快速学习

    不会Lua又想Open开发,怎么办?

    本次我把收藏已久的LuatOS具体应用示例特分享个大家,希望不会Lua又想Open开发的朋友有收获。
    的头像 发表于 12-09 14:43 146次阅读
    不会<b class='flag-5'>Lua</b>又想Open<b class='flag-5'>开发</b>,怎么办?

    AI遇上质检擦出什么样的火花

    质检是工厂中的主要场景,传统的人工质检需要工人时刻盯着机器屏幕,从图中发现产品的缺陷,速度大约保持在2秒一张。但如果一张产品的瑕疵难以判断,可能还要多花上几秒思考。而在具体的操作过程中,因为考验视力和专注度,质检员们往往感到较为疲倦。
    的头像 发表于 11-07 11:44 277次阅读

    Lua语法基础教程(上篇)

    意味着Lua虚拟机可以很方便的嵌入别的程序里,从而为应用程序提供灵活的扩展和定制功能。而整个Lua虚拟机编译后仅仅一百余K,经过适当的裁剪还能做到更小,十分适合嵌入式的开发。 同时,在目前脚本
    的头像 发表于 10-24 07:17 218次阅读

    电机碳刷打火花的原因及处理方法

    电机碳刷打火花的原因及处理方法如下: 一、电机碳刷打火花的原因 碳刷磨损过度 :碳刷磨损到一定程度时,其与换向器之间的接触面积减小,导致电阻增大,进而产生高温和
    的头像 发表于 09-03 14:32 4568次阅读

    【龙芯2K0300蜂鸟板试用】+3.移植lua到loongarch

    ,输入$CC就可以编译了,输入loongarch64-linux-gnu-gcc *.c -o lua -lm -O3。生成可执行文件lua 将可执行文件拖到开发板中,并添加可执行权限,并执行
    发表于 08-18 03:31

    5G融合体育时,碰撞出怎样火花

    观赛的乐趣,你更爱哪一种?是和亲朋好友围坐电视机前共同经历难忘的时刻,还是独自徜徉于直播、弹幕和热搜的世界?随着科技与体育的关系日益紧密,我们的观赛体验正在被重新定义。正值全球瞩目的体育盛事即将在巴黎启幕,让我们共同期待5G融合体育时,碰撞出
    的头像 发表于 08-16 11:14 1.2w次阅读

    合宙Air780EP模块Lua开发阿里云应用指南

    合宙Air780EP模块Lua开发阿里云超详细教学!看完包学会!
    的头像 发表于 08-08 09:00 980次阅读
    合宙Air780EP模块<b class='flag-5'>Lua</b><b class='flag-5'>开发</b>阿里云应用指南

    PLC遇上IOT网关可以解决什么问题

    可编程逻辑控制器(PLC)在制造业、石油化工、能源、纺织、印刷、环保等领域占据着至关重要的地位。作为专门为工业场景而设计的数字计算机系统,PLC的核心功能在于通过不间断采集输入信号、依据内部预置逻辑规则进行解析判断,并由此生成对应的输出控制信号,形成自动化的控制闭环,确保在任何严苛条件下都能可靠运作。 随着云计算、信息化等技术的发展,PLC也暴露出各种各样的问题。虽然不影响使用,但往往会对企业数字化转型,需要寻求
    的头像 发表于 07-17 10:39 257次阅读
    <b class='flag-5'>当</b>PLC<b class='flag-5'>遇上</b><b class='flag-5'>IOT</b>网关可以解决什么问题

    SOLIDWORKS教育版:开启数字化设计新时代的钥匙

    在数字化设计的世界里,SolidWorks无疑是一个重量级的角色。那么,你是否想过,solidworks遇上教育版,碰撞出怎样火花呢?
    的头像 发表于 06-17 16:18 259次阅读

    USB Type-C 遇上汽车应用新需求,擦出什么火花

    尽管 USB Type-C 主要作为笔记本电脑、平板电脑和智能手机的新一代、更快充电标准而为人所熟知,但在电力输送和连接应用领域也变得日益普及。USB Type-C 的速度和效率非常高:随着 USB 电力输送 (USB PD) R3.1 规范的发展, 一个 USB Type-C 连接器便可支持高达 240W(48V 和 5A)的功率,相较于 USB Std-A 连接器的 7.5W(5V 和 1.5A) ,这是一个显著的提升。 USB Type-C 的广泛采用并非偶然,欧盟、印度、巴西和韩国纷纷制定并实施了相关规定,要求便携式个人电子产品
    发表于 05-16 09:49 820次阅读
    <b class='flag-5'>当</b>USB Type-C <b class='flag-5'>遇上</b>汽车应用新需求,<b class='flag-5'>会</b><b class='flag-5'>擦出</b>什么<b class='flag-5'>火花</b>?

    一个电源的正接到另一个电源的负怎样?为什么?

    一个电源的正接到另一个电源的负怎样?为什么? 一个电源的正极连接到另一个电源的负极时,会发生短路现象。这是因为在电路中,电源的正极提供电子,而负极接收电子,并将其送回电源。
    的头像 发表于 01-16 11:06 3813次阅读