オプトカプラとRaspberry Piで24Vサーモスタットのイベントをログ記録・グラフ化
多くのホームオートメーションプロジェクトではサーモスタットを一から作りますが、すでにプログラマブルサーモスタットを持っていて、それがオン/オフするタイミングを記録するだけでよい場合はどうでしょう。本ガイドでは、オプトカプラを用いて24V ACのHVACシステムをRaspberry Piから安全に絶縁し、ロジックレベル信号を取得、イベントをログ記録し、温度データをリアルタイムでプロットする方法を説明します。
⚠️ 主電圧レベルの電圧を扱うことは危険を伴います。電気安全に関する知識と必要なスキルがある場合のみ実行してください。著者は機器、ペット、財産への損害について一切責任を負いません。
ステップ1: パーツとツールの準備
必須コンポーネント:
- HCPL3700オプトカプラ(整流器内蔵)
- 3.3kΩ抵抗 ×2、1/2W以上
- 10µF、10V以上の電解コンデンサ
- 0.1µFセラミックコンデンサ
- 8kΩプルアップ抵抗(または3.3kΩ + 4.7kΩを直列接続)
- Raspberry Pi(3.3V GPIO搭載モデルならどれでも可)
- 2芯絶縁ワイヤ、クイックディスコネクトコネクタ付きが望ましい
- 基本的な電子工作用品:ブレッドボード、ジャンパーワイヤなど
オプションの温度センサー追加:
- ADT7410デジタル温度センサー
- SOICブレークアウトボード
- 追加の0.1µFコンデンサ
- 10kΩ抵抗 ×4
オプションのPCB設計ツール:
- 2端子ねじブロック
- SOICボード用メスヘッダピン
- Pi/Arduino接続用オス/メスヘッダピン
- 基板サイズ縮小用のSMD版抵抗
ツール:
- マルチメータ(AC電圧モード)
必要条件:
- 24 VAC HVACシステム
- Pythonおよび関連ライブラリ(例:
hipi-i2c) - オプション:オンライングラフ用Plotlyアカウント
- オプション:PCB設計用Eagle(無料版)
ステップ2: サーモスタットのリレー配線を特定
一般的な住宅用HVACシステムは24 VACで動作します。プログラマブルサーモスタットは通常、「パワースティーリング」回路で自己給電し、リレーを切り替えて暖房機やエアハンドラを駆動します。リレー状態を監視するには、HVACユニットに24 VACを供給する一対のワイヤを特定します。
マルチメータをAC電圧モードに設定し、HVACがオンとオフの両状態で各ワイヤペアをテスト。正しいペアは、システム稼働時に約24 VAC(実際には28–30 VAC程度)、アイドル時に0 VACを示します。
ステップ3: 監視用リードを追加
HVAC電源を切り、マルチメータで無電圧を確認。サーモスタットをマウントベースから慎重に取り外し、配線を露出させます。選んだリレー導体ペアに2本の追加ワイヤを接続。Pi側にはメンテナンス容易性のためクイックディスコネクトコネクタを使用。
ステップ4: 絶縁回路の構築
24 VACを直接Raspberry Piに接続することは不可能です。HCPL3700のようなオプトカプラを用いることで、入力電圧を自動的に整流しながら電気的絶縁を実現します。
回路図のポイント:
- AC入力ピンに2つの3.3kΩ抵抗(1/2W以上)を配置し、トリガー閾値を設定。詳細計算はHCPL3700データシート参照。
- 整流器のDC出力に10µF、10V以上の電解コンデンサを並列接続し、信号を平滑化してライン周波数でのGPIOフリッカを防止。
- オプトカプラ電源ピン間に0.1µFセラミックコンデンサで高周波ノイズを低減。
- HCPL3700はオープンコレクタ出力のためプルアップ抵抗が必要。8kΩ(または3.3kΩ + 4.7kΩ直列)でPiの3.3Vロジックに確実にハイレベルを供給。
オプトカプラ出力をPiのGPIOピン(例:GPIO23)に接続。Piの3.3Vレールでオプトカプラ電源ピンを駆動。Piとオプトカプラのグランドを共通化。
配線完了後、HVACリレーが励磁されるとPiはロジックローを、非励磁時はロジックハイを検出できます。
完全な回路図と部品計算については、HCPL3700アプリケーションノートを参照してください。
ステップ5: ソフトウェアインストールとデータログ
PythonでGPIOピンを読み取り、状態変化にタイムスタンプを付けてCSVファイルやデータベースに記録します。シンプルなスクリプト例:
import RPi.GPIO as GPIO
import time
import csv
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
with open('thermostat_log.csv', 'a') as f:
writer = csv.writer(f)
while True:
state = GPIO.input(23)
timestamp = time.time()
writer.writerow([timestamp, state])
time.sleep(0.5)
リアルタイムグラフ化には、CSVをPlotlyにアップロードするか、Matplotlibなどの軽量ライブラリでローカルチャートを生成します。
ステップ6: 温度センサーで拡張(オプション)
ADT7410をI²Cで統合し、リレーステータスとともに周囲温度をログ記録。センサーをPiのSDA/SCLピンに接続、アドレス設定(デフォルト0x48)、16ビット温度レジスタを読み取り。同じログファイルの別カラムに格納。
温度データが揃えば、Plotlyで二重軸チャートを作成:主軸にHVAC、副軸に温度をプロットし、サーモスタット動作と環境変化の相関を可視化できます。
これらの手順に従えば、既存サーモスタットを改造せずに、その動作を安全に監視・ログ記録できます。
製造プロセス
- シームレスMQTT統合:NodeMCU DHT22センサーとRaspberry Pi 3 B+ブローカー
- Python、SQLite、LabVIEWによるRaspberry Pi高精度温度プロファイリング
- オプトカプラとRaspberry Piで24Vサーモスタットのイベントをログ記録・グラフ化
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- EzTempでRaspberry Pi上の温度・湿度をシームレスに監視
- Raspberry Pi 3とPubNubでリモート気象監視
- TI SensorTagをNode-RED経由でBlynkと統合 – Raspberry Pi Zero編
- Raspberry Piフォトセルログ&アラートシステム - Pythonで低消費電力光センサーを構築
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry PiでGPIO経由のボタン押下を読み取り - ステップバイステップガイド