Constant Voltage Regulation Using Fuzzy Logic Control with Raspberry Pi Pico [LEP]

บทความตอนสุดท้ายของการทดลองใช้บอร์ด Raspberry Pi Pico มาควบคุมแรงดันให้คงที่ (Constant Voltage Regulation) โดยวิธีการควบคุมแบบฟัซซี่ลอจิก (Fuzzy Logic Control) จะเป็นการทดลองการทำงานของวงจรที่ออกแบบ การทดสอบโปรแกรมการทำงานแบบฟัซซี่ลอจิก และการตอบสนองต่อโหลดที่นำมาต่อทางด้านเอาต์พุต สำหรับสังเกตการทำงานและเป็นความรู้ในการนำไปประยุกต์ใช้งานต่างๆ ต่อไป

รูปที่ 1 แสดงลักษณะของวงจรที่ใช้ในการทดลอง

ในรูปที่ 1 แสดงลักษณะของวงจรที่ใช้ในการทดลอง โดยในการทดลองจะบอร์ด Raspberry Pi Pico จ่ายสัญญาณพัลซ์วิดธ์มอดูเลตชั่น (PWM) ออกมาที่ขา GP16 จากนั้นสัญญาณพัลซ์วิดธ์มอดูเลตชั่น จะถูกฟิลเตอร์ด้วยตัวต้านทาน R2 และตัวเก็บประจุ C1 ให้เป็นแรงดันไฟฟ้ากระแสตรงที่ตำแหน่งเอาต์พุต (Vo) จากนั้นจะป้อนกลับสัญญาณ (VFB) ด้วยตัวต้านทาน R1 เข้ามาที่ขา GP26 ซึ่งเป็นขารับสัญญาณอะนาลอก (A0) เพื่อประมวลผลให้ค่าแรงดันเอาต์พุตคงที่ตามที่กำหนด

รูปที่ 2 ลักษณะของการทดลองวงจรบนเบรดบอร์ด
รูปที่ 3 ขนาดของสัญญาณพัลซ์วิดธ์มอดูเลตชั่นขณะวงจรสแตนบาย

ในรูปที่ 2 และรูปที่ 3 การทดลองที่ 1 แสดงลักษณะของการทดลองวงจรบนเบรดบอร์ดแบบง่าย จากนั้นจะวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่นที่ขา GP26 ขณะวงจรสแตนบายและสังเกตการทำงาน โดยความถี่สัญญาณพัลซ์วิดธ์มอดูเลตชั่นกำหนดไว้ที่ 35kHz สัญญาณพัลซ์วิดธ์ด้านบวกเท่ากับ 11.66uS และสัญญาณพัลซ์วิดธ์ด้านลบ 16.95uS และวัดค่าแรงดันเอาต์พุต (Vo) ได้ประมาณ 1.305V

รูปที่ 4 ค่าแรงดันเอาต์พุตเมื่อต่อโหลดเท่ากับ 3 กิโลโอห์ม
รูปที่ 5 สัญญาณพัลซ์วิดธ์ด้านบวกเท่ากับ 13.03uS

ในรูปที่ 4 และรูปที่ 5 การทดลองที่ 2 เมื่อต่อตัวต้านทานโหลดเท่ากับ 3 กิโลโอห์มที่เอาต์พุตเพื่อสังเกตการตอบสนองการทำงานของสัญญาณพัลซ์วิดธ์ด้านบวก ซึ่งจะมีค่าเท่ากับ 13.03uS และค่าแรงดันเอาต์พุตยังคงเท่ากับ 1.305V

รูปที่ 6 ค่าแรงดันเอาต์พุตเมื่อต่อโหลดเท่ากับ 1 กิโลโอห์ม
รูปที่ 7 สัญญาณพัลซ์วิดธ์ด้านบวกเท่ากับ 15.83uS

ในรูปที่ 6 และรูปที่ 7 การทดลองที่ 3 เมื่อเปลี่ยนตัวต้านทานโหลดเท่ากับ 1 กิโลโอห์มที่เอาต์พุตเพื่อสังเกตการตอบสนองการทำงานอีกครั้ง โดยขนาดของสัญญาณพัลซ์วิดธ์ด้านบวกจะมีค่าเท่ากับ 15.83uS และค่าแรงดันเอาต์พุตลดลงเล็กน้อยเท่ากับ 1.303V

// Pin Definitions
const int  SignalPWM = 16;   // PIN 16 PWM  

// System Variables
float targetVo = 80.0; // Desired Vo (e.g., in RPM or sensor ticks)
float currentVo = 0.0;  // Measured Vo from your sensor
float currentPWM = 0.0;  // Start at mid-range (0-255)

สำหรับการกำหนดค่าแรงดันเอาต์พุตให้ได้ตามที่ต้องการ สามารถเปลี่ยนค่าตัวแปรที่คำสั่ง float targetVo = 80.0; เช่น 100 หรือ 120 (โปรแกรมการทำงานทั้งหมดอยู่ในบทความนี้ คลิกที่นี่) โดยการกำหนดค่าตัวแปรเพิ่มขึ้นจะมีผลให้แรงดันเอาต์พุตเพิ่มขึ้นด้วยเช่นกัน ท้ายนี้ในการทดลองใช้บอร์ด Raspberry Pi Pico ควบคุมแรงดันให้คงที่ (Constant Voltage Regulation) โดยวิธีการควบคุมแบบฟัซซี่ลอจิก (Fuzzy Logic Control) คงพอจะเป็นแนวทางให้ผู้อ่านสามารถทดลองการทำงานด้วยตัวเองได้ง่ายขึ้นและนำไปประยุกต์ใช้งานต่างๆ ได้ตามความเหมาะสมครับ.

Reference

  1. https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html
  2. https://randomnerdtutorials.com/
  3. https://github.com/micropython/micropython/wiki
  4. https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008355-DS-1-raspberry-pi-pico-python-sdk.pdf
  5. https://en.wikipedia.org/wiki/Fuzzy_control_system
  6. https://forum.arduino.cc/t/how-make-fuzzy-logic-coding-for-arduino-uno/282381/4
  7. https://github.com/alvesoaj/eFLL
  8. https://github.com/amimaro/FuzzyLibrary
  9. https://fuzzylite.com/
  10. https://fuzzylite.com/downloads/FuzzyLite-Libraries.pdf
  11. https://www.microjpm.com/products/ad52300/
  12. https://www.tinkercad.com/dashboard
  13. https://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/
  14. https://gemini.google.com/