ตอนที่ 6: On-Off Control: ควบคุมแบบง่ายๆ ทำไมถึงไม่พอ?

1. 🎯 ตอนที่ 6: On-Off Control: ควบคุมแบบง่ายๆ ทำไมถึงไม่พอ?
2. 📖 เปิดฉาก (The Hook)
สวัสดีครับน้องๆ และผู้อ่านทุกท่าน! ยินดีต้อนรับกลับสู่ซีรีส์ เจาะลึกวิศวกรรมระบบควบคุม (Control Systems) จาก 101 ถึง Advance กับผมอีกครั้งครับ
ถ้าพูดถึงระบบควบคุม สิ่งแรกที่หลายคนนึกถึงและคุ้นเคยที่สุดน่าจะเป็น “แอร์” หรือ “ตู้เย็น” ในบ้านเราใช่ไหมครับ? เวลาเราตั้งอุณหภูมิแอร์ไว้ที่ 25 องศาเซลเซียส (Setpoint) แอร์มันไม่ได้เป่าลมเย็นที่อุณหภูมิ 25 องศาออกมาตลอดเวลา แต่ถ้าเราลองฟังเสียงคอมเพรสเซอร์ดู เราจะได้ยินเสียงมันทำงานดัง “วู๊มมม” จนห้องเย็นเจี๊ยบ แล้วก็ตัดการทำงานดับ “ตึ่ก!” พอห้องเริ่มร้อน มันก็กลับมาทำงานใหม่ วนลูปไปแบบนี้
การควบคุมแบบนี้เราเรียกว่า “On-Off Control” หรือในวงการหุ่นยนต์บางทีก็เรียกว่า “Bang-Bang Control” (เปรียบเหมือนการขับรถที่เหยียบคันเร่งมิดไมล์ แล้วสลับกับเหยียบเบรกมิดด้าม ไม่มีแผ่ว) ถึงแม้ว่ามันจะถูกใช้อย่างแพร่หลายเพราะความเรียบง่ายและราคาถูก แต่ในงานอุตสาหกรรมขั้นสูง หรืองานหุ่นยนต์ที่ต้องการความแม่นยำระดับมิลลิเมตร การควบคุมแบบ On-Off กลับกลายเป็น “ฝันร้าย” ของวิศวกรครับ วันนี้พี่จะพาไปเจาะลึกว่าทำไมระบบที่ดูเหมือนจะโอเคนี้ ถึง “ไม่พอ” สำหรับงานวิศวกรรมขั้นสูงของเรา
3. 🧠 แก่นวิชา (Core Concepts)
หลักการทำงานของ On-Off Control นั้นตรงไปตรงมามากครับ ตัวควบคุมจะมีสถานะเอาต์พุต ($u$) แค่ 2 สถานะ คือ 100% (ON) กับ 0% (OFF) โดยขึ้นอยู่กับว่าค่า Error ($e = Setpoint - Process Variable$) เป็นบวกหรือลบ
ปัญหาที่ 1: การแกว่งไม่ยอมหยุด (Hunting & Fluctuation) เนื่องจากมันสั่งจ่ายพลังงานเต็ม 100% เสมอ พอค่าที่วัดได้ (Process Variable: PV) วิ่งไปแตะ Setpoint ตัวควบคุมจะสั่งตัดการทำงานทันที (0%) แต่ในโลกความจริง ระบบทางฟิสิกส์มี “ความเฉื่อย (Inertia)” ครับ เช่น ความร้อนสะสมในขดลวดฮีตเตอร์ แม้เราตัดไฟแล้ว ความร้อนก็ยังแผ่ออกมาต่อ ทำให้เกิดปรากฏการณ์ Overshoot (พุ่งเกินเป้า) เสมอ และเมื่ออุณหภูมิตกลงมาแตะ Setpoint มันก็สั่งจ่ายไฟเต็ม 100% อีก แต่ความร้อนก็ไม่มาทันที ทำให้เกิดการทะลุลงล่าง (Undershoot) ผลลัพธ์คือค่า PV จะแกว่งเป็นลูกคลื่นรอบๆ Setpoint ตลอดเวลา เรียกว่าการ Hunting ครับ
ปัญหาที่ 2: อุปกรณ์พังพินาศ (Mechanical Wear & Tear) ในทางทฤษฎี พอค่า PV แกว่งอยู่แถวๆ Setpoint ค่า Error จะสลับบวก-ลบถี่มากๆ (ระดับมิลลิวินาที) ทำให้ Relay หรือ Contactor ต้องตัดต่อสลับไปมารัวๆ (Chattering) ถ้าปล่อยไว้แบบนี้ หน้าสัมผัสรีเลย์จะไหม้หรือกลไกวาล์วจะพังอย่างรวดเร็ว
ทางแก้สุดคลาสสิก: Hysteresis (Differential Gap) เพื่อป้องกันไม่ให้อุปกรณ์พัง วิศวกรจึงต้องใส่สิ่งที่เรียกว่า Hysteresis หรือ Dead Band เข้าไปครับ ยกตัวอย่างเช่น ถ้าตั้งฮีตเตอร์ไว้ที่ 100°C และตั้ง Hysteresis ไว้ที่ 5°C ฮีตเตอร์จะตัดการทำงานเมื่ออุณหภูมิเกิน 100°C แต่จะ ไม่ยอมกลับมาทำงาน จนกว่าอุณหภูมิจะตกลงไปถึง 95°C การทำแบบนี้ช่วยเซฟอายุการใช้งานของ Relay ได้ดีเยี่ยม แต่ก็ต้องแลกมากับอุณหภูมิที่จะแกว่งสวิงกว้างขึ้น (มี Steady-state error เป็นช่วงกว้าง) นั่นเองครับ

4. 🧮 ร่ายมนต์สมการและโค้ดควบคุม (The Math & Implementation)
ในมุมมองคณิตศาสตร์ สมการของ On-Off Control แบบปกติคือ: $$ u(t) = \begin{cases} U_{max} & \text{ถ้า } e(t) > 0 \ U_{min} & \text{ถ้า } e(t) < 0 \end{cases} $$
แต่เมื่อเราเพิ่ม Hysteresis (กำหนดให้มีช่องว่าง $\Delta$) เข้าไป สมการจะกลายเป็นระบบที่มีหน่วยความจำ (Memory/History) ขึ้นมาทันทีครับ: $$ u(t) = \begin{cases} U_{max} & \text{ถ้า } e(t) > \frac{\Delta}{2} \ U_{min} & \text{ถ้า } e(t) < -\frac{\Delta}{2} \ u(t^{-}) & \text{ถ้า } -\frac{\Delta}{2} \le e(t) \le \frac{\Delta}{2} \end{cases} $$ (หมายเหตุ: $u(t^{-})$ คือค่าสถานะเอาต์พุตก่อนหน้านี้)
ตัวอย่างการเขียนโค้ด C/C++ บน Microcontroller (เช่น STM32) สำหรับ On-Off Control พร้อม Hysteresis:
// ตัวแปรสำหรับระบบ On-Off Control พร้อม Hysteresis
float setpoint = 100.0; // อุณหภูมิเป้าหมาย (องศาเซลเซียส)
float hysteresis = 5.0; // ช่วงความกว้างของ Differential Gap (เช่น 5 องศา)
bool is_heater_on = false; // เก็บสถานะก่อนหน้า u(t-)
void OnOff_Control_Loop() {
while(1) {
// 1. อ่านค่าอุณหภูมิปัจจุบัน (Process Variable)
float pv = Read_Temperature_Sensor();
// 2. คำนวณค่า Error
float error = setpoint - pv;
// 3. ลอจิกการควบคุมแบบ On-Off ที่มี Hysteresis
if (error > (hysteresis / 2.0)) {
// ถ้าอุณหภูมิต่ำกว่าเป้าหมายมากๆ (หนาวไป) -> เปิดฮีตเตอร์
is_heater_on = true;
}
else if (error < -(hysteresis / 2.0)) {
// ถ้าอุณหภูมิสูงกว่าเป้าหมายมากๆ (ร้อนไป) -> ปิดฮีตเตอร์
is_heater_on = false;
}
// หมายเหตุ: ถ้า error อยู่ในช่วง +- 2.5 องศา (Hysteresis Band)
// ระบบจะไม่ทำอะไรเลย โดยคงสถานะ is_heater_on ค่าเดิมเอาไว้ (u(t-))
// 4. สั่งงาน Actuator (ส่งลอจิกไปขับ Relay)
Drive_Heater_Relay(is_heater_on);
// 5. หน่วงเวลา (Sampling Time)
Wait_Timer_Interrupt(dt);
}
}5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)
เห็นแบบนี้ น้องๆ อาจจะสงสัยว่า “ถ้างั้นทำไมเราไม่เลิกใช้ On-Off Control ไปเลยล่ะ?” คำตอบคือ ในงานอุตสาหกรรม ความคุ้มค่า (Cost-Effectiveness) เป็นเรื่องสำคัญครับ
- เมื่อไหร่ที่ควรใช้? On-Off Control จะทำงานได้ดีกับกระบวนการ (Plant) ที่มี Time Constant สูงมากๆ (มี Thermal mass ยักษ์ๆ หรือถังน้ำขนาดใหญ่) เพราะความเฉื่อยของระบบจะช่วยบีบให้ความถี่ในการตัดต่อลดลงตามธรรมชาติ (Slow response) เช่น เตาหลอมขนาดใหญ่ หรือการคุมระดับน้ำในบ่อพักน้ำ
- ทำไมหุ่นยนต์ถึงเกลียดมัน? ลองนึกภาพเราใช้ลอจิกนี้ควบคุมความเร็วมอเตอร์หุ่นยนต์ AGV ดูครับ (Bang-Bang Control) มอเตอร์จะถูกสั่งให้จ่ายกระแสเต็มสลับกับตัดกระแสเป็นคลื่นสี่เหลี่ยม (Square Wave) ทำให้ฟันเฟืองกระชาก (Backlash) และล้อลื่นไถล (Slip) ตลอดเวลา หุ่นยนต์จะวิ่งกระตุกเป็นม้าพยศเลยครับ!
- นอกจากนั้น ในทางทฤษฎี On-Off Control จะ ไม่มีวันให้ค่าความผิดพลาดในสภาวะคงตัว (Steady-State Error) เป็นศูนย์ได้เลย เพราะมันต้องยอมให้เกิดการ Hunting เพื่อเลี้ยงสถานะการทำงานไว้
6. 🏁 บทสรุป (To be continued…)
สรุปง่ายๆ ครับ On-Off Control คือการควบคุมที่ซื่อตรงที่สุด แต่ความ “สุดโต่ง” ของมันที่สั่งงานแบบ 0% กับ 100% ทำให้ระบบเกิดการแกว่ง (Hunting) อย่างหลีกเลี่ยงไม่ได้ แม้เราจะเอา Hysteresis มาช่วยเซฟอายุการใช้งานของหน้าสัมผัสรีเลย์ แต่มันก็ต้องแลกมากับความแม่นยำที่ลดลง
แล้วถ้าเราอยากขับรถให้นิ่มนวล ค่อยๆ แตะเบรกเมื่อใกล้ถึงไฟแดง แทนที่จะกระทืบเบรกมิดด้ามล่ะ เราจะทำอย่างไร? คำตอบคือเราต้องให้ตัวควบคุมรู้จักคำว่า “หรี่” พลังงาน หรือแปรผันเอาต์พุตตามขนาดของ Error ครับ ในตอนต่อไป เราจะเข้าสู่โลกของการควบคุมสัดส่วน นั่นคือ Proportional Control (P-Control) ซึ่งเป็นรากฐานด่านแรกก่อนที่เราจะไปถึงสุดยอดสมการอย่าง PID Controller รอติดตามกันได้เลยครับ!
ต้องการที่ปรึกษาด้านการออกแบบระบบควบคุม (Control Systems), หุ่นยนต์อัตโนมัติ (Robotics) หรือพัฒนาระบบ Automation ขั้นสูงให้กับโรงงานของคุณ? ทีมงาน WP Solution พร้อมให้บริการออกแบบและติดตั้งระบบแบบครบวงจร ดูรายละเอียดบริการของเราได้ที่: www.wpsolution2017.com หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p