Getting Started with the Raspberry Pi Pico Microcontroller and Arduino IDE [EP4]

ในตอนที่ 4 เป็นการทดลองเกี่ยวกับการสร้างสัญญาณพัลซ์วิดธ์มอดูเลตชั่น (PWM Signal) ของบอร์ด Raspberry Pi Pico โดยในการทดลองนี้จะใช้ขา GPIO 16 ในการส่งสัญญาณพัลซ์วิดธ์มอดูเลตชั่นออกมา สำหรับนำไปใช้งานในด้านต่างๆ ทั้งนี้การส่งสัญญาณพัลซ์วิดธ์มอดูเลตชั่นออกมานั้น เราสามารถนำไปควบคุมการทำงานโหลดต่างๆ ได้มากมายเช่น มอเตอร์ไฟฟ้ากระแสตรง, การปรับความค่าร้อน, การปรับความสว่างของแสงและแหล่งจ่ายกำลังไฟฟ้าต่างๆ เป็นต้น

รูปที่ 1 ตำแหน่งขาเอาต์พุต PWM ที่ใช้ในการทดลอง

ในการทดลองนี้จะเป็นการเขียนโปรแกรมด้วยคำสั่งพื้นฐานทั่วไป เพื่อให้บอร์ด Raspberry Pi Pico สร้างสัญญาณพัลซ์วิดธ์มอดูเลตชั่นออกมาได้ และสามารถปรับขนาดความกว้างพัลซ์วิดธ์มอดูเลตชั่นได้ตามที่กำหนด ซึ่งนอกจากคำสั่งพื้นฐานแล้ว ยังมีคำสั่งเพิ่มเติมเพื่อกำหนดลักษณะพัลซ์วิดธ์มอดูเลตชั่นได้ เช่น การกำหนดความถี่ของสัญญาณพัลซ์วิดธ์มอดูเลตชั่น การกำหนดความละเอียดในการปรับขนาดพัลซ์วิดธ์มอดูเลตชั่น เป็นต้น โดยตัวอย่างโปรแกรมในการทดลองดังแสดงข้างล่าง

int SETpwm = 0;

void setup() {  
  Serial.begin(9600);
  pinMode(16, OUTPUT);  // PWM Pin 
  
  //--- SET PWM Signal --- 
  // analogWriteFreq(1000);
  // analogWriteRange(65535);
  // analogWriteResolution(16);
}

void loop() {
  
      Serial.println(" PWM = 0");
      SETpwm = 0;                
      analogWrite(16,SETpwm);    
      delay(500);
       
      Serial.println(" PWM = 64");
      SETpwm = 64;                
      analogWrite(16,SETpwm);    
      delay(500);

      Serial.println(" PWM = 128");
      SETpwm = 128;              
      analogWrite(16,SETpwm);    
      delay(500);

      Serial.println(" PWM = 192");
      Serial.println(" ");
      SETpwm = 192;               
      analogWrite(16,SETpwm);    
      delay(500);      
    }      

ในโปรแกรมทดลองสร้างสัญญาณพัลซ์วิดธ์มอดูเลตชั่น จะใช้คำสั่งการสร้างสัญญาณที่ความถี่เริ่มต้น (Default value) จากนั้นการกำหนดความกว้างของพัลซ์วิดธ์มอดูเลตชั่นจะใช้คำสั่ง analogWrite(16,SETpwm); ที่ตัวแปร SETpwm โดยจะเปลี่ยนค่าตั้งแต่ 0, 64, 128 และ 192 ตามลำดับ ซึ่งในการทดลองจะสังเกตได้จากความสว่างของแอลอีดีที่มาต่อระหว่างขา GPIO 16 และ GND

วิดีโอแสดงผลการทดลองความสว่างของแอลอีดีที่ต่อระหว่างขา GPIO 16 และ GND
Raspberry Pi Pico Microcontroller and Arduino IDE
รูปที่ 2 การแสดงข้อความ PWM = 0, 64, 128, 192 เมื่อโปรแกรมทำงาน
Raspberry Pi Pico Microcontroller and Arduino IDE
รูปที่ 3 การทดลองโปรแกรมคำสั่ง Arduino และวงจรที่เว็บไซต์ https://wokwi.com

Raspberry Pi Pico PWM : https://wokwi.com/projects/470735923773973505

รูปที่ 3 เป็นการทดลองโปรแกรมคำสั่ง Arduino และวงจรที่เว็บไซต์ https://wokwi.com เพื่อสังเกตการทำงานอีกครั้งและแชร์ผลการทดลองให้กับผู้อ่าน โดยในการทดลองจะเห็นระดับความสว่างที่แตกต่างกันและการแสดงข้อความ PWM = 0, 64, 128, 192 ตามลำดับ และผลการทดลองที่ได้เป็นไปอย่างถูกต้อง สำหรับในการทดลองสร้างสัญญาณพัลซ์วิดธ์มอดูเลตชั่นกับบอร์ดควบคุม Raspberry Pi Pico ครั้งนี้ จะเป็นพื้นฐานสำหรับนำไปใช้งานในรูปแบบต่างๆ ต่อไป

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://projecthub.arduino.cc/angadiameya007/getting-started-with-raspberry-pi-pico-in-arduino-ide-5e13ee
  6. https://th.cytron.io/p-edu-project-and-innovation-kits-for-pico-w
  7. https://wokwi.com/pi-pico
  8. https://thonny.org/