২০-২৫ টা মোটর কি একসাথে পুরোপুরি নিয়ন্ত্রণ সম্ভব সাধারণ MCU দিয়ে ? কি লাগবে? FPGA?

বড় প্রজেক্ট করতে গেলে আমরা বুঝতে পারবো ছোট মাইক্রোকন্ট্রোলার গুলার অসুবিধা।  যেমন ধরলাম আমার রোবট এর ৪০ টা মোটর, ১০০ টা সেন্সর, সিস্টেমে আর  আছে ইমেজ প্রসেসিং, আরটিফিশিয়াল ইন্টিলিজেন্স। একটা Atmega32 দিয়ে বহু কষ্ট করে হয়ত ৪ টা মোটর আর অল্প কিছু সেন্সর ইন্টারফেস করা যাবে। তাও যেহেতু Atmega32 ৮ বিট এর প্রসেসর, ফীডব্যক পালস, pwm জেনারেশনে খুব বেশি রেজুলেশন পাওয়া যাবেনা।  আর যদি কম্পেন্সেটর ডিজাইন করতে হয়, তাহলে ৪ টা মোটর একসাথে ভালভাবে কন্ট্রোল করাও যাবেনা।  কারন মাইক্রোকন্ট্রোলার প্যরালালি কাজ করতে পারেনা। ইমেজ প্রসেসিং বা এজাতীয় কিছু ডেভেলপ করতে গেলে লাগবে বড় মেমরি, স্পিড আর বেশি বীট (৩২/৬৪ )  এর প্রসেস ক্ষমতা সম্পন্ন চিপ।

আমরা যে SAM4s Xplained pro ব্যবহার করছিলাম, সেটা অবশ্য ৩২ বিট এর। সেটা কিছুটা বেটার পারফর্ম করবে কিছু এডিশনাল হার্ডওয়ার ব্যবহার করে। (ধরুন ১০০ টা মোটর এর পালস গোনার জন্য কিছু, যেটা কোন একটা প্রোটকলে মূল কন্ট্রোলার এর সাথে যুক্ত  ধরুন SPI বা  I2C; আবার pwm ১০০ চ্যনেল এর কোন হার্ডওয়ার  যেটা আগের মতই  যুক্ত  SPI বা  I2C  দিয়ে মূল কন্ট্রোলার দিয়ে ) । কিন্তু, এত কিছুর পর ও  আমরা কি প্যরালালি সব কাজ করতে পারবো ১০০ টা মোটরের ?  ডিরেকশন/ স্পিড হয়ত করা যাবে। কিন্তু যদি প্রতিটা মোটরের জন্য এলগরিদম,   কম্পেন্সেটর অথবা অবসারভার যদি  ডিজাইন করার দরকার হয়, তাহলে?

তাহলে আসলে আমাদের লাগবে FPGA

FPGA  হল Field Programable Gate Array। এটা দিয়ে কি করা যায় ? এই প্রশ্ন এর চেয়ে বরং জানা উচিত কি করা যায় না? ইলেক্ট্রিলাল সার্কিটে যা যা পসিবল,  সবি এটা দিয়ে সম্ভব, এবং প্যরালালি। এটা অসংখ্য NAND গেট এর সমষ্টি, যা দিয়ে আপনি এর ভেতর ARM/ AVR processor ও বানাতে পারেন। তাহলে সবখানেই এটা ব্যবহার করা হয়না ক্যান? অনেক গুলা কারন। এক নাম্বার কারন,  আপনার যদি এক রুমের একটা বাসা দিয়ে হয়, আপনি কি ১০০ তলার লাক্সারিয়াস  ফ্ল্যাট কিনবেন কোটী কোটী টাকা ঢেলে ? এছাড়া FPGA is real pain in the ass to work with. সত্যি সত্যি একটা ১০০ টা মোটরের কন্ট্রোল কোড লিখে ইচ্ছামত চালাতে হলে আপনাকে মোটামুটি বেশ ভাল দক্ষ হতে হবে। দক্ষতা টা ঠিক আপনার বুদ্ধি কেমন তারওপর নির্ভর করবেনা। আপনি সব ই জানেন, কিন্তু আপনাকে ট্রাবল দিবে VHDL, verilog (এ দুটি ল্যাঙ্গুয়েজে কোড করা হয় FPGA তে )  লেখার নিয়ম কানুন গুলা। কোডে ক্রিয়েটিভিটী নাই, মানে এমন না যে আপনি এটা পারলেই ওটা পারবেন।  FPGA ভাল কমপ্লেক্স / রিপিটিটিভ সার্কিটের ইমপ্লেন্টেশনে, কিন্তু এখানে এলগরিদম (সিরিয়াল মুডে চলে এরকম )  ডেভেলপ করাটা ভীষণ বোরিং।

বাকি কারন গুলা জানতে হলে কোডিং টা একটু জানতে হবে।

VHDL, Verilog হল দুটা ল্যাঙ্গুয়েজ  যা দিয়ে FPGA এর জন্য কোড করা হয়। এছাড়া আপনি চাইলে সারকিট ডিজাইনের মত কম্পোনেন্ট বসিয়ে আপনার রিকুয়ারমেন্ট মেটাতে পারেন।

VHDL – Very high speed Hardware Description Language

Altera,  Xilinx এরা  FPGA এর বাজারে সবচেয়ে পরিচিত নাম।

ভিডিওটায় একটা ইন্টারফেস দেখালাম, এখানে FPGA দিয়ে একটা মোটরের  ইঙ্ক্রিমেন্টাল এঙ্কোডার এর পালস গুনে দেখিয়েছি । ভ্যালু টা কে SAM4s এ  ট্রান্সমিট করেছি I2C প্রোটকলে।  SPI ব্যবহার করেছি OLED display আর  Sam4s এর মধ্যে। এগুলা আমরা আস্তে আস্তে এক্সপ্লেইন করব পরের টিউটোরিয়ালে।

About Nahian Rahman

I received B.Sc. in mechanical eng. from BUET and M.Sc. in mechanical eng. (Intelligent Control and Automation System Division) from PNU, South Korea. I was a lab member of Instrumentation and Control Lab ( http://mclab.me.pusan.ac.kr/ ). Currently I am working as a PhD researcher at Italian Institute of tech. (http://iit.it/en/people/nahian-rahman) My research interest includes Control, Dynamics, Dexterous mechanism, mechatronics. I am a member of Korea Robotic Society (KROS), and IEEE. My Google Scholar profile: https://scholar.google.com/citations?user=W8_LYncAAAAJ&hl=en My ResearchGate profile: https://www.researchgate.net/profile/Nahian_Rahman My Social Profile at facebook: https://www.facebook.com/Nahian.Rahman
This entry was posted in Embedded Tutorial. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s