Tanuki_Bayashin’s diary

電子工作を趣味としています。最近はラズベリーパイPicoというマイコンを使って楽しんでいます

【ラズベリーパイPico】においセンサにてにおいを検知する

※なにか気になる点がありましたらコメント欄からお伝えください。また、回路を製作する場合には電源を切るなど、注意を払って行うようお願いいたします。
(2021/10/11)

目次

1.はじめに

 ラズベリーパイPico(以下Picoと表記)なるマイクロコントローラが世に出て7か月以上になる。Arduinoラズベリーパイなどを用いて臭いを検知する記事が見受けられるが、同じことをPicoを用いて行ってみた。

図1 ラズベリーパイPico

ラズベリーパイ財団
www.raspberrypi.org

秋月電子通商
※このHPの検索欄にて、においセンサ「TGS2450」あるいは通販コード「P-00989」と入力すれば、
においセンサTGS2450の情報を得ることができます。
(2023/10/03 変更:秋月電子通商の意向により)
akizukidenshi.com


2.回路構成

 図2に回路図を載せる。あわせて、図3 に実態配線図も載せる。(秋月電子のHPを参考にした) 
秋月電子の意向によりリンク先をなくしました。(2023/10/03)

臭気センサからの出力は電圧値によって検出されるので、Pico内臓のADコンバータにて電圧値を読み取りシェルに表示した。

図2 回路図
図3 実態配線図

 ただし注意する点として、臭気センサの動作電圧は5Vで、Picoの信号線は3.3Vで動作している。そこでPicoの40番ピンから5Vが出力されているので、これを臭気センサの電源とし、併せてPicoに内蔵されているAD変換のリファレンス電圧(Pico:35番ピン)も5Vとした。こうすることにより、臭気センサからの出力を正しく観測することができる。さらに、アナロググランド(33番ピン)も0Vに接続している。
 また、もう1つ注意する点として、Picoの1番ピンと2番ピンから臭気センサのヒーターとセンサへと電力を供給しているが、その電圧は秋月の推奨する回路図では5Vとなっている。このため、トランジスタと抵抗を用いて5Vの信号に変換している。
 更には、電源からのノイズを減らすため、コンデンサを並列に接続している。

3.コード

 次にコードのリストを載せる。臭気センサからの出力電圧をPico内臓のA/D変換器を通して、Pico用のIDEであるthonnyのシェルに表示させている。臭気センサからは電圧は0vから最大で電源電圧(5V)まで変化する。被測定物(インク、アルコールなど)を感知すると電圧値が下がるので、この変化を検出して臭気を感じ取ることができる。

import machine
import utime

# ヒーター:GP0 センサー:GP1 に割り当て
PinHeater = machine.Pin(0, machine.Pin.OUT)
PinSensor = machine.Pin(1, machine.Pin.OUT)

# A/D 変換 初期化
PinOutput = machine.ADC(26)
conversionFactor = 5.0 / (65535.0)

PinHeater.value(0)    # Heater OFF
PinSensor.value(1)    # Sencor Pullup OFF

# メインルーチン
while True:
    utime.sleep(0.237)
    PinSensor.value(0)    # センサーへ給電
    utime.sleep(0.003)    # 250ms 中 3ms ON

    # センサーの電圧値を取得
    voltage = PinOutput.read_u16() *  conversionFactor

    utime.sleep(0.002)    # 2ms ON (合計 5ms ON)
    PinSensor.value(1)    # センサー OFF

    PinHeater.value(1)    # 8ms ヒーター ON
    utime.sleep(0.008)
    PinHeater.value(0)    # ヒーター OFF

    print('voltage: ', voltage) # shell へ印字

コードの説明

  • 1,2行目 ライブラリのインポート
  • 5,6行目 GP0とGP1を、それぞれセンサのヒーター電源とセンサへの給電に使うよう、指定している。
  • 9,10行目 AD変換器のインスタンスを取得している(GP26を指定)。またAD変換の結果を電圧値に換算する比例係数を求めている。
  • 12,13行目 初期設定。ヒーターとセンサへの給電をオフにする。

 図2の回路図から、3.3Vを5Vに変換しているところでNOT回路になっている。
 ヒーターへの信号はPNPのトランジスタを通っていることから再度NOT回路が入っている。
 結論:ヒーターは正論理、センサは負論理 したがって、初期設定ではヒーターは0、センサは1としている。

  • 16行目以降  

 237msの間、センサもヒーターもOFF
 5msの間センサをオン(その間にセンサの出力の値を読み取る)
 続いて8msの間ヒーターをオン
 合計で250msごとに信号をON/OFFしている(4Hz)
 読み取った値をprint文にて出力

4.測定結果

 PCの表示画面を以下に載せる。マジックインキを近づけると、1秒ばかり遅れて電圧値が下がり始め、0.2Vくらいまで値が下がっているようすがうかがえる。

ラズベリーパイPico】臭気センサ(TGS2450)にてインクの臭いを検出した
youtu.be

5.まとめ

 臭気センサの出力をラズベリーパイPicoにて処理し、PCの画面から電圧値を読み取った。今後取り組みたいことを以下に示す。

  • 表示に関して一目で様子が分かるものを考案する
  • 口臭チェッカーを作る。

おまけ

 おそらく臭気センサを使っているであろう事例をSNSにて見つけたので、載せておく。
※リンク先の内容が変更されていたので、削除しました。(2023/10/03)