ระบบควบคุม Air to Water Heatpump
Arduino + Generic Inverter + Temperature Control
🎯 สิ่งที่คุณจะได้เรียนรู้
- การสร้างระบบควบคุมฮีตปั๊มป์อัตโนมัติ
- การเขียนโปรแกรม Arduino สำหรับควบคุม VFD
- การต่อวงจรและระบบความปลอดภัย
- การปรับแต่งเพื่อประหยัดพลังงาน 30-40%
ภาพรวมของโปรเจค
ระบบ Air to Water Heatpump Control นี้เป็นโปรเจคที่ผสมผสานเทคโนโลยี Arduino กับ Variable Frequency Drive (VFD) เพื่อสร้างระบบควบคุมฮีตปั๊มป์ที่มีประสิทธิภาพสูง สามารถประหยัดพลังงานได้อย่างมีนัยสำคัญ
จุดเด่นของระบบนี้คือการใช้ Variable Speed Control ที่ช่วยให้คอมเพรสเซอร์ทำงานด้วยความเร็วที่เหมาะสมกับความต้องการ แทนการเปิด-ปิดแบบเดิม ซึ่งช่วยลดการสึกหรอและประหยัดไฟฟ้าได้มาก
System Architecture Diagram
Temperature Sensors → Arduino → VFD → Motor → Heat Exchange
อุปกรณ์ที่ต้องใช้
🤖 Arduino และ Electronics
- Arduino Mega 2560 - 890฿ (ควบคุมหลักของระบบ)
- DS18B20 Temperature Sensors (4 ตัว) - 120฿/ตัว (วัดอุณหภูมิน้ำเข้า-ออก, อากาศ)
- Relay Module 8 Channel - 350฿ (ควบคุมอุปกรณ์ไฟฟ้า)
- LCD Display 20x4 I2C - 280฿ (แสดงสถานะระบบ)
- Rotary Encoder - 150฿ (ปรับค่าต่างๆ)
⚡ Inverter และ Motor
- VFD Inverter 3-Phase - 4,500-8,000฿ (ควบคุมความเร็วคอมเพรสเซอร์)
- 3-Phase AC Motor - 3,000-6,000฿ (คอมเพรสเซอร์ฮีตปั๊มป์)
- Contactor และ Overload Relay - 800฿ (ป้องกันมอเตอร์)
- Current Transformer (CT) - 450฿ (วัดกระแสไฟฟ้า)
🌡️ Heatpump Components
Heat Exchanger และระบบหมุนเวียนน้ำ
Water Tank และระบบท่อ
- Evaporator Coil - 2,500-4,000฿ (ดูดความร้อนจากอากาศ)
- Condenser/Heat Exchanger - 3,000-5,000฿ (ถ่ายความร้อนให้น้ำ)
- Expansion Valve - 800-1,200฿ (ควบคุมการไหลของสารทำความเย็น)
- Refrigerant R410A - 1,500฿ (สารทำความเย็น)
⚠️ คำเตือนด้านความปลอดภัย
การติดตั้งระบบฮีตปั๊มป์ต้องมีความรู้ด้านไฟฟ้าและระบบทำความเย็น ควรปรึกษาช่างผู้เชี่ยวชาญก่อนติดตั้งจริง การต่อวงจรไฟฟ้าแรงสูงต้องให้ช่างไฟฟ้าที่มีใบอนุญาตเป็นผู้ดำเนินการ
การเขียนโปรแกรม Arduino
โปรแกรมหลักของระบบประกอบด้วยส่วนสำคัญ 4 ส่วน คือ การอ่านอุณหภูมิ, การควบคุม PID, การสื่อสารกับ VFD, และระบบป้องกัน
โครงสร้างโปรแกรมหลัก
Arduino IDE และโครงสร้างโค้ด
LCD Display และการแสดงสถานะ
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <ModbusMaster.h>
// Pin Definitions
#define ONE_WIRE_BUS 2
#define RELAY_COMPRESSOR 3
#define RELAY_WATER_PUMP 4
#define RELAY_FAN 5
#define ANALOG_CURRENT A0
// Temperature Sensors
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor1, tempSensor2, tempSensor3, tempSensor4;
// LCD Display
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Modbus for VFD Communication
ModbusMaster node;
// System Variables
float waterTempIn = 0;
float waterTempOut = 0;
float airTemp = 0;
float condenserTemp = 0;
float targetTemp = 45.0;
float currentFreq = 30.0;
bool systemRunning = false;
void setup() {
Serial.begin(9600);
// Initialize Temperature Sensors
sensors.begin();
sensors.getAddress(tempSensor1, 0);
sensors.getAddress(tempSensor2, 1);
sensors.getAddress(tempSensor3, 2);
sensors.getAddress(tempSensor4, 3);
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Heatpump Controller");
// Initialize Relays
pinMode(RELAY_COMPRESSOR, OUTPUT);
pinMode(RELAY_WATER_PUMP, OUTPUT);
pinMode(RELAY_FAN, OUTPUT);
// Initialize Modbus
node.begin(1, Serial1);
}
void loop() {
readTemperatures();
updateDisplay();
controlSystem();
delay(1000);
}
ระบบควบคุม PID
ระบบใช้การควบคุม PID (Proportional-Integral-Derivative) เพื่อปรับความเร็วของคอมเพรสเซอร์ให้เหมาะสมกับความต้องการ
void controlSystem() {
// Safety checks
if (condenserTemp > 80 || waterTempOut < 5) {
emergencyStop();
return;
}
// PID Control Logic
float tempError = targetTemp - waterTempOut;
static float lastError = 0;
static float integral = 0;
float kp = 2.0; // Proportional gain
float ki = 0.1; // Integral gain
float kd = 0.5; // Derivative gain
integral += tempError;
float derivative = tempError - lastError;
float output = kp * tempError + ki * integral + kd * derivative;
// Convert to frequency (30-60 Hz)
currentFreq = constrain(30 + output, 30, 60);
// Start/Stop Logic
if (tempError > 2.0 && !systemRunning) {
startSystem();
} else if (tempError < -1.0 && systemRunning) {
stopSystem();
}
// Update VFD frequency
if (systemRunning) {
setVFDFrequency(currentFreq);
}
lastError = tempError;
}
การสื่อสารกับ VFD Inverter
การควบคุม VFD ผ่าน Modbus RTU ช่วยให้สามารถปรับความเร็วมอเตอร์ได้แม่นยำและตรวจสอบสถานะการทำงานแบบ Real-time
การตรวจสอบอุณหภูมิด้วย Thermal Camera
Temperature Sensors และระบบตรวจสอบ
void setVFDFrequency(float frequency) {
// Convert frequency to register value
uint16_t freqValue = (uint16_t)(frequency * 100);
// Write to VFD frequency register
uint8_t result = node.writeSingleRegister(0x2001, freqValue);
if (result == node.ku8MBSuccess) {
Serial.print("VFD Frequency set to: ");
Serial.print(frequency);
Serial.println(" Hz");
} else {
Serial.println("VFD Communication Error!");
}
}
void readVFDStatus() {
// Read VFD status registers
uint8_t result = node.readHoldingRegisters(0x3001, 6);
if (result == node.ku8MBSuccess) {
uint16_t outputFreq = node.getResponseBuffer(0);
uint16_t outputCurrent = node.getResponseBuffer(1);
uint16_t outputVoltage = node.getResponseBuffer(2);
Serial.print("Output Freq: ");
Serial.print(outputFreq / 100.0);
Serial.println(" Hz");
}
}
การต่อวงจรและ Wiring
Electrical Panel และ Wiring Diagram
Control Circuit (24V DC)
- Arduino Mega 2560: VCC → 5V Power Supply, GND → Common Ground
- Temperature Sensors: Red → 5V, Black → GND, Yellow → Pin 2 (with 4.7kΩ pullup)
- Relay Module: VCC → 5V, IN1-IN8 → Arduino Pins 3-10
- LCD Display: VCC → 5V, GND → GND, SDA → Pin 20, SCL → Pin 21
Power Circuit (380V AC)
- VFD Inverter: R, S, T → 3-Phase Input, U, V, W → Motor Output
- Motor Protection: Contactor → Main Power Switch, Overload Relay → Motor Protection
- Safety Systems: Emergency Stop, Phase Monitor, Earth Leakage Protection
การปรับแต่งระบบ
PID Tuning
- Proportional (Kp): เริ่มต้นที่ 2.0 ปรับตามการตอบสนอง
- Integral (Ki): เริ่มต้นที่ 0.1 เพิ่มถ้ามี Steady State Error
- Derivative (Kd): เริ่มต้นที่ 0.5 ลดถ้าระบบสั่นไหว
VFD Parameters
- Minimum Frequency: 30 Hz (ป้องกันมอเตอร์ทำงานช้าเกินไป)
- Maximum Frequency: 60 Hz (ตามสเปคมอเตอร์)
- Acceleration Time: 10-15 วินาที (ลดกระแสเริ่มต้น)
- Deceleration Time: 15-20 วินาที (ป้องกัน Water Hammer)
✅ ผลลัพธ์ที่คาดหวัง
- ควบคุมอุณหภูมิได้แม่นยำ ±1°C
- ประหยัดไฟฟ้า 30-40% เมื่อเทียบกับระบบเดิม
- ลดการสึกหรอของอุปกรณ์
- COP (Coefficient of Performance): 3.2-4.5
- เวลาตอบสนอง: < 5 นาที
การ Monitoring และ Troubleshooting
การตรวจสอบระบบอย่างสม่ำเสมอเป็นสิ่งสำคัญเพื่อให้ระบบทำงานได้อย่างมีประสิทธิภาพ
- ตรวจสอบอุณหภูมิ: ไม่ควรเกิน 80°C ที่คอนเดนเซอร์
- ตรวจสอบกระแส: ไม่ควรเกิน 80% ของ Rated Current
- ตรวจสอบความดัน: ระบบน้ำต้องมีความดันเพียงพอ
- ตรวจสอบการรั่ว: สารทำความเย็นและน้ำ
- บันทึกข้อมูล: เก็บ Log เพื่อวิเคราะห์ประสิทธิภาพ
Performance Graph และการวิเคราะห์ข้อมูล
System Parameters และการตั้งค่า
Voltage Monitoring และการวิเคราะห์พลังงาน
สรุป
ระบบควบคุมฮีตปั๊มป์น้ำด้วย Arduino และ Generic Inverter นี้เป็นโซลูชันที่มีประสิทธิภาพสำหรับการประหยัดพลังงานและเพิ่มความแม่นยำในการควบคุมอุณหภูมิ
การใช้ Variable Speed Control ร่วมกับระบบควบคุม PID ช่วยให้ระบบสามารถปรับตัวตามสภาพแวดล้อมได้อย่างอัตโนมัติ ส่งผลให้ประหยัดพลังงานได้อย่างมีนัยสำคัญ
การติดตั้งจริง - ระบบ Heatpump ที่สมบูรณ์
ผลลัพธ์สุดท้าย - ประสิทธิภาพของระบบ
🛒 สั่งซื้ออุปกรณ์
อุปกรณ์ทั้งหมดในบทความนี้สามารถสั่งซื้อได้ที่ Global Byte Shop