ایم پی ایل بی اور ایکس سی 8 کا استعمال کرتے ہوئے پی سی آئی سی مائکروکنٹرولرز لرننگ کا یہ ہمارا 9واں سبق ہے ۔ ابھی تک ، ہم نے بہت سارے بنیادی ٹیوٹوریل کا احاطہ کیا ہے جیسے ایم پی ایل ایکس ایکس کے ساتھ شروع کرنا ، پی آئی سی کے ساتھ ایل ای ڈی پلک جھپکنا ، پی آئی سی میں ٹائمر ، انٹرفیسنگ ایل سی ڈی ، انٹرفیسنگ 7 سیگمنٹ وغیرہ۔ اگر آپ قطعی ابتدائی ہیں تو ، براہ کرم یہاں پی آئی سی سبق کی مکمل فہرست دیکھیں۔ اور سیکھنا شروع کریں۔
اس ٹیوٹوریل میں ، ہم اپنے PIC مائکروکنٹرولر PICF877A کے ساتھ ADC استعمال کرنے کا طریقہ سیکھیں گے. مائکروکونٹرولر منصوبوں میں زیادہ تر اس میں اے ڈی سی (اینالاگ سے ڈیجیٹل کنورٹر) شامل ہوں گے ، کیونکہ حقیقی دنیا سے ڈیٹا کو پڑھنے کا یہ سب سے زیادہ استعمال شدہ طریقہ ہے۔ درجہ حرارت سینسر ، بہاؤ سینسر ، دباؤ سینسر ، موجودہ سینسر ، وولٹیج سینسر ، گائروسکوپس ، ایکسلریومیٹر ، فاصلہ سینسر ، اور تقریبا almost ہر معلوم سینسر یا ٹرانس ڈوائس سینسر پڑھنے کی بنیاد پر 0V سے 5V کا ینالاگ وولٹیج تیار کرتا ہے۔ مثال کے طور پر درجہ حرارت کا ایک سینسر جب درجہ حرارت 25C ہو تو 2.1V دے سکتا ہے اور جب درجہ حرارت 60C ہوتا ہے تو وہ 4.7 تک جاسکتا ہے۔ حقیقی دنیا کے درجہ حرارت کو جاننے کے لئے ، ایم سی یو کو صرف اس درجہ حرارت سینسر کا آؤٹ پٹ وولٹیج پڑھنا ہوگا اور اسے حقیقی دنیا کے درجہ حرارت سے جوڑنا ہوگا۔ لہذا اے ڈی سی ایم سی یو پروجیکٹس کے لئے کام کا ایک اہم ٹول ہے اور یہ سیکھنے دیتا ہے کہ ہم اسے اپنے PIC16F877A پر کس طرح استعمال کرسکتے ہیں۔
دوسرے مائکروکنٹرولرز میں اے ڈی سی کے استعمال سے متعلق ہمارے گذشتہ مضامین کو بھی چیک کریں۔
- ایردوینو یونو میں اے ڈی سی کا استعمال کیسے کریں؟
- راسبیری پائی اے ڈی سی ٹیوٹوریل
- انٹرفیسنگ ADC0808 کے ساتھ 8051 مائکروکانٹرولر
PIC مائکروکانٹرولر PIC16F877A میں اے ڈی سی:
بہت ساری قسم کی اے ڈی سی دستیاب ہے اور ہر ایک کی اپنی رفتار اور ریزولوشن ہے۔ اے ڈی سی کی سب سے عام قسمیں فلیش ، یکے بعد دیگرے لگ بھگ ، اور سگما ڈیلٹا ہیں۔ PIC16F877A میں استعمال کیا اے ڈی سی کی قسم کے بعد تقرب اے ڈی سی کے طور پر کہا جاتا ہے مختصر میں یا SAR. تو اس سے پہلے کہ ہم اسے استعمال کرنے سے پہلے SAR ADC کے بارے میں تھوڑا سا سیکھیں۔
لگاتار تخمینہ اے ڈی سی: سار اے ڈی سی موازنہ کرنے والے اور کچھ منطقی گفتگو کی مدد سے کام کرتا ہے۔ اس قسم کا اے ڈی سی ایک حوالہ وولٹیج (جو متغیر ہے) استعمال کرتا ہے اور موازنہ اور فرق کا استعمال کرتے ہوئے ان پٹ وولٹیج کا موازنہ کرتا ہے ، جو ڈیجیٹل آؤٹ پٹ ہوگا ، انتہائی اہم بٹ (ایم ایس بی) سے محفوظ کیا جاتا ہے۔ مقابلے کی رفتار کا انحصار گھڑی کی فریکوئنسی (فاسک) پر ہے جس پر پی آئی سی کام کررہی ہے۔
اب جب ہم ADC سے متعلق کچھ بنیادی باتیں جانتے ہیں ، تو ہم اپنا ڈیٹاشیٹ کھول سکتے ہیں اور اپنے PIC16F877A MCU پر ADC کا استعمال کرنے کا طریقہ سیکھتے ہیں۔ ہم جس PIC کو استعمال کررہے ہیں اس میں 10 بٹ 8 چینل ADC ہے۔ اس کا مطلب ہے کہ ہمارے اے ڈی سی کی آؤٹ پٹ ویلیو 0-1024 (2 ^ 10) ہوگی اور ہمارے ایم سی یو پر 8 پن (چینلز) موجود ہیں جو ینالاگ وولٹیج کو پڑھ سکتے ہیں۔ قیمت 1024 2 ^ 10 کے ذریعہ حاصل کی جاتی ہے کیونکہ ہمارا ADC 10 سا ہوتا ہے۔ ڈیٹاشیٹ میں جو آٹھ پنوں کے مطابق وولٹیج پڑھ سکتے ہیں ان کا تذکرہ کیا گیا ہے۔ نیچے دی گئی تصویر کو دیکھنے دو۔

آپ کے لئے ینالاگ چینلز اے این0 ٹو اے 7 کو نمایاں کیا گیا ہے۔ صرف یہ پن ہی اینالاگ وولٹیج پڑھ سکیں گے۔ تو ان پٹ وولٹیج پڑھنے سے پہلے ہمیں اپنے کوڈ میں یہ واضح کرنا ہوگا کہ ان پٹ وولٹیج کو پڑھنے کے لئے کون سا چینل استعمال کرنا ہے۔ اس ٹیوٹوریل میں ہم اس چینل پر ینالاگ وولٹیج پڑھنے کے لئے پوٹینومیٹر کے ساتھ چینل 4 کا استعمال کریں گے۔
A / D ماڈیول میں چار رجسٹر ہیں جن کو ان پٹ پنوں سے ڈیٹا پڑھنے کے ل. تشکیل دیا جانا ہے۔ یہ رجسٹر ہیں:
• A / D نتائج اعلی رجسٹر (ADRESH)
/ A / D نتائج کم رجسٹر (ADRESL)
• A / D کنٹرول رجسٹر 0 (ADCON0)
• A / D کنٹرول رجسٹر 1 (ADCON1)
اے ڈی سی کے لئے پروگرامنگ:
PIC مذکور Microcontroller ساتھ اے ڈی سی کا استعمال کرتے ہوئے کے لئے پروگرام بہت آسان ہے، ہم صرف ان چار رجسٹر سمجھنے کے لئے اور اس کے بعد پڑھنے کی کوئی بھی ینالاگ وولٹیج آسان ہو جائے گا حاصل ہے. حسب معمول ترتیب کے بٹس کو شروع کریں اور آئیے باطل مین () سے شروع کریں۔
باطل مین () کے اندر ہمیں ADCON1 رجسٹر اور ADCON0 رجسٹر استعمال کرکے اپنے ADC کو شروع کرنا ہے ۔ ADCON0 رجسٹر میں درج ذیل بٹس ہیں:

اس رجسٹر میں ہمیں ADON = 1 بناکر ADC ماڈیول کو آن کرنا ہے اور بٹس ADCS1 اور ADCS0 بٹس استعمال کرکے A / D تبادلوں کی گھڑی کو آن کرنا ہے ، باقی ابھی سیٹ نہیں کیے جائیں گے۔ ہمارے پروگرام میں A / D تبادلوں کی گھڑی کو FOS / 16 کے بطور منتخب کیا گیا ہے آپ اپنی تعدد کو آزما سکتے ہیں اور دیکھ سکتے ہیں کہ نتیجہ کیسے بدلا جاتا ہے۔ ڈیٹاشیٹ کے صفحہ 127 پر مکمل تفصیلات دستیاب ہیں۔ لہذا مندرجہ ذیل طور پر ADCON0 کا آغاز کیا جائے گا۔
ADCON0 = 0b01000001؛
اب ADCON1 رجسٹر میں درج ذیل بٹس ہیں:

اس رجسٹر میں ہمیں ADFM = 1 کے ذریعہ A / D رزلٹ فارمیٹ سلیکٹ تھوڑا سا اونچا بنانا ہے اور FOS / 16 کو دوبارہ منتخب کرنے کے لئے ADCS2 = 1 بنانا ہے۔ دوسرے بٹس صفر ہی رہتے ہیں کیونکہ ہم نے داخلی حوالہ وولٹیج استعمال کرنے کا منصوبہ بنایا ہے۔ مکمل ڈیٹاشیٹ صفحہ 128 پر دستیاب ہے۔ لہذا ہم ADCON1 مندرجہ ذیل طے کریں گے۔
ADCON1 = 0x11000000؛
اب ہمارے مرکزی فنکشن کے اندر اے ڈی سی ماڈیول کو شروع کرنے کے بعد ، آئیے لوپ میں داخل ہوکر اے ڈی سی کی اقدار کو پڑھنا شروع کردیں۔ اے ڈی سی کی قیمت پڑھنے کے لئے درج ذیل اقدامات پر عمل کرنا ہوگا ۔
- اے ڈی سی ماڈیول کا آغاز کریں
- ینالاگ چینل منتخب کریں
- Go / Done تھوڑا سا اونچا کرکے ADC شروع کریں
- گو / ڈون بٹ کم ہونے کا انتظار کریں
- ADRESH اور ADRESL رجسٹر سے ADC کا نتیجہ حاصل کریں
1. اے ڈی سی ماڈیول کا آغاز کریں: ہم پہلے ہی سیکھ چکے ہیں کہ اے ڈی سی کو کس طرح شروع کرنا ہے لہذا ہم اے ڈی سی کو شروع کرنے کے لئے اس کو نیچے دیئے گئے فنکشن کو کہتے ہیں۔
باطل ADC_Initialize () تقریب مندرجہ ذیل کے طور پر ہو رہا ہے.
کالعدم ADC_Initialize () {ADCON0 = 0b01000001؛ // ADC ON اور FOS / 16 کو ADCON1 = 0b11000000 منتخب کیا گیا ہے۔ // اندرونی حوالہ وولٹیج منتخب کیا گیا ہے}
2. ینالاگ چینل کو منتخب کریں: اب ہمیں منتخب کرنا ہے کہ ہم کون سا چینل ADC ویلیو کو پڑھنے کے لئے استعمال کریں گے۔ ہمیں اندر ہر چینل کے درمیان منتقل کرنے کے لئے یہ آسان ہو جائے گا کہ اس کے لئے ایک تقریب بنانے، لہذا اجازت دیتا ہے جبکہ لوپ.
بغیر دستخط شدہ ADC_Read (بغیر دستخط شدہ چار چینل) {// **** چینل کا انتخاب ** /// ADCON0 & = 0x11000101؛ // چینل سلیکشن بٹس کو صاف کرنا ADCON0 - = چینل << 3؛ // مطلوبہ بٹس کو ترتیب دینا // ** چینل کا انتخاب مکمل *** ///}
پھر منتخب کردہ چینل متغیر چینل کے اندر موصول ہوتا ہے۔ لائن میں
ADCON0 & = 0x1100101؛
پچھلے چینل کا انتخاب (اگر کوئی ہے) صاف ہو گیا ہے۔ یہ بٹ سائڈ اور آپریٹر "&" استعمال کرکے کیا جاتا ہے۔ بٹس 3 ، 4 اور 5 کو 0 ہونے پر مجبور کیا جاتا ہے جبکہ باقیوں کو ان کی سابقہ اقدار میں چھوڑنا پڑتا ہے۔
پھر مطلوبہ چینل کا انتخاب بائیں طرف چینل کا نمبر تین بار منتقل کرنے اور بٹ سائڈ یا آپریٹر "-" کا استعمال کرتے ہوئے بٹس کو ترتیب دے کر کیا جاتا ہے۔
ADCON0 - = چینل << 3؛ // مطلوبہ بٹس کا تعین کرنا
Go. گو / ڈن بٹ اونچائی بنا کر اے ڈی سی شروع کریں : ایک بار چینل منتخب ہونے کے بعد ہمیں صرف GO_nDONE بٹ اونچائی بنا کر ADC تبادلوں کا آغاز کرنا ہوگا۔
GO_nDONE = 1؛ // A / D تبادلوں کا آغاز کرتا ہے
Go. گو / ڈون بٹ کے کم ہونے کا انتظار کریں: جب تک اے ڈی سی تبادلوں کا عمل مکمل نہیں ہوتا ہے اس وقت تک GO / DON بٹ زیادہ رہے گا ، لہذا ہمیں اس بٹ کے کم ہونے تک انتظار کرنا ہوگا۔ یہ تھوڑی دیر کے لوپ کا استعمال کرکے کیا جاسکتا ہے ۔
جبکہ (GO_nDONE)؛ // A / D تبادلوں کے مکمل ہونے کا انتظار کریں
5. ADRSH اور ADRESL رجسٹر سے ADC کا نتیجہ حاصل کریں: جب Go / Done تھوڑا سا کم ہوجائے تو اس کا مطلب یہ ہے کہ ADC کی تبدیلی مکمل ہوچکی ہے۔ اے ڈی سی کا نتیجہ 10 بٹ قدر کی ہوگی۔ چونکہ ہمارا MCU 8 بٹ MCU ہے اس کا نتیجہ اوپری 8 بٹ اور نچلے 2 بٹس میں تقسیم ہوجاتا ہے۔ اوپری 8 بٹ کا نتیجہ رجسٹر ADRESH میں محفوظ ہے اور نچلے 2 بٹ کو ADRESL کے اندراج میں محفوظ کیا جاتا ہے۔ لہذا ہمیں اپنی 10 بٹ اے ڈی سی کی قیمت حاصل کرنے کے ل reg ان کو رجسٹر میں شامل کرنا ہوگا۔ جیسا کہ ذیل میں دکھایا گیا ہے اس کا نتیجہ فنکشن کے ذریعہ واپس آ گیا ہے:
واپسی ((ADRESH << 8) + ADRESL)؛ // نتائج کی واپسی
مکمل فعل جو ADC چینل کو منتخب کرنے ، ADC کو متحرک کرنے اور نتیجہ واپس کرنے کے لئے استعمال ہوتا ہے وہ یہاں دکھایا گیا ہے۔
بغیر دستخط شدہ ADC_Read (دستخط شدہ چار چینل) {ADCON0 & = 0x11000101؛ // چینل سلیکشن بٹس کو صاف کرنا ADCON0 - = چینل << 3؛ // مطلوبہ بٹس کا تعین کرنا __Dlay_ms (2)؛ // حصول کاپایسیٹر چارج کرنے کا حصول GO_nDONE = 1؛ // A / D تبادلوں کا آغاز کرتے ہوئے (GO_nDONE)؛ // A / D تبادلوں کا مکمل واپسی کے لئے انتظار کریں ((ADRESH << 8) + ADRESL)؛ // نتائج کا نتیجہ}
اب ہمارے پاس ایک فنکشن ہے جو چینل سلیکشن کو ان پٹ کے طور پر لے گا اور ہمیں ADC ویلیو واپس کردے گا۔ لہذا ہم اس فنکشن کو براہ راست اپنے اولو لوپ کے اندر کال کرسکتے ہیں ، چونکہ ہم اس ٹیوٹوریل میں چینل 4 سے اینالاگ وولٹیج پڑھ رہے ہیں ، لہذا فنکشن کال اس طرح ہوگی۔
i = (ADC_Read (4))؛ // adc کا نتیجہ "i" میں اسٹور کریں۔
اپنے ADC کی آؤٹ پٹ کو دیکھنے کے ل we ، ہمیں LCD یا 7 طبقہ جیسے کسی قسم کے ڈسپلے ماڈیول کی ضرورت ہوگی۔ اس ٹیوٹوریل میں ہم آؤٹ پٹ کی تصدیق کے لئے 7 سیگمنٹ ڈسپلے استعمال کررہے ہیں۔ اگر آپ جاننا چاہتے ہیں کہ تصویر کے ساتھ 7-طبقہ کو کس طرح استعمال کرنا ہے تو یہاں ٹیوٹوریل کی پیروی کریں۔
مکمل ضابطہ ذیل میں دیا جاتا ہے اور اس عمل میں بھی بیان کی گئی ہے ویڈیو آخر میں.
ہارڈ ویئر سیٹ اپ اور جانچ:
عام طور پر ہمارے ہارڈ ویئر کے ساتھ جانے سے پہلے پروٹیوس کا استعمال کرتے ہوئے کوڈ کی نقل کریں ، اس منصوبے کی تدبیریں ذیل میں دکھائی گئی ہیں:

پی آئی سی مائکروکانٹرولر کے ساتھ 4 ہندسوں والے سات سیگمنٹ ڈسپلے ماڈیول کے رابطے پچھلے پروجیکٹ کی طرح ہیں ، ہم نے ابھی پن 7 میں ایک پوٹینومیٹر شامل کیا ہے جو ینالاگ چینل ہے۔ 4 برتن کو مختلف کرنے سے ، ایک متغیر وولٹیج ایم سی یو کو بھیجا جائے گا۔ جو ADC ماڈیول کے ذریعہ پڑھیں گے اور 7 طبقات ڈسپلے ماڈیول میں دکھائے جائیں گے۔ پچھلے ٹیوٹوریل کو 4 ہندسوں والے 7 طبقات کے ڈسپلے اور پی آئی سی ایم سی یو کے ساتھ اس کے درمیان مداخلت کے بارے میں مزید جاننے کے ل Check چیک کریں۔
یہاں ہم نے وہی پی آئی سی مائکروکانٹرولر بورڈ استعمال کیا ہے جو ہم نے ایل ای ڈی ٹمٹمانے ٹیوٹوریل میں تشکیل دیا ہے۔ کنکشن کو یقینی بنانے کے بعد پروگرام کو پی آئی سی میں اپ لوڈ کریں اور آپ کو اس طرح کا آؤٹ پٹ دیکھنا چاہئے


یہاں ہم نے برتن سے اے ڈی سی کی قیمت پڑھی ہے اور 0-1024 آؤٹ پٹ کو 0-5 وولٹ (جیسا کہ پروگرام میں دکھایا گیا ہے) کی نقشہ کاری کرکے اسے حقیقی وولٹیج میں تبدیل کیا ہے۔ اس کے بعد یہ قیمت 7-طبقے پر آویزاں ہوگی اور ملٹی میٹر کا استعمال کرکے اس کی تصدیق ہوگی۔
اس کا مطلب ہے ، اب ہم مارکیٹ میں دستیاب تمام ینالاگ سینسرز کو استعمال کرنے کے لئے تیار ہیں ، آگے بڑھیں اور اس کی کوشش کریں اور اگر آپ کو معمول کے مطابق کوئی پریشانی ہو تو کمنٹ سیکشن کا استعمال کریں ، ہم آپ کی مدد کرنے میں خوش ہوں گے۔
