[其他ST产品] 基于STM32的HX711模块的电子秤设计

[复制链接]
2616|6
 楼主| 鱿鱼丝 发表于 2023-2-26 16:16 | 显示全部楼层 |阅读模式
主要功能

    打开串口调试助手,波特率设置为115200,系统运行后,蜂鸣器滴一声表示去皮完成,同时串口助手会显示传感器检测实时重量,若重量超过2000g,蜂鸣器报警。当按下KEY1键,物品稳定重量会显示在串口助手上。
二、硬件资源

1、STM32开发板一个(本人使用为STM32407)

2、HX711称重模块一个

3、USB线一条

4、杜邦线

评论

———————————————— 版权声明:本文为CSDN博主「Clixloss1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Clixlos/article/details/128395460  发表于 2023-2-26 16:16
 楼主| 鱿鱼丝 发表于 2023-2-26 16:39 | 显示全部楼层
硬件连接
  1. 蜂鸣器模块-->单片机IO
  2.                   BEEP-->PF8
  3.                   
  4.                   按键模块-->单片机IO
  5.                   KEY0-->PA0
  6.                   KEY1-->PE2
  7.                   KEY2-->PE3
  8.                   KEY3-->PE4

  9.                   HX711称重模块(5KG)-->单片机IO
  10.                   DOUT-->PB10(USART3_TX)
  11.                   SCK-->PB11(USART3_RX)
  12.                   VCC-->5V
  13.                   GND-->GND
 楼主| 鱿鱼丝 发表于 2023-2-26 16:40 | 显示全部楼层
(经测试,选用供电电压3.3V结果会不稳定,故采用5V供电。)
软件设计
1、主要框架
3470363fb1adfb522e.png
 楼主| 鱿鱼丝 发表于 2023-2-26 16:40 | 显示全部楼层
主要代码

  1. //主函数程序

  2. #include "system.h"
  3. #include "SysTick.h"
  4. #include "led.h"
  5. #include "usart.h"       
  6. #include "hx711.h"
  7. #include "beep.h"
  8. #include "key.h"


  9. int main()
  10. {
  11.         u8 res=0;
  12.         u8 key=0;
  13.        
  14.         SysTick_Init(168);
  15.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组,分2组
  16.         USART1_Init(115200);//波特率设置为115200
  17.         LED_Init();//LED初始化
  18.         BEEP_Init();//蜂鸣器初始化
  19.         KEY_Init();//按键初始化

  20.         hx711_init();//HX711模块初始化
  21.        
  22.         get_plet();//获取毛皮重量
  23.         BEEP=1;
  24.         delay_ms(1000);
  25.         get_plet();//延时1s,再一次获取毛皮重量
  26.         BEEP=0;
  27.        
  28.         while(1)
  29.         {
  30.                   LED1=!LED1;//LED1灯在正常运行中不断闪烁
  31.                        
  32.                         res=get_suttle();//获取净重
  33.                         if(res==0)
  34.                         {
  35.                                 printf("实时检测重量:%d克\r\n",hx_str.suttle);
  36.                                 if(hx_str.suttle>2000)
  37.                                         BEEP=1;
  38.                                 else
  39.                                         BEEP=0;
  40.                         }
  41.                 }
  42.                 delay_ms(300);
  43.                
  44.                 key=KEY_Scan(0);
  45.                 if(key==KEY2_PRESS)
  46.                 {
  47.                         printf("物品检测重量:%d克\r\n",hx_str.suttle);
  48.                 }
  49.         }

 楼主| 鱿鱼丝 发表于 2023-2-26 16:40 | 显示全部楼层
  1. //hx711部分程序
  2. u32 hx711_read(void)       
  3. {
  4.         u32 count;
  5.         u8 i;

  6.           HX711_DOUT=1;
  7.         delay_us(10);
  8.           HX711_SCK=0;
  9.           count=0;
  10.           while(HX711_DOUT);
  11.           for(i=0;i<24;i++)
  12.         {
  13.                   HX711_SCK=1;
  14.                   count=count<<1;
  15.                 delay_us(10);
  16.                 HX711_SCK=0;
  17.                   if(HX711_DOUT)
  18.                         count++;
  19.                 delay_us(10);
  20.         }
  21.         HX711_SCK=1;
  22.     count=count^0x800000;//  第25个下降沿来时,转换数据
  23.         delay_us(10);
  24.         HX711_SCK=0;  
  25.         return(count);
  26. }

  27. //获取毛皮重量
  28. void get_plet(void)
  29. {
  30.         hx_str.plet=hx711_read();       
  31. }

  32. //正常返回0,负重返回2,超重返回1
  33. u8 get_suttle(void)
  34. {
  35.         hx_str.suttle=hx711_read();
  36.         if(hx_str.suttle>hx_str.plet)
  37.         {
  38.                 hx_str.suttle=hx_str.suttle-hx_str.plet;//进行去皮
  39.                 if(hx_str.suttle>0)
  40.                 {
  41.                        
  42.                         hx_str.suttle=hx_str.suttle/GapValue;//转换为实际重量,此处GapValue设置为400
  43.                         if(hx_str.suttle>5000)//如果超过HX711最大5kg量程
  44.                                 return 1;
  45.                         else
  46.                                 return 0;

  47.                 }
  48.                 else        
  49.                         return 2;
  50.         }
  51.         return 1;
  52. }
 楼主| 鱿鱼丝 发表于 2023-2-26 16:40 | 显示全部楼层
实验现象
5106063fb1b1589909.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

480

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部