STM32传感器模块编程实践(八) HX711压力传感器称重模块简介及驱动源码

文章目录

    • 一.概要
    • 二.HX711主要技术指标
    • 三.HX711模块参考原理图
    • 四.模块接线说明
    • 五.模块工作原理介绍
    • 六.模块通讯协议介绍
    • 七.STM32单片机与HX711模块实现重量测量实验
      • 1.硬件准备
      • 2.软件工程
      • 3.软件主要代码
      • 4.实验效果
    • 八.小结

一.概要

电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。主要以单片机作为中心控制单元,通过称重传感器进行模数转换单元。HX711采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24位 A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。

在这里插入图片描述

在这里插入图片描述

二.HX711主要技术指标

1.两路可选择差分输入
2.片内低噪声可编程放大器,可选增益为32,64 和128
3.片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源
4.片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟
5.简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程
6.可选择10Hz或80Hz的输出数据速率
7.耗电量(含稳压电源电路):
8.典型工作电流:< 1.6mA, 断电电流:< 1µA
9.工作电压范围:2.6 ~ 5.5V
10工作温度范围:-40 ~ +85℃

三.HX711模块参考原理图

HX711模块参考原理图如下:
在这里插入图片描述

模块应用电路
在这里插入图片描述

四.模块接线说明

在这里插入图片描述

在这里插入图片描述

用4根杜邦线连接开发板和称重模块
板子的GND—–模块的GND
板子的3V3——模块的VCC
板子的PB0——模块的SCK
板子的PB1——模块的DT

电桥传感器和称重模块
电桥传感器红色-------模块的E+
电桥传感器白色-------模块的A-
电桥传感器黑色-------模块的E-
电桥传感器绿色-------模块的A+

五.模块工作原理介绍

电阻应变式传感器是一种利用电阻应变效应,将各种力学量转换为电信号的结构型传感器。电阻应变片式电阻应变式传感器的核心元件,其工作原理是基于材料的电阻应变效应,电阻应变片即可单独作为传感器使用,通过粘贴在弹性体表面的电阻应变片将机械变形转换为电阻值的变化。随后,这个电阻变化被转换为电信号(电压或电流),再经过测量电路处理,最终以数字形式显示出被测物的质量。

在这里插入图片描述

在这里插入图片描述

HX711 模块 A 通道带有 128 倍信号增益,可以将 5mV 的电压放大 128 倍,然后采样输出 24bit AD 转换的值,单片机通过指定时序将 24bit 数据读出。
HX711可以在产生VAVDD和AGND电压,即HX711模块上的E+和E-电压该电压通过VAVDD=VBG(R1 +R2)/R2 计算。VBG 为模块儿基准电压 1.25v,R1=20K,R2=8.2K 因此得出 VAVDD=4.3V。
假设重力为AKg,(x<5Kg),测量出来的AD值为y传感器输出,发送给AD模块的电压为AKg4.3mV/5Kg=0.86A mV,经过 128倍增益后为1280.86A=110.08AmV,转换为24bit数字信号为110.08AmV*224/4.3V= 429496.7296A,所以y=429496.7296A。
因此得出A=y/429496.7296(y是测量出来的AD值)。

六.模块通讯协议介绍

串口通讯线由管脚 PD_SCK 和 DOUT 组成,用来输出数据,选择输入通道和增益。 当数据输出管脚 DOUT 为高电平时,表明A/D 转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK 应为低电平。当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲。其中第一个时钟脉冲
的上升沿将读出输出 24 位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。

在这里插入图片描述

七.STM32单片机与HX711模块实现重量测量实验

1.硬件准备

STLINK接STM32F103C8T6开发板,STLINK接电脑USB口。

用4根杜邦线连接开发板和称重模块
板子的GND—–模块的GND
板子的3V3——模块的VCC
板子的PB0——模块的SCK
板子的PB1——模块的DT

电桥传感器和称重模块
电桥传感器红色-------模块的E+
电桥传感器白色-------模块的A-
电桥传感器黑色-------模块的E-
电桥传感器绿色-------模块的A+

2.软件工程

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F103C8,再双击就创建新的工程
在这里插入图片描述
配置下载口引脚
在这里插入图片描述
配置外部晶振引脚
在这里插入图片描述

配置系统主频
在这里插入图片描述

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述

添加代码

添加HX711.C驱动文件
在这里插入图片描述

修改驱动引脚,跟板子接的匹配
在这里插入图片描述

添加称重代码
在这里插入图片描述

3.软件主要代码

int main(void)
{/* USER CODE BEGIN 1 */uint8_t Counter=0;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();//8M外部晶振,72M主频/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();//GPIO初始化HAL_Delay_us_init(SystemCoreClock);//初始化us/* USER CODE BEGIN 2 */OLED_Init();//OLED初始化  OLED_Clear();//清屏Init_HX711pin();//HX711模块初始化/* USER CODE END 2 */Get_Maopi();		//去皮,称到的重量就是物体本身的重量HAL_Delay(2000);//等待2秒Get_Maopi();		//去皮,称到的重量就是物体本身的重量/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */Counter++;if(Counter>=5){Counter=0;OLED_Clear();//清屏}OLED_ShowCHinese(18,0,0);//光OLED_ShowCHinese(36,0,1);//子OLED_ShowCHinese(54,0,2);//物OLED_ShowCHinese(72,0,3);//联OLED_ShowCHinese(90,0,4);//网OLED_ShowCHinese(36,3,6);//电OLED_ShowCHinese(54,3,7);//子OLED_ShowCHinese(72,3,8);//秤Get_Weight();//读取重量	HAL_Delay(1000);//等待1000msOLED_ShowNum(18,6,Weight_Shiwu,4,16);//显示重量OLED_ShowCHinese(72,6,5);//克}/* USER CODE END 3 */
}//****************************************************
//获取托盘的重量,方便后面减去托盘的重量,就是实际实物的重量
//****************************************************
void Get_Maopi(void)
{Weight_Maopi = HX711_Read();	
} //****************************************************
//称重
//****************************************************
void Get_Weight(void)
{HX711_Buffer = HX711_Read();if(HX711_Buffer > Weight_Maopi)			{Weight_Shiwu = HX711_Buffer;Weight_Shiwu = Weight_Shiwu - Weight_Maopi;				//获取实物的AD采样数值,减去托盘的重量。Weight_Shiwu = (int32_t)((float)Weight_Shiwu/GapValue); 	//计算实物的实际重量//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。//当发现测试出来的重量偏大时,增加该数值。//如果测试出来的重量偏小时,减小改数值。}}

4.实验效果

称重一块开发板的重量
在这里插入图片描述

八.小结

HX711压力传感器广泛应用于重量测量、压力监测等场景,使用STM32驱动该模块,能开发出电子秤等产品。

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

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

相关文章

Python网络爬虫从入门到实战

目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 &#xff08;一&#xff09;过程&#xff1a; &#xff08;二&#xff09;安装requests模块和beautifulsoup4模块 &#xff08;三&#xff09;requests库的使用 1、requests库的基本介绍 2、导入requests库的…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好&#xff0c;今天给大家分享一款功能强大的流媒体协议处理工具go2rtc&#xff0c;支持多种协议和操作系统&#xff0c;具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流&#xff0c;包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等&#xff0c;并…

学习文档10/16

MySQL 字符集&#xff1a; MySQL 支持很多种字符集的方式&#xff0c;比如 GB2312、GBK、BIG5、多种 Unicode 字符集&#xff08;UTF-8 编码、UTF-16 编码、UCS-2 编码、UTF-32 编码等等&#xff09;。 查看支持的字符集 你可以通过 SHOW CHARSET 命令来查看&#xff0c;支持…

ARINC 429总线协议

一、概述 ARINC 是美国航空无线电公司英文字头的缩写&#xff0c; 该公司1977年7月21日出版了“ARINC 429规范”一书&#xff0c;429规范就是飞机电子系统之间数字式数据传输的标准格式&#xff0c;在飞机上使用429总线的电子设备均应遵守这个规范&#xff0c;这样才能保证电子…

Redis应用高频面试题

Redis 作为一个高性能的分布式缓存系统,广泛应用于后端开发中,因此在后端研发面试中,关于 Redis 的问题十分常见。 本文整理了30个常见的 Redis 面试题目,涵盖了 Redis 的源码、数据结构、原理、集群模式等方面的知识,并附上简要的回答,帮助大家更好地准备相关的面试。 …

2024年【N2观光车和观光列车司机】及N2观光车和观光列车司机模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N2观光车和观光列车司机考前必练&#xff01;安全生产模拟考试一点通每个月更新N2观光车和观光列车司机模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过N2观光车和观光列车司机操作证考试很简单。 1、…

LabVIEW提高开发效率技巧----用户权限控制

在LabVIEW开发中&#xff0c;用户权限控制是一个重要的设计模块&#xff0c;尤其在多用户系统中&#xff0c;它可以确保数据安全并控制不同用户的操作权限。为了实现用户权限控制&#xff0c;可以通过角色与权限管理模块来进行设计和实施。以下将从多个角度详细说明如何在LabVI…

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读&#xff1a;Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界&#xff01;这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库&#xff08;Java 客户端&#xff09;&#xff1a…

新版vs code + Vue高亮、语法自动补全插件

vs code 版本或及以上 安装以下三个插件插件 Vetur Vue语法支持。包括语法高亮、语法代码提示、语法lint检测 ESLint语法纠错 Prettier 2.左下角设置 3.进行配置 配置内容&#xff1a; {"editor.fontSize": 20,"window.zoomLevel": 1,"workben…

Windows】【DevOps】Windows Server 2022 采用WinSW 启动一个会创建新的控制台程序窗口的程序行为分析

WinSW使用参考 【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动&#xff08;方便&#xff09;-CSDN博客 源码 调整ConsoleApp1程序源代码如下&#xff1a; using System; using System.Diagnostics; using System.IO; using System.R…

软件生存期和软件过程

软件生存周期 软件生存周期&#xff08;Software Life Cycle&#xff09;&#xff1a;一个软件项目从问题提出开始&#xff0c;直到软件产品最终退役&#xff08;废弃不用&#xff09;为止。 软件生存周期分为三个时期&#xff1a;计划、开发和维护 整个软件生存周期划分为多…

王爽汇编语言第三版实验3

实验任务 将下面的程序保存为t1.asm&#xff0c;将其生成可执行文件t1.exe 用Vscode编写源程序t1.asm 用脚本一键生成可执行文件t1.exe 成功运行 查看资源管理器&#xff0c;成功生成T1.obj与t1.exe文件‘ 用debug跟踪t1.exe的执行过程&#xff0c;写出每一步执行后&#xff…

大模型生图安全疫苗注入——进阶解决方案与系统优化(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;上篇博客中&#xff0c;我们基于DataWhale 2024年10月大模型生图安全疫苗注入赛道的任务&#xff0c;介绍了攻击与防御的基本策略&#xff0c;如通过上下文稀释法、隐喻替换等绕过检测机制&#xff0c;并提出了多…

win10远程桌面打开后,其他主机访问时会报错:发生内部错误;关闭远程桌面,则报无法连接;

win10远程桌面打开后&#xff0c;其他主机访问时会报错&#xff1a;发生内部错误&#xff1b;关闭远程桌面&#xff0c;则报无法连接&#xff1b; 该问题困扰两天&#xff0c;最后这篇文章找到解决方法&#xff0c;成功连上了&#xff1a;https://www.zun.com/zx/yunwei/4798.h…

三维指纹定位,MATLAB编写的代码

文章目录 介绍&#xff1a;三维指纹定位系统产品概述主要特点技术细节适用场景代码 运行结果代码截图与程序结构 介绍&#xff1a;三维指纹定位系统 产品概述 此三维指纹定位系统采用先进的 K N N KNN KNN&#xff08;K-最近邻&#xff09;算法&#xff0c;结合四个基站的信号…

Python画笔案例-086 turtle 多线程绘画

1、turtle 多线程绘画 通过 python 的turtle 库 多线程绘画,如下图: 2、实现代码 turtle 库 多线程绘画,以下为实现代码: """多线程绘画.py """ from random import random,randint from turtle import Turtle,Screen from threading

力扣66~70题

题66&#xff08;简单&#xff09;&#xff1a; python代码&#xff1a; class Solution:def plusOne(self, digits: List[int]) -> List[int]:s_str.join([str(i) for i in digits])nstr(int(s_str)1)n_strlist(n)res[int(i) for i in n_str]return res题67&#xff08;简…

018_FEA_Structure_Static_in_Matlab三维结构静力学分析

刹车变形分析 本示例展示了如何使用 MATLAB 软件进行刹车变形分析。 这个例子是Matlab官方PDE工具箱的第一个例子&#xff0c;所需要的数据文件都由Matlab提供&#xff0c;包括CAD模型文件。 步骤 1: 导入 CAD 模型 导入 CAD 模型&#xff0c;这里使用的是一个带有孔的支架模…

C# 实操高并发分布式缓存解决方案

1. CAP 原则 CAP 原则也称为布鲁尔定理&#xff0c;由 Eric Brewer 在 2000 年提出&#xff0c;描述了分布式系统中的三个核心属性&#xff1a;一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;、分区容错性&#xff08;Partition Tol…

OpenCV高级图形用户界面(15)注册一个回调函数来处理鼠标事件的函数setMouseCallback()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为指定的窗口设置鼠标处理器。 setMouseCallback 是 OpenCV 中的一个功能&#xff0c;允许开发者注册一个回调函数来处理鼠标事件。当用户在窗口…