เกี่ยวกับโปรเจกต์นี้:
ในโปรเจกต์นี้ พี่จะมาสร้างพัดลมควบคุมอุณหภูมิด้วยเซ็นเซอร์วัดอุณหภูมิแม่นยำ LM35 กัน เราจะสามารถอ่านค่าอุณหภูมิและความเร็วพัดลมได้บนจอ LCD แบบ HD44780 (16x2) เอาล่ะ มาเริ่มกันเลย!
ภาพรวมโปรเจกต์
"Thermal-Grid" คือการสำรวจระบบ การควบคุมสภาพแวดล้อมแบบวงจรปิด และ การปรับกำลังแบบไดนามิก แบบจัดเต็ม เวลาอุณหภูมิรอบข้างแกว่งตัว ระบบทำความเย็นแบบเดิมๆ มันจะเปลืองไฟหรือไม่ก็ป้องกันการลดประสิทธิภาพของอุปกรณ์เพราะความร้อนไม่ได้ โปรเจกต์นี้เลยสร้างโหนดทำความเย็นที่ปรับความเร็วอัตโนมัติ โดยใช้เซ็นเซอร์อุณหภูมิอนาล็อก LM35 และเทคนิค การวิเคราะห์สัญญาณ PWM (Pulse-Width Modulation) ด้วยการปรับความเร็วรอบ (RPM) ของพัดลม 12V แบบแกนตามการเปลี่ยนแปลงของอุณหภูมิแบบเรียลไทม์ Thermal-Grid จะช่วยยืดอายุการใช้งานฮาร์ดแวร์ได้ดีขึ้น พร้อมทั้งยังประหยัดไฟอีกด้วย งานนี้จัดไปวัยรุ่น!
เหตุผลที่ต้องทำโปรเจกต์นี้:
ช่วงหน้าร้อนเนี่ย บางวันก็ร้อนตับแตก บางวันก็หนาวสั่น เราเลยต้องใช้ตัวควบคุมความเร็วพัดลม (Fan Regulator) มาปรับความเร็วพัดลมตามอุณหภูมิห้อง เช่น ถ้าร้อนมาก ก็หมุนปุ่มโพเทนชิโอมิเตอร์ตามเข็มนาฬิกา แต่ถ้าหนาวก็หมุนทวนเข็ม แต่น้องครับ นี่ปี 2021 แล้วนะ (โอเค พี่รู้ว่าเนื้อหาเดิมมันเขียนไว้ตอนนั้น 555) นี่คือยุคของไมโครคอนโทรลเลอร์ (อย่างบอร์ด Arduino) แล้ว และคนก็ชอบใช้พัดลมควบคุมอุณหภูมิอัตโนมัติ (พัดลมที่หมุนตามอุณหภูมิ) พี่เลยตัดสินใจทำโปรเจกต์ Temperature Controlled Fan นี้ขึ้นมา ถึงแม้ว่าในโปรเจกต์นี้พี่จะใช้พัดลม DC 12V แทนพัดลม AC 230V/50Hz ก็เถอะ แต่พี่สัญญาเลยว่าโปรเจกต์หน้าพี่จะทำเกี่ยวกับพัดลม AC จริงๆ นะ สู้งานนะน้อง!
รายการอุปกรณ์:
- Arduino nano
- จอ LCD HD44780 (16 * 2)
- เซ็นเซอร์วัดอุณหภูมิ LM35
- พัดลม CPU 12V
- MOSFET แชนแนล-N IRLZ44
- เรกูเลเตอร์ LM7805
- ทรานซิสเตอร์ BC547
- ออด (Buzzer)
- เบรดบอร์ด
- สายจัมเปอร์
- ตัวต้านทาน (Resistor) 1k
- ตัวเก็บประจุอิเล็กโทรไลต์ 100UF/25V
- ไดโอด 1N4007
- โพเทนชิโอมิเตอร์ 10K
- แบตเตอรี่ 12V
เกี่ยวกับเซ็นเซอร์ LM35:
LM35 เป็นเซ็นเซอร์วัดอุณหภูมิแบบวงจรรวมที่มีความแม่นยำ โดยให้แรงดันเอาต์พุตที่แปรผันตรงกับอุณหภูมิหน่วยเซลเซียส เซ็นเซอร์ตัวนี้หน้าตาคล้ายทรานซิสเตอร์มาก และมีให้เลือกหลายแพ็คเกจ เช่น TO-92, TO-220, TO-46 แบบโลหะ, SO-8 แต่ในโปรเจกต์นี้พี่จะใช้แบบแพ็คเกจ TO-92 นะ ด้านล่างนี้คือขาของไอซี LM35

คุณสมบัติเด่นของเซ็นเซอร์ LM35-
- ปรับเทียบโดยตรงเป็นหน่วยเซลเซียส
- มีสเกลแฟคเตอร์เชิงเส้น +10mV/°C
- วัดได้ในช่วง -55°C ถึง +150°C
- แรงดันทำงาน 4 - 30V
ถ้าอยากรู้ลึกกว่านี้ ลองไปหาดาต้าชีตอ่านเพิ่มเติมได้เลยจ้า

เจาะลึกเทคนิค
- LM35 Linearization & Precision Forensics:
- The 10mV/°C Bridge: LM35 ให้สัญญาณเอาต์พุตแบบอนาล็อกที่แปรผันเชิงเส้นกับอุณหภูมิเซลเซียส ($+10.0 \, \text{mV}/^\circ\text{C}$) ตัว ADC 10-bit ใน Arduino Nano จะทำการอ่านค่าแรงดันนี้ แต่เพื่อความแม่นยำสูงสุด เฟิร์มแวร์จะใช้คำสั่ง `analogReference(INTERNAL)` (1.1V) เพื่อเพิ่มความละเอียดการอ่านให้ได้ประมาณ 0.1°C ต่อบิต ซึ่งแม่นยำกว่าการอ่านแบบใช้แรงดันอ้างอิง 5V มาตรฐานมาก ห้ามช็อตนะตัวนี้!
- Impedance Matching: เราใส่ตัวเก็บประจุบายพาส 100nF ไว้ใกล้ขาไฟเลี้ยงของ LM35 เพื่อกรองสัญญาณรบกวนความถี่สูง ป้องกันไม่ให้สัญญาณรบกวนจากมอเตอร์ใกล้ๆ มาทำให้ค่า ADC "กระโดด"
- PWM Load-Modulation & MOSFET Switching:
- การจับมือส่งสัญญาณเข้าประตู (Gate-Drive Handshake): IRLZ44 นี่เป็น MOSFET แบบ N-Channel ระดับลอจิกเลยนะ ใช้สัญญาณ PWM 5V จาก Nano ควบคุมให้ MOSFET เข้า-ออกโซน "อิ่มตัว (Saturation)" ที่ความถี่ 490Hz วิธีนี้ทำให้รอบพัดลมเปลี่ยนได้ลื่นไหล ไม่มีปัญหาเรื่องความร้อนสูญเสียแบบที่เจอในวิธีขับแบบปรับแรงดันเชิงเส้น (variable-voltage linear drive)
- จัดการกับแรงดันย้อนกลับ (Back-EMF) และฟลายแบ็ก: เราใช้ไดโอด 1N4007 ต่อขนานกับพัดลมในทิศทางไบอัสกลับ พอสัญญาณ PWM ตกลงเป็น 0 ขดลวด (มอเตอร์พัดลม) จะสร้างแรงดันย้อนกลับสูงปรี๊ดขึ้นมา ไดโอดตัวนี้จะทำหน้าที่เป็นทางระบายที่ปลอดภัย ป้องกัน MOSFET และ Nano ของเราจากการพังทลายแบบฉับพลัน (catastrophic junction failure) ตัวนี้ห้ามช็อตนะน้อง!
- ตรรกะแบบสัดส่วน PID-Lite:
- ปรับรอบอัตโนมัติ (Adaptive RPM Scaling): เฟิร์มแวร์เราไม่ได้แค่เปิด-ปิดพัดลมธรรมดา มันใช้อัลกอริทึมแบบสัดส่วนด้วยนะ: $DutyCycle = \text{constrain}(\text{map}(\text{Temp}, \text{MinT}, \text{MaxT}, 0, 255), 0, 255)$ สูตรนี้ทำให้ระบบ "ปรับตัวเองได้ (Auto-Regulated)" คือความเร็วพัดลมจะค่อยๆ เพิ่มขึ้นตามอุณหภูมิที่สูงขึ้น เรียกว่ายิ่งร้อน ยิ่งแรง วัยรุ่นจัดไป!
วิศวกรรมและการลงมือทำ
- การจัดการสายไฟเลี้ยง (Regulated Power Rail Forensics):
- จัดการความร้อนของ 7805: เราแปลงไฟจากแบตเตอรี่ 12V ลงมาเป็น 5V สำหรับ Nano ผ่านเรกูเลเตอร์ LM7805 ใช้ตัวเก็บประจุอิเล็กโทรไลต์ขนาดใหญ่ (100uF) ตอนขาเข้าและขาออกเพื่อป้องกันไฟตกตอนพัดลมสตาร์ท ทำให้ลอจิกของไมโครคอนโทรลเลอร์นิ่งๆ ไม่กระพริบ
- จอแสดงผลบอกสถานะ (Visual HMI Telemetry): จอ LCD 16x2 จะแสดงข้อมูลวินิจฉัยแบบเรียลไทม์ ทั้งอุณหภูมิปัจจุบัน (°C) และ Duty Cycle ปัจจุบัน (%) ให้เราตรวจสอบความแม่นยำของวงจรควบคุมได้ด้วยตาเปล่า สบายใจหายห่วง
- โปรโตคอลเตือนภัยสำรอง (Secondary Alarm Protocol):
- เราใส่เบอร์เซอร์แบบขับด้วยทรานซิสเตอร์ BC547 ไว้เป็นระบบป้องกันสุดท้ายตอน "ร้อนเกินวิกฤต (Critical Overheat)" ถ้า LM35 วัดอุณหภูมิเกินค่าที่เราตั้งไว้ (เช่น 50°C) เบอร์เซอร์จะส่งเสียงสัญญาณเตือนความถี่สูงแบบกระพริบเตือนผู้ใช้ให้รู้ตัวว่าอาจเกิด "เทอร์มอลรันอะเวย์ (thermal runaway)" ได้แล้ว สู้งานนะน้อง!
ไลบรารีสำหรับเซ็นเซอร์ LM35:
ไปหาไลบรารีสำหรับเซ็นเซอร์ LM35 มาตรฐานได้จากแหล่งไลบรารี Arduino ทั่วไปนะ
ขั้นตอนทำโปรเจค:
ต่อชิ้นส่วนทั้งหมดเข้าด้วยกันตามแผนภาพวงจร (schematic) ที่ให้มา แล้วตรวจสอบการต่อทุกจุดให้ดีสองรอบ! เพราะถ้าต่อผิดแม้แต่นิดเดียว โปรเจคอาจไม่ทำงานเลยนะ จากนั้นก็เขียนโค้ดสำหรับโปรเจค ถ้ายังไม่คล่องก็คัดลอกโค้ดของพี่ไปวางในเอดีเตอร์แล้วอัปโหลดลงบอร์ดได้เลย พออัปโหลดเสร็จ ก็จ่ายไฟให้โปรเจคด้วยแบตเตอรี่ตะกั่ว-กรด 12V ได้เลยจ้า
สรุป
โปรเจค Thermal-Grid นี้แสดงให้เห็นพลังของ การควบคุมแบบฝังตัวด้วยสัดส่วน (Proportional Embedded Control) เมื่อเราเข้าใจ การแปลงสัญญาณอนาล็อกเชิงเส้น (Analog Linearization Forensics) และ การสวิตช์ PWM กระแสสูง (High-Current PWM Switching) แล้ว เราก็สามารถสร้างระบบจัดการความร้อนอัจฉริยะที่ปรับตัวเข้ากับสภาพแวดล้อมทั้งในโรงงานและบ้านได้อย่างแม่นยำและน่าเชื่อถือสุดๆ
สมดุลความร้อน: ควบคุมการระบายความร้อนแมคคาทรอนิกส์ให้อยู่หมัดด้วยเทคนิค PWM
รูปภาพผลงานของพี่:








