HX711电子秤模块详解(STM32)

server/2024/9/20 4:18:08/ 标签: stm32, 嵌入式硬件, 单片机

目录

一、介绍

二、传感器原理

1.原理图

2.引脚描述

3.工作原理介绍 

三、程序设计

main.c文件

hx711.h文件

hx711.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        HX711是一种高精度、低成本的压力传感器信号放大器,主要用于测量重力或压力变化。它工作在 2.7V 5.5V 的电源范围内,支持多种传感器类型,如电桥、应变计等。HX711 提供了一种简便的数字接口来读取模拟输出信号,适用于嵌入式系统和传感器应用。

以下是HX711电子秤模块的参数:

型号

HX711

工作电压

3.3~5V(推荐5V

量程

5kg

精度

1g

AD位宽

24

哔哩哔哩视频链接

HX711电子秤模块详解(STM32)

(资料分享见文末) 

二、传感器原理

1.原理图

2.引脚描述

引脚名称

描述

GND

模块地线

DT

数据输出端口

SCK

时钟输入端口

VCC

电源

3.工作原理介绍 

    传感器的一个重要构成是HX711的芯片,内部由二进制模数转换器(ADC)和一个放大器组成。ADC将模拟信号转换为数字信号,放大器则扩大转化出来的信号的幅度,以便更精确地测量。HX711压力传感器的工作原理是基于万用表电桥原理,利用压力传感器的阻值变化来实现重量的测量

 

三、程序设计

1.使用STM32F103C8T6读取HX711电子秤模块采集的数据,通过串口发送至电脑

2.将读取得到信息数据同时在OLED上显示

HX711_SCK

PA0

HX711_DT

PA1

OLED_SCL

PB11

OLED_SDA

PB10

串口

串口1

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "hx711.h"/*****************辰哥单片机设计******************STM32* 项目			:	HX711电子秤模块实验                     * 版本			: V1.0* 日期			: 2024.9.11* MCU			:	STM32F103C8T6* 接口			:	参看HX711.h							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/int value;
float weight;
int32_t reset;
u8 buff[30];float Weights=100.0;  //100g
int32_t Weights_100=8493860;  //100gint main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();HX711_Init();USART1_Config();//串口初始化OLED_Init();printf("Start \n");delay_ms(1000);//显示“重量:”OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChar(32,0,':',16,1);reset = HX711_GetData();while (1){LED_Toggle();value = HX711_GetData();weight=(float)(value-reset)*Weights/(float)(Weights_100-reset);sprintf((char*)buff,"%.1f   ",weight);printf("重量: %f\r\n",weight);OLED_ShowString(50,30,buff,16,1);delay_ms(500);}
}

hx711.h文件

#ifndef __HX711_H
#define	__HX711_H
#include "stm32f10x.h"
#include "delay.h"
#include "math.h"/*****************辰哥单片机设计******************STM32* 文件			:	HX711电子秤模块h文件                   * 版本			: V1.0* 日期			: 2024.9.11* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************//***************根据自己需求更改****************/
// HX711 GPIO宏定义
#define		HX711_GPIO_CLK									RCC_APB2Periph_GPIOA
#define 	HX711_SCK_GPIO_PORT							GPIOA
#define 	HX711_SCK_GPIO_PIN							GPIO_Pin_0
#define 	HX711_DT_GPIO_PORT							GPIOA
#define 	HX711_DT_GPIO_PIN								GPIO_Pin_1
/*********************END**********************/#define HX711_SCK_H				GPIO_SetBits(HX711_SCK_GPIO_PORT,HX711_SCK_GPIO_PIN);
#define HX711_SCK_L				GPIO_ResetBits(HX711_SCK_GPIO_PORT,HX711_SCK_GPIO_PIN);#define HX711_DT					GPIO_ReadInputDataBit(HX711_DT_GPIO_PORT, HX711_DT_GPIO_PIN)void HX711_Init(void);
unsigned long HX711_GetData(void);#endif /* __ADC_H */

hx711.c文件

#include "hx711.h"
#include "delay.h"/*****************辰哥单片机设计******************STM32* 文件			:	HX711电子秤模块c文件                   * 版本			: V1.0* 日期			: 2024.9.11* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************//*** @brief  PM25初始化程序* @param  无* @retval 无*/void HX711_Init(void)
{/*定义一个HX711_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启相关的GPIO外设时钟*/RCC_APB2PeriphClockCmd(HX711_GPIO_CLK , ENABLE);/*选择要控制的GPIO引脚*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = HX711_SCK_GPIO_PIN;GPIO_Init(HX711_SCK_GPIO_PORT, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = HX711_DT_GPIO_PIN;	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   GPIO_Init(HX711_DT_GPIO_PORT, &GPIO_InitStructure);	}unsigned long HX711_GetData(void)
{unsigned long Count;unsigned char i;HX711_SCK_L;delay_us(1);Count=0;while(HX711_DT);for (i=0;i<24;i++){HX711_SCK_H;delay_us(1);Count=Count<<1;HX711_SCK_L;delay_us(1);if(HX711_DT) Count++;}HX711_SCK_H;delay_us(1);Count=Count^0x800000;//最高位取反,其他位不变//在HX71芯片中,count是一个32位的有符号整数,用于存储称重传感器的读数。//当count的最高位为1时,表示读数为负数,而HX711芯片不支持负数的读数。//因此,为了将负数转换为正数,需要将count的最高位取反,即将count与0x800000进行异或操作。//具体来说,0x800000的二进制表示为100000000000000000000000,与count进行异或操作后,//可以将count的最高位从1变为0,从而得到对应的正数读数。HX711_SCK_L;delay_us(1);return(Count);
}

四、实验效果 

五、资料获取

项目分享


http://www.ppmy.cn/server/119268.html

相关文章

分享几种方式获取免费精致的Live2d模型

文章目录 1、 Live2D官方示例数据集&#xff08;可免费下载&#xff09;2、模之屋3、unity商店4、直接b站搜索5、youtube6、BOOTH完结 1、 Live2D官方示例数据集&#xff08;可免费下载&#xff09; 官方提供了一些 Live2D实例模型给大家下载使用 地址&#xff1a;https://ww…

Gartner发布报告揭秘微软数据安全功能和许可

制定数据安全计划以增强合规性并降低数据风险仍然是安全和风险管理领导者关注的问题。这项研究阐明了 Microsoft 的数据安全许可结构&#xff0c;并确定了围绕 Purview 构建数据安全计划的关键要素。 主要发现 客户对微软数据安全的询问表明&#xff0c;安全和风险管理 (SRM) 领…

《拿下奇怪的前端报错》:nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践

有些前端的小伙伴可能会好奇&#xff0c;nvm是什么&#xff1f;这里接简单介绍下&#xff0c;它是一个Nodejs版本管理工具。为什么需要它呢&#xff1f;当然是需要多个Nodejs版本的时候&#xff0c;那什么时候需要多个Nodejs版本&#xff1f;那肯定是在有点年头的公司了&#x…

系统 IO

"裸奔"层次&#xff1a;不带操作系统的编程 APP(应用程序) -------------------------------- Hardware(硬件) 特点&#xff1a;简单&#xff0c;应用程序直接操作硬件(寄存器) 缺点&#xff1a; 1. 搞应用开发的必须要了解硬件的实现细节&#xff0c;能够看懂原理图…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点&#xff0c;苹果新品发布会如期举行&#xff0c;全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机&#xff0c;在第二代3nm工艺A18和A18 Pro芯片的加持下&#xff0c;iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

校验(网络传输)

1. 校验&#xff08;Checksum&#xff09; 定义&#xff1a;校验和是一种简单的错误检测机制&#xff0c;通过对数据块中的所有字节进行求和来生成一个固定大小的值。发送方计算校验和并将其附加到数据中&#xff0c;接收方在接收数据后重新计算校验和进行比较。 应用&#xff…

功能测试干了三年,快要废了。。。

8年前刚进入到IT行业&#xff0c;到现在学习软件测试的人越来越多&#xff0c;所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业&#xff0c;导致软件测试已经饱和了&#xff0c;想要获得更好的待…

BOE(京东方)领先科技赋能体育产业全面向新 以击剑、电竞、健身三大应用场景诠释未来健康运动新生活

巴黎全球体育盛会虽已闭幕&#xff0c;但世界范围内的运动热潮并未消退。9月12日&#xff0c;在北京恒通国际商务园&#xff08;UBP&#xff09;的之所ICC&#xff0c;BOE&#xff08;京东方&#xff09;开启了以“屏实力 FUN肆热爱”为主题的“科技赋能体育”互动体验活动。活…

MySql-单表以及多表查询详解

今日内容大纲介绍 约束详解 单表约束 多表约束 DQL语句详解 简单查询 条件查询 聚合查询 分组查询 排序查询 模糊查询 分页查询 多表查询 交叉连接 连接查询 子查询 自关联(自连接)查询 扩展: 多表建表 一对多 多对多 一对一 1.主键约束详解 /* 约束详解:概述…

面向对象程序设计

大纲 UML关系 UML类图 设计模式 真题1 真题2 真题3 1

生动好看的css卡片样式

样式一&#xff1a; 借鉴网址&#xff1a;https://www.vue3js.cn/ 展示&#xff1a; css <div classaa></div>.aa {width: 300px;height: 200px;background: #fbfbfb !important;border: 1px solid #f1f1f1;transition: all 0.2s ease-in-out; } .aa:hover {wi…

uniapp中使用picker-view选择时间

picker-view 是 UniApp 中用于展示和选择数据的组件。它适用于创建多列选择器&#xff0c;类似于 iOS 和 Android 系统中的选择器视图。以下是 picker-view 的详细介绍&#xff0c;包括用法、属性和事件。 一 用法 <template><view><picker-view :value"…

撤回仓库的提交

结论先行 未推送提交&#xff1a;可以使用 git reset --soft HEAD~1 或 git reset --hard HEAD~1 来撤回提交&#xff0c;选择保留或丢弃修改。已推送提交&#xff1a;可以使用 git reset --soft HEAD~1 后&#xff0c;通过 git push --force 强制覆盖远程的提交记录。 问题描…

使用Docker挂载部署JAVA项目

用于需要使用Docker容器部署项目&#xff0c;但可能部署包需多次调整的场景&#xff0c;这种部署方式可以减少镜像制作的过程&#xff1b; 推荐几个使用Docker安装环境的文章&#xff1a; 1.Nocas: https://blog.csdn.net/weixin_44700323/article/details/140995859 2.Mysql: …

集合是什么

1.是什么 集合&#xff08;Collection&#xff09;是Java语言中一个非常重要的概念&#xff0c;它是一组对象的容器&#xff0c;用于存储、检索和操作对象。在Java中&#xff0c;集合框架定义了一系列接口和实现类&#xff0c;用于处理不同类型的集合。 集合的概念 集合框架提…

SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter

SpringBoot解析Json格式数据 ResponseBody 注&#xff1a;该注解表示前端请求后端controller&#xff0c;后端响应请求返回 json 格式数据前端&#xff0c;实质就是将java对象序列化 1.创建Controller 注&#xff1a;springboot默认就已经支持返回json格式数据&#xff0c;只需…

PCL 计算点云距离

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 顾名思义,这个就是计算点云中每个点到另一个点云最近的距离,之后我们可以基于这些距离做一些预处理工作。思路其实很简单,通过对点云构建kdtree并采用并行的方式实现该计算过程。 二、实现代码 ColorRamp.h #ifn…

果蔬识别系统性能优化之路(四)

目录 前情提要剩下问题 问题排查解决方案下一步 前情提要 果蔬识别系统性能优化之路&#xff08;三&#xff09; 剩下问题 同步数据库数据并初始化ivf依然要8,9秒 问题排查 通过断点加时间打印&#xff0c;发生其实初始化ivf的时间很快&#xff0c;慢的是数据在网络间的传…

redis详细解析和配置选择

Redis是一个开源的、使用ANSI C语言编写的、基于内存亦可持久化的日志型Key-Value非关系型数据库。它以其高性能、丰富的数据结构和灵活的数据模型而广受欢迎&#xff0c;被广泛应用于缓存、消息队列、实时数据处理等多种场景。以下是对Redis的详细解析和配置选择的详细阐述。 …

Java 23 的12 个新特性!!

Java 23 来啦&#xff01;和 Java 22 一样&#xff0c;这也是一个非 LTS&#xff08;长期支持&#xff09;版本&#xff0c;Oracle 仅提供六个月的支持。下一个长期支持版是 Java 25&#xff0c;预计明年 9 月份发布。 Java 23 一共有 12 个新特性&#xff01; 有同学表示&…