ආඩුඊනෝ ප්රෝග්රෑමිං Part 11 – Stepper Motor Controlling With Easydriver
ඔන්න අද අපි කතා කරන්න යන්නේ Stepper motor controlling ගැන. Stepper motor එකක් කියන්නෙත් අපි සාමාන්යයෙන් භාවිතා කරන DC motor වලම එක් ප්රභේදයක්. නමුත් සාමාන්ය DC motor එකකට වඩා වෙනස්කම් රාශියක් Stepper motor එකකට තියනවා. මේ Stepper motor එකක් සම්පූර්ණ වටයක් කැරකෙන විට steps කිහිපයක් පසු කරනු ලබනවා. මෙම Stepper motors භාවිතා කරන අවස්ථා මොනවද? අපිට අවශ්ය නම් ඉතාමත් හෙමින් මෝටර් එකක් කරකවාගන්න අන්න ඒ වැඩේට සුදුසුම මේ Stepper motors. ඉතා නිවැරදි කරකැවීමකට. ඒ කියන්නෙ නිශ්චිතවම අපිට අව්ශ්ය ප්රමාණයට මෝටර් එක rotate කරගැනීමට මේ Stepper motors භාවිතා කරන්නට පුලුවන්. 3D Printers වල වගේ උපකරණවල තියන සියුම් චලනයන් ගන්නටත් මේ Stepper motors භාවිතා කරනව.
ඔයාල දැකල ඇති මේ Stepper motor එකක wires දෙකකට වඩා වැඩි ප්රමාණයක් එනව (3 රූපය). ඉතින් මේ Stepper motors පාලනය කරන්න Stepper motor driver එකක් අවශ්ය වෙනව. උදාහරණ විදොහට ගත්තොත් ULN2003, L298N, A4988, A3967 දක්වන්නට පුලුවන්. මේ අතරින් A3967 කියන්නෙ අපට ලේසියෙන් හා පහසුවෙන් භාවිතා කරන්නට පුලුවන් Moder drive එකක්. A3967 Microstepping Drive ලෙස හදුන්වන මෙය Easydriver එක කියාද හදුන්වනු ලබනවා (2 රූපය).
Stepper motor driver එකක් ලෙස පහසුවෙන් භාවිත කිරීමට හැකි වීම මෙහි ප්රදාන වාසියක්. වයර් 4,6 සහ 8 ක් බැගින් තිබෙන ඕනෑම Stepper motor එකක් මෙම driver එක භාවිතයෙන් පාලනය කිරීමට හැකියාවක් තිබෙනවා.
මෙම Easydriver එකට 5V හා 30V අතර වෝල්ටීයතාවයක් ලබාදීමේ හැකියාවක් තිබෙනවා. ඒ කියන්නෙ අපිට මෙම drive එකට 5-30V අතර වෝල්ට් ප්රමාණයක් in කරල අපට අවශ්ය කටයුතු කරගන්න පුලුවන්. 150mA – 750mA අතර ඇම්පියර් ප්රමාණයක් මෙහෙයවීමේ හැකියාවක් මේ Easydriver එකට තියෙනවා. මෙහි අන්තර් ගතවන fixed off-time regulator එක නිසා සිදු කරන කාර්යයන් අපට අවශ්ය වේගයකින් සිදු කරගැනීමේ හැකියාවක් තිබෙනව. එනම් මෙම Easydriver එක භාවිතයෙන් අපට අවශ්ය වේගයන් වලින් Stepper motors හසුරවා ගන්නට පුලුවන් කම ලැබෙනවා.
අපි බලමු මේ Easydriver එක භාවිතා කරල Stepper motor එකක් control කරගන්නෙ කොහොමද කියල.
මේ සදහා,
1) Arduino Uno × 1 (https://scionelectronics.com/product/arduino-uno-r3-with-cable/)
2) A3967 Microstepping Driver ( Easydriver ) × 1 (https://scionelectronics.com/product/easydriver-shield-stepping-stepper-motor-driver-v44-a3967/)
3) Stepper Motor × 1 ( වයර් 4 හෝ 6 හෝ 8 ක් තිබෙන Stepper motor එකක් අවශ්ය කරනවා – මම ගත්තෙ පරණ DVD ROM එකකින්)
4) Jumper wires
දැන් 4 රූපයේ ආකාරයට උපකරන ටික සාදා ගන්න. එනම්,
Easydriver එකේ DIR Pin එක Arduino බෝඩ් එකෙහි 2 වෙනි pin එකටත්
Step Pin එක 3 වැනි pin එකටත්,GND Pin එක Arduino එකෙහි GND එක වෙතටත්, Enable Pin එක Arduino එකෙහි 7 වැනි pin එකටත්, Motor යනුවෙන් සදහන් කර ඇති pin 4 මෝටයේ සිට පැමිනෙන වයර් 4 ටත් සම්බන්ධ කර ගැනීමෙන් පසුව PWR IN යනුවෙන් සදහන්ව ඇති ස්ථානයට විදුලිය ලබා දිය යුතුය. (4 රූපය)
මෙසේ උපකරන ආම්බන්ධ කිරීමෙන් අනතුරුව පහත code එක upload කරන්න.
int dirpin = 2;
int steppin = 3;
void setup() {
pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
}
void loop() {
int i;
digitalWrite(dirpin, LOW);
delay(100);
for (i = 0; i < 1000; i++) {
digitalWrite(steppin, LOW);
digitalWrite(steppin, HIGH);
delayMicroseconds(500);
}
digitalWrite(dirpin, HIGH);
delay(100);
for (i = 0; i < 1000; i++) {
digitalWrite(steppin, LOW);
digitalWrite(steppin, HIGH);
delayMicroseconds(500);
}
}
මෙහි කේත ලියා තිබෙන්නේ motor එක සම්පූර්ණ වටයක් එක් පසෙකටත් අනිත් වටය අනෙත් පසටත් ගමන් කරන ලෙසටය. මෙහිදී DIR pin එක භාවිත කරනුයේ motor එකට direction එක ලබා දීම සදහායි. මෙම පින් එක HIGH හෝ LOW කිරීම සිදු කල හැකියි. මෙම HIGH සහ LOW මාරු කිරීම මගින් මෝටරය ධාවනය වන දිශාව වෙනස් කල හැකිය. STEP pin එක මගින් මෝටරය කරකැවීමට අවශ්ය steps වලට අදාල දත්ත ලබාදීම සිදි කරයි.
දැන් බලමු අපිට අවශ්ය වේගයකින් අපිට අවශ්ය වට ප්රමාණයක් මේ Stepper motor එක කරකවාගන්නෙ කියල. ඒ සදහා පහළ කෝඩ් එක upload කරන්න.
int dirpin = 2;
int steppin = 3;
int enablepin=7;
void setup() {
pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
pinMode(enablepin, OUTPUT);
digitalWrite(enablepin,HIGH);
Serial.begin(9600);
}
void loop() {
rotate(800, 0.1);
delay(5000);
rotate(800, 0.5);
delay(5000);
rotate(-1600, 1);
delay(5000);
}
void rotate(int steps, float speed) {
digitalWrite(enablepin,LOW);
int direction;
if (steps > 0) {
direction = HIGH;
} else {
direction = LOW;
}
speed = 1 / speed * 70;
steps = abs(steps);
digitalWrite(dirpin, direction);
for (int i = 0; i < steps; i++) {
digitalWrite(steppin, HIGH);
delayMicroseconds(speed);
digitalWrite(steppin, LOW);
delayMicroseconds(speed);
}
digitalWrite(enablepin,HIGH);
}
මෙහි
rotate(800, 0.1);
යන කොටස වෙනස් කිරීම මගින් ඔබට අවශ්ය පරිදි වේගය සහ කැරකෙන ප්රමාණය වෙනස් කර ගැනීමට හැකියි. මන් භාවිතා කරන Stepper motor එකෙහි එක් වටයක් සදහා සම්පූර්ණ steps ගනන 1600කි. එම නිසා මෙම කෝඩ් කොටස ලියා තිබෙන්නේ වට බාගයක් ඉතාමත් සෙමින් ගමන් කිරීමටයි. 0.1යනු මෝටරය ගමන් කරන වේගයයි. Void loop කොටස යටතේ ලියා ඇත්තේ මෝටරයේ වේගය සහ කැරකෙන ප්රමාණය තීරනය කිරීම සදහායි. එය ඔබ භාවිතා කරන මෝටරයට ගැලපෙන ලෙස ඔබට කැමති පරිදි වෙනස් කරගන්න. මෙහි දී ඇති ඩිලේ අඩු කිරීම මගින් අදාල වට ප්රමාණය ගිය පසු නතර වී සිටින කාලය අඩු කර ගත හැකිය.
ඉතින් තව එක දෙයක් කියන්නම් මගෙන් ගොඩක් දෙනෙක් comment වලින් වගේම inbox ඇවිල්ලත් අහල තිබ්බ කොළඹින් පිට ඉන්න අයට මේ Arduino Parts ගන්න තැනක් නැද්ද කියල. ඉතින් මන් හිතුව මන් බඩු ගන්න තැන ගැන ඔයාලට කිව්ව නම් ඒක ඔයගොල්ලන්ට පහසුවක් වෙයි කියල.
“Scion Electronics” ( සයන් ඉලෙක්ට්රොනික්ස් ) ඔයාලට Arduino සම්බන්ධ ඕනෙම item එකක් warranty එකක් සහිතව ගන්න පුලුවන් මේ ශොප් එකෙන්. මාලබේ ස්ලිට් කැම්පස් එක ඉස්සරහ වගේම මොරටුව කැම්පස් එක ඉස්සරහත් මෙයාලගෙ shop තියනව. ඔයගොල්ලො පිට පලාතක ඉන්නව නම් ඔයාලට පුලුවන් ගෙදරටම මේ භාණ්ඩ ගෙන්න ගන්න. මෙයාලගෙ Website එකේ සියලුම item ගැන විස්තර තියනව. ( https://scionelectronics.com/ ) වගකීමක් සහිතවම ඔයාලට ඕනෙ කරන Arduino Parts ගන්න පුලුවන්.
ආඩුඊනෝ ප්රෝග්රෑමිං Part 12 තුළින් නැවත හමු වෙමු.
Compiled by: Yasas Sadeepa