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

โปรเจกต์ The Blowhard - อุปกรณ์เสริม Blower สำหรับการ Circulation ในระบบ HVAC

ระบบ axial fan blowers ที่ทำงานแบบ Rate-of-Rise triggered เพื่อช่วยเพิ่มประสิทธิภาพการ Circulation ของอากาศอุ่นในห้องที่มี HVAC inlet vent เพียงจุดเดียว

โปรเจกต์ The Blowhard - อุปกรณ์เสริม Blower สำหรับการ Circulation ในระบบ HVAC
5,502 การดู

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

1x Arduino Uno Rev 3
-
1x Arduino Sensor Kit - Bundle
-
1x Arduino Motor Shield Rev3
-

แอปพลิเคชันและแพลตฟอร์ม

1x Arduino IDE 2.0 (beta)
เว็บ Official

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

ต้องการเป่าลมร้อนให้ทั่วถึงไหม? อย่าเสียเวลาหาเครื่องเป่าลมร้อนในบรัสเซลส์หรือวอชิงตัน เรามีทางออกให้คุณ! นี่คือ The Blowhard

ภูมิหลังของโปรเจกต์ The Blowhard:

เราอาศัยอยู่ในแคนาดาฝั่งตะวันออก ซึ่งฤดูหนาวมีอากาศหนาวจัด ในบางปีอุณหภูมิภายนอกอาจลดลงถึง -30 C ติดต่อกันหลายสัปดาห์ บ้านของเราทำความร้อนด้วยเตาเผาแบบใช้ก๊าซธรรมชาติ และกระจายลมผ่านระบบท่อส่งลมร้อน (forced air blower system) ในห้องทำงานที่ชั้นใต้ดิน มีช่องลมร้อนเพียงช่องเดียวซึ่งอยู่ที่เพดาน ในช่วงกลางฤดูหนาว ห้องนี้อาจจะหนาวมาก เพราะเมื่อลมร้อนเข้ามาจากช่องลมบนเพดาน มันมักจะลอยตัวอยู่เฉพาะจุด เราจึงตัดสินใจสร้างระบบพัดลมขนาดเล็กที่จะเป่าลมในแนวตั้งฉากกับทิศทางลมร้อนที่เข้ามา เพื่อให้ลมร้อนกระจายได้ดีขึ้นทั่วทั้งห้องและกำจัดจุดที่หนาวเย็น แม้ว่าระบบนี้จะออกแบบมาเพื่อใช้ในฤดูหนาวเพื่อกระจายลมร้อน แต่ก็สามารถใช้ในฤดูร้อนเมื่อมีลมเย็นเข้ามาทางช่องลมเพดานเดียวกันได้เช่นกัน โปรดทราบว่าระบบนี้ไม่ได้ทำหน้าที่เพิ่มความร้อนให้กับห้อง แต่ช่วยกระจายลมร้อนที่มาจากเตาเผาและระบบท่อส่งลมของบ้านให้ดีขึ้นเท่านั้น

การออกแบบและการทำงานของ The Blowhard:

ระบบพัดลมนี้ติดตั้งบนฐานไม้และวางไว้ใกล้กับเพดานห้อง บริเวณใกล้กับช่องลมร้อน มีแขน (Boom) สีน้ำเงินยื่นออกมาจากด้านหน้าของฐานเพื่อยึด Sensor วัดอุณหภูมิ (และ RH) ไว้ที่ตำแหน่งใต้ช่องลมโดยตรง Sensor RH จะตรวจสอบอุณหภูมิในพื้นที่ (ใกล้กับ Sensor) ทุกๆ 10 วินาที และส่งผลไปยังหน้าจอ OLED ซึ่งจะแสดงผลเป็นเวลา 1 วินาที ทุกๆ 60 วินาที จะมีการตรวจสอบค่าความชื้นสัมพัทธ์ (relative humidity) โดย Sensor ตัวเดียวกัน และตรวจสอบความดันบรรยากาศ (barometric pressure) ผ่าน Sensor อีกตัว (โดยใช้ฟังก์ชัน WeatherStation() ใน Code) และทั้งสองค่าจะแสดงผลบนหน้าจอ OLED ค่าละประมาณ 1 วินาที

ในสภาวะที่ไม่มีลมร้อนเข้ามาในห้องผ่านท่อบนเพดาน รอบการอ่านค่าและแสดงผลนี้จะดำเนินต่อไปเรื่อยๆ อย่างไรก็ตาม อุณหภูมิอากาศที่วัดได้จาก Sensor จะถูกตรวจสอบเปรียบเทียบกับค่าที่อ่านได้ก่อนหน้าอย่างต่อเนื่องเพื่อคำนวณ Rate-of-Rise หาก Rate-of-Rise น้อยกว่า 2.0 องศา C ภายในระยะเวลาสุ่มตัวอย่าง 10 วินาที จะไม่มีการดำเนินการใดๆ และรอบการสุ่มตัวอย่างจะดำเนินต่อไป แต่ถ้าหากคำนวณค่า Rate-of-Rise ได้มากกว่า 2.0 องศา C ในช่วง 10 วินาที การทำงานของ Motor พัดลมจะเริ่มต้นขึ้น หาก Motor พัดลมเริ่มทำงาน จะมีเสียงเตือนดังขึ้นเป็นเวลา 3 วินาทีผ่าน Speaker (โดยใช้ฟังก์ชัน StartWarning() ใน Code) เพื่อเตือนผู้ที่อยู่ใกล้เคียงว่า Motor และพัดลมกำลังจะทำงาน

ในปัจจุบัน Algorithm การทำงานของ Motor พัดลมถูกบรรจุอยู่ในฟังก์ชันที่ชื่อว่า RampTestA() และ RampTestB() ฟังก์ชันเหล่านี้อาจมีการปรับจูนและแก้ไขในภายหลัง แต่ในขณะนี้ แต่ละฟังก์ชันจะควบคุม Motor พัดลมตัวเดียว (A [สีแดง] หรือ B [สีเหลือง]) แยกกัน โดยเริ่มจากกำลังไฟต่ำ แล้วค่อยๆ เพิ่มเป็นกำลังไฟปานกลาง ทำงานในสภาวะคงที่เป็นเวลาหลายนาที จากนั้นจึงค่อยๆ ลดกำลังไฟลงและหยุด Motor

แหล่งจ่ายไฟ (power supply) ปัจจุบันรองรับกระแสสูงสุดได้เพียง 800 mA ดังนั้นเพื่อความปลอดภัย จึงกำหนดให้ทำงานเพียงครั้งละหนึ่ง Motor เท่านั้น Logic ปัจจุบันจะสั่งให้ Motor พัดลม A ทำงาน และตามด้วย Motor พัดลม B ต่อเนื่องกันตัวละ 3 ครั้ง

เมื่อลำดับการทำงานของ Motor พัดลมเสร็จสิ้น Code จะกลับเข้าสู่การสุ่มตัวอย่างตามปกติ หากช่องลมบนเพดานยังคงพ่นลมร้อนเข้ามาในห้อง การตรวจจับ Rate-of-Rise จะไม่พบการเปลี่ยนแปลง ดังนั้นจึงไม่เริ่มทำงานในส่วนของ Motor พัดลมซ้ำอีก

โดยปกติระบบ The Blowhard จะทำงานเฉพาะครั้งแรกที่ลมร้อนเข้ามาในห้อง ในช่วงฤดูที่ต้องทำความร้อน ระบบเตาเผาและพัดลมส่งลมร้อนของบ้านจะใช้การควบคุมแบบ bang-bang control ทำให้มีลมร้อนเข้ามาในท่อเพดานหลายครั้งต่อชั่วโมง ดังนั้นระบบ The Blowhard (ตัวช่วยกระจายลม HVAC) จะทำงานหนึ่งครั้งต่อหนึ่งรอบการทำความร้อน (นั่นคือ ทำงานหลายครั้งต่อชั่วโมงตามการทำงานของระบบทำความร้อน)

รายการอุปกรณ์อิเล็กทรอนิกส์และไฟฟ้าหลักของ The Blowhard:

1. Arduino Uno R3.

2. Arduino Motor Shield Rev 3.

3. Arduino Sensor Kit (พร้อม Sensors และ Base Shield) [ผลิตโดย Seeed].

4. Eudax size 130 DC motors x 2.

5. แท่นยึด DC motor จาก Eudax x 2.

6. พัดลม/ใบพัดพลาสติกจาก Eudax x 2.

7. สายไฟขนาดเล็กสำหรับแรงดันต่ำกว่า 20 V และกระแสน้อยกว่า 2 Amps.

8. 7 ถึง 10 VDC power supply ที่มีความสามารถในการจ่ายกระแสระหว่าง 800 mA ถึง 2 Amps.

ชุดอุปกรณ์ Eudax:

https://www.amazon.ca/dp/B07GDP2FCL/ref=sspa_dk_detail_0?psc=1&pd_rd_i=B07GDP2FCL&pd_rd_w=btmMZ&content-id=amzn1.sym.d8c43617-c625-45bd-a63f-ad8715c2c055&pf_rd_p=d8c43617-c625-45bd-a63f-ad8715c2c055&pf_rd_r=KS70DAC2FYFRH2N94BAP&pd_rd_wg=gitUU&pd_rd_r=da142e3d-c300-4c62-b169-17fa9da3920a&s=industrial&sp_csd=d2lkZ2V0TmFtZT1zcF9kZXRhaWw

ข้อมูลจำเพาะและหมายเหตุของ The Blowhard DC Motor:

Motor DC ของ Eudax (ขนาด 130) ที่ใช้ในโปรเจกต์นี้ไม่มีข้อมูลทางเทคนิคมาให้ นอกจากระบุว่าเป็น Motor Strong Magnetic Carbon brush DC 3V -12V 25000 RPM หรือความเร็ว 9000 RPM, แรงดัน 12 Volts, วัสดุเป็นโลหะ ซึ่งข้อมูลไม่ชัดเจนนัก เราสันนิษฐานได้ว่า Motor กินกระแสน้อยกว่า 500 mA ภายใต้สภาวะที่หนักที่สุด และจากประสบการณ์มันทำงานได้ดีที่ 8 VDC เพื่อให้เห็นภาพชัดขึ้น Motor DC ขนาด 130 ที่คล้ายกันจะมีสเปกดังนี้:

  1.  อุณหภูมิในการทำงาน: -10°C ~ +60°C.
  2.  แรงดันไฟฟ้าที่กำหนด: 6.0VDC.
  3.  โหลดที่กำหนด: 10 g*cm.
  4. กระแสขณะไม่มีโหลด (No-load Current): สูงสุด 70 mA
  5.  ความเร็วขณะไม่มีโหลด: 9100 ±1800 rpm.
  6. กระแสขณะมีโหลด (Loaded Current): สูงสุด 250 mA
  7.  ความเร็วขณะมีโหลด: 4500 ±1500 rpm.
  8.  แรงบิดเริ่มต้น: 20 g*cm.
  9.  แรงดันไฟฟ้าเริ่มต้น: 2.0.
  10. กระแสขณะมอเตอร์หยุดนิ่ง (Stall Current): สูงสุด 500mA
  11.  ขนาดตัวเครื่อง: 27.5mm x 20mm x 15mm.
  12.  ขนาดเพลา: 8mm x 2mm diameter.
  13.  น้ำหนัก: 17.5 กรัม

แหล่งจ่ายไฟที่ใช้จริงในโปรเจกต์ The Blowhard

Arduino Motor Shield Rev 3 มีช่องขับ Motor สองช่อง แต่ละช่องรองรับกระแสสูงสุด 2 Amps อย่างไรก็ตาม Chip ที่ใช้บนบอร์ดเป็นรุ่นเก่า (L298) และภายใต้สภาวะโหลดเต็มที่จะคายความร้อนออกมามาก เป็นเรื่องที่น่าแปลกที่ Motor Shield Rev 3 ไม่ได้ติดตั้ง Heat sink บน Chip และจากการค้นคว้าในอินเทอร์เน็ต พบว่ามันอาจจะร้อนมากเมื่อได้รับโหลดกระแสสูง

ในกรณีนี้ คาดว่า Motor ขนาด 130 จะใช้กระแสไม่เกิน 500 mA ต่อช่อง และจากประสบการณ์ที่ผ่านมาพบว่าทั้ง Motor และ Motor Shield Rev 3 ไม่มีความร้อนเกิดขึ้น ระบบถูกออกแบบมาอย่างตั้งใจให้ทำงานทีละหนึ่ง Motor และไม่ทำงานพร้อมกันทั้งสองตัว

ตามอุดมคติแล้ว คุณควรใช้ Power supply ขนาด 9 VDC สำหรับโปรเจกต์นี้ โดยมีกระแสสูงสุด 2 Amps เพื่อให้มีพื้นที่เผื่อ (head room) สำหรับการทดลองกับ Motor พัดลม แต่ในที่นี้ผมมีเพียง Power supply ขนาด 6 VDC (ตามป้ายชื่อ) ที่จำกัดกระแสไว้ที่ 800 mA หลังจากทดสอบแล้วพบว่าจริงๆ แล้ว Power supply จ่ายไฟคงที่ที่ประมาณ 8 VDC และหัวเสียบ (barrel plug) ของมันมีขนาดเล็กเกินไปสำหรับ Arduino Uno Rev 3 ผมจึงสร้างขั้วต่อขึ้นเองและเดินสายเข้ากับช่องที่ถูกต้องบน Motor Shield Rev 3

Sensor และ Transducer ที่ใช้ใน The Blowhard Arduino Sensor Kit และหมายเหตุ:

1. Sensor วัด Rh และ T (Seeed DHT20) ที่อยู่ I2C 0x38 (อุปกรณ์หลักสำหรับวัดอุณหภูมิอากาศในพื้นที่)

2. หน้าจอ OLED (Seeed SSD1315) ที่อยู่ I2C 0x3C [ใช้ Library U8g2 และ Constructor สำหรับ OLED SSD 1306] (จอแสดงผลหลักสำหรับข้อมูลทั้งหมด)

3. Sensor วัดความดันบรรยากาศ (Seeed BMP280) ที่อยู่ I2C 0x77 (เพื่อวัดความดันบรรยากาศ สำหรับฟังก์ชัน WeatherStation() ใน Code)

4. Speaker (เพื่อเตือนผู้ที่อยู่ใกล้เคียงเมื่อตรวจพบว่าลมร้อนกำลังจะเข้ามา โดยใช้การตรวจจับอุณหภูมิแบบ Rate-of-Rise) ขับเคลื่อนโดยฟังก์ชัน StartWarning() ใน Code ตัว Speaker เชื่อมต่อกับ D5 ผ่าน Arduino/Seeed base shield

5. ชุดสายไฟเชื่อมต่อของ Seeed

โปรดทราบว่าโปรเจกต์นี้ใช้เพียง Sensor/Transducer ลำดับที่ 1 ถึง 4 เท่านั้น อย่างไรก็ตาม บน Platform ของโปรเจกต์นี้ มีอุปกรณ์ต่อไปนี้ติดตั้งและเดินสายไว้แล้ว แต่ไม่ได้ถูกเรียกใช้งานใน Code ซึ่งสามารถเห็นได้ในรูปถ่ายของโปรเจกต์ อุปกรณ์เหล่านี้อาจถูกนำมาใช้ในอนาคต:

A. LED สีแดง

B. Rotary potentiometer

C. Pushbutton

ฟังก์ชันการแสดงผลบน OLED ของ The Blowhard

หน้าจอ OLED (ssd1305) ถูกใช้ในโปรเจกต์นี้ร่วมกับระบบเอาต์พุต U8g2 สำหรับ Font และการควบคุมการแสดงผล เลือกใช้ U8g2 เพราะใช้งานง่ายและรองรับ Font ขนาดใหญ่ ทำให้สามารถมองเห็นหน้าจอ OLED ได้จากระยะไกล

Constructor ของ U8g2 ที่ใช้คือ: U8G2_SSD1306_128X64_NONAME_F_HW_I2C

โปรดทราบว่าระบบ U8g2 ใช้พื้นที่ RAM จำนวนมาก (สูงสุด 2K สำหรับ Arduino Uno R3) ดังนั้นจึงเหลือพื้นที่สำหรับ Global variables ค่อนข้างน้อย แม้ว่า Code ในโปรเจกต์นี้จะค่อนข้างเรียบง่าย แต่มันกลับใช้ RAM ที่มีอยู่เกือบทั้งหมด Code อาจได้รับการปรับแต่ง (optimize) ได้มากกว่านี้ เช่น การใช้ระบบควบคุม OLED อื่นๆ แต่ด้วยข้อจำกัดด้านเวลา ผมจึงยังไม่สามารถทำได้

วัสดุอื่นๆ ที่ใช้ใน The Blowhard:

1. ไม้ขนาดและรูปทรงต่างๆ (ส่วนใหญ่เป็นไม้ซีดาร์ขาวและไม้สน) โปรดทราบว่าการออกแบบโครงสร้างและสถาปัตยกรรมของระบบจำเป็นต้องทำขึ้นเป็นพิเศษสำหรับการติดตั้งหรือการใช้งานอื่นๆ รูปแบบทางกายภาพและการออกแบบเชิงกลที่นำเสนอที่นี่เป็นเพียงตัวอย่างเท่านั้น

2. สีสูตรน้ำและแปรงทาสี

3. สกรูขนาดต่างๆ

4. สายรัด (Tie-wraps) และยางรัด

5. เครื่องมือช่างทั่วไป เลื่อย สว่าน ไขควง ฯลฯ

6. หัวแร้งบัดกรีจะมีประโยชน์มากสำหรับโปรเจกต์นี้

คำอธิบายทั่วไปของ Arduino Code ของ The Blowhard:

  1. จุดประสงค์หลักของ Code นี้คือเพื่อควบคุมเครื่องเป่าลมพัดลมคู่ที่ติดตั้งในห้องทำงานชั้นใต้ดินที่มีช่องลม HVAC เพียงช่องเดียว
  2. เป้าหมายหลักคือการตรวจจับอุณหภูมิใต้ท่อเพดานอย่างต่อเนื่อง โดยแสดงผลออกทางหน้าจอ OLED พร้อมกับค่า RH และความดันบรรยากาศ
  3. เมื่อตรวจพบอุณหภูมิได้ ในขณะที่พัดลมส่งลมร้อนของบ้านเริ่มเป่าลมร้อนจากท่อเข้ามาในห้อง จะสังเกตเห็นอุณหภูมิที่สูงขึ้น
  4. พารามิเตอร์ Rate of Rise (ROR) จะถูกตรวจสอบ เมื่อตรวจพบลมร้อน พัดลมคู่จะเริ่มทำงาน
  5. พัดลมคู่จะเป่าในแนวตั้งฉากกับลมร้อน ทำให้เกิดผลการผสมอากาศและกระจายลมร้อนในห้องได้ดีขึ้น
  6. พัดลมคู่จะสลับกันทำงานเพื่อรักษาให้กระแสไฟต่ำ (ทำงานทีละตัว) และจะทำงานเป็นเวลาหลายนาที
  7. Code นี้มีการรวม Code อื่นๆ ที่ใช้ในการพัฒนา I/O Sensors ต่างๆ สำหรับ Arduino Uno R3 ของผม
  8. Code นี้ใช้ Arduino Library หลายตัวที่พบใน Github
  9. ในกรณีที่ Code โดยรวมมีการอ้างอิงถึง Code เฉพาะสำหรับ Transducer หรือ Sensor บางตัว จะมีการระบุไว้ใน Comment
  10. ข้อจำกัดของ Code นี้:
  11. ขีดจำกัด 2K ของหน่วยความจำตัวแปรส่วนใหญ่ถูกใช้ไปโดย U8G2 ดังนั้นในเวอร์ชันนี้จึงเหลือเพียง 188 Bytes สำหรับตัวแปร Local ซึ่งถือว่าค่อนข้างจำกัด
  12. Code นี้ไม่ได้ใช้ Pushbutton
  13. Code นี้ไม่ได้ใช้ LED (ใช้เพื่อการทดสอบเท่านั้น) แต่ใช้ Speaker สำหรับเอาต์พุต
  14. ตัวเครื่องจะพร้อมทำงานทันทีเมื่อเสียบปลั๊ก
  15. Code นี้ไม่ได้ใช้คุณสมบัติการตรวจจับกระแส (current sensing) ของ Arduino Motor Shield Rev 3 เนื่องจากผมประสบปัญหาในการทำให้มันแสดงผลที่มีความหมาย เพราะการทำงานแบบ PWM ของ Motor ทำให้การส่งข้อมูลกระแสกลับมาไม่ต่อเนื่อง จึงแปลผลได้ยาก ซึ่งดูเหมือนจะเป็นข้อบกพร่องในการออกแบบ
  16. ขีดจำกัดกระแสของ Motor Shield คือ 2 Amps ต่อช่อง และ Motor ขนาด 130 แต่ละตัวที่ผมใช้กินกระแสสูงสุด 500 mA (โดยประมาณ สเปกไม่ชัดเจน) ภายใต้สภาวะโหลดเต็มที่หรือหยุดนิ่ง ผมมั่นใจว่า Shield จะไม่ทำงานเกินกำลังแน่นอน แต่อะแดปเตอร์ (wall wart) ที่ผมใช้จ่ายกระแสได้สูงสุด 800 mA ผมจึงเลือกใช้งาน Motor ทีละตัวเท่านั้น หากในอนาคตผมสามารถดึงข้อมูลกระแสของ Motor มาแสดงผลได้อย่างถูกต้อง ผมอาจจะให้ Motor ทำงานพร้อมกันทั้งสองตัว นอกจากนี้ ผมอาจจะลองซื้ออะแดปเตอร์ที่มีพิกัดกระแสสูงขึ้น เช่น 1.5 Amps (แก้ไขจาก 1500 Amps ในต้นฉบับซึ่งน่าจะเป็นความผิดพลาดของหน่วย)
  17. คุณสมบัติที่อาจมีในอนาคตที่ยังไม่ได้รวมอยู่ใน Code นี้:
  18. การจำกัดเวลาในการทำงาน
  19. การใช้ Pushbutton และ Rotary potentiometer สำหรับฟังก์ชันการควบคุมเพิ่มเติม
  20. การแสดงค่ากระแสออกทาง OLED จากการตรวจจับกระแส
  21. การตรวจจับกระแสจาก Motor Shield เป็นต้น
  22. ตัวบ่งชี้สถานะการทำงาน (Armed status)
  23. การแสดงผล % กำลังของ Motor และพารามิเตอร์อื่นๆ ของ Motor ผ่านหน้าจอ OLED
  24. ระบบควบคุมและตั้งค่าพารามิเตอร์การทำงานอื่นๆ
  25. พิจารณาใช้ระบบแสดงผลสำหรับ OLED อื่นนอกเหนือจาก U8g2 เพื่อเพิ่มประสิทธิภาพการใช้หน่วยความจำ

Code

🔒 ปลดล็อก Code

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

รหัสอ้างอิงโปรเจกต์: the-blowhard-hvac-circulation-blower-assist-ef13c0
699 บาท
PromptPay QR Code

ประเมิน Project

อยากได้งานคล้ายโปรเจคนี้? กดไปหน้าประเมินราคา

เอาฟอร์มยาวออกจากท้ายหน้า Project แล้ว เหลือเป็นปุ่มให้กดไปกรอกหน้าเดียว ตัวใหญ่ เว้นบรรทัดเยอะ อ่านง่ายกว่า

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...