找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

使用HX711與Arduino進(jìn)行壓力測量時(shí)遇到的一個(gè)問題不理解

[復(fù)制鏈接]
ID:326320 發(fā)表于 2018-8-28 19:54 | 顯示全部樓層 |閱讀模式
我通過HX711模塊(選擇轉(zhuǎn)換頻率為80Hz)將壓力傳感器(500kg)與Arduino 2560連接起來,想要做一個(gè)壓力數(shù)據(jù)的采集,同時(shí)將采集到的壓力數(shù)據(jù)存儲到SD卡中。
代碼如下:
/*型號(mega2560
功能:采集并存儲壓力數(shù)據(jù)
創(chuàng)建:0803
修改:0824
正在使用的版本*/
#include<HX711.h>            //壓力傳感器AD轉(zhuǎn)換芯片的庫文件
#include<SD.h>
const intbutton=6;                //開關(guān),控制程序執(zhí)行
const int SD_cs=15;               //15號引腳為SD卡使能引腳
unsigned longrun_time0;       //采集壓力與之對應(yīng)的時(shí)間
HX711 hx(9, 10,128, -0.115);    //壓力傳感器AD轉(zhuǎn)換芯片的庫函數(shù)調(diào)用
void setup()
{
        Serial.begin(9600);
    pinMode(53,OUTPUT);
    pinMode(button,INPUT_PULLUP);              //button加一個(gè)上拉電阻
    hx.set_offset(-16000);            //壓力傳感器AD轉(zhuǎn)換芯片的庫函數(shù)調(diào)用
    Serial.println("安裝SD");
    if(!SD.begin(SD_cs))                     
    {
        Serial.println("安裝失!");
        return;
    }
    Serial.println("安裝完成.");*/
}
void loop()
{
  while(digitalRead(button)==HIGH){}
  run_time0=micros();                  //獲取程序運(yùn)行時(shí)間,該時(shí)間對應(yīng)壓力
  double F=0.01*(hx.bias_read())-2;       //獲取壓力
    File dataFile=SD.open("data.txt",FILE_WRITE);
    if(dataFile)
    {
        dataFile.print(run_time0);
        dataFile.print(",");
        dataFile.println(F);
        dataFile.close();
    }
    else
    {
        Serial.println("ERROR!");
    }                 
}
實(shí)驗(yàn)結(jié)束后讀取存儲到SD卡中的壓力數(shù)據(jù)。在EXCEL內(nèi)分析獲取一個(gè)壓力所需要的時(shí)間,如下圖所示:
可以看到,獲取一個(gè)壓力數(shù)據(jù)的間隔大概是14ms

但是在之后的數(shù)據(jù)中,也發(fā)現(xiàn)也有時(shí)間間隔是18ms的。我不是很理解。因?yàn)?/font>AD轉(zhuǎn)換用時(shí)應(yīng)該都一樣的吧?那么獲取一個(gè)壓力數(shù)據(jù)的間隔應(yīng)該都是18ms。出現(xiàn)一個(gè)可以理解,但接連出現(xiàn)好幾個(gè)我就有點(diǎn)不理解了。懇請各位大神賜教。不勝感激。

微信圖片_20180828193940.png
微信圖片_20180828193935.png
微信圖片_20180828193929.png
微信圖片_20180828193908.png
回復(fù)

使用道具 舉報(bào)

ID:139455 發(fā)表于 2018-8-28 23:47 | 顯示全部樓層
你可以試著將采集的數(shù)據(jù)通過串口直接送到電腦上查看,不存儲到SD卡,如果時(shí)間間隔相等,那么有可能是文件系統(tǒng)對SD卡訪問時(shí),SD卡響應(yīng)時(shí)間不一致引起的,文件系統(tǒng)對SD卡訪問是一個(gè)復(fù)雜的過程。你的程序里每次都打開文件,寫入數(shù)據(jù),然后關(guān)閉,這樣操作不好,頻繁向SD卡寫入少量數(shù)據(jù),SD卡是FLASH系統(tǒng),扇區(qū)操作,改寫一個(gè)數(shù)據(jù)也要按扇區(qū)擦除,這樣每次響應(yīng)的時(shí)間可能不一樣,取決于硬件;你可以這樣試一試,用次數(shù)限制數(shù)據(jù),程序編寫時(shí),打開文件,循環(huán)寫入壓力數(shù)據(jù),到一定數(shù)量時(shí)再關(guān)閉文件,或者檢測到開關(guān)關(guān)閉再關(guān)閉文件。這樣數(shù)據(jù)是寫在緩存中的,累積到一定數(shù)量才寫一次SD卡,這是由文件系統(tǒng)控制的?聪履芙鉀Q問題不

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:326320 發(fā)表于 2018-8-29 07:23 | 顯示全部樓層
lilao3 發(fā)表于 2018-8-28 23:47
你可以試著將采集的數(shù)據(jù)通過串口直接送到電腦上查看,不存儲到SD卡,如果時(shí)間間隔相等,那么有可能是文件系 ...

好的。我去試試看。感謝你的熱心幫助。好人一生平安
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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