Monday, April 23, 2012

Boolean algebra 3 - NOT gate

මේක තමයි NOT gate එකේ සංකේතය. බෆර් එක ඉස්සරහට "o" ක් එකතු කරල තමයි හදාගන තියෙන්නෙ. වෙන ගේට් එකක් ඉස්සරහට නොට් ගේට් එකක් එකතු කරද්දි කරන්නෙත් ගේට් එකේ අවුට්පුට් එකට "o" සංකේතයක් එකතු කරන එකයි.
මෙතනදි නොට් ගේට් එකේ A කියල ඉන්පුට් එකයි, Q කියල අවුට්පුට් එකයි තියනව. මේකෙදි A(input) 1 වුණොත් Q(output) 0 වෙනව. A(input) 0 වුණොත් Q(output) 1 වෙනව. ඒ කියන්නෙ ඉන්පුට් එකේ අනිත් පැත්ත තමයි වෙන්නෙ(අපවර්තනයක්). Inverter කියල කියන්නෙ ඒ නිසාම තමයි. නොට් ගේට් එකට අදාල Truth table එක තමයි මේ.




AQ
10
01


 තවත් පැහැදිලි වෙයි පහල තියන රූපයෙන්. මේකෙදි ස්විච් එක ඕෆ්(False) උනාම විතරයි බල්බ් එක පත්තු වෙන්නෙ(True). නැතිනම් බල්බ් එක හරහා ධාරාවක් ගලා නොගිහින් ඒක ස්විච් එක හරහා ගලා යනව(ෂෝට් වීමක් වගේ). ස්විච් එක ඔන් කරොත්(True) තියෙද්දි බල්බ් එකත් නිවිල(False).





නොට් ගේට් එකක් ට්‍රාන්සිස්ටර් එකක් පාවිච්චි කරල හදාගන්න විදිය තමයි පහල රූපයෙ තියෙන්නෙ.

මේකෙදි IN කියන ස්ථානය ඉන්පුට් එක විදියටත් LED බල්බයක් අවුට්පුට් එක විදියටත් තියනව. මෙතනදි පාවිච්චි කරල තියෙන්නෙ PNP transistor එකක්. ට්‍රාන්සිස්ටරයේ C හා E හරහා ධාරාවක් ගලාගියොත් තමයි LED බල්බ් එක පත්තුවෙලා අවුට්පුට් එක 1 වෙන්නෙ.

PNP ට්‍රාන්සිස්ටරයක Base(පාදම) හෙවත් B පාදයට - ධාරාවක් ලැබුණොත් තමයි ට්‍රාන්සිස්ටරය සංවෘත වෙලා C හා E අතර ධාරාවක් ගලන්න පටන් ගන්නෙ. ඒ කියන්නෙ IN (රෙසිස්ටරයක් සම්බන්ධ කරල තියෙන්නෙ ට්‍රාන්සිස්ටරයේ බේස් එකට උවමනා ප්‍රමාණයට ලැබෙන ධාරාව පාලනය කරන්න) 0 වුණොත් තමයි B වලට - ධාරාවක් ලැබෙන්නෙ. LED බල්බය පත්තු වෙලා අවුට්පුට් එකත් 1 වෙනව. ඉන්පුට් එක 1 උනාම LED එන නිවිල අවුට්පුට් එක 0 කියල සංකේතවත් කරනව.

7404 ic එකේ නොට් ගේට්  6ක් තියනව. ඩේටාෂීට් එක http://www.alldatasheet.com/datasheet-pdf/pdf/82662/ETC/7404.html වලින් ගන්න. ඒකෙ පින් ඩයග්‍රම් එක තියනව.

මීලඟ ලිපියෙන් OR gate එක ගැන ලියන්නම්.

Sunday, April 22, 2012

Boolean algebra 2 - Buffer gate

මුලින්ම Buffer ගේට් එකේ සංකේතය බලල ඉමු.


මෙතන තියන බෆර් එකේ a කියල ඉන්පුට් එකයි, Y කියල අවුට්පුට් එකයි තියනව. කලින් ලිපියෙ කීව වගේ බෆර් එකෙන් කරන්නෙ ලැබෙන ඉන්පුට් එක ඒ විදියටම අවුට්පුට් එක විදියටත් ලබා දෙන එක. ඒ කියන්නෙ ඉන්පුට් එක 1 නම් අවුට්පුට් එකත් 1මයි. ඉන්පුට් එක 0 නම් අවුට්පුට් එකත් 0මයි. බෆර් ගේට් එකට අදාල සත්‍යතා වගුව(Truth table) තමයි මේ.






aY
11
00



තවත් පැහැදිලි වෙයි පහල තියන රූපයෙන්. මේකෙදි ස්විච් එක ඔන්(True) උනාම විතරයි බල්බ් එක පත්තු වෙන්(True). ස්විච් එක ඕෆ් කරල(False) තියෙද්දි බල්බ් එකත් නිවිල.




බෆර් ගේට් එකක් ට්‍රාන්සිස්ටර් එකක් පාවිච්චි කරල හදල තියන විදිය තමයි පහල තියන රූපයෙන් පෙන්නන්නෙ.


මේකෙදි IN කියන ස්ථානය ඉන්පුට් එක විදියටත් LED බල්බයක් අවුට්පුට් එක විදියටත් තියනව. මෙතනදි පාවිච්චි කරල තියෙන්නෙ NPN transistor එකක්. ට්‍රාන්සිස්ටරයේ C හා E හරහා ධාරාවක් ගලාගියොත් තමයි LED බල්බ් එක පත්තුවෙලා අවුට්පුට් එක 1 වෙන්නෙ.

NPN ට්‍රාන්සිස්ටරයක Base(පාදම) හෙවත් B පාදයට + ධාරාවක් ලැබුණොත් තමයි ට්‍රාන්සිස්ටරය සංවෘත වෙලා C හා E අතර ධාරාවක් ගලන්න පටන් ගන්නෙ. IN (රෙසිස්ටරයක් සම්බන්ධ කරල තියෙන්නෙ ට්‍රාන්සිස්ටරයේ බේස් එකට උවමනා ප්‍රමාණයට ලැබෙන ධාරාව පාලනය කරන්න) 1 වුණොත් තමයි B වලට +ධාරාවක් ලැබෙන්නෙ. එතකොට LED බල්බය පත්තු වෙලා අවුට්පුට් එකත් 1 වෙනව. අනිත් වෙලාවට (ඉන්පුට් එක 0) LED එන නිවිල අවුට්පුට් එක 0 කියල සංකේතවත් කරනව. B හා E අතර රෙසිස්ටරයක් දාල තියෙන්නෙ IN හරහා ධාරාවක් නොලැබෙනකොට ට්‍රාන්සිස්ටරය විවෘත කරල තියන්න (ඒ වෙලාවට B වලට ලැබෙන්නෙ - වෝල්ටීයතාවයක් නිසා).

මීලඟ ලිපියෙන් NOT gate එක හඳුනාගනිමු.

Saturday, April 21, 2012

Boolean algebra 1 - Logic gates (තාර්කික ද්වාර)

ඉන්පුට්(ප්‍රදාන) එකක් හෝ කීපයක් මොකක් හරි තර්කයකට ලක්කරල එක අවුට්පුට් එකක්(ප්‍රතිදානයක්) ලබාදෙන උපාංගවලට තමයි Logic gates එහෙම නැත්නම් තාර්කික ද්වාර කියල කියන්නෙ. පොතේ තියෙන්නෙ එහෙමයි. දැනට ලොජික් ගේට්ස්, බූලීන් ඇල්ජිබ්‍රා O/L ICT කරන අයට, A/L ICT කරන අයට වගේම A/L Physics වලටත් උගන්වනව. හැබැයි මෙතන නිවැරදිම වචන භාවිතා නොවෙන්න පුළුවන්. ඉස්කෝලෙන් දැනට මේ ගැන උගන්නල තියන දෙපාරම ඉගැන්නුවෙ ඉංග්‍රීසියෙන් නිසා මම හරිම වචනෙ මොකක් කියන එක සමහර වෙලාවට දන්නෙ නෑ(ආයෙ පිසික්ස් සර් කරන්නෙත් ඉංග්‍රීසියෙන් නිසා කොහොමත් දැනගන්න ලැබෙන් නෑ :P)

තර්ක රූප පාවිච්චි කරල ඉදිරිපත් කරන්න පුළුවන් ක්‍රමයක් විදියට 1854දි ජෝර්ජ් බූල් තමයි බූලියානු වීජ ගණිතය(Boolean algebra) ඉදිරිපත් කරල තියෙන්නෙ. බූලීන් ඇල්ජිබ්‍රා වලදි ඉන්පුට් වලට හරි අවුට්පුට් වලට හරි තියෙන්න පුළුවන් අවස්ථා දෙකක් විතරයි. ඒ සත්‍ය/අසත්‍ය(True/False) කියන අවස්ථා දෙක විතරයි(True = 1 විදියටයි False = 0 විදියටයි තමයි පාවිච්චි කරන්නෙ. තව මේකට Digital Logic කියලත් කියනව). එදිනෙදා ජීවිතයෙදි උනත් මේ වගේ සිද්ධී ඕනෙ තරම් හමුවෙනව. ජනප්‍රියම උදාහරණෙ තමයි දොර. තියෙන්නෙ අවස්ථා දෙකයි. එක්කො ඇරල නැතිනම් වහල. සාමාන්‍යයෙන් පාවිච්චියේදී True අවස්ථාවට ගන්නෙ + වෝල්ටීයතාවයක්(+5V , +3.3V වගේ. ඒක පාවිච්චි කරන තැනදි තියන වෝල්ටීයතාන එක්ක වෙනස් වෙනව.). False අවස්ථාවට ගන්නෙ 0V එහෙම නැත්නම් - වෝල්ටීයතාවයක්.

මූලිකම ලොජික් ගේට් වර්ග තියෙන්නෙ හතරයි. අනිත්ව මේව කීපයක් එකතු කරල තමයි හදාගන්නෙ.
  1. Buffer - ලබාදෙන ප්‍රදානය(Input) ඒ විදියටම ප්‍රතිදානය(Output) විදියටත් ලබාදෙනව. ඒ කියන්නෙ. ඉන්පුට් එකකුයි අවුට්පුට් එකකුයි තමයි තියෙන්නෙ. උදාහරණයක් විදියට ගත්තොත් A, B කියල දොරවල් දෙකක් තියනව. A දොර තමයි ඉන්පුට් එක B දොර තමයි අවුට්පුට් එක. එතකොට A දොර අරිද්දි B දොරත් ඇරෙනව. A දොර වහද්දි B දොරත් වැහෙනව. උගන්නද්දි උනත් Buffer ගැන ගොඩක් වෙලාවට කියවෙන්නෙ නැති තරමි. අනිත් ගේට් වර්ග තුන තමයි ප්‍රධානව කතා කෙරෙන්නෙ. 
  2. NOT(Inverter) - ලබාදෙන ප්‍රදානයට(Input) ප්‍රතිවිරුද්ධව තමයි ප්‍රතිදානය(Output) ලබාදෙන්නෙ. ඒ කියන්නෙ. මේකටත් ඉන්පුට් එකකුයි අවුට්පුට් එකකුයි තමයි තියෙන්නෙ. උදාහරණයක් විදියට ගත්තොත් A, B කියල දොරවල් දෙකක් තියනව. A දොර තමයි ඉන්පුට් එක B දොර තමයි අවුට්පුට් එක. එතකොට A දොර අරිද්දි B දොර වැහෙනව. A දොර වහද්දි B දොර ඇරෙනව. 
  3. OR - OR gate එකේදි නම් අනිවාර්යෙන්ම ඉන්පුට් දෙකක් හෝ වැඩි ගණනක් තියෙන්නෙ ඕනෙ. අවුට්පුට් එකයි. මේකෙන් කරන්නෙ ලබාදෙන ඉන්පුට් එකක් හරි ඊට වැඩි ගණනක් හරි 1(True) නම් අවුට්පුට් එක 1(True) කරන එක. සේරම ඉන්පුට් 0(False) නම් අවුට්පුට් එකත් 0(False) වෙනව. ඒ කියන්නෙ මෙතනදි වෙන්නෙ එකතු කිරීමේ කර්මයක්(Addition).උදාහරණයක් විදියට ගත්තොත් A,B,Q කියල දොරවල් තැනක් තියනව. A,B දෙක ඉන්පුට් Q එක අවුට්පුට් එක. A දොර හරි, B දොර හරි එහෙම නැත්නම් A,B දොරවල් දෙකම හරි ඇරියොත් Q දොරත් ඇරෙනව. A,B දොරවල් දෙකම වහලනම් විතරයි Q දොරත් වැහෙන්නෙ.
  4. AND - AND gate එකේදිත් අනිවාර්යෙන්ම ඉන්පුට් දෙකක් හෝ වැඩි ගණනක් තියෙන්නෙ ඕනෙ. අවුට්පුට් එකයි. මෙතනදි වෙන්නෙ ඉන්පුට් සේරම 1(True) උනොත් විතරයි අවුට්පුට් එකත් 1(True) වෙන්නෙ. ඉන්පුට් එකක් හරි 0(False) නම් අවුට්පුට් එකත් 0(False) වෙනව. ඒ කියන්නෙ මෙතන තියෙන්නෙ වැඩිකිරීමේ කර්මයක්(Multiplication). උදාහරණයක් විදියට ගත්තොත් A,B,Q කියල දොරවල් තැනක් තියනව. A,B දෙක ඉන්පුට් Q එක අවුට්පුට් එක. A දොර හරි,B දොර හරි විතරක් ඇරල තිබුනොත් හරි දොරවල් දෙකම වහල තිබුණොත් හරි Q දොරත් තියෙන්නෙ වැහිල. A,B දොරවල් දෙකම ඇරියොත් විතරයි Q දොරත් ඇරෙන්නෙ.
මේ ලොජික් ගේට් වලයි, මේව පාවිච්චි කරල හදාගන්න ලොජික් ගේට් වලයි සංකේත(Symbols). සත්‍යතා වගු(Truth tables) එක්ක වැඩි විස්තර ඉදිරි ලිපි වලින් ලියන්නම්.

Robotics ගැන පුංචි හැඳින්වීමක්

මුලින්ම කියන්නම් මේ බ්ලොග් එක පටන්ගත්ත හේතුව. මම රොබොටික්ස් කියන්නෙ මොකක්ද කියලවත් දැනගත්තෙ මීට මාස අටකට නවයකට උඩදි. ඒත් යාළුවො කට්ටියක් එක්ක තරඟ වගයක් ගැන දැනගන්න ලැබිල ඒවට සහභාගී වෙන්න. අපිට උදව් කරන්න ගොඩක් අය හිටිය. ඒත් සමහර දේවල් ඉගෙනගන්න යද්දි අපිට ඒව කරගන්න බැරි වෙච්ච වෙලාවල් තියනව. අපි නොදැන හිටිය සමහර කරුණු නිසා නැගිටින්න බැරි විදියට වැටුණු අවස්ථා පවා තියනව. ඒ දේ තව කෙනෙකුට වෙන්න නොදෙන එක තමයි මූලිකම අරමුණ. ඒත් එක්කම රොබොටික්ස් වලට ආස අයට මුල ඉඳන්ම ලිපි පෙලක් ලියන්න.

රොබොටික්ස් කියන්නෙ මොකක්ද කියල සරලවම කීවොත් (අපි තේරුම් ගත්ත විදියට) බාහිර පරිසරයෙන් ලැබෙන සංවේදන, දුරස්ථ පාලකයකින් වගේ ලැබෙන උපදෙස් වගේ දේවල් වලට අනුව තීරණ අරන් මොකක් හරි කාර්යක් ඉටු කරන එක. උදාහරණයකට ගත්තොත් සෙල්ලම් කාර් එකක් තියනව. ඒක ඉස්සරහට යද්දි මොකක් හරි බාධකයක් තියනවනම් බාධකය මග ඇරගෙන යනව.
උඩ තියන පිංතූරයෙ තියන විදියට කාර් එක(එහෙම හිතන්න :P) ඉස්සරහට යනව. වම් පැත්තෙ බාධකයක් තියනව. දකුණු පැත්තට හරවගෙන යනව. මේ දේ කරන්න මොකක් හරි සංවේදකයකින් සංවේදනයක් ලැබෙන්න ඕනෙ බාධකයක් තියනවද, තියෙන්නෙ මෙන පැත්තෙද කියල අඳුනගන්න. ඊට පස්සෙ ලැබෙන සංවේදනයට අනුව තීරණය කරන්න ඕනෙ ඉදිරියට යනවද? හරවනවද?ආපස්සට එනවද? නැත්නම් නවතිනවද කියල. මේ තීරණේ ගන්න එක්කො කාරෙකට හැකියාවක් තියෙන්න ඕනෙ එහෙම නැත්නම් සංවේදක වලින් ලැබෙන දත්ත කවුරු හරි කෙනෙක් ගාවට හරි නැතිනම් මොකක් හරි වෙන පරිපතයකට හරි සම්ප්‍රේශනය(transmit) කරල ඒ පරිපතය හරි පුද්ගලයා හරි ගන්න තීරණයකට අනුව කාර් එක දක්වන ප්‍රතිචාරය මොකක්ද කියල දුරස්ත පාලන(Remote controlling) ක්‍රමයකින් කාර් එකට දැනුම් දෙන්න ඕනෙ. 

මෙතනදි කරන්න තියන සරලම දේ කාර් එකටම මේ තීරණය ගැනීමේ හැකියාව ලබා දෙන එක. ඒක යාන්ත්‍රික ක්‍රමයක් වෙන්න පුළුවන් (ලීවර් ස්විච් දෙකක් දෙපැත්තෙ හයි කරල බාධකයක හැප්පුනාම හැප්පුන ලීවර ස්විච් එකට විරුද්ධ පැත්තෙ මෝටරය නතර කරවල වගේ). එහෙම නැත්නම් සංවේදක වලින් ලැබෙන දත්ත ඉලෙක්ට්‍රොනික් පරිපතයකට දීල ඒකෙන් තීරණ ගන්නත් පුළුවන්. ඉලෙක්ට්‍රොනික් පරිපතය උනත් ක්‍රම කීපයකට හදන්න පුළුවන්. 

බාධකයක් තියනවද නැද්ද කියල අඳුනගන්න සංවේදකයක් දාල(LED + LDR වගේ) ට්‍රාන්සිස්ටර් දෙකකින් වගේ බාධකය තියන පැත්තට විරුද්ධ පැත්තෙ මෝටරය නතර කරවල කරන්න පුළුවන්. ඒත් මේ ක්‍රමයෙ අවාසියකට තියෙන්නෙ ගොඩක් හොඳින් තීරණයක් ගන්න බැරි එක. ගොඩක් වෙලාවට පුළුවන් ඔප්ෂන් දෙකක්, තැනක් වගේ පොඩි ගානක්. 

ආයෙ පුළුවන් ලොජික් ගේට් තියන IC(7400 වගේ) පාවිච්චි කරල(ට්‍රාන්සිස්ටර් වලින්ම ලොජික් ගේට් හදාගන වැඩේ කරන්න පුළුවන් උනත් ඒක ටිකක් කරදරයි). මේ විදියට අපි කරන්නෙ මුලින්ම ඉන්පුට්, අවුට්පුට් වලට අදාලව වෙන්න ඕනෙ ලොජිකල් ඔපරේෂන් ටික එකින් එක බූලීන් ඇල්ජිබ්‍රා වලින් ලියාගන්න එක. ඊට පස්සෙ කානෝ මැප් පාවිච්චි කරල ඒව සිම්ප්ලිෆයි කරගන්නව. පස්සෙ කානෝ මැප් එකේ රිසල්ට් එකට ලොජික් ගේට් පාවිච්චි කරල සර්කිට් එක හදාගන්නව.මේ විදියට ටිකක් හොඳට තීරණ ගන්න පුළුවන් මුල් විදි වලට වඩා. වාසියකට තියෙන්නෙ ඉගෙනගන්න ලොඩක් ලේසියිමේ ක්‍රමය. අනික රොබෝ කෙනෙක් ඇතුලෙ තීරණ ගනිද්දි වෙන්නෙ මොකක්ද කියල හොඳ අවබෝධයක් එනව. අවාසිය තියෙන්නෙ IC ටිකක් වැඩි ප්‍රමාඛයක් පාවිච්චි කරන්න වෙන එක. ඒත් එක්කම සර්කිට් එක සංකීර්ණ වෙනව, ඉඩ යනව උනත් වැඩියි. අනික මොකක්හරි වෙනසක් කරන්න උනාම සර්කිට් එකේ වයරින් වෙනස් කරලම කරන්න ඕනෙ නිසා ටිකක් කරදරයි. 

 අනිත් ක්‍රමය තමයි මයික්‍රොකන්ට්‍රෝලරයක් හරි මයික්‍රොප්‍රොසෙසරයක් හරි පාවිච්චි කරන එක. මේ අතරින් ටිකක් ලොකු වැඩ වලට තමයි මයික්‍රොප්‍රොසෙසර් නම් පාවිච්චි කරන්නෙ. වේගය වගේ ගුණාංග මයික්‍රොක්ට්‍රෝලරයට වඩා මයික්‍රොප්‍රොසෙසරයක ගොඩක් වැඩියි. මයික්‍රොක්ට්‍රෝලරයක තියන වැදගත්ම ගුණාංගය තමයි අපිට ඕනෙ දේ කරගන්න ප්‍රෝග්‍රෑම්කරගන්න තියන හැකියාව. ඒත් එක්කම රැම් එකක්(ප්‍රෝග්‍රෑම් එකේ වේරියබල් තියාගන්න), Flash memory එකක්(ප්‍රෝග්‍රෑම් එක ගබඩා කරන්න), EEPROM memory එකක්(මැකෙන් නැතිව තියාගන්න ඕනෙ දත්ත තියාගන්න හරියට නිකං හාඩ් ඩික්ස් එකේ වගේ). ඉන්පුට් අවුට්පුට් දෙන්න ලබාගන්න පිටතට තියන පින් වලට අදාලව IO ports තියනව. අපිට තියෙන්නෙ ඕනෙ විදියට ඉන්පුට් ටික දීල අවුට්පුට් එක වෙන්න ඕනෙ කොහොමද කියල ප්‍රෝග්‍රෑම් එකක් ලියල මයික්‍රොක්ට්‍රෝලරයට බර්න් කරල දාන එක විතරයි (ඒකටත් කලින් විදියටම කානෝ මැප් අපිනම් ගහගන්නව සමහර වෙලාවට. එතකොට ප්‍රෝග්‍රෑම් එක වැඩිය සංකීර්ණ වෙන්නෙ නෑ.). මේ ක්‍රමයෙදි වාසි විදියට වයරින් වෙනස් කරන්නෙ නැතිව තීරණ ගන්න විදිය වෙනස් කරන්න පුළුවන් වීම, අඩු ඉඩක් අඩු ජව පරිභෝජනයක් තිබීම වගේ දේවල් හඳුන්වන්න පුළුවන්.

ඉදිරි ලිපි වලින් මයික්‍රොක්ට්‍රෝලර ප්‍රෝග්‍රෑම් කිරීම ගැනයි, සංවේදක පාවච්චිය වගේ දේවලුයි ගැන ලියන්න බලාපොරොත්තු වෙනව. ඒත් එක්කම ලොජික් ගේට් පාවිච්චි කරල සර්කිට් ඩිසයින් කරන එකත්. හැඳින්වීම වගේම පලවෙනි ලිපිය මෙතනින් නවත්නව. ඉදිරි ලිපි වලින් හමුවෙමු.