আজকে আমরা Micro controller এর ইনপুট এবং Proteus নিয়ে আলোচনা করবো। আজকে প্রোগ্রামার নিয়ে লিখার কথা ছিল কিন্তু অফিস এবং নিজের দৈনন্দিন কাজে প্রচণ্ড বাস্ততার মাঝে সময় করে উঠতে পারি নাই। আগামী পর্বে শুধু প্রোগ্রামার নিয়ে লিখব। আশা করি দেখাতে পারব কিভাবে বাসায় বসে PCB বানাবেন।
আমরা জানি যে, Micro controller এর যে কোন port এর কোন্ কোন্ পিন input অথবা output হিসেবে কাজ করবে তা TRIS Register ঠিক করে দেয়। তাই আমরা প্রথমেই যেই যেই পিনকে ইনপুট হিসেবে ব্যবহার করা দরকার তাদেরকে TRIS Register এর মাধ্যমে Configure করে নিবো। এর পর আমরা চেক করবো পিনটি High(Set) আছে না low(Clear) আছে অর্থাৎ পিনটিতে 5V আছে না 0V আছে। কোন bit এর status চেক করার জন্য আমরা BTFSC এবং BTFSS এই Command দুইটা ব্যবহার করতে পারি। BTFSC এর মানে হল Micro controller কোন বিট টেস্ট করে যদি clear পায় তবে সে next instruction skip করবে। BTFSC কে আমরা বলতে পারি, Bit Test that Follows, Skip if Clear. Bolded অক্ষরগুলোকে আলাদা করে লিখলে দাঁড়াচ্ছে BTFSC. একই ভাবে BTFSS কে আমরা বলতে পারি, Bit Test that Follows, Skip if Set অর্থাৎ Micro controller কোন বিট টেস্ট করে যদি Set পায় তবে সে next instruction skip করবে। চলুন একটা প্রোগ্রাম লিখে ফেলি যার মাধ্যমে কোন একটা switch ON করলে LED ON হবে এবং switch OFF করলে LED OFF হবে।
আমরা PortA এর RA0 পিনটিকে ইনপুট এবং PortA এর RA2 পিনটিকে OUTPUT হিসাবে ব্যবহার করবো।
CODE লিখে ফেলা যাক।
প্রথমে INPUT/OUTPUT configure করে নেয়া যাক,
BANKSEL TRISA
MOVLW B'00001'
MOVWF TRISA
BANKSEL PORTA
উপরের CODE গুলো খেয়াল করুন BANK SELECTION এর জন্য আমি BANKSEL নতুন একটি INSTRUCTION ব্যাবহার করেছি এবং PORTA এর RA0 পিনকে INPUT আর বাকী পিনগুলোকে OUTPUT হিসেবে সিলেক্ট করেছি।
এবার চেক করা যাক পিনটি HIGH না LOW. পিনটি HIGH হলে RA2 পিনকে আমরা set করবো। আর পিনটি low হলে RA2 পিনকে আমরা clear করবো।
START BTFSS PORTA,0
GOTO $+3
BSF PORTA,2
GOTO START
BCF PORTA,2
GOTO START
উপরের প্রথম লাইনে BTFSS এর মাধ্যমে Micro controller PORTA এর 0 নাম্বার BIT টি অর্থাৎ RA0 পিনটি HIGH আছে কী না তা চেক করা হয়েছে। HIGH হলে Micro controller নেক্সট INSTRUCTION SKIP করে তৃতীয় লাইনটি EXECUTE করবে । তৃতীয় লাইনে "BSF PORTA,2" instruction এর দ্বারা PORTA এর 2নাম্বার BIT টি অর্থাৎ RA2 পিনটিকে সেট বা HIGH করবে। এরপরের লাইনের "GOTO START" INSTRUCTION এর মাধ্যমে Micro controller আবার প্রথম লাইনে ফেরত যাবে এবং চেক করতে থাকবে RA0 পিনটির অবস্থা।
আর যদি RA0 পিনটি low অর্থাৎ clear হয় তাহলে কি ঘটবে। clear থাকলে Micro controller দ্বিতীয় লাইনটি skip করবে না। দ্বিতীয় লাইনে Micro controller কে ৩ লাইন skip করে পঞ্চম লাইনে যেতে বলা হয়েছে। পঞ্চম লাইনে PORTA এর 2নাম্বার BIT টি অর্থাৎ RA2পিনটিকে clear করতে বলা হয়েছে। এরপর "GOTO START" এর মাধ্যমে Micro controller আবার প্রথম লাইনে ফেরত যাবে।
এখন PORTA এর RA0 পিনে switch এর মাধ্যমে ৫ ভোল্ট supply দিলে এবং PORTA এর RA2 পিনে led লাগালে, switch টি ON/OFF করলে LED ON/OFF হবে। circuit diagram নিচে দেখুন।
উপরের diagram এ R1 ব্যবহার করা হয়েছে যেন RA0 পিন টি SW1 না চাপা পর্যন্ত কোন ভাবে high না হয়ে যায় তার জন্য। অর্থাৎ এই R1 resistor এর মাধ্যমে RA0 পিনকে টেনে low করা হয়েছে (Pull Low)। R2 resistor ব্যবহার করা হয়েছে LED এর কারেন্ট limit করার জন্য। Micro controller এর MCLR পিনটি active low(MCLR এর উপরে bar দেয়ায় এটি inverted) অর্থাৎ এই পিনটিকে low করা হলে Micro controller RESET হয়ে যাবে। কোন ভাবেই যাতে পিনটি low হতে না পারে তাই R3 resistor এর মাধ্যমে পিনটিকে টেনে high করে রাখা হয়েছে(pull high)। X1 হচ্ছে crystal Oscillator(2oMHz), c1,c2 ক্রিস্টাল টিকে stable করার জন্য। C1, C2 না দিলে crystal Oscillator এর Oscillation শুরু নাও হতে পারে। সার্কিটে power supply দেখানো হয়নি কিন্তু বাস্তবে আপনাকে অবশ্যই VDD(১৪ নাম্বার পিন) পিনে 5V supply দিতে হবে। বলা বাহুল্য VSS(৫ নাম্বার পিন) হল micro controller এর Ground পিন।
সবগুলো কোড একসাথে লিখলে দাঁড়াচ্ছে,
BANKSEL TRISA
MOVLW B'00001'
MOVWF TRISA
BANKSEL PORTA
START BTFSS PORTA,0
GOTO $+3
BSF PORTA,2
GOTO START
BCF PORTA,2
GOTO START
এবার PIC Simulator IDE তে রান করানো যাক।
Main Window এর Tools থেকে assembler ওপেন করে উপরের code গুলো assembler এ লিখে assembled and load করে নিন।
এরপর Tools থেকে Micro controller View ওপেন করুন।
যদি উপরের মত Micro controller View ওপেন না হয়ে ভিন্ন ধরনের window আসে তবে Option থেকে Compact Micro controller View এর উপর থেকে টিক চিহ্ন উঠিয়ে দিন।
এবার Extremely Fast Rate এ Simulation Start করুন।
Simulation Start হলে RA০ পিনের পাশে থাকা Toggle button টি Toggle করুন।
এখানে RA0 যখন ON তখন RA2ও ON হছে এবং RA0 , OFF হলে RA2 ও OFF হচ্ছে।
আপনারা চাইলে LED Window Open করে RA2 পিনে LED Connect করে দেখতে পারেন।
আমরা BTFSC Command ব্যবহার করেও উপরের কাজটি করতে পারতাম। সেক্ষেত্রে কোডগুলো একটু পরিবর্তন করতে হত। পরিবর্তিত অংশ নিম্নরুপ-
START BTFSC PORTA,0
GOTO $+3
BCF PORTA,2
GOTO START
BSF PORTA,2
GOTO START
গত টিউটোরিয়ালে আমি Proteus 7 Professional এর Download link দিয়েছিলাম। আশা করি আপনারা সেখান থেকে download করে নিয়েছেন। আমি গ্রামীণফোনের নেট ব্যবহার করি আমার জন্য বারবার ১০০MB এর সফটওয়্যার আপলোড করা খুবই কষ্টকর। তারপরও আমি চেষ্টা করেছিলাম Mediafire এ আপলোড করতে কিন্তু দুখের কথা আমি ব্যর্থ হয়েছি। কোন সহৃদয়বান ব্যক্তি যদি আপলোড করে লিঙ্ক দিয়ে দেন তবে খুবই ভালো হয়।
তবে এখন পর্যন্ত কেউ আমাকে বলেননি যে সফলতার সাথে কেউ download করতে পেরেছেন। যদিও আমি বিভিন্ন পিসি থেকে download দিয়ে দেখেছি হয় কিনা। আমার কোন সমস্যা হয়নি।
যারা download করেন নাই তারা নিচের লিঙ্ক থেকে download করে নিন।
কিভাবে ইন্সটল করবেন তা Help folder এ দেয়া আছে। আশা করি কোন সমস্যা হবে না। সমস্যা হলে তো কমেন্ট এর ঘর থাকলোই সর্ব নিচে।
আমার দেখা Proteus হল সর্বশ্রেষ্ঠ simulation Software. Proteus দিয়ে আপনি PCB ও ডিজাইন করতে পারবেন। Proteus এর দুইটা অংশ। একটি হল ISIS এবং অন্যটি ARES. Schematic design এবং Simulation এর জন্য ISIS আর PCB ডিজাইন এর জন্য ARES।
All Programs থেকে ISIS 7 Professional Administrator এ ওপেন করুন।
View Sample Design এর dialogue box আসলে তাতে NO দিন।
বামে P তে ক্লিক করলে নতুন একটা pick device নামক window আসবে। এই window এর keywords এর ঘরে আপনার প্রয়োজনীয় ডিভাইসের নাম লিখুন। ISIS এর লাইব্রেরিতে ডিভাইসটি থাকলে তা দেখতে পাবেন। আমরা keywords এ PIC16F84A লিখতে পারি। micro controller টির বর্ণনা Results এর ঘরে দেখতে পাবেন। এর গায়ে ডাবল ক্লিক করলে ডিভাইসটি Main window এর Devices এর ঘরে পাওয়া যাবে।
এরপর PICK DEVICES window close করে দিন। Devices এর ঘরে P এর নিচে pic16f84a এর নাম দেখতে পাবেন। এখান থেকে ডিভাইসটি সিলেক্ট করে Drawing এর জায়গায় একবার মাউসের left button এ ক্লিক করুন। দেখবেন আপনার মাউসের নিচে কম্পোনেন্ট টির একটা অবয়ব দেখা যাচ্ছে। এবার যেখানে বসাতে চান সেখানে অবয়বটি নিয়ে আবার ক্লিক করুন দেখবেন ডিভাইসটি সুন্দর স্থাপন করা হয়ে গেছে।
এবার সুইচ বসানোর পালা। আগের মত P তে ক্লিক করে pick devices এর keywords এ লিখুন Switch. নিচের মত category এবং subcategory সিলেক্ট করে কাঙ্খিত Switch এর উপর ডাবল ক্লিক করুন।
এখন devices এর ঘরে সুইচটির নাম আসলে সিলেক্ট করে সুইচটিকে জায়গামত স্থাপন করুন। এবার মাউস যেকোন পিনের মাথায় নিলে দেখবেন হাল্কা লাল রঙের একটা বক্স আসবে। এই সময় ক্লিক করলে আপনি মাউসের মাথায় wire দেখতে পাবেন। মাউস যেখানে নিবেন wire ও সেখানে যাবে। এবার যেই পিনের সাথে যুক্ত করবেন মাউস সেখানে নিন দেখবেন আবার আগের মত বক্স আসবে। আবার ক্লিক করুন দেখবেন wire connect হয়ে গেছে।
এবার সুইচের অন্য প্রান্তে পাওয়ার দেয়া যাক। এর জন্য আপনাকে Terminal mode এ যেতে হবে। এতক্ষন আমরা Component Mode এ ছিলাম। কোথায় ক্লিক করলে Terminal mode এ যাবে তা নিচে দেখুন। Terminal mode এর ভিতর থেকে Power সিলেক্ট করুন। এরপর যেভাবে Component বসানো হয়েছিল একই ভাবে Power Terminal জায়গামত বসিয়ে নিন।
সুইচের অন্য প্রান্তের সাথে Power terminal wire দিয়ে যুক্ত করুন।
এবার 10k Ohms এর একটা resistor বসানো যাক। এর জন্য আপনাকে আবার Component Mode এ যেতে হবে। নিচে দেখানো হল।
Pick Device থেকে 10k Ohms এর Resistor select করে নিন। Subcategory আমার মত নির্বাচন করতে হবে এমন কোন কথা নাই। Component এর Value ঠিক থাকলেই চলবে।
Resistor টিকে ডিজাইনে স্থাপন করুন। Resistor টিকে Rotate করতে চাইলে এর গায়ের উপর মাউসের right button click করলে Rotate clockwise এবং anti clockwise এর অপশন পাবেন। 180 degree ঘুরাতে Mirror না ব্যবহার করাই ভালো।
এবার resistor এর একপ্রান্ত micro controller এর সাথে এবং অন্য প্রান্ত Ground এর সাথে যুক্ত করতে হবে। Terminal Mode থেকে যেভাবে Power Terminal select করা হয়েছিল একই জায়গায় Power Terminal এর নিচে Ground Terminal আছে।
নিচের চিত্রের মত করে বাকি component গুলো বসিয়ে connection complete কর ফেলুন। LED নির্বাচনের ক্ষেত্রে Animated LED সিলেক্ট করবেন তাহলে দেখতে সুবিধা হবে। LED যেন শুধু লাল বা সবুজ হয় অর্থাৎ multicolored না হয়।
এবার Micro controller এর ভিতর সোর্স কোড ঢুকানোর পালা। Micro controller এর উপর ডাবল ক্লিক করুন দেখুন নিচের window আসে কি না। আসলে Clock Frequency 20MHz ইনপুট দিন। আর সোর্স কোড ব্রাউজ করে .HEX ফাইল দেখিয়ে দিন। সোর্স কোড কোথায় পাবেন!! বলছি একটু সবুর করতে হবে ভাই। আপনি তো পড়ছেন, আমার তো লিখতে লিখতে হাত ব্যথা হয়ে গেল। আগে edit box টা দেখে নিন।
সোর্স কোড কোত্থেকে আসবে। আপনাকে প্রোগ্রাম লিখে বানাতে হবে। এই বিষয়ে আপনাকে সাহায্য করব PIC Simulator IDE. কোন একটি প্রোগ্রাম PIC Simulator IDE এর assembler এ লিখে assembled and load করে নিন। assembled and load করার সময় সফটওয়্যারটি অবশ্যই আপনাকে প্রোগ্রাম Save করতে বলছিল। খেয়াল রাখুন আপনি কি নামে এবং কোথায় Save করছেন। ঐ লোকেশনে সফটওয়্যারটি আপনার দেয়া নামে একটি .HEX ফাইল তৈরি করবে। ধরা যাক আপনি নাম দিয়েছিলেন Switch, তাহলে সে Switch.hex নামে একটা ফাইল পাবেন। এইটাই আপনার কাঙ্খিত সোর্স কোড।
এখন Simulate করার পালা। ISIS এর নিচে play বাটনে ক্লিক করুন। Simulation শুরু হএ গেছে। এবার Switch এর পাশে থাকা দুইটা arrow চিহ্ন বিশিষ্ট Up এবং Down বাটনে ক্লিক করুন তাহলে Switch টি Open এবং Close হবে।
Proteus এ যেহেতু clock frequency আলাদা করে দেয়া হয়েছে তাই এতে OSC1এবং OSC2 পিনে crystal connect করার দরকার নাই। Proteus এ MCLR pin কে pull high করে রাখারও দরকার নাই। সফটওয়্যার টিতে বিভিন্ন Device এর VCC এবং Ground পিন Hidden করা থাকে। চিন্তার কোন কারন নাই এই দুই পিন internally Power এবং Ground Terminal এর সাথে যুক্ত করা আছে।
আজকে এই পর্যন্তই থাকলো। আমার আর একটি পর্ব লেখার কথা Assembly নিয়ে। তাই আগামী পর্বের পরের পর্বে আমি assembly তে এনালগ ইনপুট এবং LCD display নিয়ে আলচনা করবো। আগামী দিন Programmer বানিয়েই ফেলব ইনশাল্লাহ, সেই পর্যন্ত ভালো থাকবেন।
আমি Faisal। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 15 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 7 টি টিউন ও 110 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
khob sondor hoiyese vai. agami poste program niye dekhte chai.thanks