Hx711称重模块+STM32+CubeMX

这篇具有很好参考价值的文章主要介绍了Hx711称重模块+STM32+CubeMX。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



提示:以下是本篇文章正文内容,下面案例可供参考

一、模块和接线

传感器连接hx711,hx711连接STM32,如下图所示

Hx711称重模块+STM32+CubeMX

二、CubeMX配置

1.时钟及sys

Hx711称重模块+STM32+CubeMX
Hx711称重模块+STM32+CubeMX
Hx711称重模块+STM32+CubeMX

2.IO口

1)数据线DT设置为Input

Hx711称重模块+STM32+CubeMX

2)时钟线SCK设置为Output

Hx711称重模块+STM32+CubeMX

3.串口

打开串口并选择中断,其他配置保持不变
Hx711称重模块+STM32+CubeMX

4.后续配置

Hx711称重模块+STM32+CubeMX
Hx711称重模块+STM32+CubeMX

三、程序

1.main.c

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */


extern uint8_t ReceiveBuff[BUFFERSIZE]; 
extern uint8_t recv_end_flag,Rx_len;
extern uint32_t weight_first;
extern uint32_t weight_real;

uint32_t weight_print = 0;//质量打印


/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* 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();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_USART6_UART_Init();
  /* USER CODE BEGIN 2 */
	
  printf("压力传感器HX711\r\n");
  weight_first = ReadCount();//首次读取重量进行去皮操作
  printf("首次质量weight_first=%d\n",weight_first);
  HAL_Delay(100);
		
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    		
		weight_print = WeightReal();//实际质量计算
		printf("重量为:%dg\n",weight_print);
		HAL_Delay(100);
		
  }
  /* USER CODE END 3 */
}


2.hx711.c

注:根据官方给出的程序写ReadCount,红色框程序要稍微改一下。将ADSK=1;与ADSK=0;看作一个数据传输周期的开始和结束,if语句中count值仍在变化,等于数据传输还没结束,所以要将结束标志ADSK=0放到if语句后。

Hx711称重模块+STM32+CubeMX

1ADSK=0;//指SCK时钟线电平置低。
2ADSK=1;//指SCK时钟线电平置高。
3while(ADDO);//判断AD转换器是否准备好(DOUT应为低电平),ADDO=0,程序正常进行,否则ADDO=1一直进行while循环。

4 i 的取值范围根据手册中的此处给出,为24-26,分别对应不同的通道和增益。Hx711称重模块+STM32+CubeMX

#include "hx711.h"
#include "stdio.h"
#include "stdint.h"
#include "gpio.h"
 
uint8_t ReceiveBuff[BUFFERSIZE]; //接收缓冲区
uint8_t recv_end_flag = 0,Rx_len;//接收完成中断标志,接收到字符长度

uint32_t weight_first = 0;//首次质量
uint32_t weight_real = 0;//每次读取的实际值

/***********************************************************************************************
*Name : ReadCount
*Function : 读取传感器数值,通道A,增益128
*Parameter :    count 计数值
                i    24位数据计数,改变i的值可选择不同通道和增益24~26
***********************************************************************************************/
uint32_t ReadCount(void)
{
	uint32_t Count = 0;
	uint8_t i = 0;
	HAL_Delay(10);
	HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_RESET);
	
	while(HAL_GPIO_ReadPin(DT_GPIO_Port, DT_Pin));//判断AD转换器是否准备好(DOUT应为低电平)
	for(i = 0; i <24; i++)//24
	{
	  HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_SET);
		Count = Count << 1;		
		if(HAL_GPIO_ReadPin(DT_GPIO_Port, DT_Pin))
		{
		    Count ++;
		}
		HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_RESET);			
	}
	
	HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_SET);
	Count = Count ^ 0x800000;
	HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_RESET);
	return Count;
}

/***********************************************************************************************
*Name : ReadWeight
*Function : 读取拉力值
*Parameter :   weight_real          实际拉力值
               weight_first         传感器首次数据
***********************************************************************************************/
uint32_t WeightReal(void)
{
   weight_real = ReadCount();//实际质量计算
		if(weight_first>=weight_real)
		{
			weight_real = weight_first-weight_real;
			weight_real = weight_real/100;
			//printf("重量为:%dg\n",weight_real);
		}
		else
		{
			weight_real = weight_real-weight_first;
			weight_real = weight_real/100;
			//printf("重量为:-%dg\n",weight_real);
		}
		return weight_real;
}

3.hx711.h

#ifndef HX711
#define HX711
#include "stdint.h"

#define BUFFERSIZE 255           //可以接收的最大字符个数       
uint32_t ReadCount(void);
uint32_t ReadWeight(void);

#endif

4.串口重定向

放在usart.c中

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart6, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}


总结

提示:本文章学到的一个主要知识点是ReadCount函数中的

通讯逻辑是先将数据线电平拉高,代表数据开始传输,等待接收完数据后,数据线电平置低,数据传输结束。

参考文章

涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711文章来源地址https://www.toymoban.com/news/detail-428330.html

到了这里,关于Hx711称重模块+STM32+CubeMX的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【mcuclub】称重-HX711

      编号 名称 功能 1 GND 电源地 2 DT 数据输出引脚 3 SCK 时钟引脚 4 VCC 电源正 HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片是专门为称重传感器设计的,称重传感器只需要一个HX711芯片即可完成称重信号的处理及AD转换;对于单片

    2024年01月19日
    浏览(27)
  • STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4

    STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 Proteus 仿真小实验: STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 功能: 硬件组成:STC15W4K32S4单片机 +LCD12864显示器+4x4矩阵键盘+HX711电子秤 1.单片机通过HX711读取称重传感器数据计算出重量,重量乘于单价可以

    2024年02月12日
    浏览(38)
  • 物联网AI MicroPython传感器学习 之 HX711称重传感器

    学物联网,来万物简单IoT物联网!! 下图是一款量程为5kg的称重传感器,采用悬臂梁方式安装。传感器主体结构是一个开孔金属条,金属条上下表面各贴有两个应变电阻,当金属条受力发生变形时时,应变电阻的阻值也会随之发生变化。电子秤的原理便是根据测量到的电阻变

    2024年02月03日
    浏览(64)
  • HX711压力传感器学习(STM32)

    目录 原理图:​ 引脚介绍: HX711介绍工作原理: 程序讲解: 整套工程: VCC和GND引脚分别为HX711芯片的电源输入端口。 VCC引脚是连接到5V或3.3V的正电源,GND引脚是连接到地的负电源。 DOUT是HX711芯片的数据输出端口,它输出经过A/D转换处理后的24位数据。 SCK是HX711芯片的时钟输

    2024年02月05日
    浏览(48)
  • HX711压力传感器学习一(STM32)

    目录 原理图:​ 引脚介绍: HX711介绍工作原理: 程序讲解: 整套工程: VCC和GND引脚分别为HX711芯片的电源输入端口。 VCC引脚是连接到5V或3.3V的正电源,GND引脚是连接到地的负电源。 DOUT是HX711芯片的数据输出端口,它输出经过A/D转换处理后的24位数据。 SCK是HX711芯片的时钟输

    2024年02月16日
    浏览(40)
  • STM32读取HX711压力传感器芯片数据

    目录 一、HX711压力传感器芯片介绍 1.1 HX711芯片介绍 1.2 芯片管脚与描述 1.3 芯片特点 二、测量原理 2.1 芯片原理图 2.2 压力传感器输出电压值 2.3 芯片原理概述 2.4 数据输出,输入通道和增益选择时序图 2.5 程序计算原理 2.5.1 如何计算传感器供电电压?  2.5.2 如何将 AD 值反向转

    2024年04月16日
    浏览(37)
  • STM32读取24位模数转换(24bit ADC)芯片HX711数据

    HX711是一款国产低成本24位ADC芯片,常用于与称重传感器配合实现体重计的应用。这里介绍STM32读取HX711的电路和代码实现。 HX711的内部原理如下图所示: 市面上有普通和带屏蔽的两种模块: STM32可直接与HX711进行连接,选择2个具有FT(5V耐压)的管脚,将其中对应时钟输出的管

    2023年04月08日
    浏览(50)
  • HX711压力传感器(基于STM32F103C8T6)

    HX711模块是我们目前比较常见的压力传感器模块,主要的作用是用来做压力检测,重量监测等等。博主的这篇博文主要实现功能为,在对重量或者压力进行监测的同时,可以累加或者清零数值,在此基础上就可以对比如饮水量进行统计等等。 HX711模块是市面上比较常见的模块

    2024年02月11日
    浏览(46)
  • 电子模块|压力传感器模块HX711---硬件介绍

    HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性

    2024年02月07日
    浏览(38)
  • 51单片机电子秤(HX711模块 + LCD1602)

    (简单易懂) 1.---------------序 2.HX711测重模块 3.LCD1602显示模块 4.电子秤整体实现原理 5.模块升级去皮与还原 6.源代码 零.先来一个效果展示 这里可以看到3个20g砝码加上去显示60g的重量 5个20g砝码加上去显示100g的重量,精度是比较准的 一.首先考虑如何把这样一个项目设计出来

    2023年04月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包