September 22, 2021

TechXlk

All About Technology

Motor Driver | TechXlk Arduino Tutorials – 17

motor driver arduino tutorial 17 __techXlk__

හොදයි අද අපි කතා කරන්න යන්නේ motors ගැන​.අපිට motors control කරන්න Arduino වලදී භාවිතා කරන්නේ motor driver එකක් හෝ motor shield එකක්.

 motor shield

motor driver

අපිට motor driver එකෙන් motors 2ක් කරන්න පුලුවන්.එතකොට motor shield එකෙන් motors වැඩි ගණනක් හා servo motors control කිරීමේ පහසුකම තියනවා.

මම අද කතා කරන්නේ motor driver එක ගැන​.

(https://tse1.mm.bing.net/th/id/OIP.rqUAujH5kEesLvTf03VFPQHaGO?w=262&h=219&c=7&o=5&pid=1.7)

ඔයාලට පේනවා ඇති මම motor driver එකේ pins හා connectors වල නම් කළ රූප සටහනක් දලා තියනවා.

මෙකේ Gnd එකට Arduino board එකේ Gnd එක set කරන්න  ඕනි.අපි මේකට Arduino board එකෙන්ම විදුලිය සපයනවා නම් ඔයාලට පුලුවන් Arduino board එකේ 5V එක motor driver  එකේ 5V එකට set කරන්න​.ඔයා external power source එකක් ඒ කියන්නේ 5V වලට වඩා වැඩියෙන් දෙනවා නම් ඔයාට පුලුවන් එකේ 12V pin එක පාවිච්චි කරන්න​. ඒ වගේම ඔයා පාවිච්චි කරන power source එක 12V එකට වඩා වැඩි නම් ඔයාලට පේනවා ඇති Jumper එකක් මෙකේ තියනවා ඒක අයින් කරන්න​.

මෙකේ ena,in1,in2 යන ලෙස නම් කර ඇති pins MotorA control කිරීමටත්  enb,in3,in4 යන ලෙස නම් කර ඇති pins MotorB control කිරීමටත් තමයි යොදා ගන්නේ. මේ motor driver එකේ ena හා enb pins යොදා ගන්නේ motors වල වේගය control කරන්නයි. එතකොට in1,in2 හා in3,in4 යන pins පාවිච්චි කරන්නේ motors කැරකෙන දිශාව මාරු කරන්නයි.

ඒ වගේම ena,enb pins වලට arduino board එකේ pwm pins set කරන්න ඕනි.

මම මෙකේ pins set කරලා තියන විදිහ පහළ වගුවේ දාලා තියනවා.

Motor driver Arduino board (digital pins)
ena 5       (pwm)
enb 6       (pwm)
In1 12
In2 13
In3 7
In4 8

ඔයාලටත් පුලුවන් මේ විදිහට pins set කරලා පහළ තියන sketch එක upload කරලා බලන්න​.  එතකොට ඔයාලට පුලුවන් motors 2ම එකම දිශාවකට කැරකෙනවා බලාගන්න පුලුවන්.ඒත් motors දිශා 2ට කැරකෙනවා නම් එක් motor එකක අග්‍ර මාරු කරලා බලන්න. එතකොට එකම දිශාවට motors කැරකෙනවා බලාගන්න පුලුවන්.

int ena = 5;
int enb = 6;
int ma1 = 12;
int ma2 = 13;
int mb1 = 7;
int mb2 = 8;

void setup()  {
  
  pinMode(ena, OUTPUT);
  pinMode(enb, OUTPUT);
  pinMode(ma1, OUTPUT);
  pinMode(ma2, OUTPUT);
  pinMode(mb1, OUTPUT);
  pinMode(mb2, OUTPUT);
}

void loop()  {
  analogWrite(ena,150);
  analogWrite(enb,150);
  digitalWrite(ma1,HIGH);
  digitalWrite(ma2,LOW);
  digitalWrite(mb1,HIGH);
  digitalWrite(mb2,LOW);
}

ඔයාලට පුලුවන් motors වල speed එකට දෙන්න පුලුවන් උපරිම අගය 255යි.

ඔයාලට පුලවන් මම දීලා තියන code වලින් ඉස්සරහට ,පිටිපස්සට,දකුණට​,වමට​,නැවැත්වීම ආදී motors 2 control ලෙස කරන්න​.

ඔයාලම මේ codes ගහලා test කරලා බලන්න​.ඊට පස්සේ ඔයාලම තනියම​ codes ගහලා test කරලා බලන්න​.ඒ වගේම මම මෙතන දාලා නැති, motors ප්‍රතිවිරුද්ධ දිශාවලට කැරකෙන විදිහටත් codes ගහලා බලන්න​.

හොඳයි අද අපි කතා motors කලේ ගැන.එතකොට අපි ඊළග ලිපියෙන් කතා කරන්න බලාපොරොත්තු වෙන්නේ servo motors ගැන. robotics වලට ගොඩක් වැදගත් වෙනවා මේ part එක​.