ระบบควบคุม 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