打印
[其他ST产品]

基于STM32的HX711模块的电子秤设计

[复制链接]
1686|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
主要功能

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

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

2、HX711称重模块一个

3、USB线一条

4、杜邦线

使用特权

评论回复
评论
鱿鱼丝 2023-2-26 16:16 回复TA
———————————————— 版权声明:本文为CSDN博主「Clixloss1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Clixlos/article/details/128395460 
沙发
鱿鱼丝|  楼主 | 2023-2-26 16:39 | 只看该作者
硬件连接
蜂鸣器模块-->单片机IO
                  BEEP-->PF8
                  
                  按键模块-->单片机IO
                  KEY0-->PA0
                  KEY1-->PE2
                  KEY2-->PE3
                  KEY3-->PE4

                  HX711称重模块(5KG)-->单片机IO
                  DOUT-->PB10(USART3_TX)
                  SCK-->PB11(USART3_RX)
                  VCC-->5V
                  GND-->GND

使用特权

评论回复
板凳
鱿鱼丝|  楼主 | 2023-2-26 16:40 | 只看该作者
(经测试,选用供电电压3.3V结果会不稳定,故采用5V供电。)
软件设计
1、主要框架

使用特权

评论回复
地板
鱿鱼丝|  楼主 | 2023-2-26 16:40 | 只看该作者
主要代码

//主函数程序

#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"       
#include "hx711.h"
#include "beep.h"
#include "key.h"


int main()
{
        u8 res=0;
        u8 key=0;
       
        SysTick_Init(168);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组,分2组
        USART1_Init(115200);//波特率设置为115200
        LED_Init();//LED初始化
        BEEP_Init();//蜂鸣器初始化
        KEY_Init();//按键初始化

        hx711_init();//HX711模块初始化
       
        get_plet();//获取毛皮重量
        BEEP=1;
        delay_ms(1000);
        get_plet();//延时1s,再一次获取毛皮重量
        BEEP=0;
       
        while(1)
        {
                  LED1=!LED1;//LED1灯在正常运行中不断闪烁
                       
                        res=get_suttle();//获取净重
                        if(res==0)
                        {
                                printf("实时检测重量:%d克\r\n",hx_str.suttle);
                                if(hx_str.suttle>2000)
                                        BEEP=1;
                                else
                                        BEEP=0;
                        }
                }
                delay_ms(300);
               
                key=KEY_Scan(0);
                if(key==KEY2_PRESS)
                {
                        printf("物品检测重量:%d克\r\n",hx_str.suttle);
                }
        }

使用特权

评论回复
5
鱿鱼丝|  楼主 | 2023-2-26 16:40 | 只看该作者
//hx711部分程序
u32 hx711_read(void)       
{
        u32 count;
        u8 i;

          HX711_DOUT=1;
        delay_us(10);
          HX711_SCK=0;
          count=0;
          while(HX711_DOUT);
          for(i=0;i<24;i++)
        {
                  HX711_SCK=1;
                  count=count<<1;
                delay_us(10);
                HX711_SCK=0;
                  if(HX711_DOUT)
                        count++;
                delay_us(10);
        }
        HX711_SCK=1;
    count=count^0x800000;//  第25个下降沿来时,转换数据
        delay_us(10);
        HX711_SCK=0;  
        return(count);
}

//获取毛皮重量
void get_plet(void)
{
        hx_str.plet=hx711_read();       
}

//正常返回0,负重返回2,超重返回1
u8 get_suttle(void)
{
        hx_str.suttle=hx711_read();
        if(hx_str.suttle>hx_str.plet)
        {
                hx_str.suttle=hx_str.suttle-hx_str.plet;//进行去皮
                if(hx_str.suttle>0)
                {
                       
                        hx_str.suttle=hx_str.suttle/GapValue;//转换为实际重量,此处GapValue设置为400
                        if(hx_str.suttle>5000)//如果超过HX711最大5kg量程
                                return 1;
                        else
                                return 0;

                }
                else        
                        return 2;
        }
        return 1;
}

使用特权

评论回复
6
鱿鱼丝|  楼主 | 2023-2-26 16:40 | 只看该作者
实验现象

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

409

帖子

0

粉丝