پلس کی چوڑائی ماڈیولیشن (PWM) ایک ایسی تکنیک ہے جو لہر کی فریکوئنسی کو مستقل رکھتے ہوئے نبض کی چوڑائی میں مختلف ہوتی ہے۔ پی ڈبلیو ایم تکنیک بنیادی طور پر ایل ای ڈی کی چمک ، ڈی سی موٹر کی رفتار ، سرو موٹر کو کنٹرول کرنے ، یا دوسرے معاملات میں ، جہاں ڈیجیٹل ماخذ کا استعمال کرتے ہوئے ینالاگ سگنل تیار کرنا ہوتی ہے کو کنٹرول کرنے کے لئے استعمال ہوتی ہے۔ ہم نے پچھلے آرٹیکل میں پی ڈبلیو ایم کو تفصیل سے بتایا ہے۔
اس ٹیوٹوریل میں ، ہم ESP32 ڈویلپمنٹ بورڈ کے PWM (پلس کی چوڑائی ماڈلن) پنوں کے بارے میں بات کرنے جارہے ہیں ۔ PWM سگنل حاصل کرنے کے لئے ESP32 ڈویلپمنٹ بورڈ (پاور ، GND ، Tx ، Rx ، اور EN کے علاوہ) کے تمام GPIO پنوں کا استعمال کیا جاسکتا ہے۔ ایک جیسا ESP32 PWM مثال میں، ہم کہ ایک سادہ سرکٹ کی تعمیر کریں گے PWM سگنل کے مطابق ایل ای ڈی کی چمک تبدیلیاں.
ضروری اجزاء
- ESP32
- ایل. ای. ڈی
- 330 Ω مزاحم
- 10 کٹ کا برتن
- بریڈ بورڈ
پی ڈبلیو ایم جنریشن
ESP32 پر PWM نسل کی وضاحت کرنے سے پہلے آئیے PWM سے وابستہ کچھ شرائط پر تبادلہ خیال کریں۔
ٹن (وقت پر): وقت کی مدت جب سگنل زیادہ ہو۔
ٹاف (آف ٹائم): سگنل کم ہونے پر وقت کی مدت۔
مدت: یہ PWM سگنل کے وقت اور وقت پر جمع ہونے کا ایک مجموعہ ہے۔
ٹوٹل پیریوڈ = T آن + T بند
ڈیوٹی سائیکل: PWM سگنل کی مدت کے دوران جب وقت میں سگنل زیادہ تھا۔
ڈیوٹی سائیکل = T آن / T کل * 100
مثال کے طور پر ، اگر 10ms کی کل مدت کے ساتھ نبض 5ms تک آن (اعلی) رہ جاتی ہے۔ اس کے بعد ، ڈیوٹی سائیکل ہوگی:
ڈیوٹی سائیکل = 5/10 * 100 = 50٪ ڈیوٹی سائیکل
سرکٹ میں ایک یلئڈی ، ایک ریزٹر ، اور 10K پوٹینومیٹر ہے۔ ایل ای ڈی کا منفی پن ESP32 کے GND سے 330 Ω ریزسٹر کے ذریعہ منسلک ہوتا ہے۔ آپ کسی بھی مزاحمتی قدر کو 230 any اور 500 between کے درمیان استعمال کرسکتے ہیں۔ GPIO 16 سے ایل ای ڈی پازیٹو پن اور پوٹ کے سگنل پن کو ESP32 کے ADC1 (VP) پن سے مربوط کریں۔
ESP32 PWM کے لئے کوڈ کی وضاحت
مکمل کوڈ صفحہ کے آخر میں دیا گیا ہے۔
اس کوڈ کو کسی لائبریری کی ضرورت نہیں ہے ، لہذا پن کی وضاحت کرکے اپنا کوڈ شروع کریں ، ایل ای ڈی منسلک ہے۔ میرے معاملے میں ، میں نے ایل ای ڈی سے رابطہ قائم کرنے کے لئے جی پی آئی او 16 کا استعمال کیا۔
const IN ledPin = 16؛ // 16 جی پی آئی او 16 سے مساوی ہے
اس کے بعد ، اگلی لائنوں میں PWM سگنل کی خصوصیات مقرر کریں۔ میں نے PWM فریکوئنسی 9000 پر رکھی ہے ، اور ریزولوشن 10 کردی گئی ہے ، آپ اسے مختلف PWM سگنل پیدا کرنے کے ل to تبدیل کرسکتے ہیں۔ ESP32 بورڈ PWM ریزولوشن کو 1 بٹ سے 16 بٹس تک سپورٹ کرتے ہیں۔ آپ کو پی ڈبلیو ایم چینل بھی منتخب کرنے کی ضرورت ہے۔ ESP32 میں کل 16 (0 سے 15) پی ڈبلیو ایم چینلز ہیں۔
const int freq = 9000؛ const int ledChannel = 0؛ کونٹ INT ریزولوشن = 10؛
ابھی اندر باطل سیٹ اپ () تقریب، آپ کو استعمال کرتے ہوئے کی طرف سے اس سے قبل قائم کی خصوصیات کے ساتھ یلئڈی PWM کو ترتیب ledcSetup () تقریب. اگلی لائن میں ، GPIO پن کی وضاحت کریں جہاں ایل ای ڈی منسلک ہے۔ ledcAttachPin () تقریب GPIO پن اور چینل سگنل پیدا کر رہا ہے کہ وضاحت کرنے کے لیے استعمال کیا جاتا ہے. میرے معاملے میں ، میں نے لیڈ پن کو جی پی آئی او 16 اور لیڈ چینل استعمال کیا جو چینل 0 سے مماثل ہے۔
باطل سیٹ اپ () {سیریل.بیگین (9600)؛ لیڈ سی سیٹ اپ (لیڈ چینل ، فریق ، ریزولوشن)؛ لیڈک اٹاچپین (لیڈ پن ، لیڈ چینل)؛ }
میں باطل لوپ، پاٹ منسلک ہے جہاں ینالاگ پن پڑھنے اور نامی ایک متغیر میں پڑھنے کو ذخیرہ 'dutyCycle' . ایل ای ڈی چمک پوٹینومیٹر کی گردش کے مطابق بڑھتی یا کم ہوگی۔ ledcWrite () کی طرح ہے analogWrite ().
باطل لوپ () {ڈیوٹی سائکل = ینالاگ ریڈ (A0)؛ لیڈکرایٹ (لیڈ چینل ، ڈیوٹی سائکل)؛ تاخیر (15)؛ }
ESP32 PWM سگنل کی جانچ کر رہا ہے
ای ایس پی 32 پی ڈبلیو ایم سگنل کی جانچ کرنے کے لئے ، سرکٹ آریگرام کے مطابق ایل ای ڈی اور پوٹینومیٹر سے رابطہ کریں ، اور کوڈ کو اپنے ای ایس پی 32 پر اپ لوڈ کریں۔ یقینی بنائیں کہ آپ کے پاس صحیح بورڈ اور COM پورٹ منتخب ہے۔ ایل ای ڈی کی چمک کو بڑھانے یا کم کرنے کے لئے اب پوٹینومیٹر کو گھمائیں۔
ذیل میں دیئے گئے ویڈیو میں مکمل کام کرنا دکھایا گیا ہے۔ نیز ، ESP32 پر مبنی دوسرے پروجیکٹس کو لنک پر عمل کرکے چیک کریں۔