โปรเจกต์ HVAC Controller Retrofit
Controller แบบ Arduino-based สำหรับ Electric furnace-air handler
Controller แบบ Arduino-based สำหรับ Electric furnace-air handler
ผมเพิ่งซื้อบ้านเก่าหลังหนึ่งที่มีระบบท่อดักต์กลาง (central duct system), Electric Furnace และ Heat Pump ติดมาด้วย

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

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



ผมจึงตัดสินใจออกแบบ Controller ที่ใช้พื้นฐานจาก Arduino เพื่อให้มีฟีเจอร์ต่างๆ ตามที่ผมต้องการ :
เนื่องจากจำนวน 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)

ผลลัพธ์สุดท้ายคือ 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 ไหม ?
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้