ESP32 ADC - Arduino IDE کے ساتھ ینالاگ ویلیوز پڑھیں

Esp32 Adc Arduino Ide K Sat Ynalag Wylywz P Y



ADC (ڈیجیٹل کنورٹر کے مطابق) ایک الیکٹرانک سرکٹ ہے جو مختلف مائیکرو کنٹرولر بورڈز کے ساتھ آتا ہے یا مائیکرو کنٹرولر کے اندر مربوط ہوتا ہے۔ اے ڈی سی کا استعمال مختلف سینسر سے اینالاگ وولٹیج کو ڈیجیٹل شکل میں تبدیل کرنے کے لیے کیا جاتا ہے۔ Arduino کی طرح، ESP32 میں بھی ADC ہے جو ینالاگ ڈیٹا پڑھ سکتا ہے۔ آئیے ESP32 ADC کے بارے میں مزید معلومات حاصل کریں۔

ESP32 ADC کا تعارف

ESP32 بورڈ میں دو مربوط 12-bit ADCs ہیں جنہیں SAR (مسلسل قربت کے رجسٹر) ADCs بھی کہا جاتا ہے۔ ESP32 بورڈ ADCs 18 مختلف اینالاگ ان پٹ چینلز کو سپورٹ کرتے ہیں جس کا مطلب ہے کہ ہم ان سے ان پٹ لینے کے لیے 18 مختلف اینالاگ سینسرز کو جوڑ سکتے ہیں۔

لیکن یہاں ایسا نہیں ہے۔ ان اینالاگ چینلز کو دو کیٹیگریز چینل 1 اور چینل 2 میں تقسیم کیا گیا ہے، ان دونوں چینلز میں کچھ پن ہیں جو ہمیشہ ADC ان پٹ کے لیے دستیاب نہیں ہوتے ہیں۔ آئیے دیکھتے ہیں کہ وہ ADC پن دوسروں کے ساتھ کیا ہیں۔







ESP32 ADC پن

جیسا کہ پہلے ذکر کیا گیا ہے ESP32 بورڈ میں 18 ADC چینلز ہیں۔ 18 میں سے صرف 15 DEVKIT V1 DOIT بورڈ میں دستیاب ہیں جن میں کل 30 GPIO ہیں۔



اپنے بورڈ کو دیکھیں اور ADC پنوں کی شناخت کریں جیسا کہ ہم نے انہیں نیچے کی تصویر میں نمایاں کیا ہے۔







چینل 1 ADC پن

ESP32 DEVKIT DOIT بورڈ کی دی گئی پن میپنگ درج ذیل ہے۔ ESP32 میں ADC1 میں 8 چینلز ہیں تاہم DOIT DEVKIT بورڈ صرف 6 چینلز کو سپورٹ کرتا ہے۔ لیکن میں ضمانت دیتا ہوں کہ یہ اب بھی کافی سے زیادہ ہیں۔

ADC1 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 ADC پن

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-bit، 10-bit، اور 11-bit میں کنفیگر کرنا ممکن ہے۔ 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 کے غیر خطی سلوک کو Arduino IDE کے سیریل مانیٹر پر دیکھا جا سکتا ہے۔

Arduino IDE کا استعمال کرتے ہوئے پروگرام ESP32 ADC

ESP32 ADC کے کام کو سمجھنے کا بہترین طریقہ یہ ہے کہ ایک پوٹینومیٹر لیں اور زیادہ سے زیادہ صفر مزاحمت کے خلاف اقدار کو پڑھیں۔ پوٹینومیٹر کے ساتھ ESP32 کی دی گئی سرکٹ امیج درج ذیل ہے۔

پوٹینشیومیٹر کے درمیانی پن کو ESP32 کے ڈیجیٹل پن 25 اور 2 ٹرمینل پنوں کو بالترتیب 3.3V اور GND پن کے ساتھ جوڑیں۔

ہارڈ ویئر

مندرجہ ذیل تصویر ESP32 کے ہارڈ ویئر کو پوٹینومیٹر کے ساتھ دکھاتی ہے۔ مندرجہ ذیل اجزاء کی فہرست ہے:

  • ESP32 DEVKIT DOIT بورڈ
  • پوٹینشیومیٹر
  • بریڈ بورڈ
  • جمپر کی تاریں۔

کوڈ

Arduino IDE کھولیں اور ذیل کا کوڈ ESP32 بورڈ میں اپ لوڈ کریں۔ Arduino IDE کے ساتھ ESP32 کو انسٹال اور کنفیگر کرنے کا طریقہ چیک کرنے کے لیے کلک کریں۔ یہاں .

const int Pin_Potentiometer = 25 ; /* GPIO 25 (اینالاگ ADC2_CH8) پر منسلک پوٹینشیومیٹر*/
int Val_Potentiometer = 0 ; /*پوٹینٹومیٹر ریڈ ویلیو یہاں محفوظ کی جائے گی*/
باطل سیٹ اپ ( ) {
سیریل شروع ( 115200 ) ; /*سیریل مواصلات شروع ہوتا ہے*/
}
باطل لوپ ( ) {
Val_Potentiometer = analogRead ( Pin_Potentiometer ) ; /*پٹینشیومیٹر کی قدر پڑھنا*/
سیریل پرنٹ ایل این ( Val_Potentiometer ) ; /*پوٹینشیومیٹر ویلیو پرنٹ کرتا ہے*/
تاخیر ( 2000 ) ; /*2 سیکنڈ کی تاخیر*/
}

یہاں اوپر کے کوڈ میں، ہم ESP32 بورڈ پر پوٹینشیومیٹر کے لیے ڈیجیٹل پن 25 شروع کرتے ہیں۔ ان پٹ لینے کے لیے آگے ایک متغیر Val_Potentiometer شروع کیا جاتا ہے۔ اگلا سیریل مواصلات بوڈ کی شرح کی وضاحت کے ذریعے شروع کیا جاتا ہے۔

میں لوپ analogRead() فنکشن کا استعمال کرتے ہوئے کوڈ کا حصہ ADC ویلیو ESP32 کے پن 25 پر پڑھا جائے گا۔ اگلا Serial.print() کا استعمال کرتے ہوئے تمام قدریں سیریل مانیٹر پر پرنٹ ہوجاتی ہیں۔

آؤٹ پٹ

آؤٹ پٹ ڈیجیٹل مجرد اقدار کے خلاف نقشہ کردہ ینالاگ اقدار دکھاتا ہے۔ جب ریڈ وولٹیج زیادہ سے زیادہ ہے یعنی 3.3V ڈیجیٹل آؤٹ پٹ 4095 کے برابر ہے اور جب ریڈ وولٹیج 0V ہے تو ڈیجیٹل آؤٹ پٹ 0 ہو جاتا ہے۔

نتیجہ

اینالاگ ٹو ڈیجیٹل کنورٹرز ہر جگہ استعمال ہوتا ہے خاص طور پر جب ہمیں مائیکرو کنٹرولر بورڈز کو اینالاگ سینسر اور ہارڈ ویئر کے ساتھ انٹرفیس کرنا ہوتا ہے۔ ESP32 میں ADC کے لیے دو چینل ہیں جو ADC1 اور ADC2 ہیں۔ یہ دونوں چینلز ینالاگ سینسر کو انٹرفیس کرنے کے لیے 18 پن فراہم کرتے ہیں۔ تاہم، ان میں سے 3 ESP32 30 پن ورژن پر دستیاب نہیں ہیں۔ ینالاگ اقدار کو پڑھنے کے بارے میں مزید دیکھنے کے لیے مضمون پڑھیں۔