STM32与拉力传感器通信

2023-11-06

目录

 第一部分、设备通信图

 第二部分、设备接线

HX711与传感器的接线

HX711与MCU的接线

 第三部分、驱动代码

HX711引脚初始化(Dout,CLK)

HX711读取数据函数

HX711获取传感器的值

头文件定义:

实验结果: 


第一部分、设备通信图

物联网节点设备分为三部分:MCU(STM32),医疗传感器(RSS01B拉压力传感器),HX711(24AD)

HX711负责将传感器的电压值转换为数字量发送给MCU,MCU对数据进行处理分析

HX711模块图

RSS01B模块图

 第二部分、设备接线

HX711与传感器的接线

HX711与MCU的接线

第三部分、驱动代码

HX711引脚初始化(Dout,CLK)


void hx711_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOE_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);

  /*Configure GPIO pin : PE5 */
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  /*Configure GPIO pin : PE6 */
  GPIO_InitStruct.Pin = GPIO_PIN_6;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

}

HX711读取数据函数

unsigned long HX711_Read_01()        
{
			unsigned long count; 
			unsigned char i; 
		
			HX711_SCK_0; 
			count=0; 
			delay_us(1);
			while(HAL_GPIO_ReadPin(HX711_DOUT_GPIO,HX711_DOUT) ==GPIO_PIN_SET);
			for(i=0;i<24;i++)
			{ 
				HX711_SCK_1; 
				count=count<<1; 
				delay_us(1);
				HX711_SCK_0; 
				if(HAL_GPIO_ReadPin(HX711_DOUT_GPIO,HX711_DOUT) == GPIO_PIN_SET) 
                count++; 
				delay_us(1);
			} 
			HX711_SCK_1; 
			count=count^0x800000;
			delay_us(1);
			HX711_SCK_0;  
			return(count);
}

HX711获取传感器的值

void Get_Maopi_01()  //获取标定值(初始化重物重量)
{
	 Weight_Maopi_01 = HX711_Read_01();
	
}

float Get_Weight()   //获取重物去皮后的重量
{
	float Weight_Shiwu = 0;
	float Weight_Maopi = 0;
	weight.Real_Weight = HX711_Read_01();
	printf("weight.Real_Weight£º%f\n",weight.Real_Weight);
	if(weight.Real_Weight > Weight_Maopi_01)			
	{
		Weight_Shiwu = weight.Real_Weight;
		
		Weight_Maopi = Weight_Maopi_01;
		printf("%f\n",Weight_Maopi);
		Weight_Shiwu = Weight_Shiwu - Weight_Maopi;		
	
		Weight_Shiwu = (float)(Weight_Shiwu/weight.GapValue); 
	}
	return Weight_Shiwu;
}

头文件定义:

	
typedef struct 
{
		float GapValue;			//传感器的比例值	    
		float MaoPi; 			//传感器的初始值(重量的标定值)		     
		float Real_Weight;    	//传感器的真实值(去皮值)   
}Weight;

extern Weight weight;

#define HX711_DOUT_GPIO GPIOE
#define HX711_SCK_GPIO  GPIOE

#define HX711_DOUT  GPIO_PIN_6
#define HX711_SCK   GPIO_PIN_5

//PE6 IO口操作
#define HX711_DOUT_0 HAL_GPIO_WritePin(HX711_DOUT_GPIO,HX711_DOUT,GPIO_PIN_RESET)
#define HX711_DOUT_1 HAL_GPIO_WritePin(HX711_DOUT_GPIO,HX711_DOUT,GPIO_PIN_SET)

//PE5 IO口操作
#define HX711_SCK_0  HAL_GPIO_WritePin(HX711_SCK_GPIO,HX711_SCK,GPIO_PIN_RESET)
#define HX711_SCK_1  HAL_GPIO_WritePin(HX711_SCK_GPIO,HX711_SCK,GPIO_PIN_SET)

实验结果: 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32与拉力传感器通信 的相关文章

  • 境界的彼方_lduoj_bfs宽搜

    Description wyy是一个著名动画 境界的彼方 的男主 此时他非常的慌张 因为女主栗山未来进入了境界的彼方内部 并且花费了大量的血量去拯救wyy wyy此时也进入了境界的彼方 他妈给了他一张地图去寻找境界的彼方的核心去拯救女主 现
  • JavaScript的Math对象基本用法

    Math对象的基本用法 1 Math 对象用于执行数学任务 Math是一个内置对象 不需要创建 可以直接使用 2 Math对象常用API Math PI 返回圆周率3 1415926 Math ceil x
  • Acwing-顺时针打印矩阵

    顺时针定义好四个方向 按题目要求为右下左上 首先往右走 走到不能走为止 再往下走 走到不能走为止 再往左走 一直顺时针转圈的方式走 直到走满n m步 什么是不能走的情况 要么走出边界了 要么走的格子已经走过了 就这两种情况 class So

随机推荐

  • redis cluster 集群 安装 配置 详解

    Redis 集群是一个提供在多个Redis间节点间共享数据的程序集 redis3 0以前 只支持主从同步的 如果主的挂了 写入就成问题了 3 0出来后就可以很好帮我们解决这个问题 目前redis 3 0还不稳定 如果要用在生产环境中 要慎重
  • max 3485 使用方法详解

    芯片管脚介绍 1 1 1号引脚为RO 通常与MCU UART控制器的RX相连接 用于接收对端数据 1 2 2号引脚为RE RE对RO起控制作用 RE为低电平 RO可接收数据 RE为高电平时 RO不接收数据 1 3 3号引脚为DE DE对 D
  • C++ 开源协程库 libco——原理及应用

    1 导论 使用 C 来编写高性能的网络服务器程序 从来都不是件很容易的事情 在没有应用任何网络框架 从 epoll kqueue 直接码起的时候尤其如此 即便使用 libevent libev这样事件驱动的网络框架去构建你的服务 程序结构依
  • oracle数据库小结

    运用sqlplus连接数据库 sqlplus as sysdba 以系统用户 sqlplus username password 以普通用户登录 若忘记用户密码 则可以先以系统用户登录 然后运用alter user 用户名 identifi
  • abp执行mysql语句_ABP的Core2.0使用mysql数据,在使用linq语句报错了

    System InvalidOperationException HResult 0x80131509Message An exception occurred while reading a database value for prop
  • Android移动开发-使用OpenGL来绘制3D纹理图的实现

    OpenGL 全写Open Graphics Library 是指定义了一个跨编程语言 跨平台的编程接口规格的专业的图形程序接口 它用于三维图像 二维的亦可 是一个功能强大 调用方便的底层图形库 OpenGL是行业领域中最为广泛接纳的 2D
  • 『HTML&CSS』选择器(一)

    前面我们说过 CSS一共分为两大块 选择器和声明块 本篇博客主要对选择器进行一些简单的介绍 元素选择器 我们前面使用的都是元素选择器 通过元素选择器可以选择页面中的所有指定元素 语法 元素名 标签名 代码演示
  • 深度学习:Opencv的BlobfromImage如何工作

    深度学习 Opencv的BlobfromImage如何工作 1 原理 1 2 均值减法是什么 1 3 cv2 dnn BlogFromImage 2 源码 参考 想要从深度神经网络获取正确的预测 首先需要预处理数据 在深度学习 图像分类中
  • vue入门者uni-app开发之---入坑

    vue入门者uni app开发之 入坑 前言 起步 项目结构 开始开发 举例登陆全局保持状态 退出登陆 前言 作为一个刚入门vue的前端 我们公司主要运营公众号网页 之前一直用的jq 发现用户体验差的一匹 后来公司决定将前端技术栈定为vue
  • js基础面试题

    一 值类型与引用类型 1 js如何判断数据类型 值类型 javascript存储数据两个区域 栈 堆 栈 通常空间是固定 堆通常空间是动态的分配 js值类型 名称与值都存储在栈中 var a 15 值类型 var b a 把a的值赋值给 b
  • arm芯片厂家排名_国产芯片目前至少有10种,其中有3种,达到了世界顶尖水平

    说起来 中国芯的发展史称得上是一部磨难史 因为技术 设备 人才等都被西方国家封锁 就是为了让中国这个大市场巨额进口芯片 但这些年 中国的企业也没有闲着 可以说把世界上的主流的芯片架构尝试了个遍 就是为了找出一台适合自己发展的路来 目前国内的
  • 9款超级实用的网页设计工具,快来看看有没有你用过的

    随着网络时代的快速发展 游戏 购物 音乐 影视和社交网站的兴起都表明了网页设计的重要性 网页设计工具作为网页设计师的生产工具 自然要选择好的 让我们分享9个高质量的网页设计工具 让您的设计效率悄然提高 即时设计 即时设计是一款免费的在线 U
  • 如何选择LDO (LDO的关键指标及定义)

    1 LDO选型关键指标及定义 1 1 输入电压范围 LDO的输入电压范围决定了最低的可用输入电源电压 指标可能提供宽的输入电压范围 最小的输入电压VIN必须大于VOUT VDO 需要注意 这与器件Datasheet中所给出的输入电压最小值无
  • 风格迁移:一文梳理经典方法发展脉络及原理:Gram矩阵、WCT、WCT2

    风格迁移 一文梳理经典方法发展脉络及原理 1 Image Style Transfer Using Convolutional Neural Networks Gram矩阵 CVPR2016 1 1 概述 1 2 方法 2 Deep Pho
  • 代码重定位

    1 程序段介绍 参见博客 C语言程序段的定义 实际应用分析 2 什么是代码重定位 代码重定位就是将代码搬运到链接地址处 实际在操作时就是将代码复制一份到链接地址处 我们把代码下载到设备的Flash中 然后代码运行却要求另一个地址 于是我们就
  • vue图片预览放大,缩小,旋转等功能,用 v-viewer来实现,还有他的api

    前言 推荐一款特别优秀的插件 viewerjs 他可以实现图片预览功能 点击图片实现弹框操作图片的效果 点我进入GitHub地址 实现效果 这里说先下实现步骤 步骤一 安装 注意这里是 v viewer npm install v view
  • Spark函数式编程基础

    目录 一 函数定义与使用 1 函数式编程简介 2 匿名函数 3 占位符语法 4 高阶函数 5 闭包 二 针对容器的操作 1 遍历操作 2 映射操作 3 过滤操作 4 规约操作 5 拆分操作 一 函数定义与使用 1 函数式编程简介 函数式编程
  • maven怎么引入jdom_Maven添加本地依赖

    用mvn命令把本地jar包添加到maven仓库 mvn install install file Dfile f aliyn openservices jar DgroupId com aliyun DartifactId openserv
  • Python:sklearn数据预处理中fit(),transform()与fit_transform()的区别

    1 概述 注意这是数据预处理中的方法 Fit Method calculates the parameters and and saves them as internal objects 解释 简单来说 就是求得训练集X的均值啊 方差啊
  • STM32与拉力传感器通信

    目录 第一部分 设备通信图 第二部分 设备接线 HX711与传感器的接线 HX711与MCU的接线 第三部分 驱动代码 HX711引脚初始化 Dout CLK HX711读取数据函数 HX711获取传感器的值 头文件定义 实验结果 第一部分