MICROMOUSE Design V1.0 - සිංහල ලිපියක්

කට්ටිය හැමෝටම සුබ දවසක් !! :slight_smile:

මම අද මේ ලිපිය තුලින් ඔබ වෙත හදුන්වා දෙන්නේ මා විසින් දැනට ටික කාලයකට පෙර සාදනු ලැබූ Micromouse රොබෝ වරයෙකු ගැනයි. වැඩිකතා ඕන නෑ. කෙලිනම් අපි කතාවට යමු. රොබෝව නිර්මානය කිරීම ආරම්භයේදී මා විසින් ප්‍රදාන වශයෙන් සලකා බැලුවේ micromouse ගේ අවශ්‍යතාවන්‍ ය. එනම් රොබෝට තම මූලික ඉලක්කය සපුරා ගැනීමට තිබිය යුතු හැකියාවන් වේ. මීයෙකු වන්කගිරියක් තුලට දමා, එහි එක් තැනක උගේ ආහාරයක්(FOOD) තැබූ විට ඌ ඉතා වේගයෙන් එම වන්කගිරිය තුල එහා මෙහා ගමන් කර අවසානයේ ආහාරය සොයාගනියි. Micromouse ද එසේම වේ.

Micromouse රොබෝ කෙනෙක් සෑම විටම තමාට ලබාදෙන බිත්ති සහිත වන්කගිරිය(WallMaze), එක තුල කිසියම් ස්ථානයක සිට ආරම්භ කර අදාල අවසන් කල යුතු ස්ථානය දක්වා ගමන් කරයි.එම නිසා මෙම රොබෝද ප්‍රමානයෙන් කුඩා විය යුතුය. තවද එම රොබෝ ට සැලකිය යුතු මට්ටමේ වේගයකින් ගමන් කිරීමටත්, වේගයෙන් ලිස්සා නොයන සේ වන්ගුවල හැරවීමටත්, ඉතා ඉක්මනින් තීරණ ගැනීමට හැකියාවත් තිබිය යුතුය.

  • ඒ අනුව අප 10cm ක දිගක් සහ 7cm පලලක් රොබෝට තෝරාගත් අතර ඒ සදහා බිත්ති දෙකක් අතර පරතරය ,මෝටරයක දිග ,සන්වේදක(Sensors) වල පිහිටීම ආදී නිර්නායක කීපයක් තෝරාගත්තෙමු.

  • මෙහි මෝටර සදහා POLOLU 6v 400RPM HPCB මෝටරයන් 2ක් භාවිතා කලේ තරමක් වැඩි වේගයක් අවශ්‍ය වන නිසාවෙන් හා ප්‍රමානයෙන් කුඩා වන බැවිනි. රෝද සදහා POLOLU 32x7කුඩා ප්‍රමානයේ රෝදත්, කුඩා ප්‍රමානයේ Ballcastor එකක් ඉදිරියට සවි කිරීමටත් යොදාගත්තෙමු. මන්ද යත් රොබෝට ඇත්තේ රෝද දෙකක් පමනක් නිසාය.

  • රොබෝගේ මූලික Microcontroller සදහා STM32F103FTC6 යොදාගත්තේ එහි ඇති Processing speed එකත්, ප්‍රදාන හා ප්‍රතිදාන(INPUT /OUTPUT Pins) ප්‍රමානයත් සලකා බැලීමේදීය.

  • Micromouse ට MAZE එක තුල ගමන් කිරීමට සන්වේදක(Sensors) අනිවාර්යෙන් අවශ්‍ය වේ. ඒවා මගින් රොබෝගේ වර්තමාන පිහිටීමේ(Current Position) සිට බිත්තිවලට ඇති දුරට සමානුපාතික කිසියම් වෝල්ටීයතාවක්(OUTPUT ) එකක් ලබාගත හැකිවිය යුතුය. එපමනක් නොව ඒව මගින් ඉතා ඉක්මනින් එම දත්ත ලබා ගත හැකි විය යුතුය.මේ නිසා මේ සදහා විශේෂ අදෝරක්ත(IR) LED කිහිපයක් යොදා ගත් අතර ඒවා මගින් එල්ල කරන ආලෝකය බිත්ති මත වැදී පරාවර්තන වී පැමිනෙන විට එම ආලෝකය ග්‍රහනය කරමින් ග්‍රහනය වූ ප්‍රමානයට අනුරූපව කිසියම් OUTPUT එකක් ලබා දෙන්නා වූ PhotoTransistor කිහිපයක් මෙහිදී භාවිතා කලෙමු.එක IR Transmitter LED එකක් සමග එක PhotoTransistor ක් වනසේ තනි සන්වේදකයක් ගතහැකි අතර එවැනි සන්වේදක හතරක් අප භාවිතා කලෙමු.තවද රොබෝට එම සන්වේදක සවිකිරීමේදී ඒවා බිත්ති සමග සාදන ආනතිය පිලිබද මා විශේෂ අවදානයක් යොමු කලෙමි

  • රොබෝ ගමන් කරන දුර ,රොබෝ වන්ගුවකදී හරවන ප්‍රමානය මැනීමට ENCODERS හා Analog GYROSCOPE Sensor එකක් භාවිතා කලෙමු. එහිදී GYROSCOPE මගින් රොබො හරවන කෝනික ප්‍රවේගය(Angular Velocity) මැනගත හැක.එම මිනුම අනුකලනය (Integration) කරගැනීම මගින් රොබෝ හැරවී ඇති කෝනය මැනගත හැක.

  • රොබෝගේ මෝටර් පාලනය කිරීම සදහා TB6612FNG MOTOR Driver එක යොදාගත්තේ එහි ඇති PWM Frequency එක හා තවත් කරුනු සලකා බැලීමෙන් අනතුරුවය .

  • රොබෝ ක්‍රියාත්මක වන්නේ බැටරි බලයෙනි ,රොබෝගේ මෝටර හැර අනිත් සියලු දේ ක්‍රියාත්මක වීමට අවශ්‍ය වන්නේ 5V වන අතර මෝටරයන් 6V ආදාරයෙන් ක්‍රියාත්මක වේ. මේ නිසා බැටරි සදහා 7.4V 800mah LIPO බැටරියක් භාවිතා කලේ එය ප්‍රමානයෙන් කුඩා වීමත් හා එහි ඇති High discharge හැකියාවත් නිසාවෙනි.

  • බැටරියෙන් ලබාදෙන 7.4V වෝල්ටීයතාව, 6V සහ 5V දක්වා අඩු කිරීමට BUCK Converters කිහිපයක් භාවිතා කලෙමු. ඒවා voltage Regulators වලට වඩා කාර්යක්ශම වේ. රොබෝ ක්‍රියාත්මක වීමේදී එහි වූ Microcontroller එක මගින් මාර්ගය පිලිබද දත්ත(DATA) Sensors ආධාරයෙන් ලබාගෙන එම දත්ත උපයෝගී කරගෙන රොබෝ බිත්‍ති අතර සිටිනා ආකාරය තීරනය කරන අතරම ඇල්ගොරිතම කිහිපයක් භාවිතයෙන් රොබෝ ඊලගට සිටිය යුතු ස්ථානය තීරනය කරයි .ඉන්පසු රොබෝ එම පිහිටීමට ගැනීමට අවශ්‍ය කරන වේගයන් PWM Pulses ලෙස Motor Driver එක වෙත ලබාදෙන අතර Ecoders හා Gyrascope භාවිතෙයෙන් FEEDBACK ලබාගැනීම සිදු කරයි. එමගින් Micromouse අවශ්‍ය කරන පිහිටීම කරා ඉක්මනින් නිවැරදිව යොමුකර ගැනීමට හැක.
    මේ සදහා පරිපත නිර්මානය කිරීමට EASYEDA Circuit Designer Software එක භාවිතා කලෙමු. එහිදී රොබෝට තනි circuit පුවරුවක් නිර්මානය කලේ ඉහත කී සියලු කොටස් අන්තර්ගත වන ලෙසය .ඒ අනුව Microcontroller unit, Motor driver unit, Sensor units, Power units ලෙස සියලුම පරිපතයන් එක පරිපතයක වනසේ සැලසුම් කලෙමු. එහිදී ප්‍රමානය කුඩා කර ගැනීමට Double Sided PCB එකකට යාමට සිදුවිය.සම්පූර්න පරිපතය ඇද අවසන් කර එයට PCB එකක් නිර්මානය කලෙමි.

මේ සදහා Heat Toner Transfer method භාවිතා කල අතර එය තරමක් අපහසු වූයේ පරිපතය සන්කීර්න වන බැවිනි. මන්දයත් සන්නායක මාර්ග(Traces) පටු බැවිනි .මෙවැනි ක්‍රමයකට යොමු වීමට සිත් වුනේ විදේශ නිශ්පාදකයන් මගින් PCB නිර්මානයට තරම් කාලයක් නොවූ බැවිනි. නමුත් එවැනි සන්කීරන PCB නිර්මානයට වඩාත් යෝග්‍ය PCB Manufacturer කෙනෙකු මාරගයෙන් PCB නිර්මානය බව මෙහිදී මතක් කල යුතුමය.

කෙසේවෙතත් Micromouse ගේ ප්‍රමානය(Size,weight) අඩු කර ගනීමට Through hole සන්රචක වෙනුවට SMD සන්‍රචක යොදා ගැනීම හා Modules භාවිතා කිරීම සදහන් කල යුතුය .Modules ලෙස මෙහිදී STM32 Blue Pill board, motor driver board හා OLED display module භාවිතා කලෙමු. තවද display module භාවිතය නිසා රොබෝව calibration හා tuning කර ගැනීම පහසු විය.

සියලුම කොටස් පෑස්සීම (soldering) කල පසු රොබෝව Programme කිරීම ඇරබුනි. ඒසදහා Arduino IDE එක යොදාගත් අතර ,එයට ප්‍රථම stm32 වෙත අවශ්‍ය කරන firmware ඇතුලත් කර ගැනීමක් සිදු කලෙමි. maze solving සදහා flood fill ඇල්ගොරිතමය භාව්තා කල අතර ඊට අමතරව pid tuning ,kalman filter ආදිය මගින් සියුම් චලනයක් රොබෝගෙන් ලබාගත හැකිවිය.එහිදී Gyroscope sensor එක භාවිතයෙන් ගන්නා සංඥා filters භාවිතයෙන් නිරවද්ය කරගැනුනි. මක් නිසාද යත් ඕනෑම Gyroscope Sensor එකකට පොදු වූ drift error එක නිසාය. මෙම Micromouse සෑමවිටම එකම වේගයෙන් නොයන අතර අවශය විටදී එයට මන්දනය(deaccelaration ) කිරීමටත් ත්වරනය(acceleration) කිරීමටත් හැකියාව ඇත. විටින් විට ඇතිවූ යම් යම් ගැටලු නිසා රොබෝව නිර්මානයට සැලැකිය යුතු කාලයක් ගතවූ අතර ඉදිරියේදී එය මීටත් වඩා දියුනුකර වැඩිවේගයක් ලබා ගැනීමට අපේක්ශා කරමු. තවද මෙම ලිපියෙන් මා අපේක්ශා කලේ රොබෝගේ සියලු කොටස් ගැන දල හැදින්විමක් සිදුකිරීමටයි.

ඉදීරි ලිපි වලින් රොබො පිලිබද සම්පූරන විස්තරයක් ඉදිපත් කිරීමට අපේක්ශා කරන්නෙමු.

නැවත හමුවෙමු.

5 Likes