Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4551|回復: 5
打印 上一主題 下一主題

arduino與co 感測器的問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-8-21 18:48:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大大你們好,我是剛開始學習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...");
}
2#
發表於 2013-8-24 12:34:18 | 只看該作者
回復 1# banana7917

你就燒什麼生一堆煙,拿去燻sensor,有什麼變化,就知道有沒有問題,
3#
 樓主| 發表於 2013-8-26 10:38:40 | 只看該作者
本帖最後由 banana7917 於 2013-8-26 10:46 編輯

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

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

那煙燻後有沒有跑出 ALARM 的字?
5#
 樓主| 發表於 2013-8-29 19:37:27 | 只看該作者
回復 4# vegewell

1.4V是絕對的值,因為這顆sensor必須要用5V來清洗sensor然後再用1.4V來感測資料。所以這邊是不必要動的。
我跑出來沒有alarm的字樣,因為這代表我在感測時,的確是1.4V而不是5V,也代表我有正確轉換到1.4V來測量。
6#
發表於 2013-8-30 12:19:00 | 只看該作者
回復 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
讀存在的甲烷氣體。當觸發(氣體濃度達到或超過預置),串行監視器窗口將顯示單詞報警。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-7-6 01:37 , Processed in 0.342366 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表