概要
mh-z19 赤外線を使った検知方法で空気中の二酸化炭素濃度を求めることができるセンサです
現在は海外からしか購入できなさそうで、自分は AliExpress で $20 ほどで購入しました
今回は Arduino Pro mini を使って動作させてみたいと思います
環境
- Arduino Pro mini (5v, 16MHz)
- Arduino IDE 1.6.12
- mh-z19
ハンダ
とりあえずハンダしましょう
ハンダするのはピンヘッダだけです
4 ピンと 5 ピンのヘッダピンが必要になるので準備しておいてください
以下のようになれば OK です
検出部分に白いシールみたいなのが貼ってありますがそれは剥がさないで OK です
配線
配線は以下の通りです
Arduino VCC -> mh-z19 Vin
Arduino GND -> mh-z19 GND
Arduino 5pin -> mh-z19 PWM
となります
スケッチ
スケッチは以下の通りです
PWM の波形の長さによって ppm が変化することになるので、時間から ppm を求める計算をしています
#define pwmPin 5
#define LedPin 13
int prevVal = LOW;
long th, tl, h, l, ppm;
void setup() {
Serial.begin(9600);
pinMode(pwmPin, INPUT);
pinMode(LedPin, OUTPUT);
}
void loop() {
long tt = millis();
int myVal = digitalRead(pwmPin);
if (myVal == HIGH) {
digitalWrite(LedPin, HIGH);
if (myVal != prevVal) {
h = tt;
tl = h - l;
prevVal = myVal;
}
} else {
digitalWrite(LedPin, LOW);
if (myVal != prevVal) {
l = tt;
th = l - h;
prevVal = myVal;
ppm = 5000 * (th - 2) / (th + tl - 4);
Serial.println("PPM = " + String(ppm));
}
}
}
今回 Arduino Pro mini の 5 ピンを使って PWM 信号を取得します
13 ピンはビルトイン LED になります
デバッグ用に使用しているだけなので、不要であれば削除してもらって OK です
動作確認
スケッチを書き込んでシリアルモニタを開いて動作確認してみましょう
だいたい 0.5 秒おきに ppm が表示されると思います
ノンキャリブレーションですぐに使えるセンサなのですが、値が安定するまでに若干時間が必要でした
安定後に息を吹きかけてみると値が上昇することが確認できると思います
最後に
Arduino Pro mini で mh-z19 を使ってみました
ちゃんとデータシート読んで挙動を確認したほうが良さそうな気がしますが、とりあえず値を取得することはできました
配線は簡単で PWM の他にシリアルもつかえるそうです
使ってみた感じだと若干キャリブレーションが必要なのと値を検知するまでにラグがある感じの印象を受けました
もしかしたら使い方が悪いだけかもしれないですが、、、
0 件のコメント:
コメントを投稿