📘 ซีรีส์ออกแบบ IoT Product · EP.15/70 · บทที่ 2: พื้นฐานฮาร์ดแวร์และการเลือกชิ้นส่วน
ตอนนี้ตอบคำถามว่า ถ้าอยากให้อุปกรณ์ IoT สั่งปั๊ม พัดลม หรือวาล์วได้ ต้องออกแบบอะไรเพิ่มบ้างถึงจะปลอดภัย ต่อจาก EP.14 ที่เราเลือกเซนเซอร์และคาลิเบรตฝั่ง "วัด" เสร็จแล้ว
ทำไมห้ามต่อโหลดเข้าขา MCU ตรง ๆ
ขา GPIO (ขาสัญญาณอเนกประสงค์) ของไมโครคอนโทรลเลอร์จ่ายกระแสได้น้อยมาก ปกติแค่หลักมิลลิแอมป์ถึงราวสิบกว่ามิลลิแอมป์ (ค่าจริงต้องดู datasheet ของชิปที่ใช้) พอไว้ขับ LED หรือ buzzer ตัวเล็กเท่านั้น ส่วน ปั๊ม พัดลม โซลินอยด์วาล์ว กินกระแสหลักร้อยมิลลิแอมป์ถึงหลายแอมป์ ต่อตรงเมื่อไรขาพังหรือบอร์ดรีเซ็ตเอง
ทางออกคือใช้ขา MCU เป็นแค่ "สวิตช์สั่ง" แล้วให้อุปกรณ์อีกตัวรับภาระกระแสแทน:
- ทรานซิสเตอร์ / MOSFET (สวิตช์อิเล็กทรอนิกส์) สำหรับโหลดไฟตรง (DC) เช่นปั๊ม 12V พัดลม 12V · เลือก MOSFET แบบ logic-level ที่เปิดเต็มที่ด้วยแรงดันขา MCU (3.3V) ได้ ไม่งั้นจะร้อนจัด
- ตัวต้านทาน pull-down ที่ขา gate ให้ MOSFET ปิดแน่นอนตอนบูตเครื่อง
- ไดโอดกันไฟย้อน (flyback diode) คร่อมขดลวดทุกชนิด (มอเตอร์ รีเลย์ โซลินอยด์) ตอนตัดไฟ ขดลวดจะเตะแรงดันย้อนกลับสูงกว่าแรงดันจ่ายหลายเท่า ไม่มีไดโอดรับไว้ MOSFET หรือ MCU จะพังแบบสุ่ม
- กระแสกระชาก (inrush) มอเตอร์และปั๊มช่วงเริ่มหมุนดึงกระแสสูงกว่าตอนหมุนปกติหลายเท่า เลือกอุปกรณ์สวิตช์ ฟิวส์ และแหล่งจ่ายให้รับช่วงนี้ได้ (เรื่องแหล่งจ่ายลงลึกใน EP.16)
รีเลย์ธรรมดา vs SSR vs คอนแทคเตอร์
ถ้าโหลดเป็น ไฟบ้าน 220V AC ต้องใช้อุปกรณ์ที่แยกฝั่งไฟแรงสูงออกจากวงจรเราจริง ๆ
| อุปกรณ์ | หลักการ | เหมาะกับ | ข้อควรรู้ |
|---|---|---|---|
| รีเลย์ธรรมดา | ขดลวดดูดหน้าสัมผัสเหล็ก | โหลดเล็ก–กลาง เปิดปิดไม่ถี่ | มีเสียงคลิก หน้าสัมผัสสึกตามจำนวนครั้ง |
| SSR (Solid State Relay) | สวิตช์สารกึ่งตัวนำ ไม่มีชิ้นส่วนขยับ | เปิดปิดถี่ เงียบ | ร้อน ต้องมีแผ่นระบายความร้อน มีกระแสรั่วตอนปิด |
| คอนแทคเตอร์ | รีเลย์ตัวใหญ่สำหรับงานกำลัง | มอเตอร์/ปั๊มขนาดใหญ่ ตู้ควบคุม | ใช้ร่วมกับเบรกเกอร์และอุปกรณ์ป้องกันในตู้ |
ดูพิกัดหน้าสัมผัสให้ตรง ชนิดโหลด ไม่ใช่แค่ตัวเลขแอมป์ เพราะโหลดมอเตอร์หนักกับหน้าสัมผัสกว่าฮีตเตอร์ที่กระแสเท่ากัน
ส่วนที่ต่อกับไฟบ้าน (สายเมน เบรกเกอร์ เครื่องตัดไฟรั่ว การต่อลงดิน) ควรให้ช่างไฟที่มีความรู้เป็นผู้ติดตั้ง และใช้อุปกรณ์ที่ผ่านมาตรฐาน — ถ้าจะขายเป็นสินค้า ต้องตรวจสอบมาตรฐานความปลอดภัยทางไฟฟ้าที่เกี่ยวข้องกับหน่วยงานรับรอง (ไม่ใช่คำแนะนำทางกฎหมาย)
มอเตอร์ วาล์ว ปั๊ม และการแยกวงจร
มอเตอร์ DC ที่ต้อง กลับทิศหรือปรับความเร็ว ใช้ไดรเวอร์มอเตอร์ (H-bridge) แทน MOSFET ตัวเดียว ถ้าแค่เปิด/ปิด MOSFET ตัวเดียวพอ
การแยกวงจร (isolation) คือกันไฟฝั่งกำลังไม่ให้ถึงฝั่ง MCU ด้วย optocoupler (ส่งสัญญาณด้วยแสง) หรือรีเลย์/SSR ที่มีฉนวนแยกในตัว บวกกับ ระยะห่างบนแผ่นวงจร ระหว่างลายทองแดงฝั่งไฟบ้านกับฝั่งไฟต่ำ ฝั่งกำลังมีปัญหาเมื่อไร ความเสียหายต้องจบอยู่ฝั่งนั้น ไม่ลามมาบอร์ดและคนที่จับเครื่อง
Fail-safe: เครื่องเสีย ต้องเสียแบบไหน
IoT ที่แค่วัด ถ้าพังอย่างมากคือข้อมูลหาย แต่ตัวที่สั่งงาน ถ้าพังอาจของเสีย ไฟไหม้ หรือคนบาดเจ็บ จึงต้องตอบให้ได้ตั้งแต่วันแรก: ถ้าเครื่องค้าง ไฟดับ เน็ตหลุด หรือเซนเซอร์เสีย โหลดควรอยู่สถานะไหน?
- สถานะเริ่มต้นเมื่อไม่มีสัญญาณ — เลือกต่อหน้าสัมผัสแบบปกติเปิด (NO) หรือปกติปิด (NC) ให้ "ไม่มีไฟเลี้ยงขดลวด = สถานะปลอดภัย"
- watchdog (ตัวจับเวลาที่รีเซ็ตเครื่องเมื่อโปรแกรมค้าง) ป้องกันโหลดค้างเปิดตลอดไป
- เวลาทำงานสูงสุด — ปั๊มเปิดได้ไม่เกิน X นาทีต่อรอบ
- ตัดสินใจบนเครื่อง ไม่พึ่งคลาวด์ — เน็ตหลุดแล้วเครื่องต้องทำงานตามกฎพื้นฐานต่อได้เอง (ลำดับสถานะบนเครื่องลงลึกใน EP.26)
- ป้องกันชั้นที่ไม่ใช่ซอฟต์แวร์ เช่น ฟิวส์ ลูกลอยตัดปั๊มเมื่อน้ำหมด — ทำงานได้แม้เฟิร์มแวร์มีบั๊ก
ลองใช้กับโปรเจกต์ตัวอย่าง: ตัวเฝ้าโรงเห็ด
รุ่นแรกมีแค่ buzzer กับ LED (โหลดเล็ก) แต่ถ้า รุ่น 2 อยากสั่งปั๊มพ่นหมอกและพัดลมระบายอากาศ เราตัดสินใจดังนี้:
ใช้ปั๊มและพัดลมไฟตรง 12V ขับด้วย MOSFET ไม่เอาไฟบ้านเข้ากล่องของเรา เหตุผลคือโรงเห็ดเปียกและมีหยดน้ำเกือบตลอดเวลา การพาไฟ 220V เข้ามาใกล้น้ำเพิ่มความเสี่ยงไฟดูดสูงมาก ถ้าฟาร์มมีปั๊มไฟบ้านอยู่แล้ว ให้เครื่องเราส่งแค่สัญญาณไปสั่งรีเลย์ในตู้ไฟที่ช่างไฟติดตั้ง แทน
Fail-safe ที่เลือก:
เริ่มเครื่อง / รีบูต -> ปั๊มปิด พัดลมปิด
เซนเซอร์อ่านไม่ได้ -> ปั๊มปิด + แจ้งเตือน
พ่นหมอกต่อรอบ -> ไม่เกิน MAX_ON นาที แล้วพักบังคับ
เน็ตหลุด -> ใช้ช่วงความชื้นที่ตั้งไว้ล่าสุด ทำงานต่อบนเครื่อง
เหตุผลที่ให้ปั๊ม "ปิด" เมื่อไม่แน่ใจ: พ่นหมอกมากเกินไปทำให้น้ำขังและเชื้อราอื่นแทรกได้ ค่า MAX_ON ให้เกษตรกรตั้งเองตามชนิดเห็ดและคู่มือการเพาะ
กับดักที่เจอบ่อย: ลืมไดโอดคร่อมปั๊มหรือรีเลย์ แล้วเครื่องรีเซ็ตเองทุกครั้งที่ปั๊มดับ หลายคนไล่แก้โค้ดหรือ Wi-Fi อยู่หลายวัน ทั้งที่ต้นเหตุคือแรงดันย้อนจากขดลวด
เช็กลิสต์ก่อนไปตอนถัดไป
- ลิสต์โหลดทุกตัวที่จะสั่ง พร้อม แรงดัน กระแสปกติ และกระแสตอนเริ่ม จาก datasheet หรือป้ายเครื่อง
- แยกให้ชัดว่าโหลดไหน DC (ขับด้วย MOSFET/ไดรเวอร์) โหลดไหน AC (รีเลย์/SSR/คอนแทคเตอร์ + ช่างไฟ)
- เขียนตาราง fail-safe: ค้าง / ไฟดับ / เน็ตหลุด / เซนเซอร์เสีย → โหลดแต่ละตัวอยู่สถานะไหน
- ใส่ไดโอดคร่อมขดลวดทุกตัว และ pull-down ที่ขา gate ทุก MOSFET ในผังวงจร
- กำหนดการป้องกันที่ไม่ใช่ซอฟต์แวร์อย่างน้อย 1 ชั้น (ฟิวส์ ลูกลอย หรือตัวตัดความร้อน)
ขา MCU มีหน้าที่แค่ "สั่ง" ให้อุปกรณ์อื่นรับภาระกระแส และทุกโหลดต้องมีคำตอบล่วงหน้าว่าเมื่อระบบล้ม มันจะหยุดในสถานะที่ปลอดภัย
ตอนต่อไป — EP.16: ออกแบบไฟเลี้ยงวงจร (1): เลือกแหล่งไฟ LDO หรือบั๊กคอนเวอร์เตอร์ และทำ Power Budget
อยากให้ช่วยออกแบบวงจรขับโหลดและระบบ fail-safe ให้อุปกรณ์ของคุณ ดูบริการออกแบบอุปกรณ์ IoT เฉพาะงานที่ /iot หรือปรึกษาฟรีที่ /consult · ทัก LINE @spvtech
