我通過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)不理解了。懇請各位大神賜教。不勝感激。
|