Lesson 2.2 – PWM for Motor Control

ပြီးခဲ့တဲ့ သင်ခန်းစာမှာ Analog Input ကို သုံးနည်းကို ပြခဲ့ပါတယ်။ Analog Input ရှိရင် Analog Output ရော မရှိဘူးလားလို့ သိချင်ကြမှာပါ။ Arduino မှာ 0 to 5V အနဲအများ ပြောင်းပြီး ထုတ်ပေးနိုင်တဲ့ Output Pin တော့ မရှိပါဘူး။ ဒါပေမယ့် အဲဒီလိုမျိုးဆန်ဆန် ဖြစ်အောင် 5V ကို ဖွင့်ကာပိတ်ကာ လုပ်ပေးတဲ့ Pulse Width Modulation (PWM) Output Pin တစ်ချို့တော့ ရှိပါတယ်။ 5V ကို စက္ကန့်ဝက်ဖွင့်လိုက်၊ စက္ကန့်ဝက်ပိတ်လိုက်ဆိုရင် တစ်ဝက်ပဲ အားရှိတာမို့ 2.5V လို ဖြစ်သွားပါမယ်။ ဒါက ဥပမာ အဖြစ် ပေးတာပါ။ တကယ့်လက်တွေ့မှာတော့ တစ်စက္ကန့်မှာ အခါ ၅၀၀လောက် အဖွင့်အပိတ် လုပ်ပေးနိုင်ပါတယ်။ (PWM frequency က 500Hz ပါ။) PWM မှာ ဘယ်လောက်ကြာကြာဖွင့်သလဲ ဘယ်လောက်ကြာကြာပိတ်သလဲဆိုတာကို duty cycle လို့ ခေါ်ပါတယ်။ ပထမဆုံးပုံမှာ PWM ရဲ့ duty cycle တွေပေါ်မူတည်ပြီး အဖွင့်အပိတ် ဘယ်လို ဖြစ်သလဲ ဆိုတာ ပြထားပါတယ်။

PWM ကို LED အလင်းအမှိန်လုပ်ဖို့၊ DC motor အသေးလေးတွေကို အနှေးအမြန်မောင်းဖို့ စတာတွေမှာ သုံးလို့ ရပါတယ်။ ဒီသင်ခန်းစာမှာတော့ UnoArduSim မှာပါတဲ့ Motor ကို အနှေးအမြန် PWM နဲ့ ထိန်းကြည့်ပါမယ်။ Arduino Uno မှာ PWM အဖြစ်သုံးလို့ ရတဲ့ Pin တွေကတော့ ~ နဲ့ ပြထားတဲ့ Digital I/O Pin 3, 5, 6, 9, 10, 11 တို့ ဖြစ်ပါတယ်။

Configure -> I/O Devices menu ကနေပြီး 1 Analog Slider Pair နဲ့ 1 DC Motor ကို Lab Bench Pane ပေါ် တင်လိုက်ပါ။ ပြီးရင် Analog Slider တစ်ခုကို A0 နဲ့ ဆက်လိုက်ပါ။ Motor ရဲ့ PWM နေရာမှာ 03 လို့ ရိုက်ထည့်ပြီး Pin 3 နဲ့ ဆက်လိုက်ပါ။ PWM output ပေးချင်ရင် analogWrite( ) ကို သုံးရပါတယ်။ သုံးချင်တဲ့ pin မှာ 0 to 255 တန်ဖိုးကို ထည့်ပေးရင် PWM ထွက်လာပါမယ်။ 255 က 100% duty cycle အမြဲ On နေမှာ ဖြစ်ပြီး၊ 0 ဆိုရင် 0% duty cycle လုံးဝ Off နေမှာဖြစ်ပါတယ်။ 128 ဆိုရင် 50% duty cycle စသဖြင့် ကြားထဲက တန်ဖိုးတွေကို အချိုးကျ ပြောင်းလဲယူသွားပါတယ်။

Analog Slider ကို ရွှေ့ပြီး မော်တာကို အနှေးအမြန် ပြောင်းမှာမို့ Analog Slider တန်ဖိုးကို ဖတ်ပြီး Motor PWM တန်ဖိုးကို ပေးရပါမယ်။ analogRead( ) က ဖတ်လို့ ရမယ့် တန်ဖိုးက 0 to 1023 ဖြစ်ပြီး analogWrite( ) မှာ 0 to 255 ပဲ ရတာမို့ ဖတ်လို့ ရတဲ့ တန်ဖိုးကို 4 နဲ့ စားရပါမယ်။

နောက်ဆုံးပုံမှာ ပြထားတဲ့အတိုင်း code ရေးပြီး run လိုက်ရင် မော်တာ အနှေးအမြန်ကို ထိန်းနိုင်မယ့် Arduino Sketch လေး ရပါပြီ။

222

223

224

225