Robofun 機器人論壇

標題: arduino與co 感測器的問題 [打印本頁]

作者: banana7917    時間: 2013-8-21 18:48
標題: arduino與co 感測器的問題
各位大大你們好,我是剛開始學習arduino的新手,還不是很熟習所以還請多包涵。
--------以下為正題---------


我手邊有arduino還有一塊parallax的gas sensor board,而我在這個板子上面搭配的是MQ7 CO感測器。

現在我對於這塊sensor board上的針腳有點疑問,我不太清楚ALR和HSW是在做什麼的?

並且我有實作了一下官方給的程式碼,但是我不清楚我跑出的是否是正確的數值,因為看起來他偵測出來的數值應該是以PPM為單位,但是,我測得的數值都介於330~380左右(在一般房間內),我有上網查了一下CO的濃度大約都在多少,看到超過100PPM就會中毒了= =...
所以這樣讓我更疑惑了!所以想請教各位大大,不知道我錯的地方在哪裡,想請你們指教一下!

以下附上我的程式碼



int sense = 4;
int heater = 6;

void setup() {
  Serial.begin(9600);
  pinMode(heater, OUTPUT);
  pinMode(sense, INPUT);
}

void loop() {
  COCycle();
}

void COCycle() {
  digitalWrite(heater, HIGH);     // Turn heater on
  Serial.println("Purge started...");
  for(int i = 60; i > 0; i--) {   // Delay for 60 seconds
    Serial.println(i);
    delay(1000);
  }
  Serial.println("Purge complete...");

  Serial.println("Sensing...");
  analogWrite(heater, 71);        //1.4V PWM
  int data = 0;
  for(int i = 0; i <= 90; i++) {  // Read for 90 seconds
    Serial.print(i, DEC);
    data = analogRead(sense);
    Serial.print("\t");
    Serial.println(data);
    if(i==90)
    {
      data = analogRead(sense);
      Serial.println("");
      Serial.println( data );
    }
    if(digitalRead(sense) == 1)   // Show alarm if triggered
      Serial.print("  ALARM");
    Serial.println("");
    delay(1000);
  }
  Serial.println("Sense complete...");
}
作者: vegewell    時間: 2013-8-24 12:34
回復 1# banana7917

你就燒什麼生一堆煙,拿去燻sensor,有什麼變化,就知道有沒有問題,
作者: banana7917    時間: 2013-8-26 10:38
本帖最後由 banana7917 於 2013-8-26 10:46 編輯

回復 2# vegewell
我拿了一個喜餅的盒子,先把空白紙點燃,再丟入裡頭悶燒,過五分鐘後把sensor連同arduino一同放入。Serial monitor上的確是有變化,會變高,但是我有查過資料,他所跑出來的單位應該是PPM,他雖然變高了,但是顯示出來的數值卻是400~500之間,而在還沒放進去箱子內之前是300出頭,感覺這樣的數字就是不對:(
不知道是我誤解嗎? 還是我測出來的真的是正確的數值??
作者: vegewell    時間: 2013-8-27 14:49
回復 3# banana7917

我認為顯示出來的數值 330~380左右(在一般房間內)或煙燻後的數值400~500之間
都是對應這行:
analogWrite(heater, 71);        //1.4V PWM
你把 71 改成別的值之後, 顯示出來的數值就可能不一樣,
因此那不是絕對的值,
這裡有另一範例可參考:
http://learn.parallax.com/methane-gas-sensor-arduino-demo

那煙燻後有沒有跑出 ALARM 的字?
作者: banana7917    時間: 2013-8-29 19:37
回復 4# vegewell

1.4V是絕對的值,因為這顆sensor必須要用5V來清洗sensor然後再用1.4V來感測資料。所以這邊是不必要動的。
我跑出來沒有alarm的字樣,因為這代表我在感測時,的確是1.4V而不是5V,也代表我有正確轉換到1.4V來測量。
作者: vegewell    時間: 2013-8-30 12:19
回復 5# banana7917

如果沒有跑出來alarm的字樣,
那煙燻就不適合試驗,
這是測瓦斯的(gas),不是co,

if(digitalRead(sense) == 1)   // Show alarm if triggered
      Serial.print("  ALARM");

所謂 Show alarm if triggered

When triggered (gas level at or above preset), the Serial Monitor window will display the word ALARM.
Gas Sensor Board
讀存在的甲烷氣體。當觸發(氣體濃度達到或超過預置),串行監視器窗口將顯示單詞報警。




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2