วิศวกรรมการคุมลม: เย็นเจี๊ยบระดับเทพ
พวกคอมเล่นเกมหรือเซิร์ฟเวอร์แรงๆ ในสมัยนี้มันร้อนจัดจน Header พัดลมบน Motherboard ปกติเอาไม่อยู่แล้วน้อง โปรเจกต์ PC Chassis Fan Controller ตัวนี้เลยเป็น Solution แบบ DIY สายโหดที่ออกแบบมาเพื่อขับพัดลมระดับ Industrial ที่หมุนแรงถึง 4000 RPM ได้แม่นยำระดับผ่าตัด โดยใช้ Arduino Nano เป็นสมองสั่งการคู่กับ Module คุม PWM แบบ 12-bit บอกเลยว่าลืมเรื่องพัดลมกระตุกเป็นสเต็ปๆ ของคอนโทรลเลอร์กากๆ ไปได้เลย เพราะตัวนี้ให้ Airflow ที่เนียนกริบ
ขับเคลื่อนแบบโปร: PCA9685 และระบบกันช็อต
จะคุมพัดลมความเร็วสูง วงจรต้องเนี๊ยบนะน้อง:
- 12-Bit PWM Resolution: ปกติ Arduino ทั่วไปมันให้มาแค่ 8-bit (0-255) แต่เรามันสายลึก เลยจัด PCA9685 driver มาให้ จะได้ความละเอียดถึง 4,096 ระดับ อยากให้พัดลมหมุนแรงแค่ไหน หรือลดสั่นลดเสียงตรงจุดไหน ปรับได้ละเอียดกริบๆ เลยวัยรุ่น
- Tachometer Safety: สัญญาณ "FG" (RPM signal) จากพัดลมเนี่ย มันมี Noise กับพวกไฟย้อน (Back-EMF) เยอะนะ ถ้าไม่อยากให้ Board เราบินกลับเยอรมัน (พัง) พี่เลยใส่ PC817 Optocouplers เข้าไปกั้นไว้ ใช้แสงส่งข้อมูลแทน ไฟจากพัดลมจะได้ไม่วิ่งมาตบหน้า Microcontroller ของเราให้เสียหาย แยกฝั่ง Logic กับฝั่งพัดลมออกจากกันชัดเจน ปลอดภัยหายห่วง
ระบบสมองกล: ปรับเองหรือให้มันจัดการเอง เลือกเอา!
ระบบนี้เลือกโหมดได้ผ่าน SPDT switch จัดไปสองสไตล์:
- Manual Mastery: ปรับเองนักเลงพอ ใช้ Rotary Encoders 2 ตัวแยกคุมพัดลมหน้า-หลัง มีลูกเล่นกดปุ่มที่ Encoder เพื่อเลือกสเต็ปการปรับได้ด้วย (ทีละ 1, 10 หรือ 100) แล้วความเร็วที่ตั้งไว้จะถูกเซฟลง EEPROM ด้วยนะน้อง ปิดเครื่องเปิดใหม่พัดลมก็ยังจำค่าเดิมได้ ไม่ต้องมานั่งหมุนใหม่ให้เมื่อย หล่อเท่เลยงานนี้
- Thermo-Dynamic Mapping: โหมดออโต้ ใช้ Sensor วัดอุณหภูมิแบบ NTC Thermistor คอยเช็คความร้อนในเคส พี่คำนวณกราฟ "Cooling Curve" มาให้แล้ว (ใช้สูตรจาก Desmos) โดยเทียบกับอุณหภูมิเป้าหมายที่เราตั้งไว้ (ใช้ Potentiometer 10k ปรับเอา) ถ้าความร้อนขยับในช่วง 20°C ถึง 40°C พัดลมจะเร่งสปีดตามอุณหภูมิให้เองแบบเป๊ะๆ เพื่อรักษาสมดุลความเย็น
หน้าจอมอนิเตอร์: HD44780 รายงานตัว
ข้อมูลการทำงานแบบ Real-time จะโชว์บนจอ LCD 16x2 ที่ต่อผ่าน I2C Module:
- Header Line: บอกค่า PWM Duty Cycle ของพัดลมทั้งสองตัว
- Status Line: โชว์อุณหภูมิสดๆ (Celsius) คู่กับค่าที่เราตั้งไว้ (Target Set Point) เห็นปุ๊บรู้ปั๊บว่าระบบระบายความร้อนยังเอาอยู่ไหม
โปรเจกต์นี้ถือเป็นคัมภีร์เรื่อง I2C communication, Opto-isolation และการจัดการ EEPROM เลยนะ ใครอยากอัปเกรดการคูลลิ่งคอมตัวเองให้ดูโปรระดับวิศวะ ห้ามพลาดเด็ดขาด สู้งานนะน้อง!
This project is about driving 2x120mm brush less Fans using [Arduino](https://s.shopee.co.th/7fUgFAWSki) Nano, 12 bit PWM module PCA9685, [LCD](https://s.shopee.co.th/6AfsSPcAnb) HD44780+I2C module, 2 Rotary Encoders, Temperature [Sensor](https://s.shopee.co.th/7VBG2rX65j) NTC MF 52-103 and optocouplers.
To driving Fan I used 12 bit resolution PWM module PCA9685. Connected it over I2C port to Nano. To read the RPM of Fans I isolated the inputs with PC817 Optocouplers. The FG signal provides 2 pulses every 1 period.