Bluetooth කාර් එකක් හදමු (Part 1)



අපි දැන් මෝටර් ගැනයි, රෝද ගැනයි, මෝටර් ධාවක පරිපථය ගැනයි පහුගිය ලිපිවලින් කථා කරලා තියෙනවා. ඒ වගේම තියරි පැත්තට වැටෙන H Bridge ගැනයි, PWM ගැනයි කථා කරලා තියෙන්නේ. ඒ නිසා දැන් අපිට පුළුවන් අපේ පළවෙනි රොබෝව නිර්මාණය කරන්න. පළවෙනි රොබෝවරයා විදිහට 2 Wheel Bluetooth රොබෝ කෙනෙක් හදමු. 


මේකට පාවිච්චි කරන්නේ කහපාට Smart Car Robot Wheel කියන මෝටර්. චැසියක් කඩෙන් ගන්න පුළුවන් වුණත් අපිම හදාගමු. ලේසියෙන්ම චැසියක් හදාගන්න විදිහ මම කියාදෙන්නම්.


මෝටර් වලට අමතරව මේ ලැයිස්තුවේ තියෙන දේවල් ටිකත් ඕන වෙනවා.

Ball Caster Wheel







මේ රූපසටහනේ තියෙන විදිහේ එකක්ම හොයාගන්න පුළුවන් නම් හොදයි. වානේ හා ප්ලාස්ටික් විදිහට වර්ග දෙකකින් ගන්න පුළුවන්. වානේ එක ගන්න පුළුවන් නම් ගොඩක් ම හොදයි. Caster wheel එකට හරියන bolt ඇණ දෙකකුත් හොයාගන්න.

බැටරියක් (Battery)




LiPo හෝ Li-ion බැටරියක් ගන්න බලන්න. Cell 2ක් (7.4v) හෝ cell 3 ක් (11.1 v) තියෙන බැටරියක් පාවිච්චි කරන්න පුළුවන්. ධාරිතාව 1200mAh වලින් එහා එකක් ගන්න පුළුවන් නම් ඉස්සරහටත් ගොඩක් ම ප්‍රයෝජනවත් වෙනවා. 

මෝටර් ධාවක පරිපථය (Motor Drive) 



මේකට අපි කලින් හදාගත්ත පරිපථය හෝ කඩෙන් ගත්ත module එකක් පාවිච්චි කරන්න පුළුවන්.


Breadboard Jumpers / Circuit Wire 






Breadboard Jumper වර්ග 3 ක් තියෙනවා. (Male to Male, Male to Female, Female to Female) වර්ග 3න් ම Jumper Cables ගන්න. ඉස්සරහට හදන රොබෝලාටත් ඕන වෙනවා.

Circuit wire ටිකකුත් ගන්න. වයර් පාස්සන්න ඕනෑවෙන soldering iron එකක් හා ඊයම් ටිකකුත් 
ගන්න බලන්න.


Arduino Board (Arduino UNO)




ආර්ඩියුනෝ බෝඩ් එක විදිහට Uno බෝඩ් එකක් හරි Mega බෝඩ් එකක් හරි පාවිච්චි කරන්න පුළුවන්. මේ project එකට නම් Uno එකක් ප්‍රමාණවත්.

නට්, බෝල්ට් ඇණ ( Nuts & Bolts )




රොබෝ නිර්මාණය කරගෙන යනකොට බෝල්ට් ඇණ ගොඩක් ම ප්‍රයෝජනවත් වෙනවා. ඒ අතරින් 3 mm bolt ඇණ තමයි ගොඩක් ම පාවිච්චි වෙන්නේ. ඒ නිසා ඇණ විකුණන Hardware එකකින් දිගවල් කීපයකම 3 mm nut & bolts ටිකක් ගන්න.

(5 mm, 12 mm, 15 mm, 20 mm, 25 mm, 30 mm,... කියන ප්‍රමාණ වලින් ගන්න තියෙනවා.)

Bluetooth Module 






Bluetooth module එක විදිහට HC 05 හෝ HC 06 මොඩියුලයක් භාවිතා කරන්න පුළුවන්. ම‍ේ දෙකෙන් HC 05 තමයි ගොඩක් හොද. (මේ මොඩියුල දෙකේ වෙනස ගැන ලිපියක් මෙතනින් කියවන්න)

එහෙනම් මේ ලැයිස්තුවේ තියෙන දේවල් ටික පුළුවන් විදිහට ලෑස්ති කරගන්න. ඊළග ලිපියේ ඉදලා රොබෝව හදන විදිහ කියාදෙන්නම්.




ගොඩක් කාලෙකට පස්සේ තමයි අද බ්ලොග් එකට ලිපියක් ලියන්න ලැබුණේ. මේ ලගදී විශ්වවිද්‍යාල ගමන ආරම්භ වුණ නිසා කලින් වගේ සතියකට ලිපිය ගානේ දෙන්න බැරි වුණත් පුළුවන් පුළුවන් විදිහට බ්ලොග් එක update කරන්නම්. (2016-12-16)

CNC Machining Handbook

By Alan Overby



සෑහෙන කාලෙකට පස්සේ blog එකෙන් මම අළුත් eBook එකක් දෙනවා. මේක වැදගත් වෙන්නේ Mills, Routers, Plotters වගේ CNC Machines හදන්න උනන්දු අයටයි.

පොතේ නම CNC Machining Handbook. මේක ලියලා තියෙන්නේ
 CNC මැෂින් එකක් හදන්න හෝ මිලදීගන්න බලාපොරොත්තුවෙන් ඉන්න අය ඉලක්ක කරගෙනයි.

CNC එකකදී පාවිච්චි වෙන යාන්ත්‍රික මූලධර්ම, භාවිතාවෙන කොටස්, පාවිච්චි කරන්න පුළුවන් මෘදුකාංග වගේ ගොඩක් දේවල් ගැන මේ පොතේ සදහන් වෙනවා. ඔයාලත් Download කරගෙන කියවලාම බලන්න. පිටු 274 යි.



පටුන

Part I The Physical Architecture
1 CNC Machines
2 Guide Systems
3 Transmission Systems
4 Motors

Part II The CNC Controller
5 Controller Hardware
6 Control Software

Part III Application Software
7 The Cartesian Coordinate System
8 CAD and Graphics
9 CAM Software

Part IV Building or Buying a CNC Machine
10 Choosing a Ready-Made CNC System
11 Building Your Own CNC Plasma Table

Part V Appendices
A Project Implementation and Examples
B Programming Examples in G-Code
C Engineering Process of Selecting a Ball Screw

D NEMA Motor Mounting Templates



Download








 

අනාගතය සදහා IoT


IoT සමග ලෝකයේ ගමන්මග කෙසේ වෙනස් වේවි ද ?








Motor Drive PCB එකක් හදමු



කලින් ලිපියේ පොරොන්දු වුණා වගේම මම අද කියාදෙනවා Motor Drive Module එකක් ගෙදරදිම හදාගන්න විදිහ.

ඒකට මේ ලැයිස්තුවේ තියෙන දේවල් ඕන වෙනවා.

  • L298 IC
  • 7805 
  • 1N4001 Diodes - 8
  • වෙරෝ බ‍ෝඩ් එකක්
  • 2 pin Terminal Block - 3
  • Male header (Pin තුනේ කෑලි 4ක්)
  • පරිපථ වයර්
  • ඊයම් + බවුත් එකක්


දැන් වෙරෝ බෝඩ් එක අතට ඇරන් යට පැත්ත හරවලා බලන්න. දැන් ඔයාලට පේනවා ඇති සිදුරු අතරින් තඹ තීරු තියෙනවා කියලා. මේවා දිගේ විදුලිය ගමන් කරන නිසා මේ තීරුවක තැන් 2 ක උපකරණ දෙකක් වෙන වෙනම පාස්සලා ඒ දෙක එකිනෙක සම්බන්ධ කරන්න පුළුවන්. මේ නිසා පරිපථය පුරාම වයර් ගොඩක් අමුණගෙන කරදර වෙන්න ඕන නෑ.

මෝටර් ධාවක පරිපථය හදමු

දැන් L298 IC එක අතට ගන්න. මේක සාමාන්‍යය IC එකකට වඩා ටිකක් වෙනස්. මේක වෙරෝ බෝඩ් එකට සම්බන්ධ කරන්න නම්, pin 8 ක් තියෙන පේලියේ pin ටික පොඩ්ඩක් විතර පැත්තකට නමාගන්න වෙනවා. ඒක කරන්නේ කොහොමද කියලා මේ රූපසටහන් වලින් බලාගන්න. (උඩින් බැලුවම මේ විදිහට තියෙන්න ඕන.)




දැන් මේ රූපසටහන්වල තියෙන විදිහට උපාංග ටිකයි, වයර් ටිකයි පාස්සගන්න.




බවුත් එකෙන් නිවැරදිව පාස්සන හැටි ඉගෙනගන්න කැමති නම් මේ Video ටික බලලා ඉන්න.



පළවෙනි රූපයේ තියෙන්නේ උපාංග සම්බන්ධ කලාම උඩින් පේන විදිහ. මේක බලාගෙන උඩින් සියළුම උපාංග සම්බන්ධ කරලා සුපර් ග්ලූ වලින් හරි වෙනත් ක්‍රමයකින් හරි සියළුම කොටස් පරිපථයට සම්බන්ධ කරගත්තා නම්, පාස්සන වැඩේ ගොඩක් ලේසි වෙයි.

දෙවෙනි රූපයෙන් සම්පූර්ණ පරිපථයම පෙන්වනවා.

වැදගත් කරුණු

රතු පාට කඩඉරි වලින් සදහන් කරලා තියෙන තැන්වලින් වෙරෝ බෝඩ් එකේ තඹ තීරුව විසන්ධි කරන්න. (යකඩ අඩිරූලකින් හූරලා තඹ තීරුව ල‍ේසියෙන්ම විසන්ධි කරන්න පුලුවන්)

කොල පාටින් පෙන්නලා තියෙන Terminal Blocks කෙලින්ම වෙරෝ බෝඩ් එකට සම්බන්ධ කරන්න ටිකක් අමාරුයි. ඒකට වොරෝ බෝඩ් එකේ සිදුර ටිකක් විතර ලොකු කරගන්න වෙනවා.

අළුපාටින් පෙන්නලා තියෙන තැන්වලට Pin Headers සම්බන්ධ කරගන්න.

7805 පාවිච්චි කරලා තියෙන්නේ IC එකට +5v වෝල්ටීයතාවක් ලබාගන්නයි. මේක On Board Regulator එකක් විදිහටයි ක්‍රියාත්මක වෙන්නේ. රොබෝ හැදුවට පස්සේ රොබෝගේ පරිපථ වලට අවශ්‍යය 5v ලබාගන්නත් මේ Regulator එක භාවිතා කරන්න පුළුවන්.



LED එකක් (රතු පාටින් තියෙන්නේ LED එක) දාලා තියෙන්නේ Module එකට විදුලිය ලැබෙනවාද කියලා දැනගන්න පහසු වෙන්නයි. කැමති නම් මේ විදිහටම IC එකේ EnA, EnB අග්‍ර වලටත් LED එක බැගින් සම්බන්ධ කරගන්න. එතකොට මෝටර් 2 වැඩ කරනවද නැද්ද කියලා ලේසියෙන්ම බලාගන්න පුළුවන්.  (මතක ඇතිව 470 ohm ප්‍රතිරෝධකයක් පාවිච්චි කරන්න. නැත්නම් LED එක පිච්චෙන්න ඉඩ තියෙනවා)

අග්‍ර හදුනාගනිමු

GND වලට බැටරියේ සෘණ අග්‍රය සම්බන්ධ කරන්න.

+V වලට 6v ඉදලා 12v වෙනකම් ඕනෑම වොල්ටීයතාවක් දෙන්න පුලුවන්.

+5V Output අග්‍රවලින් 5V වොල්ටීයතාවක් ගන්න පුළුවන්. මේ අග්‍ර ටික ඉස්සරහට ගොඩක් ප්‍රයෝජනවත් වෙයි.

අනිත් අග්‍ර ටික ආර්ඩියුනෝ බෝඩ් එකට සම්බන්ධ කරලා program එකක් ලියන්නේ කොහොමද කියන එක මම ඊළග ලිපියෙන් කියාදෙන්නම්.


මේ ලිපියෙදී කියාදුන්නේ වෙරෝ බෝර්ඩ් එකක පරිපථය හදාගන්න විදිහ. ඔයාලා කැමති නම් මේක PCB (Printed Circuit Board) එකක් විදිහටත් නිර්මාණය කරගන්න පුලුවන්. 




මේ තියෙන්නේ මම අවුරුදු කීපයකට කලින් හදාගත්ත Motor Drive PCB එකක්. අවාසනාවට දැන් මගේ ලග මේකේ Circuit Diagram එකයි PCB layout එකයි හොයාගන්න බැරිවුණා.







මොකක්ද මේ Processing කියන්නේ ?



ආර්ඩියුනෝ කියන්නේ මොකක්ද කියලා නොදන්න කෙනෙක් නැති තරම් දැන් ආර්ඩියුනෝ ජනප්‍රියයි. මේ ආර්ඩියුනෝ වල ලගම ඥාතියෙක් කියලා හදුන්වන්න පුළුවන් මෘදුකාංගයක් තමයි Processing කියන්නේ. ලොකු අයියා කිව්වොත් ගොඩක්ම නිවැරදියි. මොකද Processing පලමු සංස්කරණය නිකුත් කරලා තියෙන්නේ 2001 දී.

IDE එක, එහෙමත් නැත්නම් අතුරුමුහුණත ආර්ඩියුනෝ වලට ගොඩක්ම සමානයි. 




මේකත් Arduino වගේම Open Source මෘදුකාංගයක්. Processing වල නිල වෙබ් අඩවිය තමයි processing.org  මෙතනින් ඔයාලටත් නොමිලේම Processing මෘදුකාංගය Download කරගන්න පුලුවන්.




Processing කියන වචනයේ තේරුම "සකස් කිරීම" යි. මේ Processing වලින් කෙරෙන්නේත් ඒ වගේම දෙයක් තමයි. මේක වැඩිපුරම පාවිච්චි කරන්නේ ආර්ඩියුනෝ වගේ දෘඩාංග වලින් ලැබෙන දත්ත විශ්ලේෂණය කරන්නයි. ගොඩක් අය දැනටමත් C# වලින් Arduino සදහා පොඩි පොඩි වැඩසටහන් ලියනවා ඇති. එ් වගේ වැඩවලට මේ Processing පහසුවෙන්ම පාවිච්චි කරන්න පුලුවන්.


Communicate with Arduino

Arduino Examples අතර Communication කාණ්ඩයට අයිති Example කිහිපයකදිම මේ Processing භාවිතා වෙනවා.

මේ තියෙන්නේ ඒ වගේ උදාහරණයක්.

File > Examples > Communication > Physical Pixel

( වැඩි විස්තර :  http://www.arduino.cc/en/Tutorial/PhysicalPixel)

Arduino Code


const int ledPin = 13; // the pin that the LED is attached to
int incomingByte;      // a variable to read incoming serial data into

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingByte = Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}




Processing Code


 import processing.serial.*;

 float boxX;
 float boxY;
 int boxSize = 20;
 boolean mouseOverBox = false;

 Serial port;

 void setup() {
 size(200, 200);
 boxX = width/2.0;
 boxY = height/2.0;
 rectMode(RADIUS);

 // List all the available serial ports in the output pane.
 // You will need to choose the port that the Arduino board is
 // connected to from this list. The first port in the list is
 // port #0 and the third port in the list is port #2.
 // if using Processing 2.1 or later, use Serial.printArray()
 println(Serial.list());

 // Open the port that the Arduino board is connected to (in this case #0)
 // Make sure to open the port at the same speed Arduino is using (9600bps)
 port = new Serial(this, Serial.list()[0], 9600);

 }

 void draw()
 {
 background(0);

 // Test if the cursor is over the box
 if (mouseX > boxX-boxSize && mouseX < boxX+boxSize &&
 mouseY > boxY-boxSize && mouseY < boxY+boxSize) {
 mouseOverBox = true;
 // draw a line around the box and change its color:
 stroke(255);
 fill(153);
 // send an 'H' to indicate mouse is over square:
 port.write('H');
 }
 else {
 // return the box to it's inactive state:
 stroke(153);
 fill(153);
 // send an 'L' to turn the LED off:
 port.write('L');
 mouseOverBox = false;
 }

 // Draw the box
 rect(boxX, boxY, boxSize, boxSize);
 }



Control Arduino from PC

Arduino Board එක USB Cable එක හරහා පරිගණකයට සම්බන්ධ කරලා පරිගණකයේ ඉදලා Processing වලින් Arduino Board එක කෙලින්ම මෙහෙයවන්නත් පුලුවන්.



Android App Developing

Processing අළුත්ම සංස්කරණයේ (Processing 3.2.1) Android app නිර්මාණය කිරීමේ පහසුකමත් ලබාදීලා තියෙනවා. Android SDK එක තියෙන ඕනම පරිගණකයකින් මේ Processing භාවිතා කරලා Android Apps හදන්න පුළුවන්. හැබැයි තාම මේ පහසුකම Beta අවස්ථාවෙයි තියෙන්නේ.




මේ ලිපියේ අරමුණ වුණේ Processing කියන්නේ මොකක්ද කියන එක ගැන කෙටි අදහසක් ලබාදීමයි. මෙතන සදහන් නොවුණ තව ගොඩක් දේවල් වලට Processing භාවිතයෙන් කරන්න පුළුවන්. Arduino වල වගේම Processing මෘදුකාංගයේත් File > Examples කොටසේ ගොඩක් උදාහරණ තියෙනවා. ඔයාලත් ඒවා කීපයක් උත්සාහ කරලා බලන්න.

 එහෙනම් මීළග ලිපියෙන් හමුවෙමු.










L298 Motor Drive IC




කලින් ලිපි 2 න් කථා කලේ මෝටරයක භ්‍රමණ දිශාව හා වේගය පාලනය කරන්න පාවිච්චි කරන උපක්‍රම ගැන. ඒ අනුව දැන් ඔයාලා H Bridge ගැනයි, PWM ගැනයි දන්නවා.

කියවලා නැත්නම් මෙතනින් ඒ ලිපි දෙක කියවලා බලන්න.

මේ ලිපියෙන් කථා කරන්නේ මෝටර පාලනයට බහුලවම පාවිච්චි කරන L298 කියන IC එක ගැනයි. මේක තමයි දැනට පහසුවෙන්ම හොයාගන්න පුළුවන් සහ වඩාත්ම සුදුසු IC එක. මේ IC එකේ බාහිර පෙනුම මේ වගෙයි. 

මේ සදහා L293 IC එකත් පාවිච්චි කරන්න පුළුවන්. ඒත් ඊට වඩා L298 IC එක හොදයි. වැඩි ධාරාවක් පාලනය කරන්න පුළුවන්. ඒ වගේම Heat Sink එකක් හයි කරන්න පුළුවන් නිසා රත්වීම පිලිබද බය වෙන්න ඕනත් නෑ.


Motor Drivers Modules ඕනතරම් වෙලදපොලේ ගන්න තියෙනවා. හැබැයි රොබෝටික්ස් හරියට ඉගෙනගන්න කැමති නම් තමන්ගේම Motor Drive එකක් හදාගන්න ඕන. ඒකෙන් ලැබෙන අත්දැකීම, කඩෙන් ඇරන් වයර් ටිකක් අමුණලා හදන රොබෝ කෙනෙක්ගෙන් ගන්න බෑ.


L298 IC



මේ තියෙන්නේ Pin Diagram එක. (වඩාත් විස්තරාත්මක datasheet එක මෙතනින් Download කරගන්න.)





මේ IC එකෙන් A හා B විදිහට මෝටර් 2 ක් පාලනය කරන්න පුළුවන්. හැම මෝටරයකටම වෙන් කරපු Pin 5 බැගින් තියෙනවා. මේවායින් 3 ක් පාවිච්චි වෙන්නේ විධාන ලබාදෙන්නයි. (Inputs විදිහට) ඉතිරි Pin 2 මෝටරය සවි කරන්නයි පාවිච්චි කරන්නේ. (Output විදිහට)




In1, In2, En, Out1, Out2  කියලා හදුන්වලා තියෙන්නේ මෝටර් 2ට වෙන වෙනම අයිති pins පොදුවේ හදුන්වන නම්. විස්තරකිරීම් වලදී මාත් පාවිච්චි කරන්නේ ඒ කෙටියෙදුම් කීපය තමයි.

Out 1, Out 2 කෙලින්ම මෝටරයට සම්බන්ධ වෙන්නේ. (හැබැයි කලින් ලිපියක කිව්වා වගේම ඩයෝඩ් දාන්න ඕන. නැත්නම් Circuit එකට හානි වෙන්න ඉඩ තියෙනවා.)

In 1, In 2 කියන අග්‍ර වලින් මෝටරය කැරකෙන්න ඕන දිශාව ගැන උපදෙස් දෙන්න පුළුවන්.



En අග්‍රය තමයි මෝටරය කැරකෙනවද නැද්ද කියලා තීරණය කරන්නේ. 
(In1, In2 පින් වලට පිලි‍වෙලින් 1,0 හෝ 0,1 සංඥා ලබාදුන්නත්, මේ En අග්‍රයට 1 සංඥාව ලැබෙනකම් මෝටරය වැඩ කරන්නේ නෑ)

  • En = 0 (0 v / logic Low) නම්, මෝටරය OFF
  • En = 1 (+5 v / logic High) නම් ‍මෝටරය ON

මෝටරය දිගටම කරකවන්න ඕන නම් මේක +5V ට සම්බන්ධ කරන්න. වේගය වෙනස් කරන්න බලාපොරොත්තු වෙනවා නම්, Arduino වල PWM pin එකකට සම්බන්ධ කරලා analogWrite() කරන්න පුලුවන්.

මෝටර් දෙකටම Current Sensing කියලා Pin එක බැගින් තියෙනවා. ‍මේක පාවිච්චි කරලා මෝටරයට යන ධාරාව ගණනය කරගන්න පුලුවන්. දැනට ඒ පහසුකම අවශ්‍ය වෙන්නේ නැති නිසා ඒ අග්‍රය Ground (0V) වලට සම්බන්ධ කරනවා. (කඩෙන් ගන්න තියෙන ගොඩක් Module වලත් මේ අග්‍රය පාවිච්චි වෙන්නේ නෑ.)



මේ L298 IC එක පාවිච්චි කරලා Motor Drive එකක් හදාගන්න විදිහ මම ඊළග ලිපියෙන් කියාදෙන්නම්.





PIC ගැන කෙටියෙන්



මේ දවස්වල හැමෝම වගේ Arduino Programming වලට කැමතියි. ඒකට හේතුව තමයි Arduino සරළ හා පහසු වීම. Arduino ජනප්‍රිය වෙන්න කලින් වැඩිපුරම පාවිච්චි වුණේ PIC කාණ්ඩයට අයිති Micro controllers. මේවා නිශ්පාදනය කරන්නේ Microchips කියන ආයතනයෙන්.

බාහිර පෙනුමෙන් නම් PIC IC ත් Atmel AT කාණ්ඩයේ IC වලට සමානයි. ප්‍රෝග්‍රෑමින් කරන විදිහ නම් ටිකක් වෙනස්. මේවා ප්‍රෝග්‍රෑම් කරන්න වෙනම උපකරණයක් ඕන. PIC KIT කියන උපකරණය තමයි ම‍ේ සදහා වැඩිපුරම පාවිච්චි වෙන්නේ. ක්‍රමලේඛන භාෂාව විදිහට C තමයි වැඩිපුරම පාවිච්චි වෙන්නේ. ඊට අමතරව Assemble Language පාවිච්චි කරන්න පුළුවන්. (Micro-controllers වැඩ කරන හැටි ඉගෙනගන්න ඕන නම් මේක තමයි ඒකට හොදම භාෂාව. ටිකක් අමාරුයි. හැබැයි මේක පුලුවන් කෙනාට C වගේ High Level language ඉගෙනගන්න එක කජු කනවා වගේ.)

මේ තියෙන්නේ PIC Kit 2 programmer එකක්.



මේ තියෙන්නේ PIC16F877A කියන PIC  IC එක.



මේ තියෙන්නේ මම හදපු PIC Development board එකක්.



(Arduino ආපු මුල්ම කාලේ වෙනකොට ලංකාවේ Arduino boards ගන්න තිබුනේ නෑ. තිබුණත් බොර්ඩ් එක රු.4000-5000 වගේ ගනන් වලටයි තිබුනේ. ඒ නිසා මම Arduino Board කොපි කරලා PIC වලටත් Board එකක් හැදුවා. අවාසනාවකට වගේ දැන් නම් මගේ ලග මේකේ PCB layout design එක නම් නෑ.)


PIC Programming ගැන ඉගෙනගන්න කැමති අයට, විදුසර පුවත්ප‍තේ මීට අවුරුදු 10 කට විතර කලින් පළවුණු   ලිපි මාලාව පරිශීලනය කරන්න පුළුවන්.




ම‍ෝටරයක වේගය පාලනය කරමු (PWM)




රොබෝ කෙනෙක් නිර්මාණය කරද්දී රොබෝගේ මෝටර්වල වේගය අඩු වැඩි කරන්න අවශ්‍ය වෙනවා. මේ ලිපියෙන් විස්තර කරන්නේ ඒ සදහා පාවිච්චි කරන්න පුළුවන් මූලධර්මයක් ගැනයි.

‍මෝටරයක් කැරකෙන වේගය, ඊට බාහිරව ලැබෙන වෝල්ටීයතාව අනුව තමයි මූලිකව රදාපවතින්නේ. මේ ප්‍රස්ථාරයෙන් ඒක පැහැදිලි වෙනවා. 




Vmax කියන්නේ මෝටරයක් පිච්චෙන්නේ නැතිව සපයන්න පුළුවන් උපරිම වොල්ටීයතාවයි. Vmin කියන්නේ මෝටරයක් කැරකෙන්න අවශ්‍ය කරන අවම වෝල්ටීයතාවයි.

සාමාන්‍ය ඇනලොග් පරිපථයක නම් අපිට අවශ්‍ය විචල්‍ය වෝල්ටීයතාවක් පහසුවෙන් හදාගන්න පුළුවන්. හැබැයි ඩිජිටල් පරිපථයක පාවිච්චි වෙන්නේ වෝල්ටීය අවස්ථා 2 ක් (High, Low) පමණක් නිසා අපිට ඕන වොල්ටීයතාවක් කෙලින්ම ලබාගන්න බෑ. ඉතින් මේකට පොඩි උපක්‍රමයක් පාවිච්චි කරන්න වෙනවා.

12 V බැටරියකින් මෝටරයක් කරකවන අවස්ථාවක් සලකමු.



12 V දිගටම ලබාදුන්නොත් මෝටරය එහි උපරිම වේගයෙන් කැරකෙනවා. දෙවන සටහනේ විදිහට කඩින් කඩ විදුලිය ලබාදෙන අවස්ථාවක් සලකමු. මෝටරයට 12 V, ලබාදුන්නාම මෝටරය කැරකෙන්න පටන්ගන්නවා. හැබැයි මෝටරය එහි උපරිම වේගයට එන්න කලින් ආයෙත් විදුලි බලය කපා හැරෙනවා. ඒ නිසා ආයෙත් වේගය අඩු වෙනවා. හැබැයි සම්පූර්ණයෙන්ම අඩුවෙන්න කලින් ආයෙත් විදුලිය ලැබෙන නිසා ආයෙත් වේගය වැඩි වෙනවා. මේ ක්‍රියාවලිය ඉතා වේගයෙන් සිදුකලොත් මෝටරයේ වේගය අඩු වැඩිවීම අපිට නොදැනෙන තරම් ඉක්මණින් සිදුවෙනවා. ඒ නිසා මෝටරය නියත වේගයකින් කැරකෙනවා වගේ පේනවා.

මෝටරය කැරකෙන වේගය තීරණය වෙන්නේ ඊට වෝල්ටීයතාව ලැබෙන හා නොලැබෙන කාල අතර අනුපාතය අනුවයි. උදාහරණයක් විදිහට මේ කාල අනුපාතය 1:1 නම් මෝටරය කැරකෙන්නේ එහි උපරිම වේගයෙන් 50% ක වේගයකින්. අනුපාතය 2:3 නම්  වේගය 40% වෙනවා. ( 2/(2+3) * 100% = 40%, 3 සටහන

මේ කාල පරාස අතර අනුපාතය, Mark Space Ratio නමින් හදුන්වනවා. කැමති නම් මෝටරයට ලැබෙන වෝල්ටීයතාවයේ සාමාන්‍යය අගය (Average Voltage) ගණනය කරලා මෝටරයට ලැබෙන වෝල්ටීයතාව හොයන්න පුළුවන්. 


මේ මූලධර්මයේදී සංඥා පළල අනුව ප්‍රතිදානය සැකසෙන නිසා මේ ක්‍රමයට හදුන්වන්නේ Pulse width modulation කියනවා. කෙටියෙන්; PWM


ආර්ඩියුනෝ වලදී අපිට හමුවෙන analogWrite() කියන function එකෙන් සිද්ධවෙන්නේ මේ ක්‍රියාවලියම තමයි. ඒ නිසා අපි හදන රොබෝගේ මෝටර්වල වේග පාලනයට මේ PWM ක්‍රමය කෙලින්ම හා පහසුවෙන්ම භාවිතා කරන්න පුලුවන්.


මේ වෙනකොට මෝටර් සම්බන්ධයෙන් න්‍යායාත්මක කරුණු ගොඩක් සාකච්ඡා කරලයි තියෙන්නේ. මීළග ලිපියෙන් මෝටර් පාලන පරිපථ (Motor Drive Circuit) ගැන තමයි කථා කරන්නේ.


Motor Drive එකක් හදන්න බලාපොරොත්තු වෙන අය මේ දේවල් ටික දැන්ම ලෑස්ති කරගෙන තියාගන්න.

  • Vero board / Breadboard 
  • L298 IC
  • Terminal Headers
  • 4 x Diodes 
  • Circuit wires




මීළග ලිපියෙන් හමුවෙමු. සුබ සතියක්....


Open Source කියන තරම්ම ආරක්ෂිත ද ?


ගොඩක් දෙනෙක් හිතාගෙන ඉන්නෙ යම් මෘදුකාංගයක් Open source වූ පමණින් ඉතා ආරක්ෂිතයි/ විශ්වාසනීයයි කියලා. නමුත් ඒවා කියන තරම්ම ආරක්ෂිත ද ? මේ ලිපිය ඒ ගැනයි.

ලිපිය පටන්ගන්න කලින් කියන්න ඕන පොඩි දෙයක් තියෙනවා. මේ ලිපියේ කිසිම තැනක Open Source ඒවා හොද නෑ කියලා අදහස් කරන්නේ නෑ. Open Source මෘදුකාංග භාවිතයේදී සැලකිලිමත් වෙන්න ඕන කරුණු ගැන  සදහන් කරන්න විතරයි බලාපොරොත්තු වෙන්නේ.

ඕනෑම මෘදුකාංගයක් 100% අංගසම්පූර්ණ නෑ. අඩුපාඩු තියෙනවා. ඒ නිසා හැම මෘදුකාංගයක්/ මෙහෙයුම් පද්ධතියක් ම නිකුත් කලාට පස්සේ කාලෙන් කාලෙට ඒවාය‍ේ ගැටලු නිරාකරණය කරලා, අලුත් Updates නිකුත් කරනවා.

Open Source Project එකක් සැලකුවොත් මේවායේ ගැටළු ගැන ල‍ෝකය පුරා ඉන්න Developers ලා Public Forums, Threads වල සාකච්ඡා කරලා ඒ ගැටළු වලට විසදුම් හොයනවා. මේ විසදුම් Updates විදිහට ලබාදෙනවා.

නමුත් Windows වගේ මෙහෙයුම් පද්ධතියක් සැලකුවෙත්, මම දන්න තරමින් නම් ඔවුන් කවදාවත් ඔවුන්ගේ නිර්මාණවල තියෙන දෝෂ එලියට දාන්නේ නෑ. බොහොම නිශ්ශබ්දව Updates නිකුත් කරනවා.

මේ දෙවර්ගයෙන් ඕනෑම මෘදුකාංගයක් කාලෙන් කාලෙට යාවත්කාලීන කරගත්තේ නැත්නම් අපේ මෘදුකාංග අනාරක්ෂිතයි. මේ අතරින් Update නොකල Open Source මෘදුකාංග කියන්නේ ලොක් එක ඇරලා තියෙන සේප්පුවක් වගේ. මොකද ම‍ේවයේ තියෙන අඩුපාඩු හැමෝම දන්නවා. ඒ නිසා ලේසියෙන් ම Hack කරන්න පුලුවන්.

අනිත් කාරණය Open Source භාවිතයේදී අනිවාර්යයෙන්ම පිලිගත් වෙබ් අඩවි වලින් පමණක් Download කරන්න. ඒ වගේම Pre-compiled Versions ගන්නවා නම් ගොඩක්ම සැලකිලිමත් වෙන්න.

මේකට හේතුව ඕන කෙනෙක්ට ඉතා පහසුවෙන් Open Source මෘදුකාංගයක් තමන්ට ඕන විදිහට වෙනස් කරලා Compile කරලා නිකුත් කරන්න පුළුවන්. මේක පොඩි උදාහරණයකින් ම පැහැදිලි කරන්නම්.

මම Linux මෙහෙයුම් පද්ධතියේ Source Code එක Download කරලා, පොඩි පොඩි වෙනස්කම් ටිකක් කරලා "Nuwan Linux" කියලා නම්කරලා මිතුරන් අතරත්, අන්තර්ජාලයෙනුත් බෙදාහරිනවා. හැබැයි මම මේ මෙහෙයුම් පද්ධතියට Key Logger එකක් ඇතුල් කරලයි තියෙන්නේ. (Key Logger එකක් කියන්නේ පරිශීලකයා ටයිප් කරන Password ලබාගන්න පාවිච්චි කරන කුඩා ක්‍රමලේඛයක්)

Project එක Open Source වුණත්, පේලි මිලියන ගණනක code එකක මම එකතු කරපු පේලි 10-15ක Key Logger එක කාටවත් ලේසියෙන්ම හොයාගන්න බෑ. මේක පාවිච්චි කරන හැමෝම Programming/ Security ගැන විශේෂඥයින් නොවන නිසා මේ හොර වැඩේ කාටවත් අහුවෙන්නේ නැතිව කරගෙන යන්නත් ලේසියි.

මේ වගේ තවත් සැලකිලිමත් වෙන්න ඕන දේවල් ගොඩක් තියෙනවා. ඒවා ගැන ඔයාලත් අන්තර්ජාලයෙන් හොයලා බලන්න. පුලුවන් හැම වෙලාවකම පාවිච්චි කරන මෘදුකාංග යාවත්කාලීන (Update) කරගන්න. ඒ වගේම Open Source කියපු පමණින්ම හැම දෙයක් ගැනම විස්වාස කරන්න එපා.

ඕනම දෙයක් Download කරන්න කලින් අන්තර්ජාලයෙන් ඒ ගැන පොඩ්ඩක් හෙයලා බලන්න. Download Page එකේ Comments තියෙනවා නම් ඒවත් කියවලා බලන්න.


"කිසිවෙක් විශ්වාස නොකරනු"
- ෆොක්ස් මොල්ඩර්, X Files TV Series



මෝටරයක් කැරකෙන දිශාව වෙනස් කරමු




රොබෝ කෙනෙක් හදද්දී මෝටර් පාවිච්චි වෙනවා. මේ මෝටර් අපිට ඕන විදිහට කැමති පැත්තට කරකවන්නේ කොහොමද ? ඒ සදහා පාවිච්චි කරන H-Bridge කියන මූලධර්මය ගැනයි මේ ලිපියෙන් කථාකරන්නේ.

සාමාන්‍යයෙන් අපිට මෝටරයක් කැරකෙන දිශාව වෙනස් කරන්න ඕන නම් මෝටරයේ අග්‍ර 2 බැටරියේ + හා - වලට සම්බන්ධ වන වයර් දෙක මාරු කරන්න ඕන. මේක කරන්න පුළුවන් ක්‍රම දෙකක් තියෙනවා. පළවෙනි ක්‍රමය යාන්ත්‍රිකව වයර් දෙක මාරු කිරීම. අනිත් ක්‍රමය ඉලෙක්ට්‍රොනිකව සිදුකිරීම. අපි මුලින්ම බලමු යාන්ත්‍රික ක්‍රමය ගැන.

මේකට පාවිච්චි කරන්න පුළුවන් ලේසිම විදිහ තමයි මේ රූපසටහනේ දක්වලා තියෙන්නේ. මේකට පාවිච්චි කරලා තියෙන්නේ 2 Way (Bipolar) Switch එකක්.


ස්විච් A හා B අවස්ථාවල තියෙනකොට මෝටරයට විදුලිය ලැබෙන්නේ කොහොමද කියලා බලමු.





ස්විචය A වල තියෙනකොට මෝටරය දක්ෂිණාවර්තවත්, B වල තියෙද්දී මෝටරය වාමාවර්තවත් කැරකෙනවා.


මෙන්න මේකම තමයි ඉලෙක්ට්‍රොනික ක්‍රමයෙදීත් පාවිච්චි කරන්නේ. පොඩි වෙනසකට තියෙන්නේ ඒකෙදී යාන්ත්‍රික කොටස් වෙනුවට ඉලෙක්ට්‍රොනික සංරචක භාවිතා වීමයි.

මම හිතන්නේ හැමෝම  ට්‍රාන්සිස්ටරයක් වැඩකරන්නේ කොහොමද කියලා දන්නවා ඇති. ට්‍රාන්සිස්ටරයක E,C,B කියන අග්‍ර 3 න් B අග්‍රයට දෙන ධාරාවක් මගින් E හා C අතර විභව අන්තරය වෙනස් කරන්න පුළුවන්. මේ නිසා ට්‍රාන්සිස්ටරය ඉලේක්ට්‍රොනික ස්විචයක් විදිහට පාවිච්චි කරනවා.

මේ වගේ ට්‍රාන්ස්මීටර් 4 ක් පහත ආකාරයට සම්බන්ධ කලාම අපි කලින් කථාකරපු 2 Way Switch එකේ වගේම පරිපථයක් හදාගන්න පුළුවන්.




මේක H අකුරක හැඩයට නේද පෙනෙන්නේ ? එ් නිසයි මේ පරිපථය H Bridge කියන නමින් හදුන්වන්නෙ. (සමහර වෙලාවට Full Bridge කියලත් කියනවා.)



රූපසටහනේදී හා පැහැදිලි කිරීම් වලදී හැමෝම දන්න Bipolar Transistor ගැන කථා කලාට ඇත්තටම මෙවගේ පරිපථ වලට පාවිච්චි කරන්නේ FET කියන කාණ්ඩයට අයිති Transistors. මේවත් බාහිර පෙනුමෙන් සාමාන්‍ය Transistors වලට සමාන වුණාට ක්‍රියාකාරීත්වය ටිකක් වෙනස්. FET (Field Effect Transistor ගැන මෙතනින් වැඩි විස්තර බලාගන්න : FET Transistors)



දැන් A හා D වලට විද්‍යුත් සංඥාවක් දීලා බලමු. දැන් TA හා TD ට්‍රාන්සිස්ටර 2 ම සක්‍රිය වෙලා ඒවා අතරින් විද්‍යුත් ධාරාවක් ගලායනවා. ඒ කියන්නේ මෝටරයට මේ රූපසටහනේ පෙන්වන විදිහට බලය ලැබෙනවා.



ඒ වගේම B හා C වලට විදුලිය දුන්නොත් මේ රූපයේ විදිහට  TB හා TC ට්‍රාන්සිස්ටර 2 සක්‍රිය වෙලා  මෝටරයට බලය ලැබෙන නිසා මෝටරය විරුද්ධ පැත්තට කැරකෙනවා.


ඒ අනුව A, B, C, D අග්‍ර වලට විවිධ විද්‍යුත් සංඥා ලබාදීලා මෝටරය කැරකෙන දිශාව වෙනස් කරන්න පුළුවන් කියන එක පැහැදිලියි.




මේ පරිපථයේ ඩයෝඩ 4ක් තියෙනවා දකින්න ඇති. එ්වා පාවිච්චි කලේ මොකටද කියන එකත් මෙතනදීම විස්තර කරන්නම්. සාමාන්‍යයෙන් මෝටරයක් නතර කලාම, වේගය ටිකින් ටික අඩුවෙලා නතර වෙන්න පොඩි වෙලාවක් ගතවෙනවා. මේ කාලය තුල මෝටරය පොඩි ජෙනරේටරයක් විදිහටයි ක්‍රියා කරන්නේ. දැන් මෝටරයෙන් ප්‍රති විද්‍යුත් ගාමක බලයක් (Back Electromotive Force) කලින් ධාරාව ගමන් කරපු දිශාවට විරුද්ධ අතට නිර්මාණය වෙනවා. දැන් ට්‍රාන්සිස්ටර් 4 ම අක්‍රිය නිසා ධාරාවට ගලන්න මාර්ගයක් නෑ. ඒත් අපි ඩයෝඩ සම්බන්ධ කරලා තියෙන නිසා ඩයෝඩ හරහා ධාරාව ගලාගෙන ගිහින් ජනනය වුණ ශක්තිය උදාසීන වෙනවා. (වැදගත් : පසු විද්‍යුත්ගාමක බලයේදී විතරක් ක්‍රියාත්මක වෙන්න ඕන නිසා ඩයෝඩ 4 ම + - අග්‍ර මාරු කරලයි පරිපථය සම්බන්ධ කරලා තියෙන්නේ.)




ම‍ෝටරයක වේගය අඩු වැඩි කරන්නේ කොහොමද කියලා ඊළග ලිපියෙන් කථා කරමු.



Spare Parts 2015 [Movie Review]




රොබෝටික්ස් වලට උනන්දු අය අනිවාර්යයෙන්ම බලන්න ඕන Film එකක් තමයි මේ Spare Parts කියන්නේ. නිකුත් වෙලා තියෙන්නේ 2015 දී.

ඇමරිකාවේ ප්‍රධාන රොබෝ නිර්මාණ තරගාවලියකට ඉදිරිපත් වන Carl Hayden නම් සාමාන්‍යය පාසල් සිසූන් 4 දෙනෙක් සහ ඔවුන් දිරිමත් කරන ගුරුවරයෙක් වටායි මේ කථාව නිර්මාණය වෙලා තියෙන්නේ.





මෙයාලට මුදල්, පහසුකම්, තාක්ෂණය වගේ මොකුත්ම නෑ. හැබැයි MIT වගේ උසස් පහසුකම් තියෙන ලෝකයේ අංක එකේ විශ්ව විද්‍යාල පරදවා තරගයේ පලවෙනි තැනට එන්න මේ සිසූන් හතරදෙනා සමත් වෙනවා. ඒ ඔවුන්ගේ නිර්මාණාත්මක අදහස්, අධිෂ්ඨානය හා නොපසුබට උත්සාහය නිසයි.



ලංකාවේ වුනත් Robotics වැඩ කරන්න ගොඩක් අමාරුයි. ර‍ොබ‍ෝලා හදන්න අවශ්‍ය උපාංග හොයාගන්න අමාරුයි. තියෙන උපාංගත් ගොඩක් මිල අධිකයි. තාක්ෂණික දැනුම ලබාගන්නත් අමාරුයි. මේක තනිකරම උඩුගං බලා පීනනවා වගේ දෙයක් කියලා කරන අය දන්නවා.

නමුත් අපිට ටිකක් නිර්මාණශීලී වෙන්න පුළුවන් නම් අපිට ඕන කරන දේවල් අපි අවටින් ම හොයාගන්න පුළුවන්. ඒ වගේම උනන්දුව තියෙනවා නම් කරන්න බැරි දෙයක් නෑ. ලංකාවේ නම ලෝකයට ගෙනියන්න කැමති අයට මේ චිත්‍රපටයෙන් ඉගෙනගන්න පුළුවන් ගොඩක් දේවල් තියෙනවා.




මට කියන්න අමතක වුණ තව දෙයක් තියෙනවා. මේ චිත්‍රපටිය තවත් එක ප්‍රබන්ධයක් නෙවෙයි. 2004 සිදුවුණ සත්‍ය සිදුවීමක් ඇසුරිනුයි මේ චිත්‍රපටය නිර්මාණය කරලා තියෙන්නේ. චිත්‍රපටයේ අවසානය‍ේදී, ඔවුන්ගේ සැබෑ කථාව බලාගන්නත් පුළුවන්.

බයිස්කෝප් වෙබ් අඩවියෙන් චිත්‍රපටයට සිංහල උපසිරැසි ලබාදීලා තියෙනවා. සිංහල උපසිරැසි නිර්මාණය කරපු ඒ සොහොයුරාටත් ස්තූති කරලා මෙතනින් Subtitle File එක බාගත කරගන්න.