• <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>

    24小時(shí)聯(lián)系電話(huà):18217114652、13661815404

    中文

    您當前的位置:
    首頁(yè)>
    電子資訊>
    技術(shù)專(zhuān)題>
    單片機開(kāi)發(fā)之HX711的...

    技術(shù)專(zhuān)題

    單片機開(kāi)發(fā)之HX711的計算


    最近接了一個(gè)單片機開(kāi)發(fā)項目,需要使用HX711芯片來(lái)處理稱(chēng)重傳感器的值。作為一個(gè)多年老司機,在HX711官網(wǎng)上沒(méi)找到稱(chēng)重值的計算方法,網(wǎng)上的資料也不全。因此在調試出HX711的稱(chēng)重值之后,將項目過(guò)程做一個(gè)記錄,為后面開(kāi)發(fā)的人提供微薄的幫助。

    硬件電路在此略過(guò)不提了,簡(jiǎn)略說(shuō)下HX711STM32單片機開(kāi)發(fā)的過(guò)程。

    1、初始化硬件HX711_init;

    2、實(shí)現HX711 AD值讀取函數HX711_Read_AD;

    3、記錄沒(méi)有物品時(shí)HX711_Read_AD讀取的ADadj;

    4、編譯燒錄運行程序,將一個(gè)質(zhì)量為M的物品放到托盤(pán)上,HX711_Read_AD讀出物品的AD值A1??捎嬎愕玫椒Q(chēng)重系數 γ=M/(A1-adj);

    5、將γ常量系數寫(xiě)入到代碼中,實(shí)現HX711_Read_Weight函數,例如HX711_Read_AD讀取待測物的AD值是A,待測物品質(zhì)量m=(A-adj)*γ = M*(A-adj)/(A1-adj);

    以下代碼是HX711在STM32F103上的代碼實(shí)現,已經(jīng)過(guò)驗證:

    #define HX711_SCK       PBout(13)  //SCK

    #define HX711_READ_SDA  PBin(12)   //輸入SDA

    static u32 adj = 0;//無(wú)物稱(chēng)重時(shí)HX711讀出的AD

    /*初始化硬件*/

    void HX711_init(void)

    {

          u32 sum=0;

          int i=0;

           GPIO_InitTypeDef GPIO_InitStructure;

          RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); 

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽輸出

          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

          GPIO_Init(GPIOB, &GPIO_InitStructure);

           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;     //浮空輸入

          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

          GPIO_Init(GPIOB, &GPIO_InitStructure);

           HX711_Read_AD();

           for(i=0;i<10;i++){

                delay_ms(100);

                sum+=HX711_Read_AD();

          }

          adj = sum/10;

    }

    /**************************************************************

    24bit HX711讀取AD

    ***************************************************************/

    u32 HX711_Read_AD(void)

    {

          u32 count;

          u8 i;

          HX711_SCK = 0; //使能ADPD_SCK 置低)

          count=0;

          while(HX711_READ_SDA); //AD轉換未結束則等待,否則開(kāi)始讀取

          delay_us(1);

          for (i=0;i<24;i++)

          {

                HX711_SCK=1; //PD_SCK 置高(發(fā)送脈沖)

                count=count<<1; //下降沿來(lái)時(shí)變量count左移一位,右側補零

                if(HX711_READ_SDA) count++;

                delay_us(1);

                HX711_SCK=0; //PD_SCK 置低

                delay_us(1);

          }

          HX711_SCK=1;

          delay_us(1);

          HX711_SCK=0;

          count=count^0x800000;//25個(gè)脈沖下降沿來(lái)時(shí),轉換數據 

          return count;

    } 

    /*讀取物品質(zhì)量,單位0.1g*/

    u32 HX711_Read_Weight(void)

    {

          u32 weight = 0;

          u32 count = HX711_Read_AD();     

          weight=((count-adj)*0.029017+5)/10;//5是為了四色五入,0.029017是稱(chēng)重系數 ,這里的單位是0.1g,如果想更換單位,請將系數乘以或除以10

          return weight;

    }

    計算方法依據是通過(guò)HX711讀出AD值與物品質(zhì)量程線(xiàn)性關(guān)系。另注意:每個(gè)HX711空載時(shí)的AD都不一樣,所以每個(gè)設備的HX711模塊都需要校零。

    作者:Winston

    轉載請注明出處:http://856024.com/TechnologyNews/c5a0fe24-4fa2-a112-54b6-3a8a33050b89.shtml

    請輸入搜索關(guān)鍵字

    確定
    色鲁99热99re超碰精品_91精品一区二区三区无码吞精_亚洲国产欧洲综合997久久_一级a性色生活片久久无
  • <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>