El DS18B20 সেন্সর তাপমাত্রা পরিমাপের জন্য এর নির্ভরযোগ্যতা এবং বহুমুখীতার জন্য জনপ্রিয়তা অর্জন করেছে। এটির ব্যবহারের সরলতা এবং একই বাসে একাধিক সেন্সর সংযোগ করার ক্ষমতার কারণে মাইক্রোকন্ট্রোলার যেমন Arduino, PIC বা ESP8266 সহ ইলেকট্রনিক্স প্রকল্পগুলিতে এটি ব্যাপকভাবে ব্যবহৃত হয়, যা এটি অপেশাদার এবং পেশাদার উভয়ের জন্য একটি আদর্শ বিকল্প করে তোলে।
এই সেন্সরের অন্যতম প্রধান আকর্ষণ হল এটি প্রোটোকল ব্যবহার করে ডেটা যোগাযোগের জন্য শুধুমাত্র একটি কেবল ব্যবহার করে। 1-ওয়্যার, যা বিভিন্ন ধরণের প্রকল্পে এর একীকরণকে সহজতর করে। অতিরিক্তভাবে, DS18B20 দুটি ভিন্ন পাওয়ার মোডে কাজ করতে পারে, এটিকে আরও নমনীয় করে তোলে। এই নিবন্ধটি জুড়ে, আমরা গভীরভাবে ব্যাখ্যা করব যে এটি কীভাবে কাজ করে, আপনি কীভাবে একাধিক সেন্সর সংযোগ করতে পারেন এবং কীভাবে আপনার তাপমাত্রা পরিমাপ অপ্টিমাইজ করবেন।
DS18B20 বৈশিষ্ট্য
DS18B20 দ্বারা নির্মিত হয় ম্যাক্সিম ইন্টিগ্রেটেড, অন্যদের মধ্যে, এবং বিভিন্ন এনক্যাপসুলেশনে উপস্থাপিত হয়, বিন্যাস হচ্ছে টু-92 (অনেক ট্রানজিস্টরের অনুরূপ) সবচেয়ে সাধারণ একটি। উপরন্তু, এটি সিল করা এবং জলরোধী সংস্করণেও পাওয়া যেতে পারে, এটি কঠোর বা আর্দ্র পরিবেশে তাপমাত্রা পরিমাপের জন্য আদর্শ করে তোলে।
DS18B20 এর সবচেয়ে উল্লেখযোগ্য বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
- তাপমাত্রা পরিসীমা যে থেকে এটি কভার পরিমাপ করতে পারে -55°C থেকে 125°C, এটি শিল্প এবং গার্হস্থ্য অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে।
- Su প্রোগ্রামযোগ্য রেজোলিউশন মধ্যে পরিবর্তিত হতে পারে 9 এবং 12 বিট, প্রতিটি প্রকল্পের প্রয়োজনের উপর ভিত্তি করে সুনির্দিষ্ট সমন্বয়ের অনুমতি দেয়।
- প্রতিটি সেন্সর একটি অনন্য ঠিকানা আছে 64 বিট, একই বাসে সংযুক্ত একাধিক সেন্সর সনাক্তকরণের সুবিধা।
DS18B20 পাওয়ার মোড
সেন্সর দুটি পাওয়ার মোডে কাজ করতে পারে, এটিকে বিভিন্ন প্রকল্পে একীভূত করার সময় নমনীয়তা প্রদান করে, প্রতিটির নিজস্ব সুবিধা রয়েছে।
ডেটা পিনের মাধ্যমে পাওয়ার (প্যারাসাইট পাওয়ার)
স্থান সীমিত হলে বা দীর্ঘ দূরত্বের সংযোগের প্রয়োজন হলে এই মোডটি আদর্শ। DS18B20 ডাটা পিন থেকে সরাসরি পাওয়ার আঁকে যখন এটি বেশি থাকে এবং যখন ডেটা লাইন কম থাকে তখন একটি ছোট ক্যাপাসিটরে শক্তি সঞ্চয় করে। এই ধরনের খাদ্য বলা হয় পরজীবী শক্তি.
যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এটি সঠিকভাবে কাজ করার জন্য, পিনগুলিকে সংযুক্ত করা প্রয়োজন GND y Vdd তীরে উপরন্তু, এটি একটি ট্রানজিস্টর অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয় মোসফেট যা এমন পরিস্থিতিতে সাহায্য করে যেখানে তাপমাত্রা পরিবর্তনের জন্য আরও বেশি কারেন্ট প্রয়োজন।
একটি বাহ্যিক উত্স ব্যবহার করে শক্তি
DS18B20 পাওয়ার সবচেয়ে সাধারণ এবং প্রস্তাবিত উপায় হল পিনের সাথে সংযুক্ত একটি বাহ্যিক উত্সের মাধ্যমে Vdd. এই পদ্ধতিটি 1-ওয়্যার বাসে ডেটা ট্র্যাফিক থেকে মুক্ত একটি স্থিতিশীল ভোল্টেজের গ্যারান্টি দেয়, যা ধ্রুবক নির্ভুলতা প্রয়োজন এমন প্রকল্পগুলির জন্য সুবিধাজনক।
Arduino এর সাথে DS18B20 কিভাবে ব্যবহার করবেন
Arduino প্ল্যাটফর্মে এই সেন্সরের সাথে কাজ করার জন্য, দুটি মৌলিক লাইব্রেরি ব্যবহার করা প্রয়োজন: ওয়ানওয়্যার y ডালাস তাপমাত্রা. এই লাইব্রেরিগুলি যোগাযোগের সুবিধা দেয় এবং রিডিং এবং কনফিগারেশনগুলি সহজে সম্পন্ন করার অনুমতি দেয়।
ওয়ানওয়্যার লাইব্রেরি: 1-ওয়্যার প্রোটোকল ব্যবহার করে যোগাযোগের অনুমতি দেয়। থেকে ডাউনলোড করা যাবে গিটহাবের সংগ্রহশালা ory.
ডালাস বইয়ের দোকানের তাপমাত্রা: এটিতে তাপমাত্রা পড়তে এবং সেন্সর কনফিগার করার জন্য প্রয়োজনীয় ফাংশন রয়েছে। থেকে ডাউনলোড করুন এই লিঙ্কে.
একবার আপনি উভয় লাইব্রেরি ইনস্টল করার পরে, আপনি জটিলতা ছাড়াই সেন্সরের সাথে কাজ শুরু করতে পারেন। নীচে আমরা তাপমাত্রা কীভাবে পড়তে হয় এবং একাধিক সেন্সর দিয়ে কীভাবে কাজ করতে হয় তার কয়েকটি উদাহরণ ব্যাখ্যা করি।
উদাহরণ 1: একটি একক সেন্সর দিয়ে তাপমাত্রা রিডিং
আরডুইনোর সাথে সংযুক্ত একটি একক DS18B20 দিয়ে তাপমাত্রা রিডিং সম্পাদন করতে, মৌলিক সার্কিটে কেবল সেন্সরের ডেটা পিনকে সংযুক্ত করা অন্তর্ভুক্ত। ডিজিটাল পিন 2 Arduino এর, একটি রোধ সহ পুল আপ 4.7kΩ এর।
সেন্সর তাপমাত্রা পড়ার জন্য এটি মৌলিক কোড:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print("Temperatura= "); Serial.print(tempC); Serial.println(" °C"); delay(1000); }
কোডটি বেশ সহজ। তাপমাত্রার অনুরোধ করতে এবং এটি পড়ার জন্য এটিকে শুধুমাত্র প্রধান লুপে কয়েকটি লাইনের প্রয়োজন হয়, এটিকে বাস্তবায়ন করা এবং বিভিন্ন ব্যবহারের জন্য কাস্টমাইজ করা খুব সহজ করে তোলে।
উদাহরণ 2: বিভিন্ন পিনে একাধিক সেন্সর ব্যবহার করা
একাধিক DS18B20 এর সাথে কাজ করার সময়, সেন্সর সংযোগ করার দুটি উপায় রয়েছে। প্রথমটি হল প্রতিটি সেন্সরে একটি ভিন্ন Arduino ডিজিটাল পিন বরাদ্দ করা। এই ক্ষেত্রে, প্রতিটি সেন্সরের জন্য একটি 4.7kΩ পুল-আপ প্রতিরোধকের প্রয়োজন হবে।
এখানে আমরা আপনাকে বিভিন্ন পিনের সাথে সংযুক্ত দুটি সেন্সর দিয়ে কীভাবে কাজ করতে হয় তার একটি উদাহরণ দেখাই:
#include <OneWire.h> #include <DallasTemperature.h> OneWire ds1(2); OneWire ds2(3); DallasTemperature sensors1(&ds1); DallasTemperature sensors2(&ds2); void setup() { Serial.begin(9600); sensors1.begin(); sensors2.begin(); } void loop() { sensors1.requestTemperatures(); float temp1 = sensors1.getTempCByIndex(0); sensors2.requestTemperatures(); float temp2 = sensors2.getTempCByIndex(0); Serial.print("Temperatura 1 = "); Serial.print(temp1); Serial.print(" °C Temperatura 2 = "); Serial.println(temp2); delay(1000); }
উদাহরণ 3: একাধিক সেন্সর একটি একক পিনের সাথে সংযুক্ত
একটি প্রজেক্টে বেশ কয়েকটি DS18B20 সংযোগ করার অন্যান্য সম্ভাবনা হল একটি একক পিন এবং তাদের সকলের জন্য একই 1-ওয়্যার বাস ব্যবহার করে তা করা। এই ক্ষেত্রে, প্রতিটি সেন্সর তার থাকতে হবে অনন্য শনাক্তকরণ নম্বর, যা কারখানায় বরাদ্দ করা হয়। নিম্নলিখিত কোড ব্যবহার করে এই ঠিকানাগুলি কীভাবে পাওয়া যায় তা আমরা এখানে ব্যাখ্যা করি:
#include <OneWire.h> OneWire ds(2); void setup(void) { Serial.begin(9600); } void loop(void) { byte address[8]; if (!ds.search(address)) { Serial.println("No more addresses."); ds.reset_search(); delay(250); return; } Serial.print("Address: "); for (int i = 0; i < 8; i++) { Serial.print(address[i], HEX); if (i < 7) Serial.print(", "); } Serial.println(); delay(250); }
একবার আপনার কাছে সমস্ত সেন্সরের ঠিকানা হয়ে গেলে, আপনি নির্দিষ্ট সেন্সরটির অনন্য ঠিকানা ব্যবহার করে পড়তে পারেন। নিম্নলিখিত কোড আপনাকে দেখায় কিভাবে এটি করতে হয়:
#include <DallasTemperature.h> OneWire ds(2); DallasTemperature sensors(&ds); DeviceAddress sensor1 = {0x28, 0xFF, 0xCA, 0x4A, 0x5, 0x16, 0x3, 0xBD}; DeviceAddress sensor2 = {0x28, 0xFF, 0x89, 0x3A, 0x1, 0x16, 0x4, 0xAF}; void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); float temp1 = sensors.getTempC(sensor1); float temp2 = sensors.getTempC(sensor2); Serial.print("Temp sensor 1: "); Serial.println(temp1); Serial.print("Temp sensor 2: "); Serial.println(temp2); delay(1000); }
এই পদ্ধতির সুবিধা হল আপনি আরডুইনোতে পিন সংরক্ষণ করেন এবং আপনি একই ডেটা বাসের সমান্তরালে অনেকগুলি সেন্সর সংযোগ করতে পারেন।
এই উদাহরণগুলির সাহায্যে, আপনি DS18B20 সেন্সরের বহুমুখিতা এবং শক্তি দেখতে পারেন। এটি বাস্তবায়ন করা খুবই সহজ, এবং যদি আপনাকে একাধিক সেন্সর সংযুক্ত করতে হয়, তাহলে বিভিন্ন উপায়ে এটি করার জন্য আপনার সম্পূর্ণ নমনীয়তা রয়েছে। DS18B20 তাপমাত্রা পরিমাপের জন্য সবচেয়ে নির্ভরযোগ্য সেন্সরগুলির মধ্যে একটি, এবং এর কম শক্তি খরচ এবং সহজ প্রোগ্রামিংয়ের জন্য ধন্যবাদ, এটি সমস্ত ধরণের প্রকল্পের জন্য উপযুক্ত।
DS18B20 সেন্সরটি শুধুমাত্র Arduino এর সাথেই ব্যবহার করা সহজ নয়, এটি শিল্প এবং আবাসিক অ্যাপ্লিকেশনগুলির একটি বিস্তৃত পরিসর যেমন শীতাতপ নিয়ন্ত্রণ ব্যবস্থা, যন্ত্রপাতি বা এমনকি গ্রিনহাউসে তাপমাত্রা পর্যবেক্ষণেও ব্যবহার করা যেতে পারে।