মাইক্রোকন্ট্রোলার

প্রাথমিক মাইক্রোকন্ট্রোলার শিক্ষা [পর্বঃ ০১ । প্রাথমিক আলোচনা]

আসসালামু আলাইকুম, আমি অন্তর আহমেদ। শুরু করছি আমার "প্রাথমিক মাইক্রোকন্ট্রোলার শিক্ষা" ধারাবাহিক টিউটোরিয়ালের প্রথম পর্ব। এই কোর্সটা মূলত তাদের জন্য যারা ইলেক্ট্রনিক্স নিয়ে কাজ করেন এবং মোটামুটি এনালগ সার্কিট এ জ্ঞান আছে।

মাইক্রোকন্ট্রোলার কিঃ

মাইক্রো মানে "ছোট", কন্ট্রোলার মানে "যে নিয়ন্ত্রন করে"। তাহলে এর মানে দাঁড়ায় "কোন কিছু নিয়ন্ত্রন করার ছোট একটি যন্ত্র"। এটি আসলে একটি ছোট্ট কম্পিউটার বা একটি সিঙ্গেল চিপ যাতে প্রসেসর, র‍্যাম, মেমোরি, ইনপুট/ আউটপুট প্রান্তস্থ একই সাথে থাকে।

একে uC/μC [MicroController], MCU [MicroController Unit] ইত্যাদি নামে ডাকা হয়।

মাইক্রোকন্ট্রোলারের কাজ কিঃ

মাইক্রোকন্ট্রোলার কি সেটা আমরা জানলাম। সহজ ভাষায় বলতে গেলে এর কাজ হল কিছু নির্দিষ্ট নিয়ম মেনে কিছু নির্দিষ্ট কাজ সম্পাদন করা। এখানে এই নির্দিষ্ট নিয়মটা হল প্রোগ্রামিং। অর্থাৎ আমরা একে প্রোগ্রামিং এর মাধ্যমে যেভাবে কাজ করতে নির্দেশ করবো এটা ঠিক সেই অনুযায়ী কাজ করবে বা আউটপুট দিবে। মাইক্রোকন্ট্রোলার আসলে একটি প্রোগ্রামাবেল ডিভাইস। যা বারবার যত খুশি ততবার প্রোগ্রাম করা যায়।

মাইক্রোকন্ট্রোলার এর মুল কাজ হল এনালগ কাজকে ডিজিটাল এ করা।

আমরা সবাই জানি এনালগ মানেই ঝামেলা, অনেক পরিশ্রম, ছোট একটি কাজে বড় সার্কিট তৈরি ইত্যাদি। এসব থেকে রক্ষা করতেই বিজ্ঞান আমাদের দিয়েছে মাইক্রোকন্ট্রোলার। যে কাজ করতে এনালগে আমাদের নানা প্রকার IC, transistor, diode ইত্যাদি দরকার হয় সে সকল কাজ আমরা ডিজিটাল এ শুধু ০, ১ দিয়ে করাতে পারি। উদাহরন দিয়ে বুঝিয়ে দেইঃ ধরি আমরা একটি ৭ সেগমেন্ট ঘড়ি বানাবো। তাহলে এনালগে আমাদের লাগছে প্রতিটি ৭ সেগমেন্ট ডিজিটের জন্য একটি করে ৭ সেগমেন্ট ড্রাইভার IC, টাইম কাউন্টার সার্কিট, টাইম সেট করার জন্য আরেকটি সার্কিট। কিন্তু আমরা যদি মাইক্রোকন্ট্রোলার দিয়ে করি তাহলে আমাদের সত্যি শুধু একটি ডিভাইস ছাড়া আর কিছুরই দরকার নেই। সবগুলো সার্কিটের কাজ কে শুধু একটি মাইক্রোকন্ট্রোলার দিয়েই করা সম্ভব।

কিছু জনপ্রিয় ব্রান্ডের নামঃ

  1. Microchip [PIC/dsPIC].
  2. Atmel [AVR/ARM].
  3. Arduino [মাইক্রোকন্ট্রোলার নয় কিন্তু AVR মাইক্রোকন্ট্রোলার দিয়ে তৈরি]
  4. Samsung/Toshiba/Intel ইত্যাদি আরও অনেক ব্যান্ডের আছে।

প্রত্যেকটি ব্রান্ডের আবার বেশ কিছু model আছে। যেমনঃ

Microchip PIC:

PIC16F series: 16F628, 16F676, 16F72, 16F877 ইত্যাদি ইত্যাদি প্রায় অনেক মডেলের আছে।

এরকম PIC18F, PIC24F, PIC32F series ইত্যাদি ইত্যাদি। এগুলো একটির থেকে অন্যটি ভিন্ন ভিন্ন। তবে সম্পূর্ণ ভাবে যে ভিন্ন তাও নয়। অনেকটাই মোবাইল ব্রান্ডের সাথে তুলনা করা জেতে পারে। যেমনঃ symphony ব্রান্ডের D series এর D18 মোবাইল। আর এখানে Microchip ব্রান্ডের 16F series এর  16F877A মডেল। আমরা যদি আমাদের ব্যবহারিক জীবনের সাথে সম্পর্ক বের করতে পারি তাহলে আমাদের মনে রাখতে সুবিধা হবে। 

[আমাদের এই কোর্সে প্রোগ্রাম করার জন্য আমরা শুধু MICROCHIP এর PIC16F877A ব্যবহার করবো। কারণ, এটি কম দামী এবং বেশি সুবিধা প্রধানকারী এবং প্রায় ৪০টি পিন আছে] 

কিছু কথাঃ

উপরের বর্ণনা থেকে আমরা বুঝতেই পারছি মাইক্রোকন্ট্রোলার আসলে একটা নয়। শত শত মাইক্রোকন্ট্রোলার থেকে আমাকে আমার কাজের চাহিদা অনুযায়ী বেছে নিতে হবে। প্রতিটি মাইক্রোকন্ট্রোলারের কিছু নিজস্ব features থাকে। আমরা ইতিমধ্যে জেনেছি, মাইক্রোকন্ট্রোলারের RAM, ROM, Program memory ইত্যাদি আছে। শুধু তাই নয় প্রত্যেকটি ডিভাইস এর আরও কিছু features আছে, যেমন: ADC, Timer, I2C, USB, DAC, PWM ইত্যাদি [এগুলো পরে বিস্তারিত আলোচনা করা হবে]। এগুলো সব MCU তে সমান পরিমানে থাকে না। আমাদের project এ কি ধরণের features প্রয়োজন এবং কত গুলো পিন লাগবে এগুলো maintain করেই আমাদেরকে সঠিক মাইক্রোকন্ট্রোলার বেছে নিতে হবে।

এজন্য অবশ্যই আপনাকে মাইক্রোকন্ট্রোলারের datasheet পড়তে হবে। datasheet পড়তে পড়তে আপনি এমন দক্ষ হবেন যে তখন datasheet না দেখেই বলে দিতে পারবেন একটি প্রোজেক্ট এর জন্য আপনাকে কোন MCU টা বেছে নিতে হবে এবং কোনটাতে কম খরচেই কাজ হবে। 

কোন প্রোগ্রামিং ল্যাঙ্গুয়েজঃ

যেহেতু মাইক্রোকন্ট্রোলার প্রোগ্রাম এর মাধ্যমে কাজ করে তাহলে অবশ্যই আমাদের একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে হবে। কম্পিউটার প্রোগ্রামিং এর মতো মাইক্রোকন্ট্রোলারেরও অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজ আছে।  

আমি আমার এই কোর্সে সি প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখাব এবং এই প্রোগ্রামিং ল্যাঙ্গুয়েজ এই কাজ করবো।

MICROCHIP এর জন্য সবথেকে ভাল একটি কম্পাইলার হলঃ

>>MikroC pro for PIC [cracked]. [click to download]

সার্কিট চেক করব কিভাবেঃ

আমরা তো অনেক project ই করব প্রতিটা project তো আমদের circuit এ করে চেক করা সম্ভব না। কারন প্রজেক্ট সঠিক ভাবে কাজ করবে কিনা তা আমরা জানি না সুতরাং বুজতেই পারছেন আমদের কত টাকা নষ্ট হবে…??? Proteus এমন একটি software যা দিয়ে আপনি computer এই circuit RUN করে চেক করতে পারবেন circuit টি কাজ করে কিনা। তাহলে বুঝতেই পারছেন Proteus একটি virtual circuit checking software.

>ISIS Proteus 8 professional [cracked].[click to download]

বার্নার বা রাইটারঃ

সফটওয়্যার ছাড়াও আমাদের আরেকটা জিনিস লাগবে যা খুবই গুরুত্বপূর্ণ। সেটি হল একটি ডিভাইস যা দিয়ে আমরা আমাদের করা প্রোগ্রামটিকে আমাদের মাইক্রোকন্ট্রোলারে নিবো। এটা অনেকটা কার্ড রিডার এর মত কাজ করে। আমরা যেমন মেমোরি কার্ড এ গান, ছবি লোড করার জন্য কার্ড রিডার ব্যবহার করি ঠিক তেমনই মাইক্রোকন্ট্রোলারে প্রোগ্রাম লোড করার জন্য এই ডিভাইসটির প্রয়োজন হয়। এর নাম PIC Burner/PIC Programmer.

কোনটি ভাল হবে?

বাজারে নানা প্রকারের এই ডিভাইস পাওয়া যায়। প্রশ্ন হল তাহলে আমার জন্য কোনটা ভাল হবে?

১। যদি আপনি শুধু MICROCHIP এর মধ্যেই সীমাবদ্ধ থাকতে চান তাহলে আপনার জন্য PICKIT 2/3.

২। আবার আপনি যদি চান যে আপনি একসময় AVR, Intel, 8051 ইত্যাদি নিয়ে কাজ করবেন তাহলে আপনার জন্য Universal Topwin Programmer ভাল হবে।

[MickoC এবং Proteus কিভাবে সেটআপ করতে হয় তা তাদের নিজ নিজ ফোল্ডার এ Readme.txt ফাইলে উল্লেখ্য করা আছে। তাও কারো যদি সেটআপ করতে কোন সমস্যা হয় তাহলে আমাকে জানাবেন] 

আরেকটা কথা, আপনারা প্রোগ্রাম রাইট করার জন্য যে ডিভাইসই ব্যবহার করেন তার জন্য একটি সফটওয়্যার প্রয়োজন হয়। যেমনঃ PICKIT 2 এর জন্য PICKIT 2.61. [Click to download]

Related Post

[পরবর্তীতে আমরা যখন আমাদের প্রথম প্রোগ্রাম লিখবো তখন আমরা দেখবো কিভাবে এই ডিভাইস ব্যবহার করতে হয়।]

যারা নতুন কাজ শিখছেন তাদের জন্য আপাতত আর কিছুই লাগবে না। এগুলো নিয়েই মাঠে নামতে পারেন।

PIC16F877A এর কিছু সাধারন আলোচনাঃ

মাইক্রোকন্ট্রোলারের পিন পরিচিতিঃ

RA, RB, RC, RD, RE[0….n] = ইনপুট/আউটপুট।

AN[0….n] = Analog to Digital(ADC) পিন।

TX, RX = USART protocol.

SDA, SCL = I2C protocol.

SDI, SDO, SCK = SPI protocol.

PSP[0….n] = PSP protocol.

INT[0..n] = External Interrupt.

PGC,PGD, PGM = প্রোগ্রাম লোড করার পিন।

CCP = Capture/Compare/PWM.

OSC1, OSC2 =  Crystal.

ইত্যাদি ইত্যাদি…...। [রে সবকিছুর বিস্তারিত ধারাবাহিক ভাবে উপস্থাপন করা হবে।]

আরেকটু ক্লিয়ার করে দেই। একটা পিনের একাধিক নাম থাকার মানে এই না যে পিনটি দিয়ে  একসাথেই সবগুলো বা একাধিক কাজ করানো যাবে। একটি পিনকে একটি প্রোগ্রামে শুধুমাত্র একটি কাজে ব্যবহার করা যাবে। যেমনঃ আমরা যদি কোন পিন ইনপুট/আউটপুট হিসেবে কাজ করাই তাহলে সেই পিনকে আর ADC বা অন্য কোন কাজে ব্যবহার করতে পারব না। এমনকি যদি ইনপুট হিসেবে কাজ করাই সেক্ষেত্রেও এই পিনকে আর আউটপুট হিসেবে কাজ করানো যাবে না।

আবার আমাদের যদি জানা থাকে ADC এর জন্য PIC এ AN পিন থাকে তাহলে আমরা PIC এর পিন ডায়াগ্রাম দেখেই বলে দিতে পারব কোন PICADC আছে এবং কয়টি আছে।

বেসিক পাওয়ার সাপ্লাইঃ 

আমাদের মাইক্রোকন্ট্রোলারটি চালু করতে প্রথমেই আমাদের একটি পাওয়ার সাপ্লাই লাগবে। যা অবশ্যই 5V এর হতে হবে। উপরে আমি একটি পাওয়ার সাপ্লাই দেখিয়েছি। যার A পয়েন্টে AC লাইন অথবা B পয়েন্টে 6-18V পর্যন্ত অথবা C পয়েন্টে সরাসরি 5V দিলেই আমাদের মাইক্রোকন্ট্রোলারটি চালু হবে। [A, B, C এর যেকোনো একটিতে দিলেই হবে।]

পাওয়ার সাপ্লাই এ আমরা দেখেছি VCC নামে একটি চিহ্ন আছে যা এই সার্কিটের VCC এর সাথে যুক্ত হবে।

এটিই মূলত মাইক্রোকন্ট্রোলারের বেসিক সার্কিট।

MCLR পিন VCC এর সাথে 1-10K রেজিস্টর দিয়ে লাগানো হয়। RESET বাটন বাধ্যতামূলক নয়।

এখানে OSC1, OSC2 তে লাগানো Crystal এর মান 4-40MHz পর্যন্ত হতে পারে। কোন কোন PIC এ এটি না লাগালেও কাজ করবে। কারন সেই PIC এর ইনসাইডে built-in ভাবে 8MHz লাগানো থাকে। তবে প্রোগ্রামে অবশ্যই উল্লেখ করে দিতে হয় PIC টি কোন ক্লক সোর্সে চলবে। এজন্য অবশ্যই Datasheet পরতে হবে।

Crystal মূলত প্রসেসরের কাজ করে। যা PIC কে স্পীড দিয়ে থাকে।

আজ এই পর্যন্তই। আল্লাহ হাফেয। 🙂

পরবর্তী আকর্ষণঃ

১। ডাটাশীট কিভাবে পরতে হয়?

২। pIC16F877A নিয়ে আলোচনা।

Antor Ahmed

আমি মাইক্রোকন্ট্রোলার নিয়ে বিগত ৪ বছর যাবত কাজ করছি। ইলেক্ট্রনিক্স আমার পেশা নয়। আমি এখনও একজন ছাত্র। কিন্তু ভবিষ্যতে এটিকেই আমার পেশা হিসেবে নিতে চাই। আমি প্রায় ১০০+টিও বেশি ভার্সিটি প্রোজেক্ট সম্পূর্ণভাবে করেছি এবং বেশ কিছু প্রফেশনাল প্রোজেক্টও করেছি।

কমেন্ট দেখুন

  • অন্তর ভাই, আশা করি ভাল আছেন। মাইক্রোকন্ট্রোলারের উপর আপনার টিউটোরিয়ালগুলো বেশ ভাল লাগে। মাইক্রোকন্ট্রোলারের সম্পর্কে কোন ধারণা ছিল না। আপনার টিউটোরিয়ালগুলো পড়ে মোটামুটি বুঝার চেষ্টা করছি। টিউটোরিয়ালগুলো আপনি ধারাবাহিকভাবেই দিচ্ছেন। তারপরও একটু পরামর্শ দেওয়ার সাহস করছি।
    ১। পুরোপুরি কোর্সে কি কি শেখাবেন মানে আমরা কি কি শিখতে পারব সেটার একটি সূচীপত্র দেওয়া যেতে পারে (বইয়ের সূচীপত্রের মত)। একেবারে প্রথম থেকে শেষ পর্যন্ত, হোক ২০ পর্বের কিংবা ৫০ পর্বের।
    ২। কয়েকটি প্রজেক্টের নাম যা কোর্স শেষে তৈরী করা যাবে।
    ৩। প্রয়োজনীয় কোডগুলোর লাইন বাই লাইন ব্যাখ্যা প্রদান।

    হয়ত বা একটু ঝামেলা হতে পারে। কিন্তু নবীনদের জন্য উপকারী হবে বলে মনে করি।

    আলাদা একাউন্ট করে কমেন্ট করতে চাচ্ছিলাম। কিন্তু আপনাদের সিস্টেম আমার ই-মেইল আর ভেরীভাই করে না। মেইরে লিংক আসে কিন্তু ক্লিক করলে ঝিম.......... ধরে। ফেসবুক দিয়েই লগইন করতে হল।

    ধন্যবাদ

    Cancel reply

    Leave a Reply

    Your email address will not be published. Required fields are marked*

    • ঠিক কি ধরনের সমস্যা পাচ্ছেন একটু জানাবেন দয়া করে?
      আর অবশ্যই আপনার চমৎকার পরামর্শ লেখক কে অনেক অনুপ্ররণা দিবে। ওর সাথে কথা হয়েছে। ব্যস্ততার কারনে খুব একটা সময় দিতে পারছে না। ফ্রী হয়েই রিপ্লাই দিবে।

      Cancel reply

      Leave a Reply

      Your email address will not be published. Required fields are marked*

      • উত্তর দিতে দেরী হওয়ার জন্য দু:খিত। মেইলে যে লিংকটা আসত সেইটাতে ক্লিক করলে পেইজ ওপেন হত না। এখন আমার একাউন্ট থেকেই লগইন করে কমেন্ট করছি। ধন্যবাদ।

        Cancel reply

        Leave a Reply

        Your email address will not be published. Required fields are marked*

    • ধন্যবাদ আপনার পরামর্শের জন্য। :) পরবরতিতে আপনার পরামর্শ অনুযায়ী পোস্ট করার চেষ্টা করব ইনশাল্লাহ। আমি খুব বেস্ততার মধ্যে থাকি তাই পোস্ট করতে পারি না।। তবে খুব শীঘ্রই পোস্ট করব ইনশাল্লাহ।

      Cancel reply

      Leave a Reply

      Your email address will not be published. Required fields are marked*

      • খুব অপেক্ষা করব। ধন্যবাদ

        Cancel reply

        Leave a Reply

        Your email address will not be published. Required fields are marked*

  • ভাইয়া আমার অনেক ভালো লাগছে এ মন একটা সাইড আমি অনেক দিন থেকে খোজি ধন্যবাদ ভাইয়া।

    Cancel reply

    Leave a Reply

    Your email address will not be published. Required fields are marked*

Leave a Reply

Your email address will not be published. Required fields are marked*

Share
Published by

Recent Posts

করোনা ভাইরাস প্রতিরোধে হ্যান্ড ওয়াশ চ্যালেঞ্জ - হ্যান্ড ওয়াশ টাইমার তৈরি করুন সহজেই

করোনা ভাইরাসের ভয়াবহতা নিয়ে আপনাদের বলার মত কিছু নেই। এটি যেকোনো জায়গায় থাকতে পারে এবং…

March 24, 2020

আরডুইনো দিয়ে স্ক্রলিং এলইডি মেসেজ ডিসপ্লে (ভিডিও সহ)

সকল বন্ধুদের স্বাগতম আমার আরডুইনো দিয়ে স্ক্রলিং এলইডি মেসেজ ডিসপ্লে প্রজেক্টে। এটা খুবই মজার একটি প্রজেক্ট।…

November 28, 2017

ভোঁতা ড্রিল বিট ধারালো করে নিন সহজেই (ভিডিও টিউটোরিয়াল)

ড্রিল বিট এর ধার দ্রুত ক্ষয়ে যায়। পিসিবি ড্রিল মেশিন গুলোতে ব্যবহৃত বিট গুলোকে চাইলে…

June 24, 2017

পাওয়ার ট্রান্সফরমার তৈরী করবার হিসাব নিকাশ (ক্যালকুলেটর সহ)

ভূমিকা পাওয়ার ট্রান্সফরমার তৈরী করতে চান অনেকেই। এই লেখার মাধ্যমে এটি তৈরী করবার প্রয়োজনীয় ক্যালকুলেশন…

June 16, 2017

তৈরি করুন সহজ কোড লক সিকিউরিটি সুইচ

কোড লক সিকিউরিটি সুইচ আমরা প্রায়ই মুভিতে দেখি। যেখানে নির্দিষ্ট কোড ঢুকানোর পর কোন সুইচ…

June 12, 2017

মাল্টিমিটার দিয়ে ট্রানজিস্টর এর বেজ, ইমিটার ও কালেক্টর লেগ বের করা

মাল্টিমিটার দিয়ে কিভাবে কোনো ট্রানজিস্টর এর বেজ, ইমিটার ও কালেক্টর (Base, Emitter & Collector) বের…

June 2, 2017