久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2830|回復: 6
打印 上一主題 下一主題
收起左側

使用stm32讀取HX711的壓電式傳感器程序 重量顯示負數?

[復制鏈接]
跳轉到指定樓層
樓主
ID:967636 發表于 2022-3-25 17:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      使用100g的砝碼修正,使用紫色的hx711,50kg的壓電式力傳感器,在串口打印助手中,顯示的重量是一個負數。使用的是正點的串口打印函數,和購買時51單片機的HX711程序修改的。
不知道是延時函數的問題,還是這個計算公式的問題Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue);

#include "sys.h"
#include "usart.h"
#include "HX711.h"
#include "delay.h"
float Weight = 0;

int main(void)
{
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
        delay_init();                //延時初始化
        uart_init(115200);        //串口初始化波特率為115200
        Init_Hx711();
        delay_ms(2000);
        Get_Maopi();
        delay_ms(100);
        
        while(1)
        {
        Weight = Get_Weight();
        Weight = (float)Weight/1000.0f;
        printf("%0.3f kg \r\n",Weight);        //串口顯示重量
        delay_ms(1000);
        }
}



/****
void delay_us(u32 nus)
{               
        u32 temp;                     
        SysTick->LOAD=nus*fac_us;                                         //時間加載                           
        SysTick->VAL=0x00;                                                //清空計數器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;        //開始倒數         
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));                //等待時間到達   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        //關閉計數器
        SysTick->VAL =0X00;                                               //清空計數器         
}

****/

HX711主要函數
#include "HX711.h"
#include "delay.h"

long HX711_Buffer = 0;
long Weight_Maopi = 0;
long Weight_Shiwu = 0;

#define GapValue 71.5  /50kg的量程                                                                                                                                                
/*
可以在產生 VAVDD 和 AGND 電壓,即 711 模塊上的 E+ 和 E- 電壓。該電壓通過 VAVDD=VBG(R1 +R2 )/R2 計算。VBG 為模塊兒基準電壓 1.25v,R1 = 20K,R2 = 8.2K。 因此得出 VAVDD = 4.3V
因傳感器線性斜率不同而定。每個傳感器都要校準。如果傳感器測量值偏大,則需改大該數值,若傳感器測量值偏小,則需改小該數值。(不斷修正8)

*/
#define HIGH 1
#define LOW  0
#define HX711_GROUP GPIOB


void digitalWrite(GPIO_TypeDef * GPIO,int pin,int value)
{
        if(value==HIGH)//set 1
        {
                GPIO_SetBits(GPIO,pin);
        }
        if(value==LOW)//reset 0
        {
                GPIO_ResetBits(GPIO,pin);
        }
}

int digitalRead(GPIO_TypeDef * GPIO,int pin)
{
        return GPIO_ReadInputDataBit(GPIO,pin);
}

//****************************************************
//初始化HX711
//****************************************************

void Init_Hx711()
{


  GPIO_InitTypeDef  GPIO_InitStructure;
         
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         //使能PB端口時鐘
        //pd_sck
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                                 //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根據設定參數初始化GPIOB0
GPIO_SetBits(GPIOB,GPIO_Pin_0);                                                 //PB0輸出高
//DOUT
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                             // 端口配置, 推挽輸出
         GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING;//輸入模式
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  
GPIO_Init(GPIOE, &GPIO_InitStructure);                                           //推挽輸出 ,IO口速度為50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_1);                                                  //PB1 輸出高
}


//****************************************************
//獲取毛皮重量
//****************************************************
void Get_Maopi()
{
        Weight_Maopi = HX711_Read();               
}

//****************************************************
//稱重
//****************************************************
long Get_Weight()
{
        HX711_Buffer = HX711_Read();
        Weight_Shiwu = HX711_Buffer;
        Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //獲取實物的AD采樣數值。
        Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue);         
        return Weight_Shiwu;
}

//****************************************************
//讀取HX711
//****************************************************
unsigned long HX711_Read(void)        //增益128
{
        unsigned long val = 0;
        unsigned char i = 0;

                GPIO_SetBits(GPIOB,GPIO_Pin_1);    //DOUT=1
                GPIO_ResetBits(GPIOB,GPIO_Pin_0);    //SCK=0
        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));//DOUT
        delay_us(1);   
        for(i=0;i<24;i++)
        {
                delay_us(100);
                GPIO_SetBits(GPIOB,GPIO_Pin_0);           //時鐘高電平
                val=val<<1; //若DT位為左移一位
                delay_us(1);  
                GPIO_ResetBits(GPIOB,GPIO_Pin_0);           //時鐘低電平
                if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1))  
                        val++; //若DT位為高sck+1
                delay_us(1);
        }
        GPIO_SetBits(GPIOB,GPIO_Pin_0);
        val = val^0x800000;
        delay_us(1);
        GPIO_ResetBits(GPIOB,GPIO_Pin_0);
        delay_us(1);  
        return val;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:94031 發表于 2022-3-26 13:29 | 只看該作者
把傳感器信號輸出兩條線對調后再接上。
回復

使用道具 舉報

板凳
ID:268826 發表于 2022-3-28 10:19 | 只看該作者
E+,E-接反了
回復

使用道具 舉報

地板
ID:967636 發表于 2022-3-28 10:32 | 只看該作者
xuyaqi 發表于 2022-3-26 13:29
把傳感器信號輸出兩條線對調后再接上。

好像沒啥用啊 不是這個問題吧
回復

使用道具 舉報

5#
ID:967636 發表于 2022-3-28 11:16 | 只看該作者
26.537]收←◆-0.101 kg

[11:16:27.539]收←◆-0.101 kg

[11:16:28.543]收←◆-0.101 kg

[11:16:29.547]收←◆-0.101 kg

[11:16:30.551]收←◆-0.102 kg
回復

使用道具 舉報

6#
ID:967636 發表于 2022-3-28 11:16 | 只看該作者
26.537]收←◆-0.101 kg

[11:16:27.539]收←◆-0.101 kg

[11:16:28.543]收←◆-0.101 kg

[11:16:29.547]收←◆-0.101 kg

[11:16:30.551]收←◆-0.102 kg
回復

使用道具 舉報

7#
ID:121859 發表于 2022-3-28 14:27 | 只看該作者
看看是不是去毛皮那里出問題了,要出現負數必然是去毛皮的重量大于了正常測重的重量所致。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片免费观看视频 | 99reav| 欧美在线视频一区二区 | 国产线视频精品免费观看视频 | 国产小视频在线观看 | 天天爽一爽 | 户外露出一区二区三区 | 免费精品| 国产福利视频 | 91日b| 一区二区三区网站 | 日韩黄色免费 | 综合久久av | 国产成人精品午夜视频免费 | 日韩成人在线观看 | 亚洲一区 中文字幕 | 欧美女优在线观看 | 国产在线精品一区二区 | 欧美日韩第一页 | 青青草在线视频免费观看 | 国产高清一区二区三区 | 狠狠操网站 | 99精品欧美一区二区三区综合在线 | 成人久久18免费网站麻豆 | 玖玖视频网 | 国产精品久久久久久久久久久久久久 | 91久久久久久久久久久久久 | 亚洲人免费视频 | 91视频免费在观看 | 99re视频在线 | www操操| 老牛影视av一区二区在线观看 | 成人欧美日韩一区二区三区 | 亚洲精品久久久久久久久久吃药 | 国产成人综合在线 | 我要看免费一级毛片 | 综合久久综合久久 | 深夜福利亚洲 | 亚洲免费av一区 | 国产午夜精品一区二区三区嫩草 | 羞羞的视频在线看 |