欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3329|回復(fù): 6
收起左側(cè)

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

[復(fù)制鏈接]
ID:967636 發(fā)表于 2022-3-25 17:45 | 顯示全部樓層 |閱讀模式
      使用100g的砝碼修正,使用紫色的hx711,50kg的壓電式力傳感器,在串口打印助手中,顯示的重量是一個(gè)負(fù)數(shù)。使用的是正點(diǎn)的串口打印函數(shù),和購(gòu)買時(shí)51單片機(jī)的HX711程序修改的。
不知道是延時(shí)函數(shù)的問題,還是這個(gè)計(jì)算公式的問題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);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
        delay_init();                //延時(shí)初始化
        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;                                         //時(shí)間加載                           
        SysTick->VAL=0x00;                                                //清空計(jì)數(shù)器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;        //開始倒數(shù)         
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));                //等待時(shí)間到達(dá)   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        //關(guān)閉計(jì)數(shù)器
        SysTick->VAL =0X00;                                               //清空計(jì)數(shù)器         
}

****/

HX711主要函數(shù)
#include "HX711.h"
#include "delay.h"

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

#define GapValue 71.5  /50kg的量程                                                                                                                                                
/*
可以在產(chǎn)生 VAVDD 和 AGND 電壓,即 711 模塊上的 E+ 和 E- 電壓。該電壓通過 VAVDD=VBG(R1 +R2 )/R2 計(jì)算。VBG 為模塊兒基準(zhǔn)電壓 1.25v,R1 = 20K,R2 = 8.2K。 因此得出 VAVDD = 4.3V
因傳感器線性斜率不同而定。每個(gè)傳感器都要校準(zhǔn)。如果傳感器測(cè)量值偏大,則需改大該數(shù)值,若傳感器測(cè)量值偏小,則需改小該數(shù)值。(不斷修正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端口時(shí)鐘
        //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);                                         //根據(jù)設(shè)定參數(shù)初始化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;                                //獲取實(shí)物的AD采樣數(shù)值。
        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);           //時(shí)鐘高電平
                val=val<<1; //若DT位為左移一位
                delay_us(1);  
                GPIO_ResetBits(GPIOB,GPIO_Pin_0);           //時(shí)鐘低電平
                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;
}

回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2022-3-26 13:29 | 顯示全部樓層
把傳感器信號(hào)輸出兩條線對(duì)調(diào)后再接上。
回復(fù)

使用道具 舉報(bào)

ID:268826 發(fā)表于 2022-3-28 10:19 | 顯示全部樓層
E+,E-接反了
回復(fù)

使用道具 舉報(bào)

ID:967636 發(fā)表于 2022-3-28 10:32 | 顯示全部樓層
xuyaqi 發(fā)表于 2022-3-26 13:29
把傳感器信號(hào)輸出兩條線對(duì)調(diào)后再接上。

好像沒啥用啊 不是這個(gè)問題吧
回復(fù)

使用道具 舉報(bào)

ID:967636 發(fā)表于 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
回復(fù)

使用道具 舉報(bào)

ID:967636 發(fā)表于 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
回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-3-28 14:27 | 顯示全部樓層
看看是不是去毛皮那里出問題了,要出現(xiàn)負(fù)數(shù)必然是去毛皮的重量大于了正常測(cè)重的重量所致。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表