H7-TOOL的LUA小程序教程第14期:任意波形信号发生器,0-20mA输出和微型数控电源(2024-10-11,已更新)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。


简介

信号发生器,0-20mA输出和微型数控电源,可以在上位机端设置,也可以显示屏端设置

详细使用说明可以看在线或者离线操作说明手册:H7-TOOL操作说明和客户常见问题汇总贴,含PDF离线版(2024-08-16) - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

建议优先熟悉下,特别是对应的信号发生器和0-20mA输出引脚。

1、上位机端设置

2、显示屏端设置

LUA函数说明:

1、打开和关闭DAC

函数 dac_on() 打开DAC电源

函数dac_off() 关闭DAC电源

这两个函数都是直接调用即可。由于信号发生器和0-40mA输出都是通过DAC实现的,所以调用这两个函数可以实现信号发生器和0-40mA输出开关。

2、写DAC数值

函数dac_write(参数1)

参数1:范围0-4095,用于写DAC值,因为是12bit DAC,所以范围是0-4095

函数dac_volt2dac(参数1)

参数1:单位mV,支持正负10V,对应的数值范围是-10000到10000,即-10000mV到10000mV,用于电压值换算为DAC值

函数dac_curr2dac(参数1)

参数1:单位uA,支持0-20mA,对应的参数范围是0到20000,即0uA到20000uA,用于电流值换算为DAC值

举例:

这三个函数同样是直接调用即可,这三个函数推荐配合使用,

比如设置电流输出10mA, 那么我们就可以:

local value

dac_on()

value = dac_curr2dac(10000)

dac_write(value)

又比如设置输出电压5V,那么我们就可以:

local value

dac_on()

value = dac_volt2dac(5000)

dac_write(value)

3、写电压和电流

函数dac_volt(参数1)

参数1:写电压值,单位mV,支持正负10V,对应的数值范围是-10000到10000,即-10000mV到10000mV

函数dac_curr(参数1)

参数1:写电流值,单位uA,支持0-20mA,对应的参数范围是0到20000,即0uA到20000uA

举例1:

函数dac_volt等效于dac_volt2dac + dac_write, 比如设置输出电压5V,那么我们就可以:

local value

dac_on()

dac_volt(5000)

函数dac_curr等效于dac_curr2dac + dac_write,比如设置电流输出10mA, 那么我们就可以:

local value

dac_on()

dac_curr(10000)

使用另外一个TOOL的4-20mA输入采集,实际电流效果:

使用台式万用表测量实际值

4、TVCC微型数控电源

函数write_tvcc_dac(参数1)

参数1:用于设置TVCC的DAC值,范围0 -127

函数write_tvcc_volt(参数1)

参数1:用于设置TVCC的电压,单位mV,范围1.2V - 5.0V,即1200mV - 5000mV

举例:

推荐使用函数write_tvcc_volt设置电压值,比如设置输出3.3V,那么就是write_tvcc_volt(3300)

5、信号发生器输出

函数lua_DacWaveStop()

无形参和返回值,直接调用即可,用于停止信号发生器输出。

函数lua_DacWaveStart(参数1, 参数2, 参数3)

参数1:波形数据缓冲

注意这个缓冲是每两个字节组成一个DAC值,值得范围是0-4095, 并且数值是以字符串形式填写才行,为了方便大家使用,需要使用函数dac_volt2dac做转换即可。

参数2:是输出一个波形数据点的速度

参数3:0表示无限输出,1表示输出一次。

举例:

比如周期性输出8个数值的波形,1123mV, 556mV, 2445mV, 5334mV, -3334mV, -5556mV,, 7890mV, 3231mV。

代码实现如下:

Lua 复制代码
-- 定义一个空数组
local Volt = {1123, 556, 2445,  5334, -3334,  -5556,  7890, 3231}
 
-- 定义要赋值的数值
local DacValues = ""
 
-- 使用 for 循环将数值赋值给数组的每个成员
for i = 1, #Volt do
    DacValues = DacValues..dac_volt2dac(Volt[i])
end
 
dac_on()
dac_wave_start(DacValues,10000,0)
print("开始波形输出")

动态效果:

相关推荐
Eiceblue1 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
m0_555762902 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊3 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
lzb_kkk4 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼4 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
简佐义的博客4 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
程序员爱钓鱼4 小时前
【无标题】Go语言中的反射机制 — 元编程技巧与注意事项
开发语言·qt
Frank学习路上5 小时前
【IOS】XCode创建firstapp并运行(成为IOS开发者)
开发语言·学习·ios·cocoa·xcode
2301_805054565 小时前
Python训练营打卡Day59(2025.7.3)
开发语言·python