Seeeduino XIAO Microcontroller (LAB3)

การทดลองที่ 3 เป็นการใช้คำสั่งพื้นฐานมาประยุกต์ใช้งานสำหรับการปรับความเร็วให้กับมอเตอร์กระแสตรง (DC Motor) โดยเราจะใช้เพาเวอร์มอสเฟตเป็นตัวขับกำลังให้กับมอเตอร์ รวมทั้งใช้ออปโต้คัปเปิ้ลในการรับสัญญาณควบคุมจากบอร์ด Seeeduino XIAO และทำหน้าปรับขนาดสัญญาณขับให้เหมาะสมสำหรับเพาเวอร์มอสเฟต

Seeeduino XIAO Microcontroller
รูปที่ 1 มอเตอร์กระแสตรงสำหรับทดลอง

รูปที่ 1 เป็นลักษณะของมอเตอร์กระแสตรงที่ใช้ในการทดลองขนาด 12V/2A สำหรับปรับความเร็วรอบให้กับตัวมอเตอร์ ซึ่งสำหรับการทดลองนี้เราสามารถใช้มอเตอร์แบบอื่นๆ ได้ช่วง 12V-20V/5A เพื่อความยืดหยุ่นสำหรับเลือกใช้

Seeeduino XIAO Microcontroller
รูปที่ 2 แสดงโปรแกรมที่ใช้ทดลอง

รูปที่ 2 เป็นลักษณะของการเขียนโปรแกรมสำหรับควบคุมความเร็วรอบให้กับมอเตอร์ ซึ่งเป็นการทดสอบการใช้งานโปรแกรมและวงจรที่ออกแบบให้สามารถใช้งานร่วมกัน ว่าสามารถใช้งานได้อย่างถูกต้องและเราสามารถดูข้อมูลการควบคุมผ่าน Serial Monitor ได้อีกทางหนึ่ง

/* 
 Seeeduino XIAO Microcontroller LAB3
 DC Motor Speed Control
 Date : 31-5-64
 */ 

 int ledPin = 2;     // D2  PWM Signal
 int sensorPin = A1; // D1  Pin ADC A1

 void setup() {
   pinMode(ledPin, OUTPUT);
   SerialUSB.begin(115200);
 }

 void loop() {  
 int sensorValue = analogRead(sensorPin);
 SerialUSB.print(" ADC Read = ");
 SerialUSB.println(sensorValue); 
 analogWrite(ledPin,(sensorValue/4));  // fpwm = 733Hz
 delay(100);  

 // pwm(ledPin, 3000, sensorValue);   // 3kHz, Duty=50% Signal 
 // delay(100);   

 }

โปรแกรมการทำงานสามารถอธิบายการทำงานคร่าวๆ คือ 2 บรรทัดแรกเราจะกำหนดค่าตัวแปรสำหรับขารับสัญญาณอะนาลอกอินพุตที่ขา A1 (D1) และขาส่งสัญญาณพัลซ์วิดธ์มอดู เลตชั่นที่ขา D2 จากนั้นเราจะมากำหนดอัตราความเร็วของการสื่อสารไว้ที่ 115200 และกำหนดขา D2 ให้เป็นแบบเอาต์พุต

ถัดลงมาจะเป็นโปรแกรมหลัก (void loop) โดยบรรทัดแรกจะทำหน้ารับค่าสัญญาณอินพุตจากตัวต้านทานปรับค่าและค่าที่ได้ จะถูกเก็บไว้ที่ค่าตัวแปร sensorValue จากนั้นโปรแกรมก็ส่งค่าที่ได้ไปยังการแสดงผล Serial Monitor ด้วยคำสั่ง SerialUSB.println(sensorValue); เมื่อส่งค่าไปแสดงผลแล้วจะนำค่าเดิมนี้ไปกำหนดการสร้างสัญญาณพัลซ์วิดธ์มอดูเลตด้วยคำสั่ง analogWrite(ledPin,(sensorValue/4)); ซึ่งการสร้างสัญญาณพัลซ์วิดธ์มอดูเลตอาจจะใช้คำสั่งที่เพิ่มให้หลังคอมเม้น (//) 2 บรรทัดก็ได้ครับ

Seeeduino XIAO Microcontroller
รูปที่ 3 วงจรที่ออกแบบและใช้ในการทดลอง

รูปที่ 3 เป็นวงจรที่ออกแบบขึ้นเพื่อใช้ในการทดลอง ซึ่งส่วนที่สำคัญหลักคือตัวออปโต้คัปเปิ้ล (PC817) และเพาเวอร์มอสเฟต (IRF3205) ทั้งนี้สัญญาณที่เราได้จากบอร์ดไมโครคอนโทรลเลอร์ Seeeduino XIAO จะมีค่าในช่วง 3.3Vp-p จึงต้องปรับขนาดสัญญาณใหม่ ด้วยตัวออปโต้คัปเปิ้ลและเป็นการแยกกันทางไฟฟ้า (Isolation) ระหว่างแหล่งจ่ายไฟเลี้ยงมอเตอร์และบอร์ดบอร์ดไมโครคอนโทรลเลอร์ ในส่วนของเพาเวอร์มอสเฟตจะสามารถขับกำลังมอเตอร์ได้โดยตรงและจ่ายกระแสได้สูงขึ้น

Seeeduino XIAO Microcontroller
รูปที่ 4 สัญญาณพัลซ์วิดธ์มอดูเลต (Vgs) ของเพาเวอร์มอสเฟตจากการทดลอง

รูปที่ 4 แสดงลักษณะของสัญญาณพัลซ์วิดธ์มอดูเลตที่ขาเกต (Vgs) ของตัวเพาเวอร์มอสเฟตที่เราเขียนโปรแกรม โดยจะสังเกตเห็นว่าสัญญาณจะมีช่วงเวลาของการไต่ขึ้น (tr) และไต่ลง (tf) ค่อนข้างมาก เนื่องจากใช้วงจรขับสัญญาณแบบง่ายมาใช้ในการทดลอง

Seeeduino XIAO Microcontroller
รูปที่ 5 ลักษณะของการทดลองปรับความเร็วรอบมอเตอร์

รูปที่ 4 และ 5 เป็นรูปแสดงสัญญาณขับที่ขาเกตให้กับเพาเวอร์มอสเฟตและการทดลองปรับความเร็วรอบให้กับมอเตอร์กระแสตรง โดยเราสามารถปรับความเร็วด้วยตัวต้านทานปรับค่าและวงจรส่วนอื่นจะประกอบกันอยู่บนเบรดบอร์ดใกล้ๆ เพื่อความสะดวกในการปรับปรุงแก้ไข

สำหรับการทดลองที่ 3 เป็นการใช้คำสั่งพื้นฐานทั่วไปมาประยุกต์ใช้งานในรูปแบบหนึ่ง ซึ่งเราสามารถนำแนวความคิดนี้ไปใช้สำหรับการทำโครงงานอื่นๆ ที่มีความซับซ้อนเพิ่มขึ้นและเลือกใช้คำสั่งกับโครงงานได้อย่างเหมาะสมครับ

Reference

  1. Seeeduino XIAO – Seeed Wiki (seeedstudio.com)
  2. How to Add Seeed boards to Arduino IDE – Seeed Wiki (seeedstudio.com)
  3. Grove Shield for Seeeduino XIAO with embedded battery management chip – Seeed Wiki (seeedstudio.com)
  4. https://wiki.seeedstudio.com/Seeeduino-XIAO-CircuitPython/
  5. Seeeduino XIAO_v1.0_191112.sch (seeedstudio.com)
  6. Seeeduino XIAO Expansion board – Seeed Wiki (seeedstudio.com)
  7. https://www.seeedstudio.com/Seeeduino-XIAO-Pre-Soldered-p-4747.html
  8. https://www.seeedstudio.com/Seeeduino-XIAO-Expansion-board-p-4746.html
  9. https://forum.seeedstudio.com/