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

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

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


【ADS1256】

驱动8通道24bit分辨率ADS1256

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

需要深入了解ADS1256可以看教程第93章节:
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至95章(2024-05-06) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

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)  -- 挂载ADS1256delayms(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/4194303adc[3] = adc[3]*2.5/4194303adc[4] = adc[4]*2.5/4194303adc[5] = adc[5]*2.5/4194303adc[6] = adc[6]*2.5/4194303adc[7] = adc[7]*2.5/4194303adc[8] = adc[8]*2.5/4194303s = string.format("%f", adc[1]) --打印1个通达,多个通道同理,类似C的printfprint(s)                                   --  打印数值print_wave(s)                          --  打印波形效果delayms(100)                          --   100ms刷新1次
endm_uninit("ADS1256")  -- 卸载ADS1256

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


【MCP3421】

这个帖子有个早期使用I2C控制驱动说明,可以优先看下:H7-TOOL的I2C控制器驱动18bit分辨率ADC芯片MCP3421操作说明,简单易用(2021-11-20) - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

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

local gain = 0   --0=X1 1=X2 2=X4 3=X8local 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路继电器模块
Lua驱动74HC595,可配置任意引脚、595芯片个数。发布74HC595_8路继电器模块 - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!


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章节:
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至95章(2024-05-06) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

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()   -- 启动AD7606delayms(100)for j=1, 800,1 do                  -- 循环800次                                    adc[1] = ex_adc(0)*5/32768  adc[2] = ex_adc(1)*5/32768adc[3] = ex_adc(2)*5/32768adc[4] = ex_adc(3)*5/32768adc[5] = ex_adc(4)*5/32768adc[6] = ex_adc(5)*5/32768adc[7] = ex_adc(6)*5/32768adc[8] = ex_adc(7)*5/32768s = string.format("%f", adc[8]) --打印1个通达,多个通道同理,类似C的printfprint(s)                        --  打印数值print_wave(s)                   --  打印波形效果delayms(100)                    --   100ms刷新1次
endex_stop() -- 卸载AD7606

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

测试3.3V的效果:


【DS18B20】

使用这个功能,有必要优先看下TOOL端展示和使用方法:H7-TOOL的5路DS18B20温度表波形展示和数据记录说明 - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

使用专用的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 表示OKm_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,采用下面方式即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P10 Pytorch入门实战——Pytorch实现车牌识别

一、前期准备 1. 设置device # import the necessary libraries import torch import torch.nn as nn import torchvision.transforms as transforms from torchvision import transforms, datasets import matplotlib.pyplot as plt import PIL,pathlib from PIL import Im…

基于SSM+小程序的宿舍管理系统(宿舍1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本宿舍管理系统小程序有管理员和学生两个角色。 1、管理员功能有个人中心&#xff0c;公告信息管理&#xff0c;班级管理&#xff0c;学生管理&#xff0c;宿舍信息管理&#xff0c;宿舍…

基于 JavaWeb 的宠物商城系统(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

.NET周刊【11月第1期 2024-11-03】

国内文章 .NET 9 AOT的突破 - 支持老旧Win7与XP环境 https://www.cnblogs.com/lsq6/p/18519287 .NET 9 引入了 AOT 支持&#xff0c;使得应用程序能够在编译时优化&#xff0c;以在老旧 Windows 系统上运行。这项技术通过静态编译&#xff0c;消除运行时的 JIT 编译&#xf…

iptables 规则备份和恢复

保存IPiptables规则 使用 service 命令: 在 CentOS 7 中&#xff0c;您可以使用 service 命令来保存当前的 iptables 规则&#xff1a; iptables save 这将把当前的 iptables 规则保存到 /etc/sysconfig/iptables 文件中。 使用 iptables-save 命令: 另一种方法是使用 iptab…

知乎信息流广告推广开户流程及攻略!

无论是品牌推广、产品营销还是获取精准流量&#xff0c;知乎信息流广告都能成为企业和营销者的有力武器。云衔科技作为专业的服务提供商&#xff0c;为企业提供知乎广告开户及代运营服务。 一、知乎信息流广告 知乎拥有海量的高质量用户&#xff0c;他们来自各行各业&#xf…

6-解决Ubuntu系统与Windows系统双系统时间不同步问题

引言 &#xff1a; 你是不是每次切换系统之后&#xff0c;系统时间就混乱了&#xff1f;想设置一致但又无从下手。看完这篇文章&#xff0c;你就全懂了&#xff01;&#xff01; 学习目标&#xff1a; 帮助开发者理解并解决 Ubuntu 与 Windows 双系统中时间不同步的问题。通…

【大数据学习 | kafka】kafka的偏移量管理

1. 偏移量的概念 消费者在消费数据的时候需要将消费的记录存储到一个位置&#xff0c;防止因为消费者程序宕机而引起断点消费数据丢失问题&#xff0c;下一次可以按照相应的位置从kafka中找寻数据&#xff0c;这个消费位置记录称之为偏移量offset。 kafka0.9以前版本将偏移量信…

基于梯度的快速准确头部运动补偿方法在锥束CT中的应用|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 A gradient-based approach to fast and accurate head motion compensation in cone-beam CT 基于梯度的快速准确头部运动补偿方法在锥束CT中的应用 01 文献速递介绍 锥束计算机断层扫描&#xff08;CBCT&#xff09;系统在灵活性方面比螺旋多排探测器计算机断…

语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验

一、智能烤箱产品的行业背景 随着科技的飞速发展&#xff0c;智能家居已经成为现代家庭的新宠。智能烤箱作为智能家居的重要组成部分&#xff0c;正逐渐从高端市场走向普通家庭。消费者对于烤箱的需求不再仅仅局限于基本的烘焙功能&#xff0c;而是更加注重其智能化、便捷化和…

qt QWizard详解

1、概述 QWizard是Qt框架中提供的一个功能强大的向导对话框类。它帮助用户逐步完成复杂的任务或流程&#xff0c;通过一系列页面组成的向导界面&#xff0c;实现了交互式和响应式的用户体验。QWizard可以应用于多种场景&#xff0c;如安装向导、配置向导、数据导入向导等&…

如何看待AI技术的应用场景:现状与未来的全面解析

人工智能&#xff08;AI&#xff09;正在以惊人的速度改变我们的世界。从医疗诊断到自动驾驶&#xff0c;从虚拟助手到金融分析&#xff0c;AI的应用场景正日益扩展&#xff0c;影响着几乎每个行业。然而&#xff0c;AI的广泛应用也引发了关于隐私、安全、伦理等多方面的讨论。…

ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ONLYOFFICE 8.2 &#x1f50d;引言&#x1f4d2;1. ONLYOFFICE 产品简介&#x1f4da;2. 功能与特点&#x1f341;协作编辑 PDF&#x1f342;…

使用SQLark如何将Oracle迁移到达梦数据库

​ 以上对话源于某位负责数据库适配的 ISV 工程师&#xff0c;他正在将数据从 Oracle 迁移到某国产数据库中。像这样的基础问题&#xff0c;每天在各个适配群、各个社区不断出现&#xff0c;比如&#xff1a; Oracle 迁移到 DM 后&#xff0c;数据有乱码&#xff0c;达梦如何设…

Unity3D学习FPS游戏(9)武器音效添加、创建敌人模型和血条

前言&#xff1a;虽然已经实现了基本玩家操作&#xff0c;但是游戏运行起来并没有音效。既然是FPS游戏有了玩家和武器&#xff0c;肯定还得有敌人。本篇演示如何给武器添加音效和创建敌人。 武器音效添加和创建敌人 武器音效添加Audio Source代码控制 创建敌人目标敌人模型敌人…

【算法】Floyd多源最短路径算法

目录 一、概念 二、思路 三、代码 一、概念 在前面的学习中&#xff0c;我们已经接触了Dijkstra、Bellman-Ford等单源最短路径算法。但首先我们要知道何为单源最短路径&#xff0c;何为多源最短路径 单源最短路径&#xff1a;从图中选取一点&#xff0c;求这个点到图中其他…

Docker安装MongoDB详解(mongo.latest)

一、MongoDB介绍 MongoDB是一种基于分布式文件存储的数据库&#xff0c;使用C语言开发&#xff0c;旨在为Web应用提供可扩展且高性能的数据存储解决方案。作为一种介于关系数据库和非关系数据库之间的技术&#xff0c;MongoDB具有强大的功能和高效的性能&#xff0c;特别适用于…

金箍棒变化-第15届蓝桥杯国赛Scratch初/中级组真题第1题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第193讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档&#xff0c;我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…

Unity XR Interaction Toolkit 开发教程(3)快速配置交互:移动、抓取、UI交互【3.0以上版本】

获取完整课程以及答疑&#xff0c;工程文件下载&#xff1a; https://www.spatialxr.tech/ 视频试看链接&#xff1a; 3.快速配置交互&#xff1a;移动、抓取、UI交互【Unity XR Interaction Toolkit 跨平台开发教程】&#xff08;3.0以上版本&#xff09; 系列教程专栏&…