※なにか気になる点がありましたらコメント欄からお伝えください。また、回路を製作する場合には電源を切るなど、注意を払って行うようお願いいたします。
(2021/10/11)
目次
1.はじめに
ラズベリーパイPico(以下Picoと表記)なるマイクロコントローラが世に出て7か月以上になる。Arduinoやラズベリーパイなどを用いて臭いを検知する記事が見受けられるが、同じことをPicoを用いて行ってみた。
秋月電子通商
※このHPの検索欄にて、においセンサ「TGS2450」あるいは通販コード「P-00989」と入力すれば、
においセンサTGS2450の情報を得ることができます。
(2023/10/03 変更:秋月電子通商の意向により)
akizukidenshi.com
2.回路構成
図2に回路図を載せる。あわせて、図3 に実態配線図も載せる。(秋月電子のHPを参考にした)
※秋月電子の意向によりリンク先をなくしました。(2023/10/03)
臭気センサからの出力は電圧値によって検出されるので、Pico内臓のADコンバータにて電圧値を読み取りシェルに表示した。
ただし注意する点として、臭気センサの動作電圧は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くらいまで値が下がっているようすがうかがえる。
5.まとめ
臭気センサの出力をラズベリーパイPicoにて処理し、PCの画面から電圧値を読み取った。今後取り組みたいことを以下に示す。
- 表示に関して一目で様子が分かるものを考案する
- 口臭チェッカーを作る。
おまけ
おそらく臭気センサを使っているであろう事例をSNSにて見つけたので、載せておく。
※リンク先の内容が変更されていたので、削除しました。(2023/10/03)