หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ HVAC Controller Retrofit

Controller แบบ Arduino-based สำหรับ Electric furnace-air handler

โปรเจกต์ HVAC Controller Retrofit

รายการอุปกรณ์และเครื่องมือ

}

รายละเอียดและวิธีทำ

ผมเพิ่งซื้อบ้านเก่าหลังหนึ่งที่มีระบบท่อดักต์กลาง (central duct system), Electric Furnace และ Heat Pump ติดมาด้วย

จากที่ผมรวบรวมข้อมูลมา Electric Furnace ตัวนี้ถูกติดตั้งในช่วงต้นยุค 80 และได้เพิ่ม Heat Pump เข้ามาในปี 2000

ขั้นแรกผมได้เปลี่ยน Thermostat และติดตั้ง Ecobee 4 ซึ่งเป็นการอัปเกรดที่ดีมากเมื่อเทียบกับตัวเก่า :

แต่ผมยังคงไม่พอใจกับการเดินสายไฟของระบบทั้งหมดในตอนนั้น :

  • มีการทำความร้อนเพียงระดับเดียว (W1) ทั้งที่ผมมี Heat Strips ขนาด 5kW ติดตั้งอยู่ใน Furnace ถึง 4 ชุด (แต่ต่อใช้งานจริงแค่ 3 ชุด)
  • มอเตอร์ใน Air Handler เป็นแบบปรับความเร็วได้หลายระดับ (4 สปีด) แต่กลับต่อใช้งานแค่สปีดสูงสุดเพียงอย่างเดียว
  • ไม่มีแนวทางในการอัปเกรดที่ชัดเจนเลย ทุกอย่างถูกควบคุมด้วย Relay ตัวใหญ่ๆ แบบแยกส่วน (ไม่มี PCB) และพูดตามตรงคือการติดตั้งนั้นดูวุ่นวายมาก :

ผมจึงตัดสินใจออกแบบ Controller ที่ใช้พื้นฐานจาก Arduino เพื่อให้มีฟีเจอร์ต่างๆ ตามที่ผมต้องการ :

  • วัดอุณหภูมิอากาศใน Supply และ Return Plenums
  • ควบคุมความเร็วมอเตอร์ Air Handler ได้หลายระดับ โดยอิงจากความแตกต่างของอุณหภูมิที่วัดได้ระหว่าง Plenums ทั้งสอง
  • เพิ่ม W2 (การทำความร้อนระดับที่ 2)
  • เพิ่ม W3 (การทำความร้อนระดับที่ 3, สำหรับสำรองไว้)
  • ตรวจสอบกระแสไฟฟ้า (Heat Strips 4 ชุด + พัดลม Air Handler)
  • รายงานข้อมูลแบบ Real-time (เมื่อเชื่อมต่อกับคอมพิวเตอร์)
  • การจัดการ Fault Modes และการรวม Limp Mode กรณีที่ระบบบางส่วนทำงานผิดพลาด
  • แสดงสถานะของระบบด้วยสายตา (LED สองสี)

เนื่องจากจำนวน Input/Output ที่ผมต้องการคือ :

8 Digital Outputs / 4 Digital Inputs / 7 Analog Inputs

ผมจึงตัดสินใจใช้ Board รุ่น LEONARDO เป็นพื้นฐานในการออกแบบ (ผมชอบที่มันดูทันสมัยกว่ารุ่น UNO นิดหน่อย)

ระบบ HVAC ใช้สัญญาณแบบ 24VAC ผมไม่พบ Shield ตัวไหนในตลาดที่ใกล้เคียงกับความต้องการในการเชื่อมต่อกับระบบนี้เลย ผมจึงตัดสินใจออกแบบเอง โดยใช้ Software ง่ายๆ (Fritzing) และออกแบบทุกอย่างขึ้นมาใหม่ทั้งหมด :

- ผมยังคงใช้หม้อแปลง 24VAC ตัวเดิมที่จ่ายไฟไปยัง Thermostat ชั้นบน ซึ่งจะส่งสัญญาณ 24VAC กลับมายังสายคำสั่ง Y, O/B, G, W1, W2 เพื่อเชื่อมต่อกับ Controller ที่ผมออกแบบไว้

ผมเพิ่ม Thermistors แบบ 10k สองตัวที่ Supply และ Return Plenums

ผมสั่งซื้อ Current Transformers จาก Seeedstudio 5 ตัว (4x 30A สำหรับ Heat Strips ที่พิกัด 20A และ 1x 5A สำหรับพัดลม Air Handler)

  • LED สองสี (เขียว / แดง) ถูกควบคุมโดย Digital Line แบบ PWM เพียงช่องเดียว และสามารถมองเห็นได้จากด้านข้างของ Furnace เพื่อประเมินสถานะของระบบได้อย่างรวดเร็ว
  • Relay 8 ตัว (แบบ Mechanical 7 ตัว, Solid-state 1 ตัว) ถูกควบคุมโดย Transistors ที่ติดตั้งบน Board โดยตรง เพื่อควบคุมการไหลของกระแสไฟฟ้าแรงสูง

ผลลัพธ์สุดท้ายคือ Shield (PCB) ตัวนี้ครับ :

ซึ่งเมื่อประกอบเสร็จแล้วจะมีหน้าตาแบบนี้ :

Board Arduino จะอยู่ด้านล่าง (คุณสามารถเห็นโครงร่างได้ที่มุมซ้ายล่าง) Relay 4 ตัวสำหรับ Heat Strips (240V, 20A ต่อตัว) มี Quick-connect Connectors อยู่ด้านบน ส่งผลให้ไม่มีกระแสไฟฟ้าของส่วนนี้ไหลผ่านตัว Board

Relay แบบ NO/NC 3 ตัวสำหรับพัดลมจะจัดการเรื่องการเลือกสปีด (มีให้เลือก 4 สปีด) และมี Solid-state Relay (ไม่ได้อยู่ในรูป) ทำหน้าที่ตัด/ต่อแรงดันไฟในช่วงที่มีการเปลี่ยนสปีด เพื่อลดการสึกหรอของ Mechanical Relays (Inrush Current ของมอเตอร์)

ทุกอย่างถูกติดตั้งบนแผ่นอลูมิเนียมด้วย Stand-offs ส่วนประกอบหลักทั้งหมดของระบบมีการใส่ฟิวส์ไว้ทั้งสองฝั่ง :

Software ได้ผ่านการทดสอบและ Debug โดยใช้ Simulator "UnoArduSim" ซึ่งผมขอแนะนำอย่างยิ่ง !

ก่อนจะติดตั้งระบบ ผมได้ทดสอบการทำงานอย่างเต็มรูปแบบด้วย "Dummy Loads" และชุดทดสอบเพื่อจำลองสัญญาณควบคุม

ผมรอจนถึงวันที่อากาศอุ่นขึ้น เพราะฤดูหนาวมาเยือนทางตะวันออกของแคนาดาแล้ว การติดตั้งขั้นสุดท้ายต้องใช้งานได้ทันทีตั้งแต่ครั้งแรก !

ผมค่อยๆ ทำ ถอดของเก่าออก ติดตั้งของใหม่เข้าไป และเรียบร้อย !

คุณจะเห็น Heat Strips อยู่ด้านหลัง (ซึ่งมาพร้อมระบบป้องกันความร้อน) และคุณยังสามารถเห็น Current Transformer ได้ด้วยเช่นกัน

ผมหวังว่าการเดินสายไฟจะดูเรียบร้อยกว่านี้สักหน่อย แต่ด้วยจำนวนฟิวส์และความแข็งของสายไฟ (AWG 10) ผลเลยออกมาเป็นอย่างที่เห็น

สับเบรกเกอร์กลับไปที่ ON และทุกอย่างก็ทำงานได้สมบูรณ์แบบ !

ขณะนี้ผมอยู่ในขั้นตอนการปรับแต่ง Software Parameters เช่น ค่าอุณหภูมิที่กำหนดสำหรับความเร็วพัดลม โดยอิงจากข้อมูลจริงของระบบ

ผมตัดสินใจต่อสายควบคุม Heat Pump (สาย Y) เข้ากับ W3 (ซึ่งไม่สามารถควบคุมโดย Ecobee ได้อยู่แล้ว) เพื่อเลี่ยงการควบคุมพัดลมตามอุณหภูมิในกรณีที่ Heat Pump ทำงาน (เพื่อประสิทธิภาพที่ดีกว่า) การติดตั้งระบบจัดการ Fault Modes และ Limp Mode ยังไม่เสร็จสมบูรณ์ แต่โดยพื้นฐานแล้วสิ่งที่ผมต้องการตรวจจับคือพัดลมเสียหรือ Heat Strip เสีย (ผ่านการตรวจสอบกระแสไฟฟ้า)

หาก Heat Strip เสีย ผมต้องการให้เข้าสู่ Limp Mode และใช้ Heat Strips ตัวอื่นที่ยังทำงานได้อยู่แทน

หากพัดลม Blower เสีย ทุกอย่างต้องหยุดทำงาน

นี่คือสรุปฟีเจอร์หลักของ Software :

- สลับการทำงานของ Heat Strips เป็นรอบๆ เพื่อ "เฉลี่ยการสึกหรอ"

- ควบคุมความเร็วพัดลมตามอุณหภูมิพร้อมค่า Hysteresis โดยจะถูกยกเลิกเมื่อ Heat Pump ทำงาน (เพื่อประสิทธิภาพ)

- ประเมินค่าเฉลี่ย RMS Current โดยการวัด 4 ตัวอย่างต่อรอบสัญญาณ 60 Hz และมีการปรับจูน Timing ใน Main Loop อย่างต่อเนื่องเพื่อให้ระยะห่างของตัวอย่างแม่นยำ

- พารามิเตอร์ทั้งหมดจะถูกส่งออกทุกๆ 2 วินาทีทาง Serial Port หากตรวจพบการเชื่อมต่อ

- การดำเนินการทั้งหมดใช้ Timer เป็นเกณฑ์ มีการ Monitor ตลอดเวลา และสามารถทำงานหลายกระบวนการพร้อมกันได้

- การประเมินพารามิเตอร์ (การแปลงแรงดัน Thermistor เป็นอุณหภูมิ และการแปลงแรงดันจาก Current Transformer เป็นค่า RMS Current) ใช้ Look-up Table เพื่อลดการคำนวณแบบ Floating Points

- W1 สั่งงาน Heat Strips สองตัว (2x5 kW), W2 สั่งงาน Heat Strips อีกสองตัวที่เหลือ โดยมีการตั้งค่าหน่วงเวลา 5 วินาทีระหว่างการเปิดใช้งานแต่ละตัว

- จัดการเรื่อง millis() rollover หลังจากผ่านไป 50 วันอย่างเหมาะสม

นี่คือตัวอย่างข้อมูลจากการ Monitor :

สิ่งที่ผมประเมินได้จากข้อมูล :

ความจุของ Blower ที่ความเร็วสูงสุดคือ ~ 1250-1300 cfm

Heat Pump ของผมมีประสิทธิภาพค่อนข้างดี : COP = 2.8 @ -1.5 ºC

แต่กำลัง (Capacity) ต่ำไปหน่อย (5.5 kW @ -1.5ºC) ทั้งที่ควรจะอยู่ที่ประมาณ 8 kW (3 ตัน โดยลดทอนตามอุณหภูมิที่ต่ำลง) เป็นไปได้ว่าน้ำยาแอร์อาจจะเหลือน้อยไปนิด

----

ต้องการซื้อ PCB ไหม ?

https://www.ebay.com/itm/273978414391

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: hvac-controller-retrofit-9fd1c1
2450 บาท
PromptPay QR Code