当前位置: 首页 > 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("跳转小程序成功&…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Device Mapper 机制

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

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...