Friday, February 14, 2020

របៀបប្រើប្រាស់ PWM ជាមួយ Arduino


PWM មានពាក្យពេញថា "Pulse Width Modulation" ដែលប្រើក្នុងគោលបំណងបម្លែងពីរលកសញ្ញាឌីជីថល(digital)ទៅជាសញ្ជាអាណាឡូក(Analog) ដោយប្រើវិធីបិទបើកៗ(on-off)អោយបង្កើតបានជារលកសញ្ញាការ៉េ(square wave)។ PWM ប្រើប្រាស់ច្រើនក្នុងការបញ្ជាល្បឿនរបស់ម៉ូទ័រ កម្រិតពន្លឺ និងការគ្រប់គ្រងកម្រិតតង់ស្យុងផ្សេងៗ។

វីធីបិទបើក(on-off)នេះបង្កើតទៅជារលកសញ្ញាការ៉េដែលពេលបើក 5V និងពេលបិទ 0V ដែលធ្វើឡើងក្នុងល្បឿនលឿនប្រហែល 500Hz មាន័យថាបិទបើក500ដងក្នុងមួយវិនាទី។ 


នៅក្នុង Arduino ប្រើប្រាស់ Timer 8 bit ដើម្បីបញ្ចេញរលកសញ្ញា PWM ធ្វើអោយវាមានតម្លៃពី 0 - 255 ដែលមានន័យថាស្មើនឹង 0V នៅតម្លៃ 0 និង 5V ពេញនៅតម្លៃ 255 (ដូចរូបខាងលើ)។ 
ក្នុងការសរសេរកូដគេប្រើប្រាស់ analogWrite(pin, PWMvalue) ដើម្បីបញ្ជាជើងណាមួយអោយបញ្ចេញរលក PWM។

ឧ. analogWrite(3, 64); ​   //ជើងទី៣ បញ្ចេញរលកPWMដូចរូបរលកទី២ខាងលើ

នៅលើ Arduino ជើង PWM ជាប្រភេទជើង digital (ប្រើ analogWrite() តែក្នុងករណីជាPWM) ដែលបានបញ្ជាក់មកជាមួយ មិនមែនគ្រប់ជើងសុទ្ធតែប្រើបាននោះទេ។ ជាក់ស្តែងនៅលើ Arduino UNO មានជើង PWM ចំនួន 6 ដែលបានបញ្ជាក់មកថាអាចប្រើបាន (3, 5, 6, 9, 10, 11) ដែលបានបញ្ជាក់ជាមួយសញ្ញ(~)។ 


យើងអាចធ្វើការសាកល្បងបានដោយប្រើ PWM អោយគ្រប់គ្រងពន្លឺរបស់ LED ដូចរូបខាងក្រោម។


សរសេរកូដអោយ LED ភ្លឺឡើងបន្តិចម្តងៗ ហើយរលត់វិញបន្តិចម្តងៗ និងសារឡើងវិញ៖

  1. void setup() {  
  2.   pinMode(11);  
  3. }  
  4.   
  5. void loop() {  
  6.   for(int i=0; i<=255, i++){  
  7.     analogWrite(11, i);  
  8.     delay(200);  
  9.   }  
  10.     
  11.   for(int i=255; i>=0, i--){  
  12.     analogWrite(11, i);  
  13.     delay(200);  
  14.   }  
  15. }  

ឯកសារយោង៖ https://www.arduino.cc/en/tutorial/PWM