obniz Parts Library

MH_Z19B

GitHub
MH_Z19B
Usable Devices :
obniz_board
m5stickc

MH_Z19B

UARTで値を取得するCO2濃度センサーです。

このセンサーは加熱を必要とします。加熱後約3分間は値が安定しません。

また、工場出荷時に自動キャリブレーション機能が自動でONになっています。この機能は、24時間毎の最低値を400ppmとして設定するものなので、屋内使用の場合はsetDetectionRange()関数より自動キャリブレーション機能をOFFにすることを推奨します。

詳しくはデータシートをご覧ください。

wired(obniz, { sensor_tx, sensor_rx [,vcc, gnd]});

name type required default description
sensor_tx number(obniz Board io) yes   センサー側のtx端子
sensor_rx number(obniz Board io) yes   センサー側のrx端子
vcc number(obniz Board io) no   VCC端子(V+端子)
gnd number(obniz Board io) no   GND端子
// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
obniz.repeat(async()=>{
  console.log(await sensor.getWait());
}, 10000);

[await] heatWait(sec: number)

加熱を開始し、時間が経過するまで待ちます。引数を指定することで待ち時間をデフォルトの3分から変更できます(3分以上推奨です)。
他の関数を実行する前に、必ずこの関数を実行してください。

name type required default description
sec number no 180 待機する時間(秒)
// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
console.log(await sensor.getWait());

[await] getWait()

UARTでセンサーの値を取得します。センサーからの返答がなかった場合は undefind が返されます。

// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
obniz.repeat(async()=>{
  console.log(await sensor.getWait());
}, 10000);

calibrateZero()

ゼロキャリブレーションを実施します。屋外(400ppm)での精度を高めるためのものです。
屋外(400ppm環境下)で最低20分以上起動させた後に、この関数を実行してください。

// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
setTimeout(sensor.calibrateZero(), 1200000);

calibrateSpan(ppm: number)

name type required default description
ppm number no 2000 CO2濃度(ppm)

スパンキャリブレーションを実施します。1000〜2000ppm環境下での精度を高めるためのものです。
2000ppm程度(1000ppm以上推奨)の環境下で最低20分以上起動させた後に、この関数を実行してください。引数を指定することで実施する際のCO2濃度を変更できますが、引数が1000ppm未満の場合は実行されません。
また、スパンキャリブレーションの前にゼロキャリブレーションを実行してください。

// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
setTimeout(sensor.calibrateZero(), 1200000);
setTimeout(sensor.calibrateSpan(), 1200000);

setAutoCalibration(autoCalibration: boolean)

name type required default description
autoCalibration boolean no true 自動キャリブレーションの有無

自動キャリブレーションのON/OFFを設定する関数です。工場出荷時にはデフォルトでONになっており、24時間毎の最低値が400ppmとしてキャリブレーションされます。
屋内で使用する場合は、この関数より自動キャリブレーションをOFFにすることを推奨します。

// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
sensor.setAutoCalibration(false);
console.log(await sensor.getWait());

setDetectionRange(range: number)

name type required default description
range number yes   測定範囲上限[2000,5000,10000]のいずれか

測定範囲の上限を変更します。引数に2000, 5000, 10000ppmのいずれかを設定することで変更できます。
これ以外の値を引数に取った場合は自動的に上限が5000ppmになります。

// Javascript Example
var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3});
await sensor.heatWait();
sensor.setDetectionRange(5000);
console.log(await sensor.getWait());

Supported from: obniz.js 3.14.0