ADC & DAC

ADC হল analog to digital converter আর DAC হল Digital to Analog converter ডিজিট্যাল সিগনাল আর অ্যানালগ সিগনালের পারস্পারিক রুপান্তরের জন্য এই ডিভাইসগুলো ব্যবহৃত হয়। ডিজিটাল ও অ্যানালগ সিগনাল সম্পর্কে স্পষ্ট ধারণা পেতে এই আলোচনাটি পড়ুন।

প্রথমেই জানা যাক ADC এর ব্যাপারে, ADC হল সেই ডিভাইস যা একটি অ্যানালগ সিগনালকে নির্দিষ্ট সময় (Sampling Time TS) পরপর ইনপুট হিসেবে নিয়ে n bit এর ডিজিটাল সিগনালে (n-bit binary number) রূপান্তর করে। এই একটি লাইনে সম্ভবত কিছুই বোঝা যায় না। তাই চলুন একটু ভেঙেচুড়ে আলোচনা করা যাক।

Add caption

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

 

ছবিতে মোট ৪ টি স্যাম্পল নেয়া হয়েছে। 4.2V, 4.3V, 2.75V, 4.25Vএই মানগুলোকে এবার 3 bit digital signal বা ৩ বিট বাইনারি সংখ্যায় রূপান্তর করা হবে। আলোচ্য সিগনালের ফুলস্কেল ভোল্টেজ(VFS) হল 5Vএই ফুলস্কেল ভোল্টেজকে 2n ( যেখানে n হল বিট সংখ্যা) ভাগে বিভক্ত করা হয়ে থাকে। তাহলে আলোচ্য সিগনালের জন্য 5V কে মোট ৮ ভাগে ভাগ করা হবে। এই ৮ টি ভাগকে জন্য আলাদা আটটি বাইনারি সংখ্যা দ্বারা নির্দেশিত করা হয়। নিচের ছবিতে ব্যাপারটি পরিষ্কার ভাবে ফুটিয়ে তোলার চেষ্টা করা হয়েছে।


অর্থাৎ শূন্য থেকে 0.625/2 বা 0.3125V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 000

0.3125V থেকে (0.625+1.25)/2 বা 0.9375V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 001

0.9375V থেকে (1.25+1.875)/2 বা 1.5625V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 010

1.5625V থেকে (1.875+2.5)/2 বা 2.187575V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 011

2.1875V থেকে (2.5+3.125)/2 বা 2.8125V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 100

2.8125V থেকে (3.125+3.75)/2 বা 3.4375V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 101

3.4375V থেকে (3.75+4.375)/2 বা 4.0625V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 110

4.0625V থেকে 5V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য 3 bit binary value হবে 111

তাহলে আমাদের উদাহরণের স্যাম্পল গুলোর (4.2V, 4.3V, 2.75V, 4.25V) জন্য যে ৩ বিট বাইনারি মান পাওয়া যাবে তা হল যথাক্রমে, 111, 111, 100, 111নিচের ছবিতে অ্যানালগ আর প্রাপ্ত ডিজিট্যাল সিগনাল(হলুদ রঙ দ্বারা নির্দেশিত) একই স্কেলে আঁকা হল।

বোঝাই যাচ্ছে, Sampling Time TS  এর মান অনেক বেশি ধরায় একটা যাচ্ছেতাই রকমের ফলাফল পাওয়া গেছে। কতটা যাচ্ছেতাই ফলাফল তা বোঝানোর জন্য নিচের ছবিটার সাহায্য নেয়া যায়।


এই প্রক্রিয়াতে  ফলাফলে দুইটি ধাপে ত্রুটি এসেছে , একটি কম স্যাম্পল নেয়ার অন্য আর অপরটিকে বলে quantization errorআমরা যখন 0.3125V থেকে 0.9375V পর্যন্ত অ্যানালগ ভোল্টেজের জন্য  binary value 001 ধরেছি তখন আসলে এই মানগুলো 0.652V ধরা হয়েছে। এখানে একটা ত্রুটি চলে এসেছে। প্রথম ধরনের ত্রুটি কমানোর জন্য Sampling rate বাড়াতে হবে আর quantization error কমানোর জন্য ডিজিট্যাল সিগন্যালের বিট বাড়াতে হবে। 3 bit কনভার্টারের জন্য quantization error যেখানে সর্বোচ্চ 0.3125V সেখানে 8 bit binary converter  এর জন্য  সর্বোচ্চ quantization error হবে মাত্র 0.98 mV 

এতক্ষণ ADC যে প্রক্রিয়ার কাজ করে তার একটি ধারণা দেওয়া হল। এবার একইভাবে DAC সম্পর্কে ধারণা নেয়া যাক।

কোন DAC নির্দিষ্ট বিটের ডিজিট্যাল সিগন্যালকে অ্যানালগ সিগনালে রূপান্তর করে থাকে। n bit এর একটি DAC এর কথা চিন্তা করা যাক। এটি যে বাইনারি ভ্যালু গ্রহন করবে সেটাকে ধরি, b1b2b3…bn যেখানে bn least significant bit আর  b1 most significant bitতাহলে ফুলস্কেল ভোল্টেজ যদি VF হয় তত্ত্বগত ভাবে অ্যানালগ ভোল্টেজের মান পাওয়া যাবে,

Vanalog= (b12-1+ b22-2+ b32-3 … + bn2-n) VF

কিন্তু বাস্তবে কোন আইসিই পুরোপুরি নিখুঁত বানানো সম্ভব হয় না, ফলে তাত্ত্বিক এই মান অর্জন করাও সম্ভব হয় না। এবার ধরা যাক, মাইক্রোকন্ট্রোলার দিয়ে আমরা AC sine Wave তৈরি করতে চাই যার কম্পাঙ্গ হবে ৫০ হার্জদেখা যাক 4 bit DAC ব্যবহার করলে কেমন ফলাফল পাওয়া যাবে।

5V ভোল্টেজ লেভেলকে এবার ১৬ টি ভাগে ভাগ করা হবে, ফলে প্রতি ধাপে মান 0.3125V করে বৃদ্ধি পাবে। তাহলে পাওয়া যায়,

0000

0V

1000

2.5V

0001

0.3125V

1001

2.8125V

0010

0.625V

1010

3.125V

0011

0.9375V

1011

3.4375V

0100

1.25V

1100

3.75V

0101

1.5625V

1101

4.0625V

0110

1.875V

1110

4.375V

0111

2.1875V

1111

4.6875V

প্রোগ্রামিং করে মাইক্রোকন্ট্রোলার থেকে ডিজিটাল সিগনাল নিয়ে DAC এর ইনপুটে দেয়া হয়। প্রোগ্রামিং এর এই হিসাবনিকাশ বেশ দীর্ঘ বলে এখানে আলোচনা করা হবে না। যাই হোক, ৮ বিট DAC থেকে নিচের ছবির মত sine wave পাওয়া যেতে পারে।


প্রকৃত সাইন ওয়েভের সাথে এই সিগনালের তুলনা করলে বুঝতে সুবিধা হবে,


এটা স্পষ্ট যে, যত বেশি বিটের DAC ব্যবহার করা হবে তত বেশি সুক্ষ্মভাবে অ্যানালগ সিগন্যাল তৈরি করা যাবে।

কয়েক ধরনের DAC ব্যবহার করা হয়ে থাকে, তাদের মধ্যে সবচেয়ে প্রাথমিক স্তরের DAC হল Summing Amplifier, weighted resistor, R-2R Ladder. এছাড়া PWM DAC ,delta sigma DAC, successive approximation or cyclic DAC ইত্যাদি টেকনোলজি বহুল প্রচিত। এগুলো কিভাবে কাজ করে সেই প্রক্রিয়া সম্পর্কে ধাপে ধাপে জানতে নিচের ভিডিওটি দেখুন।

এবার আসা যাক ADC এর প্রকারভেদে, Flash ADC, হল সবচে বহুল ব্যবহৃত ADC. Dual Slope, Pipe-lined, Delta sigma এগুলাও বহুল ব্যবহৃত ADC প্রযুক্তি। তবে বর্তমান কালে ব্যবহৃত মাইক্রোকন্ট্রোলারগুলোতে সবচেয়ে বেশি ব্যবহৃত হয় Power Sampling ADC বা successive approximation ADC। এগুলোর কার্যপদ্ধতি সম্পর্কে বিস্তারিত জানতে চাইলে নিচের ভিডিওটি দেখার পরামর্শ থাকবে।

Post a Comment

0 Comments