กลับไปหน้ารวมไฟล์
tankless-water-heater-temperature-limiter-fc9709.md

title: "ระบบควบคุมเครื่องทำน้ำอุ่นอัตโนมัติด้วย Arduino: แก้ปัญหาการตัดการทำงานและความร้อนไม่คงที่" date: 2023-10-27 layout: post

บทนำและวัตถุประสงค์ (Purpose)

ปัญหาโลกแตกของผู้ที่ใช้เครื่องทำน้ำอุ่นแบบใช้แก๊ส (Tankless Water Heater) คือระบบมักจะตัดการทำงานเองขณะอาบน้ำ โดยเฉพาะเมื่อเราปรับอัตราการไหลของน้ำให้เบาลง หรือในกรณีที่อุณหภูมิขาเข้าสูงเกินไป (เช่น น้ำจากถังพักกลางแดด) โปรเจคนี้ถูกออกแบบมาเพื่อแก้ปัญหานี้โดยเฉพาะ โดยการใช้ Arduino เข้ามาช่วยบริหารจัดการสัญญาณควบคุม เพื่อให้เครื่องทำงานได้อย่างต่อเนื่องและรักษาระดับอุณหภูมิให้คงที่ที่สุด

รายละเอียดการทำงานและปัญหาเชิงวิศวกรรม (General Description)

เครื่องทำน้ำอุ่นระบบแก๊สรุ่นใหม่ส่วนใหญ่จะใช้คอนโทรลเลอร์แบบดิจิทัลในการควบคุมการจุดระเบิดและการจ่ายแก๊ส จากการวิเคราะห์โครงสร้าง (ดังแสดงในรูปภาพ) พบว่าหัวใจหลักของการทำงานประกอบด้วยวาล์ว Solenoid และระบบตรวจจับการไหล แต่ระบบเหล่านี้มักมีข้อจำกัดที่น่าหงุดหงิด:

  1. ขีดจำกัดของ Bimetal Thermostat: เมื่ออัตราการไหลของน้ำ (Flow rate) ลดลง อุณหภูมิในตัวแลกเปลี่ยนความร้อน (Heat Exchanger) จะพุ่งสูงขึ้นอย่างรวดเร็ว หากสูงเกินจุดที่กำหนด (ของผมคือ 80°C) ตัว Bimetal จะตัดการทำงานทันที และกว่ามันจะเย็นตัวลงจนกลับมาทำงานใหม่ได้ คุณก็ต้องทนอาบน้ำเย็นไปนานพอสมควร
  2. การควบคุมอุณหภูมิที่ไม่เป็นเชิงเส้น: เครื่องประเภทนี้ไม่ได้คุมอุณหภูมิให้เป๊ะๆ แต่เป็นการคุม "ปริมาณแก๊ส" ที่จ่ายให้หัวเผา ดังนั้นหากน้ำขาเข้าอุ่นขึ้น (เช่น ผ่านโซลาร์เซลล์มาก่อน) หรือน้ำไหลช้าลง อุณหภูมิขาออกจะพุ่งสูงจนระบบ Safety ตัดการทำงาน

การวิเคราะห์ระบบเดิมและความท้าทาย

ในฐานะวิศวกร ผมได้พิจารณาทางเลือกหลายทางในการโมดิฟาย:

  • การเปลี่ยนคอนโทรลเลอร์ใหม่ทั้งหมด: ดูเหมือนจะเป็นวิธีที่ดีที่สุดแต่ทำได้ยาก เพราะระบบเดิมมีระบบความปลอดภัยที่ซับซ้อน เช่น Flame Detection ที่ใช้หลักการ Flame Ionization (เปลวไฟทำให้เกิดพลาสม่าและนำไฟฟ้าได้ในระดับไมโครแอมแปร์) โดยใช้แท่งจุดระเบิดเป็นตัวตรวจจับ หากคอนโทรลเลอร์ไม่พบกระแสไฟในระดับเมกะโอห์มนี้ภายในไม่กี่วินาที มันจะสั่งปิดวาล์วแก๊สทันทีเพื่อป้องกันแก๊สรั่ว
  • การควบคุมวาล์วแก๊ส: วาล์ว Solenoid ในเครื่องเหล่านี้มีความฉลาดมาก มันใช้คอยล์ 2 ชุด (Dual Coil Design): ชุดแรกใช้กระแสสูงเพื่อดึงวาล์วให้เปิด (Pull) และชุดที่สองใช้กระแสต่ำมากเพื่อประคองให้วาล์วเปิดค้างไว้ (Hold) วิธีนี้ช่วยให้ถ่านไฟฉายก้อน D เพียง 2 ก้อนใช้งานได้นานนับปี

แนวคิดการแก้ไขด้วย Arduino (The Arduino Solution)

หลังจากทดลองหลายวิธี ผมพบว่าวิธีที่มีประสิทธิภาพและปลอดภัยที่สุดคือการ "Interpose" หรือแทรกแซงสัญญาณจาก Hall Effect Flow Sensor

ปกติแล้วเมื่อมีน้ำไหล เซ็นเซอร์จะส่งสัญญาณ Pulse ไปยังคอนโทรลเลอร์เพื่อให้เริ่มการจุดระเบิด ผมจึงใช้ Arduino เข้ามาจำลองสัญญาณ PWM (Square Wave) นี้แทน โดยมีตรรกะการทำงาน (Logic) ดังนี้:

  1. Monitoring & Prediction: Arduino จะรับค่าอุณหภูมิและทำการวิเคราะห์แนวโน้มด้วยวิธี Curve Fitting จากข้อมูลย้อนหลังไม่กี่วินาที เพื่อพยากรณ์ว่าอุณหภูมิจะเกินจุด Safety Limit หรือไม่
  2. Signal Modulation: หากระบบพยากรณ์ว่าความร้อนจะสูงเกินไป Arduino จะหยุดส่งสัญญาณ Pulse (หลอกว่าน้ำหยุดไหล) เพื่อให้คอนโทรลเลอร์สั่งดับหัวเผาชั่วคราว ก่อนที่ Bimetal จะตัดจริง
  3. Automatic Recovery: เมื่ออุณหภูมิเริ่มลดลงมาอยู่ในเกณฑ์ที่ปลอดภัย Arduino จะกลับมาส่งสัญญาณ Pulse อีกครั้ง เพื่อกระตุ้นให้คอนโทรลเลอร์เริ่มกระบวนการจุดระเบิดใหม่

การจัดการพลังงานและส่วนประกอบ (Hardware Details)

  • Power Supply: เนื่องจากมีการใช้ Arduino และต้องส่งสัญญาณควบคุม Solenoid บ่อยขึ้น ผมจึงเปลี่ยนจากการใช้ถ่านก้อน D มาเป็นแหล่งจ่ายไฟแบบ PWM Power Supply เพื่อความเสถียรและลดค่าใช้จ่ายในระยะยาว
  • Wear and Tear: ข้อควรระวังหนึ่งคือการเปิด-ปิด Solenoid บ่อยครั้งอาจทำให้อายุการใช้งานสั้นลง แต่ด้วยการออกแบบที่เป็นวาล์วคู่ (Double Valve) ทำให้ยังคงมีความปลอดภัยสูงในกรณีที่วาล์วตัวใดตัวหนึ่งค้าง

สรุปผลการทดลอง

จากการปรับจูนค่า Set-point ให้สูงพอสำหรับการใช้งานในอ่างอาบน้ำ แต่ยังอยู่ในเกณฑ์ที่ Arduino ควบคุมได้ ผลลัพธ์ที่ได้คือน้ำอาจจะมีอุณหภูมิแกว่งบ้างเล็กน้อยในช่วงที่หัวเผาถูกตัดและจุดใหม่ (คุณจะรู้สึกได้ถึงการเปลี่ยนแปลงของอุณหภูมิ) แต่มันจะไม่ตัดยาวจนกลายเป็นน้ำเย็นจัดเหมือนแต่ก่อน ช่วยให้การอาบน้ำต่อเนื่องและมีความสุขมากขึ้นครับ


หมายเหตุ: การดัดแปลงอุปกรณ์ที่เกี่ยวข้องกับแก๊สควรทำด้วยความระมัดระวังและมีความรู้ด้านวิศวกรรมที่เพียงพอเพื่อความปลอดภัย

ข้อมูล Frontmatter ดั้งเดิม

title: "Tankless Water Heater temperature limiter"
description: "Control to limit the temperature of a tankless WH to prevent triggering the limit switch"
author: "ugokanain"
category: "Home & Automation"
tags:
  - "waterheater"
  - "temperature limiter"
  - "gas burner"
views: 4823
likes: 0
price: 699
difficulty: "Intermediate"
components:
  - "1x Arduino Leonardo"
  - "1x Wire, Hook Up"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "ae81452026dec50920ff200698ab67d149b5f90145951c700bed32edb8120ea6"
encryptedPayload: "U2FsdGVkX19X8T4BF2CyfBD2nb66TTk+rEDGbF4QfqdpZa6GvPNarLR09olKurWOxznDW2Qg6pRK/5jt5fnQa5ymcFWCBY4sX5p5KslsFdc="
seoDescription: "Arduino project to limit Tankless Water Heater temperature, preventing limit switch triggers. Efficient control system for safety."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tankless-water-heater-temperature-limiter-fc9709_cover.jpg"
lang: "en"