ESP32 ADC ভূমিকা
ESP32 বোর্ডে দুটি সমন্বিত 12-বিট ADC রয়েছে যেগুলি SAR (সাকসেসিভ অ্যাপ্রোক্সিমেশন রেজিস্টার) ADC নামেও পরিচিত। ESP32 বোর্ড ADCs 18টি ভিন্ন এনালগ ইনপুট চ্যানেল সমর্থন করে যার অর্থ আমরা তাদের থেকে ইনপুট নিতে 18টি ভিন্ন এনালগ সেন্সর সংযুক্ত করতে পারি।
কিন্তু এখানে ব্যাপারটা এমন নয়; এই অ্যানালগ চ্যানেলগুলি চ্যানেল 1 এবং চ্যানেল 2 দুটি বিভাগে বিভক্ত, এই উভয় চ্যানেলেই কিছু পিন রয়েছে যা সবসময় ADC ইনপুটের জন্য উপলব্ধ থাকে না। আসুন দেখি সেই ADC পিনগুলি অন্যদের সাথে কী।
ESP32 ADC পিন
পূর্বে উল্লিখিত হিসাবে ESP32 বোর্ডে 18টি ADC চ্যানেল রয়েছে। 18টির মধ্যে মাত্র 15টি DEVKIT V1 DOIT বোর্ডে পাওয়া যায় যেখানে মোট 30টি GPIO রয়েছে।
আপনার বোর্ডের দিকে তাকান এবং ADC পিনগুলিকে চিহ্নিত করুন যেমনটি আমরা নীচের ছবিতে হাইলাইট করেছি:
চ্যানেল 1 এডিসি পিন
নিচে ESP32 DEVKIT DOIT বোর্ডের প্রদত্ত পিন ম্যাপিং রয়েছে৷ ESP32-এর ADC1-এ 8টি চ্যানেল রয়েছে তবে DOIT DEVKIT বোর্ড শুধুমাত্র 6টি চ্যানেল সমর্থন করে। তবে আমি গ্যারান্টি দিচ্ছি যে এগুলো এখনও যথেষ্ট।
এডিসি ১ | GPIO পিন ESP32 |
---|---|
CH0 | 36 |
CH1 | NA 30 পিন সংস্করণ ESP32 (Devkit MUST) |
CH2 | যে |
CH3 | 39 |
CH4 | 32 |
CH5 | 33 |
CH6 | 3. 4 |
CH7 | 35 |
নিম্নলিখিত চিত্রগুলি ESP32 ADC1 চ্যানেলগুলি দেখায়:
চ্যানেল 2 এডিসি পিন
DEVKIT DOIT বোর্ডের ADC2 এ 10টি এনালগ চ্যানেল রয়েছে। যদিও এনালগ ডেটা পড়ার জন্য ADC2-এ 10টি অ্যানালগ চ্যানেল রয়েছে, এই চ্যানেলগুলি সর্বদা ব্যবহারের জন্য উপলব্ধ নয়। ADC2 অনবোর্ড ওয়াইফাই ড্রাইভারদের সাথে শেয়ার করা হয়েছে, যার মানে বোর্ড যখন WIFI ব্যবহার করছে তখন এই ADC2 পাওয়া যাবে না। এই সমস্যার সমাধান হল ADC2 ব্যবহার করা শুধুমাত্র যখন Wi-Fi ড্রাইভার বন্ধ থাকে।
নীচের চিত্রটি ADC2 চ্যানেলের পিন ম্যাপিং দেখায়।
কিভাবে ESP32 ADC ব্যবহার করবেন
ESP32 ADC একই ভাবে কাজ করে যেমন Arduino এখানে শুধুমাত্র পার্থক্য হল এর 12 বিট ADC আছে। সুতরাং, ESP32 বোর্ড ডিজিটাল বিচ্ছিন্ন মানগুলিতে 0 থেকে 4095 পর্যন্ত অ্যানালগ ভোল্টেজের মানগুলিকে ম্যাপ করে।
- ESP32 ADC কে দেওয়া ভোল্টেজ যদি ADC চ্যানেল শূন্য হয় তাহলে ডিজিটাল মান শূন্য হবে।
- ADC-কে দেওয়া ভোল্টেজ সর্বাধিক মানে 3.3V হলে আউটপুট ডিজিটাল মান 4095 এর সমান হবে।
- উচ্চ ভোল্টেজ পরিমাপ করতে, আমরা ভোল্টেজ বিভাজক পদ্ধতি ব্যবহার করতে পারি।
বিঃদ্রঃ: ESP32 ADC ডিফল্টভাবে 12-বিটে সেট করা হয়, তবে এটি 0-বিট, 10-বিট এবং 11-বিটে কনফিগার করা সম্ভব। 12-বিট ডিফল্ট ADC মান পরিমাপ করতে পারে 2^12=4096 এবং এনালগ ভোল্টেজ 0V থেকে 3.3V পর্যন্ত।
ESP32 এ ADC সীমাবদ্ধতা
এখানে ESP32 ADC এর কিছু সীমাবদ্ধতা রয়েছে:
- ESP32 ADC সরাসরি 3.3V এর বেশি ভোল্টেজ পরিমাপ করতে পারে না।
- যখন Wi-Fi ড্রাইভার সক্রিয় থাকে তখন ADC2 ব্যবহার করা যাবে না। ADC1 এর শুধুমাত্র 8 টি চ্যানেল ব্যবহার করা যেতে পারে।
- ESP32 ADC খুব লিনিয়ার নয়; এটা দেখায় অ-রৈখিকতা আচরণ এবং 3.2V এবং 3.3V এর মধ্যে পার্থক্য করতে পারে না। যাইহোক, ESP32 ADC ক্যালিব্রেট করা সম্ভব। এখানে একটি নিবন্ধ যা আপনাকে ESP32 ADC ননলাইন্যারিটি আচরণকে ক্রমাঙ্কন করতে গাইড করবে।
ESP32 এর Nonlinearity আচরণ Arduino IDE এর সিরিয়াল মনিটরে দেখা যায়।
প্রোগ্রাম ESP32 ADC Arduino IDE ব্যবহার করে
ESP32 ADC-এর কাজ বোঝার সর্বোত্তম উপায় হল একটি potentiometer নেওয়া এবং সর্বোচ্চ থেকে শূন্য প্রতিরোধের বিরুদ্ধে মানগুলি পড়া। পটেনটিওমিটার সহ ESP32 এর প্রদত্ত সার্কিট চিত্রটি নিম্নরূপ।
ইএসপি 32 এর ডিজিটাল পিন 25 এবং 3.3V এবং GND পিনের সাথে 2 টার্মিনাল পিনের সাথে পটেনটিওমিটারের মাঝের পিনটি সংযুক্ত করুন।
হার্ডওয়্যার
নিম্নলিখিত চিত্রটি পোটেনটিওমিটার সহ ESP32 এর হার্ডওয়্যার প্রদর্শন করে। প্রয়োজনীয় উপাদানগুলির তালিকা নিম্নরূপ:
- ESP32 DEVKIT DOIT বোর্ড
- পটেনশিওমিটার
- ব্রেডবোর্ড
- জাম্পার তারের
কোড
Arduino IDE খুলুন এবং ESP32 বোর্ডে নিচের কোডটি আপলোড করুন। Arduino IDE-এর সাহায্যে ESP32 কিভাবে ইন্সটল ও কনফিগার করবেন তা পরীক্ষা করতে ক্লিক করুন এখানে .
const int পিন_পটেনশিওমিটার = 25 ; /*পটেনশিওমিটার GPIO 25 এ সংযুক্ত (অ্যানালগ ADC2_CH8)*/int Val_Potentiometer = 0 ; /*পটেনশিওমিটার রিড মান এখানে সংরক্ষণ করা হবে*/
অকার্যকর সেটআপ ( ) {
সিরিয়াল। শুরু ( 115200 ) ; /*ক্রমিক যোগাযোগ শুরু হয়*/
}
অকার্যকর লুপ ( ) {
Val_Potentiometer = analogRead ( পিন_পটেনশিওমিটার ) ; /*পটেনটিওমিটার মান পড়া*/
সিরিয়াল। println ( Val_Potentiometer ) ; /*পোটেনসিওমিটার মান প্রিন্ট করে*/
বিলম্ব ( 2000 ) ; /*2 সেকেন্ডের বিলম্ব*/
}
এখানে উপরের কোডে, আমরা ESP32 বোর্ডে potentiometer-এর জন্য ডিজিটাল পিন 25 আরম্ভ করি। ইনপুট নেওয়ার পরে একটি ভেরিয়েবল Val_Potentiometer শুরু করা হয়। বড রেট নির্ধারণ করে পরবর্তী সিরিয়াল যোগাযোগ শুরু হয়।
মধ্যে লুপ analogRead() ফাংশন ব্যবহার করে কোডের অংশ ADC মান ESP32 এর পিন 25 এ পড়া হবে। পরবর্তীতে Serial.print() ব্যবহার করে সমস্ত মান সিরিয়াল মনিটরে প্রিন্ট করা হয়।
আউটপুট
আউটপুট ডিজিটাল বিচ্ছিন্ন মানগুলির বিপরীতে ম্যাপ করা অ্যানালগ মানগুলি প্রদর্শন করে। রিড ভোল্টেজ সর্বাধিক হলে 3.3V ডিজিটাল আউটপুট 4095 এর সমান এবং যখন রিড ভোল্টেজ 0V হয় তখন ডিজিটাল আউটপুট 0 হয়।
উপসংহার
অ্যানালগ থেকে ডিজিটাল রূপান্তরকারী সর্বত্র ব্যবহৃত হয় বিশেষ করে যখন আমাদেরকে অ্যানালগ সেন্সর এবং হার্ডওয়্যার সহ মাইক্রোকন্ট্রোলার বোর্ডগুলিকে ইন্টারফেস করতে হয়। ESP32 এ ADC-এর জন্য দুটি চ্যানেল রয়েছে যেগুলি হল ADC1 এবং ADC2। এনালগ সেন্সর ইন্টারফেস করার জন্য এই দুটি চ্যানেল 18টি পিন প্রদান করতে একত্রিত হয়। যাইহোক, তাদের মধ্যে 3টি ESP32 30 পিন সংস্করণে উপলব্ধ নয়। অ্যানালগ মান পড়ার বিষয়ে আরও দেখতে নিবন্ধটি পড়ুন।