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.rhkb.cn/news/447924.html

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

相关文章

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

mybatis-plus saveOrUpdate详细解析

mybatis-plus saveOrUpdate详细解析 saveOrUpdate() 方法介绍 插入新记录&#xff1a;当对象的所有字段都为新值且对象的主键字段未设置或设置为默认值时&#xff0c;saveOrUpdate将执行插入操作。更新现有记录&#xff1a;如果对象的主键字段设置了有效的值&#xff0c;并且…

MySQL表的基本查询上

1&#xff0c;创建表 前面基础的文章已经讲了很多啦&#xff0c;直接上操作&#xff1a; 非常简单&#xff01;下一个&#xff01; 2&#xff0c;插入数据 1&#xff0c;全列插入 前面也说很多了&#xff0c;直接上操作&#xff1a; 以上插入和全列插入类似&#xff0c;全列…

一台电脑轻松接入CANFD总线-来可CAN板卡介绍

在工业控制领域&#xff0c;常常使用的总线技术有CAN(FD)、RS-232、RS-485、Modbus、Profibus、Profinet、EtherCAT等。RS-485以其长距离通信能力著称&#xff0c;Modbus广泛应用于PLC等设备&#xff0c;EtherCAT则以其低延迟和高实时性在自动化系统中备受青睐。 其中&#xf…

10.9QT对话框以及QT的事件机制处理

MouseMoveEvent(鼠标移动事件) widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 设置窗口为无边框&#xff0c;去掉标题栏等装饰this->setWi…

Springboot整合抖音小程序获取access-token图片检测V3

抽取配置文件 appId以及secret需要自行在抖音开放平台获取 dy:appId: ttb0xxxxxsecret: 12a19a426xxxxxxxxxxxxx获取access-token 参照文档我们调用此接口需要先获取access-token 获取access-token官方文档地址 注意事项 client_token 的有效时间为 2 个小时&#xff0c;重复获…

CMake 教程(二)添加库

目录 一、实例一——创建库1、add_library2、target_include_directories()、target_link_libraries()2.1 target_include_directories()2.2 target_link_libraries() 3、实例操作 二、实例二——添加选项1、option()2、实例操作 在第一节 CMake 教程&#xff08;一&#xff09…

fastadmin 列表页表格实现动态列

记录&#xff1a;fastadmin 列表页表格实现动态列 后端代码 /*** 商品库存余额表*/public function kucunbalance(){$houseList (new House)->where([shop_id>SHOP_ID])->order(id desc)->field(name,id)->select();//设置过滤方法$this->request->filte…

LeetCode209.长度最小的子数组

题目链接&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 1.常规解法&#xff08;会超时&#xff09; 可以先将数组的所有子数组求出来&#xff0c;计算其中元素的值&#xff0c;判断与目标值的大小关系&#xff0c;代码如下&#xff1a; public …

Ubuntu里彻底卸载UHD

查看已经安装的UHD版本uhd_find_devices&#xff0c;展示的是当前安装的 UHD 库版本所支持的设备信息&#xff0c;下载了多个版本的uhd但是又记不住安装的位置&#xff0c;想要把所有的uhd相关环境全都删掉&#xff0c;用下边这个命令看一下所有的uhd信息&#xff1a; apt lis…

在 Spring 中使用 @EhCache 注解作为缓存

文章目录 项目概况项目设置一个简单的 RESTful Web 服务Spring 整合 EhCache第 1 步&#xff1a;更新依赖项以使用 EhCache Spring 注解第 2 步&#xff1a;设置自定义缓存管理器第 3 步&#xff1a;配置 EhCache第 4 步&#xff1a;测试缓存 刷新缓存总结推荐阅读文章 EhCache…

Visual Studio的实用调试技巧总结

对于很多学习编程的老铁们来说&#xff0c;是不是也像下面这张图一样写代码呢&#xff1f; 那当我们这样编写代码的时候遇到了问题&#xff1f;大家又是怎么排查问题的呢&#xff1f;是不是也像下面这张图一样&#xff0c;毫无目的的一遍遍尝试呢&#xff1f; 这篇文章我就以 V…

k8s的微服务

ipvs模式 Service 是由 kube-proxy 组件&#xff0c;加上 iptables 来共同实现的 kube-proxy 通过 iptables 处理 Service 的过程&#xff0c;需要在宿主机上设置相当多的 iptables 规则&#xff0c;如果宿主机有大量的Pod&#xff0c;不断刷新iptables规则&#xff0c;会消耗…

QT:计算点到线段的垂线段的距离

描述 在Qt中&#xff0c;要计算一个点到一条线段的垂线段的长度&#xff08;即点到线段上最近点的距离&#xff0c;且这个点是垂直于线段的&#xff09;&#xff0c;你不能直接使用QVector2D::distanceToLine&#xff0c;因为这个方法计算的是点到直线的垂直距离&#xff0c;而…

2024-09-22 进程优先级,进程切换

一、僵尸状态 & 孤儿进程 进程退出&#xff1a;内核数据结构&#xff08;task_struct 维护&#xff09; 代码和数据&#xff08;直接释放&#xff09; 代码不会执行了首先可以立即释放的就是进程对应的程序信息数据。进程退出要有退出信息&#xff08;进程的退出码&#…

六西格玛设计DFSS方法论在消费级无人机设计中的应用——张驰咨询

本文基于六西格玛设计方法论&#xff0c;对消费级无人机的设计流程进行系统化研究&#xff0c;探讨如何通过六西格玛设计的理念、工具和方法提升无人机产品的设计质量和市场竞争力。文章从市场定位、客户需求分析出发&#xff0c;深入到关键KPI指标的制定&#xff0c;并逐步阐述…

【网络安全】漏洞案例:提升 Self-XSS 危害

未经许可,不得转载。 文章目录 Self-XSS-1Self-XSS-2Self-XSS-1 目标应用程序为某在线商店,在其注册页面的First Name字段中注入XSS Payload: 注册成功,但当我尝试登录我的帐户时,我得到了403 Forbidden,即无法登录我的帐户。 我很好奇为什么我无法登录我的帐户,所以我…

前端高频面试题2024/9/22(偏项目问题--通用后台管理系统)

文章目录 一.前端项目概述1.系统登录注册模块1.对注册的密码进行加密 &#xff08;使用加密中间件bcrypt.js&#xff09;2.登录成功后返回token3.前端登录页面有用到弹性布局&#xff0c;ref和reactive4.登录头像&#xff1a;文件上传 2.系统设置模块2.系统首页模块&#xff08…

使用electron+vue开发桌面应用

electron是什么 electron由Node.jsChromiumNative APIs构成。你可以理解成&#xff0c;它是一个得到了Node.js和基于不同平台的Native APIs加强的Chromium浏览器&#xff0c;可以用来开发跨平台的桌面级应用。 它的开发主要涉及到两个进程的协作——Main&#xff08;主&#x…

Java通过RAG构建专属知识问答机器人_超详细

RAG&#xff1a;融合检索与生成的文本精准生成技术 检索增强生成&#xff08;RAG&#xff09;是一种技术&#xff0c;它通过结合检索模型和生成模型来提高文本生成的准确性。具体来说&#xff0c;RAG首先利用检索模型从私有或专有的数据源中搜索相关信息&#xff0c;然后将这些…