Chapter 8: Microcontroller Input | পর্ব ৮ঃমাইক্রোকন্ট্রোলার ইনপুট
এই পর্বে আমরা আলোচনা করব কিভাবে মাইক্রোকন্ট্রোলারে ইনপুট দেওয়া যায়। কোডটি খুবই সহজ। AVR studio তে লেখা।
এই প্রোগ্রামটি PORTB থেকে ইনপুট নিয়ে PORTC তে আউটপুট দেখায়। সার্কিটে আমরা PORTB তে বাটন কানেক্ট করব এবং PORTC তে LED কানেক্ট করব। যতক্ষন বাটন প্রেস করা থাকবে ততক্ষন LED জ্বলবে।
মাইক্রোকন্ট্রোলারে ইনপুট দিতে হলে কিছু নিয়ম অনুসরণ করতে হবে।
পুল আপ/পুল ডাউন রেজিস্টরঃ
পুল আপ/পুল ডাউন রেজিস্টরের কাজ হল বাই ডিফল্ট ইনপুটের একটি ভ্যালু নির্ধারন করা। পুল আপ এবং পুল ডাউন সার্কিটের কাজ একই, গঠনও মোটামুটি এক। পার্থক্য হলঃ পুল ডাউন রেজিস্টর সংযুক্ত থাকে GND এর সাথে এবং পুল আপ রেজিস্টর সংযুক্ত থাকে VCC এর সাথে।
উপরের ডায়াগ্রামটির কথা বিবেচনা করা যাক। UA1 গেটটির একটি ইনপুট(PIN 1) এবং একটি আউটপুট(PIN 2) আছে। বেশিরভাগ লজিক গেটের ইনপুট স্টেটকে হাই ইমপিডেন্স বলা হয়। PIN 1 এর সাথে যদি কিছু কানেক্টেড না থাকে তাহলে ইনপুট হবে ফ্লোটিং। সুইচ S1 যখন অফ, তখন PIN 1 এর ইনপুট হবে ০।
এবার উপরের সার্কিটটি বিবেচনা করি। উপরের সার্কিটটিতে PIN1 সরাসরি VCC এর সাথে সংযুক্ত। অর্থ্যাত PIN1 এখন আর ফ্লোটিং নয়, এটি অন। সমস্যা হল S1 সুইচটি যখন ক্লোজ করা হবে তখন শর্ট সার্কিট হয়ে যাবে। ফলস্বরুপ তার,যন্ত্রপাতি ইত্যাদি পুড়ে যাওয়াসহ আরও অনেক দূর্ঘটনা ঘটতে পারে।
এবার নিচের সার্কিটটি দেখি। নিচের সার্কিটটি অনেকটা আগের মতই শুধু একটি পুল আপ রেজিস্টর যোগ করা হয়েছে। এই রেজিস্টরের কাজ হল পুরো সার্কিটের ভেতর দিয়ে প্রবাহমান কারেন্টকে সীমিত করা। সুইচটা যখন ওপেন তখন মাইক্রোকন্ট্রোলারের পিনটি রেজিস্টরের মধ্য দিয়ে ৫ ভোল্টের সাথে সংযুক্ত হবে। যেহেতু পিনের ইম্পিডেন্স খুব হাই সেহেতু মাল্টিমিটারের প্রব পিনটিতে ধরলে ৫ ভোল্ট রিডিং দেখাবে। যখন সুইচটি ক্লোজড তখন মাইক্রোকন্ট্রোলারের পিনটি সরাসরি GND তথা ০ ভোল্টের সাথে সংযুক্ত হবে।১০ কিলোওহম রেজিস্টরের যে প্রান্তটি পিনের সাথে সংযুক্ত, সেই প্রান্তটিও গ্রাউন্ডের সাথে সংযুক্ত হবে। কারেন্ট VCC থেকে রেজিস্টরের মধ্যদিয়ে গ্রাউন্ডের দিকে প্রবাহিত হবে। এতে করে আমাদের সার্কিটটি শর্ট সার্কিট হওয়া থেকে রক্ষা পাবে। প্রবাহিত কারেন্টের পরিমাণ আমরা নিচের সূত্রটি থেকে নির্ণয় করতে পারি।
I = V / R
I = 5v / 10,000ohms
I = .0005A (.5mA)
এই একই সার্কিটেরই আরেকটা ভ্যারিয়েশন হতে পারে পুলডাউন রেজিস্টর। পুল আপ রেজিস্টরের মতই এটি VCC থেকে GND এর দিকে বিদ্যুৎ প্রবাহ নিয়ন্ত্রন করে। এই সার্কিট খুব একটা ব্যবহৃত হয় না। কিন্তু এটি কার্যকরী। বেশিরভাগ সার্কিটে ১০ কিলোওহম অথবা ৪৭ কিলোওহম রেজিস্টর ব্যবহার করা হয় পুল আপের জন্য। মোদ্দাকথা হল VCC থেকে GND এ অতিরিক্ত কারেন্ট প্রবাহে বাধা দেবার মতো যথেষ্ট ভ্যলুর একটি রেজিস্টর বেছে নিতে হবে। সাধারনত ১০ কিলোওহম সবচেয়ে বেশি ব্যবহৃত হয়। কিন্তু যদি আপনি পাওয়ার সেভিং এর কথা ভাবেন তাহলে ৪৭ কিলোওহম আপনার সার্কিটের জন্য উপযুক্ত হতে পারে। কিছু কিছু ক্ষেত্রে আপনি আরও বেশি মানের রেজিস্টর নিতে পারেন। এটি নির্ভর করে আপনার মাইক্রোকন্ট্রোলারের পিনগুলোর কারেন্ট রেটিং এর উপর। সাধারনত মাইক্রোকন্ট্রোলারের পোর্টগুলোকে ইন্টারনালি পুল আপ করে রাখা যায়। কিন্তু এটি খুবই দূর্বল পুল আপ। এক্সটার্নাল পুল আপ ব্যবহার করাই উত্তম।
ডি বাউন্সিংঃ
এবার আমরা আরেকটি সমস্যা নিয়ে আলোচনা করব। যখনই আপনি কোনো বাটন প্রেস করবেন তখনই ডি বাউন্সিং নামক একটি সমস্যা দেখা দেবে। নিচের ছবিটিতে যেহেতু সার্কিটটি পুল আপ কন্ডিশনে আছে সেহেতু এর প্রাথমিক ইনপুট ৫ ভোল্ট।বাটন প্রেস করার পর ইনপুট হওয়া উচিৎ ০। কিন্তু বাস্তবে ঘটনা ঘটে নিচের ছবির মতো।
এই স্পাইকটি কয়েক মাইক্রো থেকে মিলি সেকেন্ড পর্যন্ত থাকে। বাটনটিকে যদি একটি ইন্টারাপটের জন্য ব্যবহার করা হয়(ইন্টারাপট সম্পর্কে আমরা পরের অধ্যায়গুলোতে আলোচনা করব) এবং তারপর একটি স্পাইক সৃষ্টি হয়, মাইক্রোকন্ট্রোলার মনে করবে পিনটিতে একাধিক ইন্টারাপট দেওয়া হয়েছে, অথচ এটি মোটেও সত্য নয়। এই সমস্যাটিকে দূর করার জন্য আমরা ০.১মাইক্রোফ্যারাডের একটি সিরামিক ক্যাপাসিটর ব্যবহার করব। ক্যাপাসিটরের ভোল্টেজ সহসা পরিবর্তিত হয় না। এর একটি চার্জিং এবং ডিসচার্জিং টাইম আছে। কাজেই ক্যাপাসিটর স্পাইক রোধ করতে পারে। শুধু এই প্রজেক্টের জন্যই নয়, আপনার সার্কিটে যখনই কোনো ইনপুট ব্যবহার করবেন বা স্পাইক রিমুভ করে স্টেবল সিগন্যাল চাইবেন তখনই ক্যাপাসিটর ব্যবহার করবেন।
ক্যাপাসিটর যতটা সম্ভব পিনের কাছাকাছি কানেক্ট করতে হবে। তা না হলে সিগন্যালটিকে ক্যপাসিটর পর্যন্ত পৌছাতে লম্বা দুরত্ব পাড়ি দিতে হবে এবং এর বিকৃতি ঘটবে। সম্ভব হলে ১০ নং(VCC) এবং ১১ নং(GND) পিনের মধ্যে একটি ক্যপাসিটর দেওয়া উচিৎ। কারন এইখান থেকেই মাইক্রোকন্ট্রোলার পাওয়ার পায়। এই সাপ্লাই স্টেবল না হলে মাইক্রোকন্ট্রোলার ঠিকভাবে চলবে না।
এবার মাইক্রোকন্ট্রোলারে হেক্স ফাইল লোড করার পালা। প্রথমে আমরা ‘Pony prog’ এবং তারপর ‘Extreme burner’ ব্যবহার করা দেখব।
Pony prog দিয়ে যেভাবে কোড লোড করবেনঃ
১)সফটওয়্যারটি ওপেন করলে প্রথমে কিছু মেসেজ দেখাবে।
২)প্রথমে ‘Device’ মেনুতে যান।তারপর AVR Micro, তারপর ATmega16।
৩)এবার ‘Setup’ এ যান।তারপর ‘Interface setup’ এ গিয়ে ‘Parallel’ সিলেক্ট করুন। AVR ISP API পরিবর্তন করে AVR ISP I/O করুন। তারপর LPT1 সিলেক্ট করুন।
৪)এরপর command >program options>Check:Reload files/Erase/Write program memory তে যান।
১)’File’ মেনুতে যান।
২)’Open program flash’ ফাইল সিলেক্ট করুন।
৩)যে ফোল্ডারে ‘AVR’ ফাইলটি সেভ করেছেন সেই ফোল্ডারে যান।
৪)’Default’ নামে একটি ফোল্ডার পাবেন।
৫)’Default’ ফোল্ডারে .hex এক্সটেনশনের একটি ফাইল পাবেন।ফাইলটি ওপেন করুন।
৬)এবার দেখতে পাবেন ‘Pony prog’উইন্ডোটি অসংখ্য বাইনারি এবং অক্টাল ডিজিট দিয়ে ভরে গেছে।
৭)মাইক্রোকন্ট্রোলারের প্যারালাল পোর্ট থেকে সিরিয়াল রেইল মাইক্রোকন্ট্রোলারে সংযুক্ত করুন। পাওয়ার সাপ্লাই অন করুন।
৮)এবার ‘Pony prog’ এ ক্লিক করুন। প্রোগ্রাম সফলভাবে লোড হবার পর একটি মেসেজ দেখাবে। যদি না হয় সেটিও মেসেজে দেখাবে।
Extreme Burner ব্যবহার করবেন যেভাবেঃ
Extreme burner USBASP programmer support করে। আমাদের AVR Programmer দিয়েও Extreme burner ব্যবহার করে হেক্স ফাইল লোড করা যাবে।
১)প্রথমে আপনার প্রোগ্রামারটিকে কম্পিউটারের ইউএসবি পোর্টে কানেক্ট করুন।
২)জিফ সকেটে আপনার মাইক্রোকন্ট্রোলারটি বসান।
৩)Extreme Burner সফটওয়্যারটি ওপেন করুন।
৪)’Chip’ মেন্যু থেকে মাইক্রোকন্ট্রোলার সিলেক্ট করুন। ‘Open’ সিলেক্ট করে আপনার হেক্স ফাইল লোড করুন এবং ‘Write all’ প্রেস করুন।
প্রোগ্রামটি সফলভাবে লোড হয়েছে।
সার্কিট ডায়াগ্রামঃ