Fan speed using Fuzzy logic controller based on Arduino UNO

โครงงานนี้เป็นการควบคุมความเร็วของพัดลมขนาดเล็ก ที่เราจะเห็นคล้ายกับพัดลมในซีพียูคอมพิวเตอร์ทั่วไป ซึ่งมอเตอร์ลักษณะนี้จะเป็นมอเตอร์ไฟฟ้ากระแสตรงแบบไม่ใช้แปรงถ่าน (BLDC Motor) แต่ที่เป็นจุดเด่นอีกอย่างหนึ่งในตัวมอเตอร์นี้คือ จะมีสัญญาณที่เกิดขึ้นจากการหมุน (Tachogenerator signal) โดยจะเป็นสัดส่วนระหว่างความเร็วรอบต่อความที่ถี่เกิดขึ้นในลักษณะพัลซ์สี่เหลี่ยม และเราสามารถนำสัญญาณที่เกิดขึ้นนี้มาตรวจสอบความเร็วรอบ สำหรับการป้อนกลับ (Feedback Signal) เพื่อให้ตัวประมวลผลต่างๆ เช่น บอร์ด Arduino สามารถควบคุมความเร็วได้ตามต้องการ

จากรูปข้างบนที่ 1 จะเป็นลักษณะของบอร์ดทดลองและตัวพัดลมที่ใช้ในการทดลอง ซึ่งในการทดลองนี้จะใช้ตัวประมวลผล Arduino UNO และใช้วงจรขับกำลังให้กับพัดลม (บอร์ดทดลองอเนกประสงค์สีเหลือง) ด้วยเพาเวอร์มอสเฟตชนิด P-channel และใช้วิธีสวิตชิ่งที่ความถี่สูงเพื่อสร้างแรงดันเอาต์พุตให้สามารถความคุมความเร็วของตัวพัดลม

รูปที่ 2 ตัวพัดลมที่ใช้จะเป็นแบบไม่ใช้แปรงถ่าน BLDC Motor ขนาด 12V/0.55A และมีสายไฟสำหรับให้เชื่อมต่อด้วยกัน 3 เส้น คือสีแดงจะเป็นไฟเลี้ยงขั้วบวก สายสีดำจะเป็นขั้วลบ ซึ่งทั้งสองเส้นนี้จะเป็นไฟเลี้ยงโดยตรงให้กับตัวมอเตอร์พัดลม และสายไฟเส้นสีขาวจะเป็นสายสัญญาณพัลซ์ จะต้องต่อกับตัวต้านทานพูลอัพประมาณ 1K-6.8K กับไฟเลี้ยง 5V เพื่อสร้างเป็นสัญญาณพัลซ์ให้เกิดขึ้น

รูปที่ 3 สำหรับบอร์ด Arduino UNO ที่ใช้ในการประมวลผลนั้น จะทำหน้าที่รับสัญญาณพัลซ์ที่เกิดขึ้นจากตัวพัดลม ซึ่งเป็นสัญญาณป้อนกลับของระบบเข้าที่ขา PIN2 และจะจ่ายสัญญาณควบคุมกำลังในลักษณะของพัลซ์วิดมอดูเลต (PWM signal) ความถี่สูงเช่นกัน เพื่อปรับความเร็วของพัดลมให้ได้ค่าที่ต้องการ และไฟเลี้ยงของพัดลมนั้นจะนำมาจากจุดต่อที่ตำแหน่ง VIN จากตัวบอร์ดด้วยเช่นกัน

รูปที่ 4 ลักษณะการต่อวงจรบนบอร์ดอเนกประสงค์ในส่วนของการควบคุมกำลังให้กับตัวพัดลม และส่วนของการสร้างสัญญาณพัลซ์จากตัวพัดลม (Tachogenerator signal) สำหรับป้อนกลับให้กับตัวประมวลผล

ในรูปที่ 5 แสดงวงจรในการทดลองจะเป็นการต่อใช้งานสำหรับปรับความเร็วให้กับตัวพัดลม โดยจะใช้ไฟเลี้ยง (VCC) ให้กับวงจรที่ 12V/2A และจะสังเกตว่าที่ตัวมอสเฟต Q2, D1, L1 และ C1 จะต่อกันในลักษณะของวงจรลดทอนแรงดัน (Buck Converter) โดยค่าแรงดันที่เอาต์พุตจะถูกกำหนดด้วยสัญญาณพัลซ์วิดธ์มอดูเลตชั่น (PWM Signal) จากบอร์ดประมวลผล Arduino ที่ขา 3

จากในรูปที่ 6 จะผลการทดลองของการควบคุมความเร็วของพัดลมโดยปรับค่า SP (Setpoint) เท่ากับ 70 ค่าสัญญาณป้อนกลับ PV (Process Value) มีค่าใกล้เคียง 70 และค่าความผิดพลาด Err ที่เกิดขึ้นเมื่อระบบกำลังทำงาน

รูปที่ 7 ถัดมาเป็นการเปลี่ยนค่า SP (Setpoint) ใหม่เป็น 100 เพื่อทดสอบการในลักษณะเดิมและสังเกตการตอบสนองของระบบ ซึ่งจะเห็นค่า Err มีค่าผิดพลาดไม่เกิน 2%

รูปที่ 8 ในลักษณะเดียวกันด้วยการเปลี่ยนค่า SP (Setpoint) ใหม่เป็น 125 ซึ่งค่านี้จะทำให้ความเร็วรอบของพัดลมจะเพิ่มสูงขึ้น โดยสังเกตจากค่า PWM ที่อยู่ใกล้กับค่า Err ส่วนข้างล่างนี้จะเป็นวิดีโอแสดงการทดสอบการทำงานต่างๆ ที่เกิดขึ้น
Referance
- https://www.mouser.de/pdfdocs/BuckConverterDesignNote.pdf
- https://www.baldengineer.com/pwm-3-pin-pc-fan-arduino.html
- https://www.site.uottawa.ca/~petriu/Fuzzy-tutor.PDF
- https://www.researchgate.net/publication/225872318_Fundamentals_of_Fuzzy_Logic_Control_-_Fuzzy_Sets_Fuzzy_Rules_and_Defuzzifications
- https://research.iaun.ac.ir/pd/naghsh/pdfs/UploadFile_4810.pdf
- https://en.wikipedia.org/wiki/Fuzzy_control_system
- http://www.eletrica.ufpr.br/graduacao/e-books/Fuzzy%20Logic.pdf
- https://cse.iitkgp.ac.in/~dsamanta/courses/sca/resources/slides/FL-04%20FLC.pdf
- https://www.youtube.com/watch?v=R4TPFpYXvS0
- https://www.youtube.com/watch?v=ZirxWdOcn8c
- https://www.youtube.com/watch?v=OnJRw2EP3_g
- https://www.youtube.com/watch?v=w846DgOGAW8&t=4s
- https://www.youtube.com/watch?v=RDJWlMiPSWQ&t=83s