- مطلوبہ اجزاء: -
- DS18B20 درجہ حرارت سینسر:
- سرکٹ ڈایاگرام:-
- اقدامات یا کوڈ کی روانی: -
- کوڈ کی وضاحت:
- DS18B20 درجہ حرارت سینسر سے ڈیٹا حاصل کرنا:
عام طور پر ، درجہ حرارت کی پیمائش کے ل mic LM35 درجہ حرارت سینسر مائکروکانٹرولرز کے ساتھ استعمال ہوتا ہے کیونکہ یہ سستا اور آسانی سے دستیاب ہے۔ لیکن LM35 ینالاگ قدر دیتا ہے اور ہمیں انہیں ADC (ینالاگ سے ڈیجیٹل کنورٹر) کا استعمال کرتے ہوئے ڈیجیٹل میں تبدیل کرنے کی ضرورت ہے۔ لیکن آج ہم DS18B20 درجہ حرارت سینسر کا استعمال کر رہے ہیں جس میں درجہ حرارت حاصل کرنے کے لئے ہمیں ADC تبادلوں کی ضرورت نہیں ہے۔ یہاں ہم درجہ حرارت کی پیمائش کے ل P DS18B20 کے ساتھ PIC مائکروکنٹرولر استعمال کریں گے ۔
لہذا ہم یہاں مائکروچپ سے PIC16F877A مائکروقابو کنٹرولر یونٹ کا استعمال کرتے ہوئے درج ذیل تفصیلات کے ساتھ تھرمامیٹر بنا رہے ہیں ۔
- یہ درجہ حرارت کی مکمل حد درجہ حرارت کو -55 ڈگری سے +125 ڈگری تک دکھائے گا۔
- یہ صرف درجہ حرارت کو ظاہر کرے گا جب درجہ حرارت + / -.2 ڈگری میں تبدیل ہوتا ہے۔
مطلوبہ اجزاء: -
- Pic16F877A - PDIP40 پیکیج
- روٹی بورڈ
- پکیٹ ۔3
- 5V اڈاپٹر
- LCD JHD162A
- DS18b20 درجہ حرارت سینسر
- پردییوں کو مربوط کرنے کے لئے تاروں
- 4.7k مزاحم ۔2 پی سی
- 10 کٹ کا برتن
- 20 میگا ہرٹز کرسٹل
- 2 پی سیز 33 پی ایف سیرامک کیپسیٹرز
DS18B20 درجہ حرارت سینسر:
درجہ حرارت کو درست طریقے سے سمجھنے کے لئے DS18B20 ایک بہترین سینسر ہے۔ یہ سینسر درجہ حرارت سینسنگ سے متعلق 9 بٹ سے 12 بٹ قرارداد پیش کرتا ہے۔ یہ سینسر صرف ایک تار کے ساتھ بات چیت کرتا ہے اور ینالاگ درجہ حرارت حاصل کرنے اور انہیں ڈیجیٹل میں تبدیل کرنے کے لئے کسی اے ڈی سی کی ضرورت نہیں ہے۔
سینسر کی تفصیلات یہ ہیں: -
- درجہ حرارت -5 ° C سے + 125 ° C (-67 ° F سے + 257 ° F)
- 10 0.5 ° C درستگی -10 ° C سے + 85 ° C تک
- 9 بٹس سے 12 بٹس تک پروگرام قابل حل
- بیرونی اجزاء کی ضرورت نہیں ہے
- سینسر 1-وائر ® انٹرفیس کا استعمال کرتا ہے
اگر ہم ڈیٹاشیٹ سے اوپر کی آؤٹ پِنٹ تصویر پر نگاہ ڈالیں تو ہم دیکھ سکتے ہیں کہ سینسر بالکل ویسا ہی لگتا ہے جیسے بی سی 547 BC یا بی سی 7557 پیکج ، ٹو--92۔ پہلا پن گراؤنڈ ، دوسرا پن ڈی کیو یا ڈیٹا اور تیسرا پن وی سی سی ہے۔
ذیل میں ڈیٹا شیٹ سے بجلی کی تصریح ہے جس کو ہمارے ڈیزائن کے ل needed ضرورت ہوگی۔ سینسر کے لئے درجہ بند سپلائی وولٹیج + 3.0V سے + 5.5V ہے۔ اس کو بھی سپلائی وولٹیج پل اپ کی ضرورت ہے جو اوپر بیان کردہ سپلائی وولٹیج کی طرح ہے۔
نیز ، یہاں ایک درستگی کا مارجن ہے جو -10 ڈگری C سے +85 ڈگری سیلسیس کی حدود کے لئے + -0.5 ڈگری سیلسیس ہے ، اور مکمل حد کے مارجن کے لئے درستگی تبدیل ہوتی ہے ، جو + -5 ڈگری + + ڈگری + 125 ڈگری کی حد۔
اگر ہم دوبارہ ڈیٹاشیٹ پر نگاہ ڈالیں تو ہم سینسر کی کنکشن کی تفصیلات دیکھیں گے۔ ہم سینسر کو پرجیوی بجلی کے موڈ میں مربوط کرسکتے ہیں جہاں دو تاروں کی ضرورت ہوتی ہے ، ڈیٹا اور جی این ڈی ، یا ہم بیرونی بجلی کی فراہمی کا استعمال کرتے ہوئے سینسر سے رابطہ قائم کرسکتے ہیں ، جہاں تین الگ الگ تاروں کی ضرورت ہوتی ہے ۔ ہم دوسری تشکیل استعمال کریں گے۔
چونکہ اب ہم سینسر اور کنکشن سے متعلقہ علاقوں کی پاور ریٹنگ سے واقف ہیں ، اب ہم اسکیمیٹک بنانے پر توجہ مرکوز کرسکتے ہیں۔
سرکٹ ڈایاگرام:-
اگر ہم سرکٹ ڈایاگرام دیکھیں گے تو ہم دیکھیں گے کہ: -
16x2 کریکٹر LCD پورے PIC16F877A مائکروکنٹرولر سے منسلک ہے ، جس میں RB0 ، RB1 ، RB2 LCD پن RS ، R / W ، اور E سے جڑے ہوئے ہیں۔ اور RB4 ، RB5 ، RB6 اور RB7 LCD کے 4 پن D4 ، D5 ، D6 ، میں جڑے ہوئے ہیں ڈی 7۔ LCD 4 بٹ موڈ یا نبل موڈ میں منسلک ہے۔
20 میگا ہرٹز کا ایک کرسٹل آسکیلیٹر ، جس میں دو سیرامک کپیسیٹر 33 پی ایف ہے ، او ایس سی 1 اور او ایس سی 2 پن میں منسلک ہے۔ یہ مائکرو قابو پانے والے کو مستقل 20 میگاہرٹز گھڑی کی تعدد فراہم کرے گا۔
DS18B20 بھی پن کی ترتیب کے مطابق اور 4.7k پل اپ ریزٹر کے ساتھ جڑا ہوا ہے جیسا کہ پہلے تبادلہ خیال کیا گیا ہے۔ میں نے یہ سب بریڈ بورڈ میں جوڑ دیا ہے۔
اگر آپ پی آئی سی مائکروکانٹرلر کے ساتھ نئے ہیں تو ہمارے پی آئی سی مائکروکન્ટولر ٹیوٹوریلز کی پیروی کریں جس میں پی آئی سی مائکروکانٹرلر کے ساتھ شروعات کا ذکر کرتے ہیں۔
اقدامات یا کوڈ کی روانی: -
- مائکروکونٹرولر کی تشکیلات مرتب کریں جس میں آسیلیٹر ترتیب موجود ہے۔
- ایل سی ڈی کے لئے مطلوبہ پورٹ مقرر کریں جس میں TRIS رجسٹر بھی شامل ہے۔
- ds18b20 سینسر والا ہر سائیکل دوبارہ سیٹ کے ساتھ شروع ہوتا ہے ، لہذا ہم ds18b20 کو دوبارہ ترتیب دیں گے اور موجودگی کی نبض کا انتظار کریں گے۔
- سکریچ پیڈ لکھیں اور سینسر کی ریزولوشن 12 بٹ مقرر کریں۔
- دوبارہ ترتیب دینے والی نبض کے بعد ROM پڑھیں کو چھوڑ دیں۔
- درجہ حرارت کمانڈ تبدیل کریں۔
- سکریچ پیڈ سے درجہ حرارت پڑھیں۔
- درجہ حرارت کی قیمت چیک کریں چاہے منفی ہوں یا مثبت۔
- درجہ حرارت کو 16x2 LCD پر پرنٹ کریں۔
- +/- 20 ڈگری سینٹی گریڈ تک درجہ حرارت میں تبدیلی کا انتظار کریں۔
کوڈ کی وضاحت:
اس ڈیجیٹل تھرمامیٹر کے لئے مکمل کوڈ اس ٹیوٹوریل کے آخر میں ایک مظاہرہ ویڈیو کے ساتھ دیا گیا ہے ۔ آپ کو اس پروگرام کو چلانے کے لئے کچھ ہیڈر فائلوں کی ضرورت ہوگی جو یہاں سے ڈاؤن لوڈ کی جاسکتی ہیں۔
پہلے ، ہمیں تصویر مائکروکونٹرولر میں ترتیب بٹس مرتب کرنے کی ضرورت ہے اور پھر باطل مرکزی تقریب سے شروع کریں ۔
پھر چار لائنوں کے نیچے لائبریری ہیڈر فائل ، lcd.h اور ds18b20.h شامل کرنے کے لئے استعمال کیا جاتا ہے ۔ اور xc.h مائیکروکونٹرولر ہیڈر فائل کے لئے ہے۔
# شامل کریں
یہ تعریفیں درجہ حرارت سینسر کو کمانڈ بھیجنے کے لئے استعمال کی جاتی ہیں ۔ کمانڈ سینسر کے ڈیٹاشیٹ میں درج ہیں۔
# ڈیفائن اسکپ_روم 0xCC # ڈیفائن کنورٹ_ٹیمپ 0x44 # ڈیفائن رائٹ_ اسکریچ پیڈ 0x4E # تعیین ریزولوشن_2 بٹ 0x7F # ڈیفائن ریڈ_سکریچ پیڈ 0 ایکس بی ای
سینسر کے ڈیٹاشیٹ کا یہ ٹیبل 3 ان تمام کمانڈز کو دکھا رہا ہے جہاں میکروز کا استعمال متعلقہ کمانڈز بھیجنے کے لئے کیا جاتا ہے۔
درجہ حرارت صرف اسکرین میں ظاہر ہوگا جب درجہ حرارت +/- .20 ڈگری میں تبدیل ہوتا ہے ۔ ہم درجہ حرارت کے فرق کو اس عارضی_پیپ میکرو سے تبدیل کرسکتے ہیں ۔ اس میکرو کی قدر کو تبدیل کرنے سے ، تفصیلات کو تبدیل کردیا جائے گا۔
دکھائے گئے درجہ حرارت کے اعداد و شمار کو اسٹور کرنے اور درجہ حرارت کے فرق کے ساتھ فرق کرنے کے لئے استعمال ہونے والے دیگر دو فلوٹ متغیر
# ڈیفائن ٹائم_ گیپ 20 فلوٹ پری_وال = 0 ، آفٹ_وال = 0؛
میں باطل اہم () تقریب، lcd_init () ؛ LCD شروع کرنے کے لئے ایک تقریب ہے. یہ lcd_init () فنکشن کو lcd.h لائبریری سے طلب کیا گیا ہے۔
ان پٹ یا آؤٹ پٹ کے بطور I / O پنوں کو منتخب کرنے کیلئے TRIS رجسٹر استعمال ہوتے ہیں۔ درجہ حرارت سینسر سے 12 بٹ ریزولوشن ڈیٹا اسٹور کرنے کیلئے دو دستخط شدہ شارٹ متغیر ٹیمپل اور ٹیمپ ایچ استعمال کیا جاتا ہے۔
باطل مین (باطل) {TRISD = 0xFF؛ TRISA = 0x00؛ TRISB = 0x00؛ //TRISDbit_t.TRISD6 = 1؛ دستخط شدہ مختصر ٹی ایم ایل ، ٹمپ ایچ ایچ؛ غیر دستخط شدہ ٹی ٹی ، ٹی 2؛ فلوٹ فرق 1 = 0 ، فرق 2 = 0؛ lcd_init ()؛
آئیے جبکہ لوپ کو دیکھیں ، ہم یہاں (1) لوپ کو چھوٹے ٹکڑوں میں توڑ رہے ہیں ۔
وہ لائنیں درجہ حرارت سینسر سے منسلک ہیں یا نہیں اس کا احساس کرنے کے لئے استعمال کیا جاتا ہے۔
جبکہ (ow_reset ()) c lcd_com (0x80)؛ lcd_puts ("براہ کرم رابطہ قائم کریں")؛ lcd_com (0xC0)؛ lcd_puts ("عارضی احساس تحقیقات")؛ }
کوڈ کے اس حصے کو استعمال کرکے ہم سینسر کو ابتدا کرتے ہیں اور درجہ حرارت کو تبدیل کرنے کے لئے کمانڈ بھیجتے ہیں۔
lcd_puts ("")؛ ow_reset ()؛ write_byte (Writ_scratchpad)؛ write_byte (0)؛ write_byte (0)؛ تحریر_بیٹی (قرارداد_12 بٹ)؛ // 12 بٹ ریزولوشن ow_reset ()؛ write_byte (skip_rom)؛ تحریر_بیٹی (کنورٹ_ٹیمپ)؛
یہ کوڈ 12 بیٹ درجہ حرارت کا ڈیٹا دو دستخط شدہ مختصر متغیر میں اسٹور کرنے کے لئے ہے
جبکہ (read_byte () == 0xff)؛ __Dlay_ms (500)؛ ow_reset ()؛ write_byte (skip_rom)؛ write_byte (پڑھنے_سکریچ پیڈ)؛ ٹیمپل = پڑھنا_بیٹی ()؛ TempH = read_byte ()؛
پھر اگر آپ ذیل میں مکمل کوڈ چیک کرتے ہیں تو ، ہم نے درجہ حرارت کے نشان کو تلاش کرنے کے ل if اگر کوئی اور حالت پیدا کی ہے تو یہ مثبت ہے یا منفی۔
اگر بیان کوڈ کا استعمال کرتے ہوئے ، ہم اعداد و شمار میں ہیرا پھیری کرتے ہیں اور دیکھتے ہیں کہ درجہ حرارت منفی ہے یا نہیں اور اس بات کا تعین کریں کہ درجہ حرارت میں تبدیلی +/-.20 ڈگری کی حد میں ہے یا نہیں۔ اور دوسرے حصے میں ہم نے جانچ کیا کہ آیا درجہ حرارت مثبت ہے یا نہیں اور درجہ حرارت میں پتہ لگانے میں تبدیلی آتی ہے۔
کوڈ
DS18B20 درجہ حرارت سینسر سے ڈیٹا حاصل کرنا:
آئیے 1-وائر ® انٹرفیس کا وقت کا فرق دیکھتے ہیں۔ ہم 20 میگاہرٹز کرسٹل استعمال کر رہے ہیں۔ اگر ہم ds18b20.c فائل کے اندر دیکھیں تو ہم دیکھیں گے
# تعریف _XTAL_FREQ 20000000
یہ تعریف XC8 مرتب تاخیر کے معمول کے لئے استعمال کی جاتی ہے۔ 20 میگاہرٹز کرسٹل تعدد کے بطور سیٹ ہے۔
ہم نے پانچ افعال کیے
- ow_reset
- پڑھیں_بٹ
- پڑھنا_بائٹ
- لکھنا_بٹ
- لکھنا_بائٹ
1-وائر ® پروٹوکول کو رابطے کے ل strict سخت وقت سے متعلق سخت سلاٹوں کی ضرورت ہے۔ ڈیٹا شیٹ کے اندر ، ہمیں وقت سے متعلقہ کامل معلومات ملیں گی۔
ذیل میں فنکشن کے اندر ہم نے عین وقت کی سلاٹ تیار کی۔ یہ ضروری ہے کہ متعلقہ سینسر کی بندرگاہ کے ٹرآس بٹ کو تھامے اور رہائی کے ل the درست تاخیر پیدا کی جا.۔
دستخط شدہ چار ow_reset (باطل) {DQ_TRIS = 0؛ // Tris = 0 (آؤٹ پٹ) DQ = 0؛ // سیٹ پن # سے کم (0) __ ڈیلے_س (480)؛ // 1 تار میں وقت کی تاخیر کی ضرورت ہوتی ہے DQ_TRIS = 1؛ // ٹرائس = 1 (ان پٹ) __ ڈیلے_س (60)؛ // 1 تار میں وقت کی تاخیر کی ضرورت ہوتی ہے اگر (DQ == 0) // اگر کوئی موجودگی موجود ہو تو {__ ڈیلا_س (480)؛ واپسی 0؛ // واپسی 0 (1-تار موجود ہے)} دوسری} __ ڈیلے_س (480)؛ واپسی 1؛ // واپسی 1 (1-تار موجود نہیں ہے)}} // 0 = موجودگی ، 1 = کوئی حصہ نہیں
اب ذیل میں پڑھنے اور لکھنے میں مستعمل وقت کی سلاٹ کی تفصیل کے مطابق ، ہم نے بالترتیب پڑھنے اور لکھنے کی تقریب تشکیل دی۔
دستخط شدہ چار پڑھنے_بٹ (باطل) {دستخط شدہ چار i؛ DQ_TRIS = 1؛ ڈی کیو = 0؛ // DQ کم ھیںچو کرنے کے لئے timeslot DQ_TRIS = 1؛ ڈی کیو = 1؛ // پھر (i = 0؛ i <3؛ i ++) کیلئے اعلی لوٹ؛ // ٹائمسلوٹ ریٹرن (DQ) کے آغاز سے 15us میں تاخیر؛ // ڈی کیو لائن کی واپسی کی قیمت} باطل تحریری_بیٹ (چار بٹوال) {DQ_TRIS = 0؛ ڈی کیو = 0؛ // DQ کم ھیںچو کرنے کے لئے ٹائمسلوٹ شروع کرنے کے لئے اگر (بٹوال == 1) DQ = 1؛ // واپس DQ زیادہ اگر 1 __ ڈیلا_س (5) لکھیں؛ // اوقات قدر DQ_TRIS = 1 کے بقیہ حصول کی قیمت؛ ڈی کیو = 1؛ lay // تاخیر 16us فی لوپ ، پلس 24us فراہم کرتی ہے۔ لہذا تاخیر (5) = 104us
مزید متعلقہ ہیڈر اور.c فائلوں کو یہاں پر چیک کریں۔
لہذا ہم PIC مائکروکونٹرولر کے ساتھ درجہ حرارت حاصل کرنے کے ل DS DS18B20 سینسر استعمال کرسکتے ہیں ۔
اگر آپ LM35 کے ساتھ ایک سادہ ڈیجیٹل تھرمامیٹر بنانا چاہتے ہیں تو ، دوسرے مائکروکنٹرولروں کے ساتھ منصوبوں کے نیچے چیکآاٹ کریں:
- راسبیری پائی کے ساتھ کمرے کا درجہ حرارت کی پیمائش
- ارڈینو اور LM35 کا استعمال کرتے ہوئے ڈیجیٹل تھرمامیٹر
- LM35 اور 8051 استعمال کرکے ڈیجیٹل تھرمامیٹر
- درجہ حرارت کی پیمائش LM35 اور AVR مائکروکانٹرولر کا استعمال کرتے ہوئے