STEMMAで広がるArduinoの世界⑦Step1 空気品質センサSGP40

 VOC(揮発性有機化合物)センサSGP40(Sensirion)は、室内でエタノール、トルエンなどを検知し、換気すべき状態の指標を出力するセンサです。

 IC自体が1.8/3.3Vの低い電源で使うデバイスのため、5V->3.3VのレギュレータとI2Cの信号レベル変換回路が入っています。SDA/SCL信号のプルアップ抵抗は10kΩが入っています。

Adafruitのブレークアウト・ボード

 STEMMA QT(JST SH 4ピン)コネクタは2か所に装着されていて、どちらにつないでもかまいません。このコネクタを使ってI2Cで制御する場合、特に、ジャンパ線をつなぐなどは不要です。

   Adafruit SGP40 Air Quality Sensor

湿度センサSGP40のおもなスペック

 データシート

  • 電源電圧  1.7~3.6V
  • 測定範囲 0~1,000 ppmのエタノール当量
  • センサ出力  ディジタル16ビット無加工信号
  • 処理済み出力 ディジタルVOCインデックス信号
  • 応答時間  10秒未満(tau 63 %)
  • インターフェース I2C(0~400kHz)
  • スレーブ・アドレス 0x59(固定)

(※)エタノール当量という言葉が不明です。エタノールやトルエンなどの揮発成分の総量をエタノールの濃度で表すという意味合いかもしれません。

使用環境

  • Arduino UNO R3
  • Arduino IDE 1.8.13
  • Windows10 20H2

接続

 電源は5V を使いました。Arduino UNO R3のI2Cは、SCLとSDA端子がありますが、SCLはA5に、SDAはA4につながっています。どちら側につないでもかまいません。白色のリード線は見えないので、黄色で配線図を描きました。

スケッチ

 利用手順は、Adafruit SGP40 Air Quality Sensor Overviewに書かれています。

 ライブラリを導入します。メニューのツールから、「ライブラリを管理」を選び、検索欄にSGP40を入力します。見つけてきたAdafruit SGP40 Sensorのインストールをクリックします。

 同時にサンプル・スケッチも導入されます。

 メニューのファイルからサンプルの入っているスケッチ例を選択します。そこから、Adafruit SGP40 Sensor - sgp40testを選択します。

 実行中の様子です。

 もう一つのサンプル・スケッチsgp40_vocを読み込んで実行します。このスケッチは、湿度センサSHT31を併用して計測します。Grove用SHT35があったので、変換ケーブルを作ってつなぎました。SHT35はSHT31の確度の良い選別品のようです。インターフェースや読み書きのタイミングは同じです。スレーブ・アドレスが0x45だったので、スケッチを修正しました。

 センサSGP40の立ち上がり時間は約1分です。そのため、当初Voc Indexは0です。インデックス値は、

  • 0~100 きれい
  • 100~500 きれいではない

の範囲を取ります。

CRC

 SGP40データシートには、2バイトのデータの後にCRC8が送られてくるとあります。データシートには、C言語のCRC8サンプル処理プログラムが掲載されています。

 AdafruitのソースでもCRCを計算しています。なので、このライブラリを使って、CRCエラーがおこったら、そのデータは無視するような処理にすれば、ある程度ケーブルを延ばして使えそうです。

前へ

STEMMAで広がるArduinoの世界⑥Step1 湿度センサHTS221

次へ

STEMMAで広がるArduinoの世界⑧Step1 気圧、湿度、温度センサMS8607