资讯详情

基于STM32F103ZET6核心板控制HX711(称重传感器带屏蔽)

采用核心板控制传感器,实现串口打印数据。

1>stm32f103zet6核心板

2>HX711(带屏蔽)

HX711有几块板子,我在这里用的是带屏蔽的板子,只要知道什么板子的引脚功能是一样的。

管脚描述
VCC 电源正极(2.6V~5.5V稳压电路)
GND 接地
DO/RX

数字输出,串口数据输出

(个人理解RX核心板上的脚应该是RX接收脚)

CK/TX 数字输入 断电控制(高电平有效)和串口时钟输入
A 模拟输入 通道 A 正输入端
A- 模拟输入 通道 A 负输入端
B 模拟输入 通道 B 正输入端
B- 模拟输入 通道 B 负输入端
out

模拟电源: 2.6 ~ 5.5V

注:以上是个人理解。根据海芯的对应,如有错误,请纠正。(还是菜鸟)

HX711引脚 核心板引脚
VCC 5V
DO/RX PB1
CK/TX PB2
GND GND

1>STM32CubMX

2>keil5

借鉴涂鸦文章,操作差不多,我只是换了引脚,大家可以根据它的来说,非常完整非常详细。

(不太好用csdn在代码段中,我将添加的代码移动到一个位置,表示代码也使用涂鸦博客,只有引脚做了一点修改)

main.c文件中加

/* USER CODE BEGIN Includes */               #include "stdio.h" /* USER CODE END Includes */               uint32_t ReadCount(void);  /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ 

/* USER CODE BEGIN PV */             #define BUFFERSIZE 255           ////可接收的最大字符数                    uint8_t ReceiveBuff[BUFFERSIZE]; //接收缓冲区             uint8_t recv_end_flag = 0,Rx_len;//接收中断标志,接收字符长度  /* USER CODE END PV */             uint32_t weight_qupi=0;             uint32_t weight_shiji=0; /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */             #ifdef __GNUC__      //串口重定向,因为要使用print函数             #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)             #else             #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)             #endif              PUTCHAR_PROTOTYPE             {                     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);                     return ch;             } /* USER CODE END PFP */
                  printf("压力传感器HX711\r\n");                   weight_qupi=ReadCount()                   printf("首次去皮weight_qupi=%d\n",weight_qupi);                 HAL_Delay(100);   /* USER CODE END 2 */    /* Infinite loop */   /* USER CODE BEGIN WHILE */   while (1)   {     /* USER CODE END WHILE */      /* USER CODE BEGIN 3 */           weight_shiji=ReadCount();           if(weight_qupi>=weight_shiji)           {            weight_shiji=weight_qupi-weight_shiji;            weight_shiji=weight_shiji/100;            printf("重量为:%dg\r\n",weight_shiji);           }           else           {            weight_shiji=weight_shiji-weight_qupi;            weight_shiji=weight_shiji/100;            printf("重量为:-%dg\r\n",weight_shiji);           }            HAL_Delay(1000);    }

/* USER CODE BEGIN 4 */ uint32_t ReadCount(void) {  uint32_t Count=0;  uint8_t i;  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);  while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1));               //AD转换未结束时等待,否则开始读取  for (i=0;i<24;i  )  {    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);    Count=Count<<1;                                      //减少沿途变量Count左移一位,右补零    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);    if(HAL_GPIO_ReadPin(DO_GPIO_Port,DO_Pin)) Count  ;  }  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);  Count=Count^0x800000;                                    ///当第25个脉冲下降时,转换数据  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);  return(Count); }  /* USER CODE END 4 */

 

 借鉴文章链接:

涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711_记帖的博客-CSDN博客_hx711压力传感器

 

标签: 重量传感器f1814

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台