Prototype ESP32 DAC Control DC Power Supply 0-20V/1A

สำหรับโครงงานนี้เป็นการใช้บอร์ด NodeMCU ESP32 ในการควบคุมแหล่งจ่ายไฟเลี้ยงกระแสตรงด้วยฟังก์ชั่นการแปลงสัญญาณดิจิตอลเป็นอะนาลอก (DAC : Digital to Analog Converter) ที่มีอยู่ภายในชิฟของบอร์ด NodeMCU ESP32 โดยจะให้ NodeMCU ESP32 สร้างแรงดันอ้างอิง (Vref) ที่ขา D25 (ที่มี DAC CH1) ด้วยการเขียนโปรแกรมคำสั่งตามที่ต้องการ โดยแรงดันอ้างอิงที่ได้นี้จะป้อนให้กับออปแอมป์เพื่อเปรียบเทียบแรงดันเอาต์พุต (Vo) ซึ่งเป็นสัญญาณป้อนกลับสำหรับควบคุมแรงดันเอาต์พุตให้คงที่

ในรูปที่ 1 เป็นการต่อวงจรสำหรับทดลองโครงงานบนเบรดบอร์ด เพื่อให้ง่ายสำหรับในการปรับปรุงแก้ไขวงจร ซึ่งในการทดลองนี้จะใช้แหล่งจ่ายไฟเลี้ยง 2 ส่วนคือ ส่วนแรกจ่ายให้กับ NodeMCU ESP32 ที่แรงดันเท่ากับ 5V (USB Port) และส่วนที่ 2 จ่ายให้กับวงจรขับกำลังทรานซิสเตอร์ของแหล่งจ่ายไฟเลี้ยงจะมีค่าประมาณ 25V ที่ตำแหน่ง Vi ดังแสดงในรูปที่ 2

สำหรับวงจรในรูปที่ 2 จะแบ่งออกเป็น 4 ส่วนคือ ส่วนแรกเป็นบอร์ดควบคุม NodeMCU ESP32 (MCU1) สำหรับสร้างแรงดันอ้างอิงตามที่กำหนดด้วยการเขียนโปรแกรมคำสั่ง (ไปยังขา 2 ของออปแอมป์) ส่วนที่ 2 ที่ออปแอมป์ U1 จะทำหน้าที่เปรียบเทียบแรงดัน (Voltage comparator) ระหว่างขาอินพุต 2 (INV) และขาที่ 3 (Non-INV) เพื่อส่งสัญญาณควบคุมการทำงาน ส่วนที่ 3 เป็นวงจรขับกำลังที่ประกอบด้วยทรานซิสเตอร์ Q1 และ Q2 โดย Q1 จะทำหน้าที่ขับเบื้องต้น และ Q2 จะทำหน้าที่ขับกำลังไปยังเอาต์พุต (Vo) สุดท้ายส่วนที่ 4 ที่ตำแหน่ง VR1 จะทำหน้าที่รับสัญญาณป้อนกลับ (VFB) ทางด้านเอาต์พุต (ไปยังขา 3 ของออปแอมป์) เพื่อควบคุมค่าแรงดันให้ค่าคงที่
/* Prototype ESP32 DAC Control DC Power Supply 0-20V/1A MCU: ESP32-WROOM-32 Voltage set: 0-20V DAC: CH1 Pin 25 Dev V.0 by : www.electronicsdna.com */ #define DAC_CH1 25 // DAC1 #define DAC_CH2 26 // DAC2 void setup() { // --- // } void loop() { dacWrite(DAC_CH1, 0); // OUTPUT 0V delay(5000); dacWrite(DAC_CH1, 50); // OUTPUT 5V delay(5000); dacWrite(DAC_CH1, 100); // OUTPUT 10V delay(5000); dacWrite(DAC_CH1, 150); // OUTPUT 15V delay(5000); dacWrite(DAC_CH1, 200); // OUTPUT 20V delay(5000); }
โปรแกรม Arduino สำหรับใช้ในการสร้างแรงดันอ้างอิง (Vref) ของบอร์ดควบคุม NodeMCU ESP32 จะมีให้ใช้งานที่ตำแหน่งขา D25 และ D26 (DAC : Digital to Analog Converter) โดยในโครงงานนี้จะใช้ขา D25 เพียง 1 ช่อง ด้วยคำสั่ง #define DAC_CH1 25 สำหรับกำหนดการใช้งานที่ขา D25 และคำสั่ง dacWrite(DAC_CH1, X); จะทำหน้าที่กำหนดปริมาณค่าแรงดันเอาต์พุตที่ต้องการในช่วง (0-255) ระดับ และในการทดลองนี้จะโปรแกรมกำหนดค่า X= 0, 50, 100, 150 และ 200 เพื่อให้แรงดันที่เอาต์พุตของแหล่งจ่ายไฟเลี้ยงมีค่า 0V, 5V, 10V, 15V, 20V ตามลำดับ




ในรูปที่ 3 ถึงรูปที่ 6 แสดงผลการทดลองที่ได้เมื่อทดลองให้โปรแกรมเปลี่ยนค่าตัวแปร X ที่คำสั่ง dacWrite(DAC_CH1, X); และวัดค่าแรงดันเอาต์พุตของแหล่งจ่ายไฟเลี้ยงที่เกิดขึ้น โดยที่เอาต์พุตจะต่อโหลดตัวต้านทานขนาด 20โอห์ม 20 วัตต์ไว้ ซึ่งค่าแรงดันเอาต์พุตของแหล่งจ่ายไฟเลี้ยงที่วัดได้มีค่าคลาดเคลื่อนเล็กน้อย เราสามารถปรับแต่งได้ด้วยการปรับที่ตำแหน่ง VR1 (รูปที่ 2) ให้ได้ตามที่ต้องการ

สำหรับโครงงานการใช้บอร์ด NodeMCU ESP32 ควบคุมแหล่งจ่ายไฟเลี้ยงกระแสตรงด้วยฟังก์ชั่นการแปลงสัญญาณดิจิตอลเป็นอะนาลอกนี้ เป็นการประยุกต์ใช้งานอีกแบบหนึ่งสำหรับวงจรดีซี ทู ดีซี คอนเวอร์เตอร์แบบเชิงเส้น (Linear Regulator) นอกจากนี้เราสามารถกำหนดให้ NodeMCU ESP32 สร้างสัญญาณในรูปแบบต่างๆ อีกหลายแบบสำหรับการนำไปใช้งานต่างๆ เช่น การสร้างสัญญาณไซน์, สัญญาณสามเหลี่ยม, สัญญาณฟันเลี่อย ด้วยการใช้ DAC เพียง 1 ช่อง หรือการสร้างสัญญาณให้สามารถเลื่อนเฟสกันได้จาก DAC ทั้ง 2 ช่อง โดยสามารถดูข้อมูลเพิ่มเติมจากลิ้งก์เว็บไซต์อ้างอิงท้ายโครงงานนี้ครับ.
Reference
- https://www.electronicwings.com/esp32/dac-digital-to-analog-converter-esp32
- https://deepbluembedded.com/esp32-dac-audio-arduino-examples/
- https://www.xecor.com/blog/esp32-pinout-diagram
- https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/dac.html
- https://www.ewskills.com/task/phase-shifted-sine-wave/209/solution
- https://dronebotworkshop.com/esp32-dac/
- https://www.hackster.io/daniel232/esp32-generate-two-180-phase-shifted-pwms-c1010f