当前位置: 首页 > news >正文

基于STM32的hx711称重模块使用

欢迎入群共同学习交流
时间记录:2024/11/9

一、知识点记录

1、hx711
1)HX711是一款高精度压力传感器专用的24位模数转换芯片,主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围
2)工作电压2.6-5.5V
3)引脚介绍

引脚描述
VDD电源正极
GND电源地
SCK时钟信号引脚
DT数据输入输出引脚

4)压力传感器与hx711连线
E+ - 电源正极(红线)
E- - 电源负极(黑线)
A+ - 差分信号A通道+(绿色)
A- - 差分信号A通道-(白色)
B+ - 差分信号B通道+
B- - 差分信号B通道-

一般选择A通道128增益模式
时序图
5)时序介绍
    DT线高电平时SCK时钟线低电平,等待DT线变为低电平后数据准备完毕可以进行读取重量数据,一共24位ADC数据高位先读,上升沿等待数据变换,下降沿读取数据,通道和增益根据此次周期个数决定,切换通道和增益的话至少需要两个周期进行数据稳定

二、示例程序

头文件

#ifndef __HX711_H__
#define __HX711_H__#include "stm32f10x.h"void hx711Init(void);
void hx711Zero(void);
float hx711GetWeight(void);#endif

源程序

#include "hx711.h"/*** 使用A通道128增益模式,25时钟脉冲
*/#define SCK_HIGH GPIO_SetBits(GPIOB, GPIO_Pin_9)
#define SCK_LOW GPIO_ResetBits(GPIOB, GPIO_Pin_9)
#define DT_HIGH GPIO_SetBits(GPIOB, GPIO_Pin_8)
#define DT_LOW GPIO_ResetBits(GPIOB, GPIO_Pin_8)
#define DT_READ GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)
#define DT_OUTMODE  {GPIOB->CRH &= 0xFFFFFFF0; GPIOB->CRH |= 0x00000003;} // 推挽输出
#define DT_INMODE   {GPIOB->CRH &= 0xFFFFFFF0; GPIOB->CRH |= 0x00000004;} // 浮空输入static int hx711Read(void);
int zero = 0;
#define gapValue 404.08  // 校准参数void hx711Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);
}int hx711Read(void)
{int count = 0;DT_OUTMODE;DT_HIGH;SCK_LOW; // 默认初始化模式DT_INMODE;while(DT_READ); // 等待数据准备好,大概100ms,10Hzfor(u8 i=0;i<24;i++){SCK_HIGH; // 上升沿准备数据count <<= 1;SCK_LOW; // 下降沿采集数据if(DT_READ)count |= 0x01;}SCK_HIGH; // 产生25个脉冲信号标识使用A通道128增益模式SCK_LOW;count ^= 0x800000;return count;
}void hx711Zero(void)
{for(u8 i=0;i<7;i++){zero += hx711Read();}zero /= 7;
}float hx711GetWeight(void)
{float weight = 0.0;int tempWeight = 0;for(u8 i=0;i<7;i++){tempWeight += hx711Read();}tempWeight /= 7;if(tempWeight > zero)weight = (float)(tempWeight - zero)/gapValue;elseweight = 0.0;return weight;
}

相关文章:

基于STM32的hx711称重模块使用

欢迎入群共同学习交流 时间记录&#xff1a;2024/11/9 一、知识点记录 1、hx711 1&#xff09;HX711是一款高精度压力传感器专用的24位模数转换芯片&#xff0c;主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围 2&#xff09;工作电压2.6-5.5V 3&#xff09;引…...

Nginx独立项目相关配置说明

配置前说明 1. 部署环境为https环境的&#xff0c;除华为云表态托管等都需要此配置&#xff0c;如cloud。 2. 部署环境为https环境的&#xff0c;可以使用api.js直接访问后端服务&#xff0c;无需此配置。 3. 转发的后台服务接口需要和后台人员沟通确认一致。详细配置说明 **…...

Nuxt3之使用lighthouse性能测试及性能优化实操

lighthouse性能测试工具 什么是 LightHouse 呢 Lighthouse 是一个开源的自动化工具&#xff0c;用于提高网页的质量。可以通过浏览器的开发者工具运行&#xff0c;也可以作为命令行工具或 Node.js 模块集成到持续集成系统中。Lighthouse 可以帮助开发者&#xff1a; 性能优化…...

‌webdriver.Chrome()参数简介

webdriver.Chrome()参数‌如下&#xff1a; ‌executable_path‌&#xff1a;指定ChromeDriver的路径&#xff0c;若未设置且系统环境变量中已配置&#xff0c;则会自动寻找。‌options‌&#xff1a;通过webdriver.ChromeOptions()创建&#xff0c;用于设定浏览器的启动选项&…...

Ubuntu如何更换环境中的Python版本

Ubuntu Python 版本迁移指南 卸载 Python 3.8 # 移除 Python 3.8 sudo apt remove python3.8# 清理依赖 sudo apt autoremove# 清理缓存 sudo apt clean安装 Python 3.10 # 更新软件包列表 sudo apt update# 安装软件源管理工具 sudo apt install software-properties-commo…...

python-字符串中大写字母转小写,小写字母转大写

平时我们进行大小写转换基本都是使用upper和lower函数&#xff0c;使用方法&#xff1a; s Hello,Python123#大写转小写 s.lower() -->hello,python123#小写转大写 s.upper() -->HELLO,PYTHON123但是如果想把字符串中的大写字母转成小写&#xff0c;小写字母转成大写&a…...

前端学习之ES6+

1.ES6是什么 ES6&#xff0c;全称是ECMAScript 6&#xff0c;是JavaScript语言的下一代标准&#xff0c;由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015&#xff0c;从这个版本开始&#xff0c;ECMA组织决定每年发布一个新的ECMAScript版本&#xff0c;以使J…...

yolov10的几种权重文件

1.官方提供的几种模型权重文件 YOLOv10官网提供的权重文件是训练好的网络各层的权值&#xff0c;这些权值是通过训练集训练出来的。‌一旦网络训练完成&#xff0c;应用时只需加载这些权值&#xff0c;而不再需要原始的训练集。这意味着&#xff0c;如果你已经配置好了环境&am…...

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…...

C++类和对象 (下)

文章目录 前言一. 再探构造函数初始化列表特性总结练习 二. 类型转换2.1 隐式类型转换2.2 临时对象具有常性2.3 explicit关键字2.4 多参数类型转化 三. static成员概念特性练习 四. 友元概念特性 五. 内部类概念特性 六. 匿名对象概念特性 七. 对象拷贝时的编译器优化END 前言 …...

网络层5——IPV6

目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…...

【wpf】ResourceDictionary 字典资源的用法

如果你的字典资源是写在启动项目的App.xaml里 <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source"pack://application:,,,/YourNonStartupProject;component/Resources/SharedResour…...

Foliate:沉浸式阅读!!!

项目简介 Foliate 是一款开源的电子书阅读器&#xff0c;专为现代操作系统设计&#xff0c;提供了优雅且实用的阅读体验。它支持多种电子书格式&#xff0c;包括 EPUB、Mobipocket、Kindle、FB2、CBZ 和 PDF&#xff0c;让用户能够以分页或滚动模式阅读。Foliate 允许用户自定义…...

【excel基本操作-sumif绝对引用和相对引用

低量级数据的存储 复杂且无法优化的数据报表 怎么学excel? 一、输入与输出 二、计算与处理 三、可视化 四、连接匹配与自动化 excel操作笔记 打开表格第一步筛选 所以筛选的快捷键&#xff1a;shiftctrll 排序&#xff1a;多列排序 开始-排序与筛选-自定义排序-设置关键字添…...

word及Excel常见功能使用

最近一直在整理需规文档及表格&#xff0c;Word及Excel需要熟练使用。 Word文档 清除复制过来的样式 当复制文字时&#xff0c;一般会带着字体样式&#xff0c;此时可选中该文字 并使用 ctrlshiftN 快捷键进行清除。 批注 插入->批注&#xff0c;选中文本 点击“批注”…...

网页中的某个元素高度突然无法设置

做网页时本来一个div的高度好好的&#xff0c;结果代码打着打着突然发现有个div的高度变的很小&#xff0c;把我很多在这个div里的元素给搞的看不见了。 找了好久的原因最后发现是这个div的结束标签</div>不小心被我删了,之后把这个</div>给补上就好了。...

springboot给不同用户动态定制请求结果思路

我有个朋友在公司遇到一个需求&#xff1a;某个接口&#xff0c;面向不同的用户返回的字段数不一样字段数。 我举例两种场景并且都给一个方案他&#xff0c;同时也供大家参考。 场景1&#xff1a; 接口返回的是List 或者直接就是entity&#xff0c;且entity对应某张数据表&…...

【网络】HTTP(超文本传输协议)详解

目录 引言一、HTTP的基本概念1.1 什么是HTTP&#xff1f;1.2 HTTP的工作流程1.3 HTTP工作流程图 二、HTTP请求与响应2.1 HTTP请求格式2.2 HTTP响应格式 三、常见的HTTP状态码3.1 其他状态码示例 四、HTTP版本的演变4.1 HTTP/1.04.2 HTTP/1.14.3 HTTP/24.4 HTTP/3 五、HTTP的安全…...

poll()方法和remove()方法的区别是什么?

在Java的集合框架中&#xff0c;poll()方法和remove()方法是两个常用于从队列&#xff08;Queue&#xff09;头部获取并移除元素的方法。尽管它们的作用相似&#xff0c;但在行为细节和适用场景上存在显著的区别。以下是对这两个方法区别的详细阐述&#xff0c;旨在帮助开发者更…...

小程序跳转另一个小程序

1.配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版&#xff1b;trial体验版&#xff1b;release正式版envVersion: release, success(res) {// 打开成功console.log("跳转小程序成功&…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示&#xff1a;在用tensordoard的时候一定一定要用绝对位置&#xff0c;例如&#xff1a;tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾&#xff1a; tensorboard的发展历史和原理tens…...