首页 > 编程语言 >H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

时间:2024-11-02 16:30:40浏览次数:5  
标签:11 01 DS18B20 -- TOOL 2024 adc ADS1256 ex

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

争取2.27版本固件发布前,H7-TOOL的LUA API手册同步上线


 

【ADS1256】

驱动8通道24bit分辨率ADS1256

这个功能还是非常有意义的,大大方便了多路高精度数据采集监测。特别是搭建三代示波器模拟前端的洞洞板模拟电路,可以方便的采集多个节点位置。从实战应用中来提出问题,再到实战应用中去解决问题,这大概就是工具的真正价值所在。

需要深入了解ADS1256可以看教程第93章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

1、ADS1256接线说明:

ADS1256模块    H7-TOOL  (TVCC输出3.3V)
+5V   <------  5.0V       5V供电
GND   -------  GND        地
      
CS    <------  D0         SPI_CS    PI0      
DRDY  ------>  D1       准备就绪 (用到外部中断) PH10    --所有的IO电平固定是3.3V
DIN   <------  D2         SPI_MOSI  PE6
DOUT  ------>  D3       SPI_MISO  PE5
SCLK  <------  D5        SPI时钟   PE2
      
GND   -------  GND        地      
PDWN  (模块有上拉,可不接线)
RST   (模块有上拉,可不接线)
NC    空脚
NC    空脚


2、ADS1256测试代码

使用比较简单,注释很详细,使用也比较简单。

local gain = 0    -- 增益 (0=X1,  1=X2,  2=X4,  3=X8, 4=X16, 5=X32, 6=X64)
local drate = 7    --数据率 (0=30000,1=15000,2=7500,3=3750,4=2000,5=1000,6=500,7=100, 8=60, 9=50, 10=30, 11=25, 12=15, 13=10, 14=5,  15=2.5sps)
local buffen = 1  -- 1表示使能输入buffer使能,0表示禁止
local diffmode = 0  -- 0表示单端模式,1表示差分模式
local scantable = "01234567"  --扫描次序, 可只扫描需要的通道
 
m_init("ADS1256", gain, drate, buffen, diffmode, scantable)  -- 挂载ADS1256
 
delayms(500)
 
for j=1, 8, 1 do                           --  循环执行了8次              
    adc = {m_read("ADS1256")}    --  读取数据            
    adc[1] = adc[1]*2.5/4194303   --  8通道的数据全部读取,直接计算实际电压值。
    adc[2] = adc[2]*2.5/4194303
    adc[3] = adc[3]*2.5/4194303
    adc[4] = adc[4]*2.5/4194303
    adc[5] = adc[5]*2.5/4194303
    adc[6] = adc[6]*2.5/4194303
    adc[7] = adc[7]*2.5/4194303
    adc[8] = adc[8]*2.5/4194303
    s = string.format("%f", adc[1]) --打印1个通达,多个通道同理,类似C的printf
    print(s)                                   --  打印数值
    print_wave(s)                          --  打印波形效果
    delayms(100)                          --   100ms刷新1次
end
 
m_uninit("ADS1256")  -- 卸载ADS1256

将代码贴到Lua小程序窗口里面执行即可:


【MCP3421】

这个帖子有个早期使用I2C控制驱动说明,可以优先看下:https://www.armbbs.cn/forum.php?mod=viewthread&tid=109658

使用专用的API驱动实现如下:

local gain = 0   --0=X1 1=X2 2=X4 3=X8
  local drate = 3  --0=240sp(12bit)  1=60sps(14bit) 2=15sps(16bit) 3=3.75sps(18bit)
  m_init("MCP3421", gain, drate)
 
  delayms(200)
 
  adc = m_read("MCP3421")  print(adc) --读ADC数据

同时将TOOL的信号发生器输出1.4V电压让MCP3421模块测试:


【8路继电器】

1、驱动模块说明:

Lua驱动74HC595,可配置任意引脚、595芯片个数。发布74HC595_8路继电器模块
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110038


2、TOOL控制继电器模块的接线:

H7-TOOL        继电器
5.0V              5.0
3.3V              VDD
GND              GND
D4                SCK
D2                SDI
D9                LCK

实际接线效果:


3、控制说明:

m_init("74HC595", 4, 2, 9, 1)  --  配置D4为SCK时钟,  D2为SDI数据, D9为LCK锁存,  1个74HC595芯片

m_write("74HC595", 2,   1)   --  设置74HC595的Q2 = 1  (第2个形参是起始bit, 第3个形参值。 支持多个形参)
m_write("74HC595", 2,   1,0) --设置74HC595的Q2 = 1  Q3 = 0
m_write("74HC595", 0,   1,0,1,0,   0,0,0,0)   --  设置74HC595的Q0-7 分别为 1,0,1,0,   0,0,0,0

注意一点就行,第2个形参是设置的起始继电器,范围从0到7。后面的参数根据大家的设置起始继电器,设置继电器的开关。

1表示这两个导通:

0表示这两个导通:

比如我们控制前4个为1,后4个为0,就是如下效果:

验证是否设置正常,进入TOOL的电阻,二极管测量界面即可:

接线如下:

可以方便的测量继电器的闭合状态。


【AD7606】

需要深入了解AD7606可以看教程第76或77章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

1、设置AD7606模块是SPI接口:

 

 

2、AD7606 SPI接线说明:

AD7606模块               H7-TOOL
  +5V          <------   5.0V   5V供电
  GND          -------   GND   地
  CS            <------   D7     片选控制
  RD/SCLK   <------   D5     时钟线
  DB7/DOUT  ------> D3     数据输出
  BUSY        ------>   D6     BUSY信号
  CVA CVB   <------   D0,  启动转换

  RAGE     <------   可以接3.3V或者GND控制,3.3表示±10V测量范围,GND表示±5V测量范围。
  RST       <------   不接
  OS0       <------   可以接3.3V或者GND控制, 过采样引脚0(默认接地),最好接上
  OS1       <------  可以接3.3V或者GND控制,过采样引脚1(默认接地),最好接上
  OS2       <------   可以接3.3V或者GND控制, 过采样引脚2(默认接地),最好接上

 

其中CVA和CVB可以考虑短接

最终接线效果:


3、AD7606测试代码:

adc = {} --定义个数组
 
ex_start()   -- 启动AD7606
 
delayms(100)
 
for j=1, 800,1 do                  -- 循环800次                                    
    adc[1] = ex_adc(0)*5/32768  
    adc[2] = ex_adc(1)*5/32768
    adc[3] = ex_adc(2)*5/32768
    adc[4] = ex_adc(3)*5/32768
    adc[5] = ex_adc(4)*5/32768
    adc[6] = ex_adc(5)*5/32768
    adc[7] = ex_adc(6)*5/32768
    adc[8] = ex_adc(7)*5/32768
    s = string.format("%f", adc[8]) --打印1个通达,多个通道同理,类似C的printf
    print(s)                        --  打印数值
    print_wave(s)                   --  打印波形效果
    delayms(100)                    --   100ms刷新1次
end
 
ex_stop() -- 卸载AD7606

将代码贴到Lua小程序窗口里面执行即可:

测试3.3V的效果:


【DS18B20】

使用这个功能,有必要优先看下TOOL端展示和使用方法:https://www.armbbs.cn/forum.php?mod=viewthread&tid=106958

使用专用的API驱动实现如下:

m_init("DS18B20")
 
re,temp = m_read("DS18B20", 0)  --读D0口DS18B20的温度值, re = 1 表示OK
re,temp = m_read("DS18B20", 2)  --读D2口DS18B20的温度值, re = 1 表示OK
 
m_uninit("DS18B20") --退出程序

1、H7-TOOL支持外接5路DS18B20,通过D1,D3,D5,D7和D9外接DS18B20数据引脚,而18B20的GND和VCC接到TOOL的GND和TVCC供电上即可。

 

 

2、其中D7和D9是内置了上拉电阻的,大家可以直接外接DS18B20测试,如果使用D1,D3和D5,采用下面方式即可。

 

标签:11,01,DS18B20,--,TOOL,2024,adc,ADS1256,ex
From: https://www.cnblogs.com/armfly/p/18522155

相关文章

  • 基于51单片机温湿度采集数码管手机app显示+源代码程序+proteus仿真+dht11温湿度传感器
    一、设计简介本项目是简单的物联网(IoT)应用,使用51单片机STC89C52与温湿度传感器DHT11相结合,测量温湿度数据显示在八位数码管,同时通过WiFi模块ESP8266(ESP-01S)将测得的温湿度数据发送到手机APP上,而手机APP则使用AppInventor进行开发。二、功能设计1、数码管实时显示当前温湿度......
  • 20222416 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1本周学习内容恶意代码是使计算机按照攻击者的意图运行以达到恶意目的的指令集合。类型有计算机病毒,蠕虫,恶意移动代码,后门,特洛伊木马,僵尸程序,Rootkit(内核套件),融合型恶意代码等。分析恶意代码的方式通常有系统监控、静态分析和动态分析等方法。这里展示......
  • POJ1511-Invitation Cards
    继续刷邝斌飞最短路专题POJ(TimeLimit:8000MS、MemoryLimit:262144K)洛谷(3s、0B) —— 买一送一洛谷(时间限制:559ms、内存限制:1.46GB)最爱的可用平台(总时间限制: 3000ms 内存限制: 65536kB)HDU(TimeLimit:5000MS、MemoryLimit:65536K)......
  • CW 11.02 模拟赛 FSYo T2
    算法看到交换,这里有一个套路:确定最终的形态后,交换次数即为逆序对个数我们直接设\(f_{i,j,k,0/1/2}\)表示\(3\)种颜色填到哪里了,最后一个是什么颜色,逆序对数最少是多少转移分最后一个是什么颜色讨论关于\(O(1)\)求逆序对的方法:if(i==0&&a)f[a][b][......
  • 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结
    学期(2024-2025-1)学号(20241420)《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级链接>(如[https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里<作业要求链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06......
  • 20241029每日一题洛谷P1024
    普及-每日一题洛谷P1024有形如:\(ax^3+bx^2+cx+d=0\)这样的一个一元三次方程。给出该方程中各项的系数(\(a,b,c,d\)均为实数),并约定该方程存在三个不同实根(根的范围在\(-100\)至\(100\)之间),且根与根之差的绝对值\(\ge1\)。要求由小到大依次在同一行输出这三个实......
  • 源鲁杯2024[Round 3] CheckImg
    新思路:十六进制错位恢复新知识:DNA编码下载文件,是一张图片,010、属性、pngcheck都没有发现信息,用stegslove打开查看,在red0通道发现图片下面有明显的隐写,后面的green0有提示(这图片真的好大,一整个屏幕看不到完整的)Green0通道的整句话应该是attentiontodetails,先存一下red0的......
  • CW 11.02 模拟赛 FSYo T1
    题面自出题挂个pdf题面下载算法暴力可能的答案只有\(O(n^2)\)个,考虑每个答案\(\rm{check}\)是\(O(n\logn)\)的总时间复杂度\(O(n^3\logn)\)/*O(answer*n*logn),即O(n^3logn)的算法,预期60pts*//*对于每一种可能的答案,首先对于每一个点,计算......
  • 2024.11.02模拟赛
    挂了至少30分!!不——开——心——钢哥说,大家要休息好,于是模拟赛晚点,变成了3小时3道题。T1打的正解(但没调出来版),T2T3打的暴力(但全挂了版),预计总分120+,但实际总分80。小小总结一下:昨晚多睡了一小时,今天思路确实感觉更清晰了(但也有可能是因为题目不难……)。但今天时间没分配......
  • P3577 [POI2014] TUR-Tourism
    P3577[POI2014]TUR-Tourism可能很多人看到这道题既可以从父亲更新到儿子,又可以从儿子更新到父亲的时候,很多人都跟我一样是这样的:于是这里分享一下我的一种思考。直径\(\le10\),可以先求出DFS生成森林,这样树高不超过\(10\)且没有横叉边,我们使返祖边是通过祖先限制后代,......