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

    文章

    496

    浏览量

    67396
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14636
  • lua脚本
    +关注

    关注

    0

    文章

    21

    浏览量

    7530

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

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

收藏 人收藏

    评论

    相关推荐

    三次输入密码错误怎么办?

    锁定的是IP,不是输入的账户名或者密码,也就是说任一一个输错3次就会被锁定 Redis的Lua脚本中实现了key过期策略,当key消失时锁定自然也就消失了 技术栈同SpringBoot+Redis+Lua
    的头像 发表于 11-28 10:00 402次阅读
    三次输入密码错误怎么办?

    请问ch551内部eeprom是扇区擦出还是字节擦出

    ch551内部eeprom是扇区擦出还是字节擦出
    发表于 09-21 07:49

    当LED显示屏碰上多巴胺上演一场奇妙之旅

    多巴胺风格是2023年当夏最流行的配色。这种极具色彩冲击力的风格一瞬就能抓住客户的眼球。而led显示屏是近来各企事业单位、商圈步行街宣传推广显示的重要工具,凭借其清晰度、色彩饱和度、吸引了大众的注意力。当LED显示屏遇上“多巴胺”会擦出
    的头像 发表于 09-20 10:27 403次阅读
    当LED显示屏碰上多巴胺上演一场奇妙之旅

    当5G-A遇上体育,会碰撞出怎样火花

    在5G-A技术的创新发展下 涌现了各种令人兴奋的应用 和颠覆性的改变 当5G-A遇上体育 会碰撞出怎样火花? 接下来 让我们一起盘点几款 中兴通讯为赋能大型体育赛事 提供的创新应用 01 一块神奇
    的头像 发表于 08-16 17:05 278次阅读
    当5G-A<b class='flag-5'>遇上</b>体育,会碰撞出<b class='flag-5'>怎样</b>的<b class='flag-5'>火花</b>?

    如何在嵌入式中使用设计模式的思想?

    设计模式的标签:高级语言 ,高端,架构等。在AIOT时代,设计模式与嵌入式能擦出怎样火花?设计模式可描述为:对于某类相似的问题,经过前人的不断尝试,总结出了处理此类问题的公认的有效解决办法。
    的头像 发表于 08-09 16:15 411次阅读
    如何在嵌入式中使用设计模式的思想?

    刹车电机火花等级

    刹车电机火花等级是指刹车电机运行时,在电刷和换向器间产生的火花现象.火花在一定程度内并不影响刹车电机马达的连续正常工作,但如果火花大到一定程度,则对刹车电机马达产生破坏作用,使刹车电机
    的头像 发表于 08-03 08:09 687次阅读
    刹车电机<b class='flag-5'>火花</b>等级

    请问如何透过PinView与Lua脚本查看并改变寄存器状态?

    如何透过 PinView 与 Lua 脚本查看并改变寄存器状态?
    发表于 06-20 07:02

    如果我想设置SSID和WEP密钥参数而不更改它在我的LUA脚本中的硬编码,将如何完成?

    密钥参数而不更改它在我的 LUA 脚本中的硬编码,将如何完成? 示例:我以某种方式将 ESP 移动到具有另一个路由器设置(SSID 名称和 WEP 密钥)的另一个位置。是否有任何 LUA
    发表于 06-12 07:53

    esp8266如何删除lua

    好吧,我们在 esp8266 上有一个 lua。我们不想再使用 lua,而是使用本机 AT 命令。 1.当我们发送 AT 命令时,我们得到 lua 错误,
    发表于 06-12 06:24

    如何在init.lua文件中存储更改的变量?

    GPIO 04 为低电平 ,因此如何将最后更改的(板载)值更改为 init.lua模块重新启动时,先前的引脚值与启动时的值相同。
    发表于 06-09 07:31

    如何NodeMCU + TFT LCD制作简单游戏?

    我的 WiFiBoy 项目上周末获得了一个新的定制 NodeMCU+UCG-lib 固件。它对我们用 Lua 脚本制作游戏非常有用。 这是我们第一款使用 NodeMCU 1.5.1-wb 固件的 Lua 游戏的分享视频。 (这是
    发表于 05-24 09:03

    ESP8266 LUA如何通过Wi-Fi自动更新?

    这个 LUA 脚本定期检查网络服务器上的更新,如果发现更新,它会自动下载到 ESP 模块。 该脚本专门设计用于使用电池运行并使用深度睡眠功能的 ESP8266 模块。
    发表于 05-23 08:03

    5G与车联网会擦出怎样火花

    本文将探讨第三代合作伙伴计划 (3GPP) 打算如何在车联网应用中采用5G技术,以及这一方案相较于现有的专用短程通信 (DSRC) 或其他蜂窝车联网 (C-V2X) 方案所具备的显著优势。需要注意的是,“蜂窝车联网”中的“蜂窝”一词其实存在一定的误导性,它在这项应用中并不是指5G这样的蜂窝网络,而是指蜂窝无线电中让双方能够直接通信的基础电子技术。
    的头像 发表于 05-16 09:17 623次阅读

    lua简单脚本部分没有响应是为什么?

    我发现了一个名为 30 分钟 esp8266 网页服务器中继控制的小项目。 用NODEmcu刷机,用Esplorer上传lua。它可以工作,但一两天后它就会停止为该网页提供服务。十分钟后又回来了。郁闷上面找问题。
    发表于 05-09 06:23

    如何使用NodeMCU+所有自定义脚本烧写esp8266?

    我正在考虑使用 ESP8266 通过 WiFi 控制所讨论的机器人的想法。我已经使用 lua 脚本在 NodeMCU 开发板 (ESP-12E) 上成功地做到了这一点,对此我感到非常满意。但我还有一
    发表于 05-04 08:17