センサーをRaspberryPiに接続して、有害ガスが発生したときに警告します!
o Raspberry Piでおならを検出するには、鼓腸の1%を構成する1つまたは複数の揮発性硫酸化合物(つまり、おならの臭いを作る化合物)に反応するセンサーを使用する必要があります。基本的に、RaspberryPiに鼻を付ける必要があります。このプロジェクトに推奨されるセンサーは、FigaroTGS2600です。空気がセンサーに入ると、小さなヒーターによってエネルギーが供給され、電気抵抗を測定できます。これは、エネルギーを与えられた空気の小さなギャップに低レベルの電気を流すことによって行われます。空気が汚染されているほど、抵抗が少なくなり、電気を通しやすくなります(可変抵抗器のように)。したがって、センサーの出力は、空気の汚染度に応じて上下するアナログ電圧です。汚染物質が多いほど、電圧出力は高くなります。
アナログvsデジタル
また、空気質センサーがアナログ信号を提供し、アナログ信号とデジタル信号の違いを理解する必要があります。デジタル信号は基本的にバイナリです:1または0。オンまたはオフ。一方、アナログ信号は、オンまたはオフの間の全範囲を持っています。車のステアリングホイールについて考えてみてください。ドライバーが利用できるステアリングの全範囲があるため、ホイールはアナログです。長いスイープコーナーを非常に穏やかに操縦したり、ホイールをフルロックまで回したり、その間の任意の場所で操作したりできます。車をデジタルで操縦したい場合は、基本的に左にフルロックし、右にフルロックするだけです。
デジタルデバイスでアナログ信号を読み取る
私たちが直面している課題は、デジタルコンピュータでアナログ信号を読み取ることができることです。 Raspberry Pi GPIOピンは、入力または出力として使用できます。出力モードは、LEDやブザーなどに電圧を供給したい場合に使用します。入力モードを使用する場合、GPIOピンにはコードで読み取ることができる値があります。ピンに電圧が入っている場合、読み取り値は 1
になります。 ( HIGH );ピンが直接グランドに接続されている場合(電圧なし)、読み取り値は 0
になります。 (低 )。したがって、ピンはデジタルであり、 1
のみを許可します または 0
。
どうすればこれを解決できますか? 1つの方法は、ADCチップ(アナログ-デジタルコンバーター)を使用することです。これにより、センサーからのアナログ電圧がコード内のデジタル数値に変換されます。ただし、センサーからの読み取りが非常に正確な場合にのみ、ADCを使用する必要があります。必要でした。実際には、おならが検出されたときにアラームを鳴らしたいだけなので、誰もが走ることができます!ですから、考えてみれば、これは デジタル検出。 おならまたはそこにありません おなら:オンまたはオフ、バイナリ1または0。空気質センサーからのアナログ忠実度について心配する必要はありません。
センサーが可変抵抗器のようなものであることはすでにわかっています。空気の質が悪いほど、抵抗が低くなり、より多くの電圧が通過します。論理的には、センサーがオナラに接触すると、出力電圧が急上昇するはずです。したがって、これらの電圧スパイクを検出するだけで、 デジタルで行われます。スパイクが発生したときにGPIOピンがLOWからHIGHになるようにすることができます。その後、コードでこの変更を検出し、アラーム音ファイルを再生できます!
上限と下限のしきい値
Raspberry Piは、GPIOピンがHIGHかLOWかをどのように認識しますか?
この質問への答えは、実際には私たちのソリューションの一部です。 GPIOピンは3.3ボルトで動作します。したがって、出力モードでピンをHIGHに設定すると、そのピンは3.3ボルトを供給/供給します。ただし、出力をLOWに設定すると、グランドに接続されますが、回路を完成させるためのリターンパスを形成する可能性があります。
入力モードでは、動作が少し異なります。ピンが3.3ボルトに接続されている場合はピンの読み取り値がHIGHになり、アースに接続されている場合はピンの読み取り値がLOWになると想定する場合があります。実際には電圧がありますしきい値 それはおよそ1.1から1.4ボルトのどこかにあります。しきい値を下回るとLOWになり、しきい値を超えるとHIGHになります。したがって、たとえば、実際にはある程度の電圧があるにもかかわらず、1.0ボルトはLOWを読み取りますが、1.6ボルトは、3.3をはるかに下回るにもかかわらず、HIGHを読み取ります。
いくつかの抵抗器を使用して、空気質センサーの出力電圧をすぐ下に下げる場合 このしきい値、そしておならによって引き起こされたスパイクはそれをLOWからHIGHにひっくり返します、そして私達は私達のデジタルおなら検出を持っています。
空気質センサーを配線します
これは、空気質センサーの底面図です。ピン番号には次の機能があります。
- ヒーター(-)
- センサー電極(-)
- センサー電極(+)
- ヒーター(+)
したがって、対応する必要のある2つの異なる回路があります。 1つ目はヒーターです (ピン1と4)は空気を活性化するために使用され、もう1つはセンサーです。 それ自体(ピン2と3)。センサーの出力(-)側は、抵抗を接続する場所です。ブレッドボードを取り、センサーの4つのピンを押し込み、下に示すように中央のギャップにまたがるようにします。ピンを少し曲げる必要があるかもしれませんが、これはセンサーに害を及ぼすことはありません。小さなタブが図と同じ向きになっていることを確認してください。
上の図は、Raspberry PiモデルBを示しています。B+または新しいPi2を使用している場合、最初の26個のGPIOピンはすべて同じです。したがって、図に示されているのと同じピンを使用できます。 |
センサーは5ボルトで実行できますが、GPIO入力で使用する方が安全であるため、ここでは3.3ボルトで実行します。ジャンパー線を使用して、上記のオレンジ色の接続を行います。これにより、センサーのピン3と4(両方の正極)に3.3ボルトが供給されます。使用するワイヤーの色は関係ありません。次に、上記の黒い線で示すように、ヒーターのマイナス(-)端子を直接アースに接続します。
ブレッドボードの右上隅にあるセンサーのマイナス側、1行目で何かを行う必要があります。
トリガーピンを配線します
Raspberry Piがまだオフになっていない場合は、次のように入力してシャットダウンします。
sudo停止
今のところ電源を抜いてください。後でもう一度接続します。
次に、センサーの出力をGPIOピンの1つに接続しましょう。これは、おならが発生したかどうかを確認するためにコードで監視するトリガーピンになります。これにはGPIO4を使用します。ジャンパー線を取り、以下に示す白い接続を行います。
次に、47kΩの抵抗(抵抗は識別しやすいように色分けされています)を取り、上記のようにセンサー出力とアースの間に接続します。これにより、センサー出力からの電圧の一部が吸い上げられ、トリガーピンのGPIOしきい値の1.1〜1.4ボルトの領域に下げるのに役立ちます。ただし、この単一の抵抗では作業を完了するのに十分ではないので、読み進めてください。
抵抗ラダーDACを構築する
現在の問題は、47kΩの抵抗を追加したにもかかわらず、空気品質センサーの出力電圧範囲が非常に広いことです。 0ボルトは私たちが真空で見つけるものですが、最大3.3は、ひどい、目を見張るような、静かで致命的なオナラから見るものです。空気のバックグラウンド品質に応じて、センサーの出力電圧はその範囲内のどこにでもなります。そのため、さまざまな空気の質の条件下で、常にその電圧をGPIOしきい値のすぐ下まで下げる信頼できる方法が必要です。
これを行うには、別のが必要です。 可変抵抗器。これにより、アースに吸い上げる電圧の量を変えることができます。これにはポテンショメータを使用できますが、使用する前に常に手動でバックグラウンドエアに調整する必要があります。罠を仕掛けて無防備な犠牲者を待ちたい場合、これは理想的ではありません。その間、背景の空気の質は自然に変化し、おならなしでアラームを鳴らすことができます。ぎこちない。
コード内からこれを制御する方がはるかに良いでしょう。次に、バックグラウンドの空気の質に合わせて調整し続けるようにプログラムできます。空気の質が変化した場合でも、トラップを手動で介入する必要はありません。
ここで使用できる巧妙なトリックは、抵抗ラダー型です。これは、コードで個別にオンとオフを切り替えることができる一連の繰り返し抵抗がある場所です。各抵抗器のオーム値が異なる場合は、それらのさまざまな組み合わせを使用して、可変抵抗器/ポテンショメータの動作に近いものを得ることができます。
理論
この次のセクションは少し退屈に思えるかもしれませんが、取り上げられているトピックはプロジェクトの理解に非常に役立つので、スキップしないことをお勧めします!
下の図は概略的に は、抵抗ラダーがTGS2600空気品質センサーにどのように接続されるかを示しています。センサーの出力電圧はピン番号 2
から出ています 、これはGPIO 4に接続されています。ただし、その間に、必要に応じて電圧をGPIOピンのしきい値まで下げるために電圧を吸い上げることができる場所がいくつかあります。
これまでのところ、47kΩの R0
のみ アースに直接配線されているブレッドボードにあります。その他の抵抗器( R1
R4
へ )はそれぞれ並列で接続されています 別のGPIOピンに。これにより、各抵抗器がオンかオフかをデジタル制御できます。 INPUT
を使用するようにGPIOピンを構成する場合 モードこれは、GPIOピンが内部で何にも接続されていないため、抵抗をオフに切り替えます。ただし、 OUTPUT
を使用するように設定した場合 モードにしてからピンをLOWに駆動すると、抵抗がグランドに接続され、電圧が吸い上げられます。
並列抵抗についての注意。はしごの総抵抗はではありません オンになっているすべての抵抗の合計。ただし、抵抗を直列に配線した場合はそうなります。これは、電圧が各抵抗器を順番に流れる必要があるためです。並行して、電圧の流れは各抵抗器間で均等に分割され、その効果は総抵抗が少ないということです。 。したがって、オンにする抵抗が多いほど、総抵抗は低くなり、より多くの電圧がアースに吸い上げられます。
ラダーは抵抗をオン/オフすることでデジタル制御されますが、センサーからのアナログ電圧に影響を与えるため、この回路はデジタル-アナログコンバーターまたは略してDACと呼ぶことができます。これは、前述のADCの反対です。
理想的には、抵抗を直線的に変化させ、空気品質センサーの出力電圧の範囲に対応できるオン/オフの組み合わせを多数用意する必要があります。すべての抵抗器のオーム値が同じであるとしたらどうなるか考えてみてください。可能な一意の数 抵抗値の組み合わせがある可能性がありますか?
詳細:センサーをRaspberry Piに接続して、有害ガスが発生したときに警告します!
製造プロセス