二酸化炭素(CO2)のレベルは、室内空気質の重要な指標の1つです。 また、そのレベルは換気制御に使用するのに非常に便利です。
この記事では、人工呼吸器の改良と、マイクロコントローラーとCO2センサーを介したファンのリモート制御について説明します。
また、必要に応じて、少し改良した後、同じスキームを適用して、給排気システムを制御できます。
平均的なアパートは通常、自然換気のために設計されています。 これは、空気が窓の割れ目から入り、キッチン、トイレなどの領域のどこかにある排気口から出るときです。
原則として、プラスチック窓が設置されたアパートには隙間がなく、換気が機能するためには、窓または窓を開く必要があり、通常の作業範囲のフードで空気の状態を改善します。
しかし、この方法で街路騒音を追加します。
以下を設置することにより、部屋の音を立てずに新鮮な空気を得ることができます
- 供給システム
- メインウォールの穴を通して通りから空気を供給する換気装置
最初のオプションはすべての問題を解決しますが、高価であり、機器、換気ダクトのためのスペースが必要です。
2番目のオプションはよりシンプルですが、人工呼吸器のユニットのサイズは限られているため、ノイズはその動作モードに依存します。
このオプションは次のとおりです。
努力すべきことを知るための二酸化炭素レベルとその健康への影響の表を以下に示します。
したがって、部屋に最適な450〜1000 ppmのCO2レベルを検討します。
窓とドアを閉め、換気装置の最小で電源を入れ、部屋に2人の人がいるとき、朝までに1200〜1500 ppm程度になるという私の経験をお話しします。
作業アルゴリズム
換気性能を管理するために適用されるアルゴリズムは非常に簡単ですが、必要に応じて複雑にすることができます。
- 時間の経過とともにセンサーから受信した平均CO2レベルを取得します。
- 6つのしきい値があり、これに応じて、ファン速度が選択されます。この速度は、空気を介してファンを制御するマイクロコントローラーに送信されます。
- CO2レベルを下げる場合、一定のしきい値があり、その後は速度の低下が発生します。
- 夜間、騒音を減らすために最大ファン速度が制限されます。
- リモコンからのコマンドにより、全体的な換気性能、特に各ファンを増減できます。
一酸化炭素検出器MIC 98130を二酸化炭素センサーとして使用しました。
空気はAeropac 90Aから供給されます。
フードはSystemAir IF 150ダクトファンで補強されています。
制御には、Atmel AVR ATtiny44Aのマイクロコントローラーが使用されます。
データは、CO2モニターに接続されたコントローラーから、NRF24L01 +トランシーバー上のモジュールを使用してファンを制御するコントローラーに転送されます。
マグネットまたはボタンのいずれかの赤外線リモコンを使用して、動作モードと設定を設定できます。
精製CO2モニター
eBayで注文したCO2モニターは、判明したとおり、かなり高い精度のSenseAir K22赤外線ガス分析計を備えています。
そして最も重要なのは、CO2レベルの特別な出力を備えていることです(図では、4つの接点を持つ白いコネクタがあります)。
このコネクタで、左から右に:
- 電源+ 9V
- 一般的な
- 350〜2000 ppmのPWMでのCO2出力
内部には空きスペースがあまりないため、改良にはNRF24L01 +トランシーバーを備えたミニボードが使用され、SOP14パッケージのハーネス付きのマイクロコントローラーが密閉されました。 シールする前に、debugWIREプロトコルを使用したプログラミングとデバッグのためにDWENヒューズがオンにされました。
無線モジュールに関する注意事項が1つあります-送信範囲が十分に広くありません。
特に送信機と受信機の間に壁、ドアがある場合。 そのため、外部アンテナを備えたモジュールを選択するか、送信機と受信機の間の障害物をできるだけ少なくするようにしてください。
送信電力が増加したnRF24L01 +互換中国チップがあります-SI24R01。
通常、それを備えたモジュールは安価であるため、使用することをお勧めします。
確かに、このチップには正気なミニモジュールが見つかりませんでした。プロジェクトでは、ネイティブのnRF24L01 +チップのモジュールも使用しています。
送信電力の増加を有効にするために、SI24R01はRF_SETUPレジスタのビット0を使用します。
抵抗R1、R2には分圧器が組み込まれ、センサーから受け取る電圧を低減します。
CO2の値は、コントローラーの足でレベルが変化する間の時間を計算することによって取得されます。 時間は16ビットタイマーカウンターから取得されます。
計算を少なくするために、マイクロコントローラーは8.192 MHzの周波数で動作し、タイマー分周器は1024に設定されます。
したがって、タイマーカウンターTCNT1は0.125msごとにインクリメントされます。
CO2レベルを計算するには、タイマーカウンターを4で割り、4を引く必要があります。
センサーの出力でのPWM信号:
スキーム:
LDR1フォトレジスタは、暗闇のしきい値を決定するために使用され、ボタンはIRリモートコントロールコマンドの初期記憶に使用されます。 LEDは伝送エラーを通知し、チューニングにも使用されます。
制御と設定のために、従来のIRリモートコントロールを使用することにしました。そのコマンドは、最初にマイクロコントローラーに登録する必要があります。
プログラミングモードに入る-ボタンを3秒以上押し続けます。 次に、順番に、リモコンのボタンを押してIRレシーバーを照射します。
IRコマンド:
- アップ
- ダウン
- 選択
- 各ファンの速度調整を設定します。
通常モードでは、upおよびdownコマンドはすべてのファンの速度を1ステップずつ増減します。
コマンド「choice」-リセット。
コマンド4を使用して、各ファンの速度オフセットの設定モードに入ります。 最初にファン番号が選択され、次に選択後にオフセットが入力されます。 このモードのLEDは、現在の選択を点滅させます。
コマンドは、マイクロコントローラーによって次のように識別されます。
- タイマー0を使用して、前の信号エッジから時間を取得します(割り込みPCINT1)
- これが最初のインパルスである場合は、誤ったトリガーをすぐに排除するためにその持続時間を確認します
- 前の値と比較して期間が1.5倍変化した場合は、ビットマップに1を追加し、そうでない場合は0を追加します。
- ビットマップのハッシュ(2バイト)を計算し、それを使用してコマンドを識別します
シンプルなハッシュ関数を使用して、コントローラーの負荷を軽減します。
式:hash = hash * 17 + x
if(IRSignalTimer > IRSignalTimerLast) // bit = a / b > 1.5 bit = (uint8_t)(IRSignalTimer - IRSignalTimerLast) > IRSignalTimerLast / 2; else bit = (uint8_t)(IRSignalTimerLast - IRSignalTimer) > IRSignalTimer / 2; IRReadedByte = (IRReadedByte << 1) | bit; if(++IRArrayBit > 7) { IRArrayBit = 0; IRHash = ((IRHash << 4) + IRHash) + IRReadedByte; // * 17 IRReadedByte = 0; }
NRF24L01無線モジュールの使用に関する多くの記事が書かれているため、このトピックには触れません。
1Mbpsの速度で動作するように構成されていると言えますが、CRCが使用され、各送信はACKパケットで確認する必要があります。
ハードウェアUSIインターフェイスは、コントローラーとモジュール間の通信に使用されます。
IRQ出力は使用されず、パケット送信確認の検証はNRF24_Transmit関数でループします。
それは各ファンに送信されます-CO2レベル、ファン速度、夜の兆候。
現在のプロジェクトでは、これまでファンを制御するコントローラーは速度のみを使用しています。
人工呼吸器の改良
Aeropac 90A社のSIEGENIA-AUBI換気装置を設置しました。これはかなり古いモデルです。
それは1年以上働いており、実践が示しているように、このことは一般的に有用です。
彼は空気を壁の80 mmの穴に通し、カーボンフィルターを取り付けています。
通りからの音からの防音は非常に良いです。
内部に設置された遠心ファンEbmpapst R2E133-BH96-19。
ファン自体のすべての騒音により、非常に長い年月の運転の後、物事はスムーズに進みません。 低回転では低周波のハム音が発生し、高回転ではハウリングが発生します。
さらに、これは個別に明示されます。 1つのファンは低速でさらに鳴り、他のファンは高速で鳴ります。
速度制限によりこの問題を解決しました。
人工呼吸器では、エンジン速度を調整するための非常に興味深いスキームが実装されています。低速から中速までスムーズに実行され、最大速度がすぐに開始されます。
最小および中程度の速度で非常に静かに動作する場合、最大速度では部屋にいるのは快適ではありません。
新しいモデル-Aeropac SNでは、デジタルの段階的な調整にもかかわらず、速度制御の原理は同じままです-1から6速度まで、速度はどこかで中間に調整され、すぐに最大になります。
図では、人工呼吸器の電子ユニットは破線で囲まれています。
改良点は、可変抵抗器RV1の中央端子から抵抗器R6およびR7に至るトラックを切断することです。 フォトカプラU2とU3はギャップに接続され、ファンの速度を制御します。
フォトカプラへのPWM制御信号は、統合RC回路を介してマイクロコントローラから供給されます。
フォトカプラのLEDは特定の電圧からのみ電流を流し始めるため、プログラムにはPWM信号の最小値が設定されています。
可変抵抗器は残り、必要に応じて最大速度を制限できます。
中速での性能が十分でない場合は、コンデンサC9をより大きな容量のコンデンサに交換することで性能を向上させることができます。 ボードには2つのサイズのコンデンサ用の開口部があります-端子間の距離は27.5mmと22mmです。
人工呼吸器の内部には十分なスペースがあります-複数のボードが収まります。
唯一の問題は、無線モジュールで発生する可能性があります。 ケースは二重で、厚いプラスチックでできています。
ネイティブチップnRF24L01上の無線モジュールでは、隣の部屋との接続はありませんでした。
私はこのように出しました-内蔵アンテナにシングルコアの銅線をはんだ付けし、LEDの穴からそれを引き出し、可変抵抗器のねじれの下に端を置きました。 アンテナの調整で気にしませんでした。
接続が表示されました。
設定には、ボタンの代わりに、リードスイッチ(SW1)を使用して、外観を損なわず、遮音性を損なわないようにします。
ハードドライブからの磁石で十分です。
炊飯器フード
入ってくる空気は最終的にどこかに行くはずです。 自然のフードは、たとえそれが何らかの形で冬に対処したとしても、夏にはおそらく十分ではないでしょう。
私の場合、私はSystemAir IF 150ダクトファンと単相モーターを使用しました。 彼の外径は15 cmです。
速度の調整は段階的に行われ、コンデンサで行われます。 オプトトライアックシャントコンデンサにより、ファンモーターに供給される電圧が変化します。
2つのコンデンサを使用すると、4つの速度が得られます。
スキーム:
フードはキッチンに設置されているので、同時にリモコンから追加のファン制御を行うことにしました。
深刻なものがストーブで調理されている場合、単一のボタンを押すことで、フードを最大までオンにします。
無線で受信した速度は無視されます。
ファン制御プログラムは汎用であり、不揮発性メモリの設定に応じて、PWMを使用して、またはディスクリートモードでファンを制御できます。
IRレシーバーがコントローラーに接続されているかどうかもEEPROMで指定されます。
このプログラムには、受信したパケットを別のファンにさらに中継する機能が含まれています。
したがって、たとえば、CO2センサーと排気ファンの間の距離を長くすることができます。
Cソース(Atmel Studio 6.1用): github.com/vad7/WirelessCO2
ミラー: vad-7.blogspot.com/2013/12/blog-post.html