ヒステリシス制御によるArduino温度管理システム: エアコン制御の基本実装
プロジェクト概要
ヒステリシス(閾値の非対称性)を用いた温度制御の基本を、Arduino 101とDHT22センサーで実装した教育・実験用プロジェクトです。設定温度に対する「オン/オフの温度幅」を持たせることで、制御対象(エアコン等)の頻繁なオン・オフ(チャタリング)を防止し、安定した制御を実現します。
必要な部品
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino 101 (または Uno 等) | 1 | メインMCU |
| DHT22 温湿度センサー | 1 | 高精度・デジタル出力 |
| DFRobot LCDボタンシールド (16x2) | 1 | 表示・操作用 |
| LED (赤・緑など) | 2 | 制御状態表示用(冷房ON/OFF) |
| 抵抗 10kΩ | 1 | DHT22プルアップ用 |
| 抵抗 330Ω | 2 | LED電流制限用 |
| ブレッドボード・ジャンパーワイヤー | 1式 | 配線用 |
ヒステリシス制御の仕組み
本システムでは以下のロジックで動作します:
- 冷房ON条件: 温度 ≥ 25℃ かつ 現在OFF状態 → 緑LED点灯(冷房運転指令)
- 冷房OFF条件: 温度 ≤ 23℃ かつ 現在ON状態 → 赤LED点灯(冷房停止指令)
- デッドバンド: 23〜25℃の間は状態を維持(チャタリング防止)
この2℃のヒステリシス幅により、設定温度付近でのリレー/コンプレッサーの頻繁な切り替わりを防ぎます。
ハードウェア接続
- DHT22: データピン → D12、VCC → 5V、GND → GND、データ-GND間に10kΩプルアップ
- 緑LED (冷房ON表示): D3 → 330Ω → LED → GND
- 赤LED (冷房OFF表示): D2 → 330Ω → LED → GND
- LCDシールド: Arduinoにスタック接続(ピン8,9,4,5,6,7使用)
ソフトウェアのポイント
millis()によるノンブロッキング2秒周期のセンサー読み取り- ブーリアンフラグ
a(冷房ON中)、b(冷房OFF中)で状態管理 - LCDに温度・湿度を常時表示(上段: 温度、下段: 湿度)
- 閾値判定ロジックは
loop()内のif-elseでシンプルに実装
実装コードの核心部分
if (t >= 25 && a == LOW) { // 25℃以上で冷房ON
digitalWrite(ledPin, HIGH); // 緑LED ON
digitalWrite(ledPin2, LOW); // 赤LED OFF
a = HIGH; b = LOW;
} else if (t <= 23 && b == LOW) { // 23℃以下で冷房OFF
digitalWrite(ledPin2, HIGH); // 赤LED ON
digitalWrite(ledPin, LOW); // 緑LED OFF
a = LOW; b = HIGH;
}
拡張・応用のヒント
- リレーモジュール接続で実エアコン/ヒーターを制御可能
- 閾値をLCDボタンやシリアル通信で動的変更可能に拡張
- PID制御への発展的学習の足がかりとして最適
- データロギング(SDカード/クラウド)追加で温度履歴管理
教育的価値
産業用温度調節器(サーモスタット)の基本原理を、安価なコンポーネントで体験学習できる教材として最適です。ヒステリシスの概念理解から、実際の制御系設計への入り口となります。
製造プロセス
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- Arduino電源制御センター:N-FET/P-FET/リレー/RTC搭載キット
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御