ইতোপূর্বে আমরা দেখেছি এনালগ আর ডিজিটাল সিস্টেম কিভাবে কাজ করে। এই সিস্টেমসমূহকে নিয়ন্ত্রণ করার মূল চাবিকাঠি হচ্ছে মাইক্রোকন্ট্রোলার আর প্রোগ্রামিং। বিভিন্ন সেন্সর থেকে ইনপুট নিয়ে আমরা এই মাইক্রোকন্ট্রোলারে দিতে পারি আর প্রয়োজনীয় প্রোগ্রাম লিখে মাইক্রোকন্ট্রোলার দ্বারা যে কোন অটোমেশন কিংবা রোবট বানাতে পারি। আজ আমরা জানবো মাইক্রোকন্ট্রোলার নিয়ে; পরবর্তীতে এই মাইক্রোকন্ট্রোলার কিভাবে প্রোগ্রাম করা যায়, বিভিন্ন সেন্সর কিভাবে ডিজাইন করা যায়, কিভাবে সিমুলেশন করা যায় ইত্যাদি নিয়ে বিস্তারিত জানবো।
মাইক্রোকন্ট্রোলার এক ধরণের প্রোগ্রামেবল ইন্ট্রিগ্রেটেড সার্কিট (IC) ৮ পিন থেকে শুরু করে সাধারণত ১২৮ পিন পর্যন্ত হয়ে থাকে। একটা কম্পিউটারে যা যা আছে তার প্রায় সবই মাইক্রোকন্ট্রোলারে দেখা যায়। প্রশ্ন জাগতে পারে কোথায় আমরা মাইক্রোকন্ট্রোলার ব্যবহার করবো? গত পর্বে আমরা প্রবাহ চিত্রের মাধ্যমে দেখেছি তাপমাত্রা ও আর্দ্রতা পরিমাপ করে কিভাবে রুম হিটার বা এয়ার কুলার নিয়ন্ত্রণ করা যায়। এই কাজটি করার জন্যে আমরা যদি আমাদের কম্পিউটার সারাদিন চালু রাখি তবে কী পরিমাণ বিদ্যুৎ খরচ হচ্ছে তা না বললেই চলে। এই ছোট কাজটি মাইক্রোকন্ট্রোলার ব্যবহার করে খুব সহজেই আমরা করতে পারি। আমাদের হাতের কাছের বিভিন্ন ডিভাইস যেমন রিমোট, ঘড়ি ক্যালকুলেটর ইত্যাদিতে মাইক্রোকন্ট্রোলার আছে।
মাইক্রোকন্ট্রোলার প্রস্তুতকারকদের মধ্যে ইনটেল, মটরোলা, এটমেল, ফিলিপ্স উল্লেখযোগ্য। তবে আমরা সবচেয়ে জনপ্রিয় এটমেল এর মাইক্রোকন্ট্রলার নিয়ে জানবো। এট্মেল এর নামের শুরুতে AT থাকে । এটমেল ৩ ধরণের মাইক্রোকন্ট্রোলার প্রস্তুত করে- মেগা, টাইনি, ও ক্লাসিক। যেমনঃ ATmega8, ATmega16, ATmega32, ATiny15, ATiny26 ইত্যাদি।
নামের শেষে যে সংখ্যা আছে তা সাধারণত ঐ মাইক্রোকন্ট্রোলারের Flash Memory নির্দেশ করে।
আভ্যন্তরীণ ব্লক ডায়াগ্রামঃ

চিত্রঃ ATmega মাইক্রোকন্ট্রোলারের ব্লক ডায়াগ্রাম
চিত্রে একটি ATmega মাইক্রোকন্ট্রোলারের ব্লক ডায়াগ্রাম দেখানো হয়েছে। এতে দেখা যাচ্ছে মাইক্রোকন্ট্রোলারে ৫টি ইনপুট আউটপুট পোর্ট আছে। এদের প্রতিটি পোর্টে ৮টি করে পিন আছে।
CPU হিসেবে যে প্রসেসর থাকে তার গতি সাধারণত মেগাহার্টজ রেঞ্জে হয়ে থাকে। আমরা কম্পিউটার কেনার সময় প্রসেসর এর গতি দেখে কেনার চেষ্টা করি যার গতি সাধারণত গিগাহার্টজ রেঞ্জের। এই গতি আসলে প্রসেসর যে ক্লক পালসের সাথে কাজ করে সেই ক্লক এর ফ্রিকোয়েন্সি।
মেমোরিঃ আমরা বিভিন্ন ধরণের মেমোরির সাথে পরিচিত , মেমোরি কার্ড না – মাইক্রোকন্ট্রোলারের মেমোরির কথা বলছি। মাইক্রোকন্ট্রোলারে ৪ ধরনের মেমোরি থাকে-
- FLASH Memory,
- SRAM (Static Random Access Memory),
- EEPROM(Electrically Erasable Programable Read Only Memory)
- Register Memory
মাইক্রোকন্ট্রোলারে যে প্রোগ্রাম লিখা হবে তা FLASH Memory তে জমা হবে। FLASH Memory কেবল কন্ট্রোলারকে কম্পিটারের সাথে লাগিয়ে ইন্টারফেস (Read or Write ) করা যাবে। পোগ্রাম লিখার পর মাইক্রোকন্ট্রোলার চিপে তা লোড করার জন্যে বার্নার ব্যাবহার করা হয়, অবশ্য বর্তমানে বিশেষ সুবিধাসম্পন্ন চিপসহ প্রোটোটাইপ বোর্ড Arduino বাজারে পাওয়া যায়। আমরা পরবর্তীতে এই Arduino ও এর প্রোগ্রামিং সম্পর্কে বিশদভাবে জানব।
প্রোগ্রাম লিখার সময় যে চলক (Variables) ব্যবহার করা হবে তা SRAM এ জমা হবে। পাওয়ার সাপ্লাই অফ করে দিলে SRAM এ কোন সেইভ মেমোরি থাকেনা। এখানে একটা সমস্যা হলো ধরা যাক মাইক্রোকন্ট্রোলার দিয়ে একটি ডিজিটাল ঘড়ি ডিজাইন করা হলো যা দিয়ে কোন সময় গণনা করা যাবে। একবার টাইম সেট করে কিছুদূর গণনা করার পর সাপ্লাই অফ হয়ে গেল। এখন সময় গণনা করে কোন না কোন চলকে তো তা রাখতেই হবে , এক্ষেত্রে নতুন করে সাপ্লাই দিলে আবার টাইম সেট করে দেয়ার ঝামেলা থেকে যায় কেননা উক্ত চলকের মান SRAM এ সেইভ ছিল আর সাপ্লাই বন্ধ হয়ে গেলে SRAM এর মেমোরি মুছে যায়। এসকল ক্ষেত্রে EEPROM ব্যবহার করা হয়।
Register সাধারণত ৮ বিটের (৮ বিট = ১ বাইট) হয়ে থাকে। মাইক্রোকন্ট্রোলারে ADC, Timer, I/O Port ইত্যাদির জন্যে আলাদা আলাদা রেজিস্টার থাকে। প্রত্যেকটা I/O port এ ৩টি করে Register আছে।
- PINA ( Input Data Register)
- PORTA ( Output Data Register )
- DDRA ( Data Direction Register )
ATmega32 : এটি এটমেল কোম্পানির তৈরি ৪০ পিনের মাইক্রোকন্ট্রোলার। এর ৪ টি ইনপুট আউটপুট পোর্ট, ১০ বিট (০-১০২৩ লেভেল) এর ৮ টি ADC (Analog to Digital Converter), ১৬ বিটের ১টি ও ৮ বিটের ২ টি টাইমার ইত্যাদি আছে।

চিত্রঃ ATmega32 এর পিন ডায়াগ্রাম
Vcc : পাওয়ার সাপ্লাই পজিটিভ। এই পিনে ৫ ভোল্ট এর DC এর পজিটিভ প্রান্ত লাগাতে হবে।
Gnd: পাওয়ার সাপ্লাই নেগেটিভ। এই পিনে ৫ ভোল্ট DC এর নেগেটিভ প্রান্ত লাগাতে হবে।
Reset : একে বলে রিসেট বার পিন। উপরের চিত্রে ৯ নম্বর পিনে Reset লেখার উপর একটা বার চিহ্ন আছে। এটি বুঝায় পিনটি একটি (Active-Low) অর্থাৎ এই পিনে ডিজিটাল 1 দিলে তা Inactive থাকবে আর ডিজিটাল 0 দিলে তা Active হবে অর্থাৎ প্রোগ্রাম নতুন করে লোড হবে, প্রথম থেকে কাজ শুরু করবে আর সকল ভেরিয়েবল এর মান 0 হবে।
XTAL1 & XTAL2 : মাইক্রোকন্ট্রোলারে ক্লক পালস দেয়ার দুটি পিন।
AREF : এটি হলো এনালগ রেফারেন্স পিন। মাইক্রোকন্ট্রোলারে এনালগ রেফারেন্স ভোল্টেজ সাপ্লাই দেয়ার জন্যে এই পিন ব্যবহার করা হয়।
আজ এটুকুই। পরবর্তী পর্বে আমরা মাইক্রোকন্ট্রোলার প্রোগ্রামিং ও প্রোটোটাইপ বোর্ড Arduino সম্পর্কে জানব।