سنسور دما DS18B20 ضد آب با کابل دو متری
سنسور دما DS18B20 ضد آب با کابل دو متری
سنسور DS18B20 نوعی سنسور دمای دیجیتال است. که دارای سه رشته سیم است. این سنسور از نوع سیمدار با روکش PVC ضد آب است و در زمانی که نیاز به اندازه گیری دما در محیط های مرطوب و یا در فاصله را دارید، قابل استفاده است. دمای کاری سنسور طبق اطلاعات گفته شده در دیتاشیت تا ۱۲۵ درجه سانتی گراد است اما پیشنهاد میشود در دمای ۱۰۰ درجه از سنسور نگهداری شود. با توجه به اینکه سنسور دیجیتال است حتی در فاصله دور تخریب سیگنال در انتقال دیتا مشاهده نشده است. سنسور دمای ۱-Wire دیجیتال با دقت اندازه گیری در حدود +-۰٫۵ درجه است. با انواع میکروکنترلرها قابلیت تست و راه اندازی داشته و حتی میتوانید چندین پین را به یک پین متصل کنید. تمامی سنسورهای دما DS18b20 دارای ۶۴ بیت سریال کد هستند و این امکان را به شما میدهد تا چندین پایه سنسور به یک پایه دیتای مشابه متصل کنید. به این ترتیب میتوانید دیتای دمای چندین سنسور را با یک پین دیجیتال آردوینو دریافت کنید.
ویژگی های سنسور DS18B20 دو متری
- دقت: DS18B20 دارای دقت بالایی است و دقت آن در دماهای مختلف بین ± 0.5 درجه سانتیگراد تا ± 0.1 درجه سانتیگراد است.
- رزولوشن: این سنسور دارای رزولوشن 12 بیتی است، که برای اندازه گیری دما با دقت بالا کافی است.
- بازه دمایی: DS18B20 قادر به اندازه گیری دمایی در بازه -55 درجه سانتیگراد تا +125 درجه سانتیگراد است.
- اتصال: سنسور DS18B20 با یک کابل 3 تایی به سیستم متصل می شود که شامل رابط یکپارچه 1-Wire، زمین و تغذیه است.
- حافظه داخلی: DS18B20 دارای یک حافظه داخلی است که مقادیر دما در آن ذخیره می شوند، بنابراین می توان از آن برای ذخیره سازی مقادیر دمای گذشته استفاده کرد.
- قابلیت کالیبره: DS18B20 دارای قابلیت کالیبره است که امکان تنظیم و تعدیل دقت آن را برای انطباق با نیازهای خاص کاربر فراهم می کند.
- قابلیت تشخیص خطا: DS18B20 قابلیت تشخیص خطا را دارد و در صورت وجود هر گونه خطا در ارتباط با سنسور، خروجی خطایی را ارسال می کند.
سنسور DS18B20 با توجه به اینکه قابلیت آدرس دهی دارد، هر سنسور یک آی دی منحصر به فرد دارد. از این رو میتوانید چند سنسور DS18B20 را فقط به یک پایه دیجیتال بردهای میکروکنترلر اتصال دهید. به عنوان مثال دو فضای مختلف داریم، فضای داخل inside و فضای خارج outside. سنسوری که در فضای داخل است یک آی دی یونیک داشته و دیتا را خوانده و مجزا برای ما نشان میدهد. سنسور دوم هم که در فضای بیرون outside قرار دارد، آی دی یونیک داشته و دیتا را نشان میدهد. پس به این ترتیب هر سنسور توسط آی دی قابل تفکیک است و فقط یک پایه از برد میکرو شما را درگیر خواهد کرد.
بررسی پایه های سنسور DS18B20 دو متری
سنسور دمای دیجیتال DS18B20 دارای سه پایه است. این سه پایه به شرح VDD, GND, DQ است. در تصویر زیر میتوانید سه رشته سیم سنسور دما DS18B20 را بررسی کنید.
به همراه سنسور دمای دیجیتال DS18B20 چه اقلامی باید خریداری شود؟
برای استفاده از سنسور DS18B20، علاوه بر خود سنسور، بایستی اقلامی تکمیلی هم خریداری شوند.
میکروکنترلر یا برد توسعه: شما نیاز دارید تا یک میکروکنترلر یا برد توسعه که قابلیت ارتباط با سنسور را دارا باشد را تهیه کنید. مثلاً میتوانید از Arduino، Raspberry Pi یا بردهای مشابه استفاده کنید.
مقاوم 4.7 کیلو اهم: یک مقاوم 4.7 کیلواهم برای اتصال سنسور به خط داده 1-Wire و تغذیه 3.3 ولت استفاده میشود. این مقاوم به عنوان مقاوم ترکیبی استفاده میشود و به خط داده ورودی/خروجی بردهای میکروکنترلر متصل میشود.
منبع تغذیه: شما نیاز به یک منبع تغذیه مناسب برای سنسور و برد توسعه خود دارید. این منبع تغذیه باید ولتاژ مناسب (معمولا 3.3 ولت) را ارائه کند.
کابلها و اتصالات: برای اتصال سنسور DS18B20 به برد میکروکنترلر، کابلها و اتصالات مناسب هم نیاز است. این موارد ممکن است شامل کابل داده، کابل تغذیه، سوکتها و انواع اتصالات باشد.
با تهیه این اقلام، شما میتوانید سنسور DS18B20 را به برد توسعه خود متصل کنید و دمای محیط را اندازهگیری کنید.
راه اندازی سنسور DS18B20 با آردوینو
برای راه اندازی سنسور DS18B20 با آردوینو نیازمند کتابخانه مربوطه هستیم. کتابخانه Dallas Temperature جهت استفاده از سنسور DS18B20 توسط miles burton و … توسعه یافته است. با نصب کتابخانه از مسیر زیر شروع ارتباط با سنسور آغار میشود. پس از نصب کتابخانه، نوع برد مورد نظر را انتخاب کنید. در صورتیکه از بردهای آردوینو Arduino، استفاده میکنید، آن را انتخاب کنید. تفاوتی در نوع برد استفاده شده وجود ندارد و در صورت استفاده از بردهای سری ESP8266 تنها نوع پایه GPIO را مشخص کنید. کد را کپی و به نرم افزار آردوینو انتقال دهید.
#include <OneWire.h> //فراخوانی کتابخانه
#include <DallasTemperature.h> // فراخوانی کتابخانه
#define ONE_WIRE_BUS 2 //انتخاب پایه دیجیتال
OneWire oneWire(ONE_WIRE_BUS); // تعریف سنسور
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600); // تنظیم بادریت
Serial.println("Dallas Temperature IC Control Library Demo"); // پیغام پیش نمایش قبل از فعال شدن سنسور
sensors.begin(); // فرمان به شروع دریافت دیتا
}
void loop(void)
{
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
float tempC = sensors.getTempCByIndex(0); // تعریف سنسور با float و دریافت عدد اعشاری
if(tempC != DEVICE_DISCONNECTED_C)
{
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
}
else
{
Serial.println("Error: Could not read temperature data");
}
}
راه اندازی سنسور DS18B20 با میکروپایتون و ESP32
توسط میکروپایتون ماژولهای مورد نیاز را از میکروپایتون وارد کرده . سپس و نمونه داده از سنسور DS18X20 را ایجاد می کنیم. سپس در بس OneWire برای سنسورهای DS18B20 اسکن می کنیم و دقت را به 12 بیت (پیش فرض) تنظیم می کنیم. یک تابع برای تبدیل دمای سلسیوس به فارنهایت تعریف می کنیم و در حالت مداوم دما را در واحدهای سلسیوس و فارنهایت می خوانیم و چاپ می کنیم. متد convert_temp() یک تبدیل دمایی را آغاز می کند و متد read_temp() دما را از سنسور می خواند. متد sleep_ms() منتظر تکمیل تبدیل می ماند که در دقت پیش فرض 12 بیت 750 میلی ثانیه طول می کشد.
import machine, onewire, ds18x20, time
# GPIO pin for 1-Wire data line
data_pin = machine.Pin(15)
# Create a OneWire bus instance
one_wire_bus = onewire.OneWire(data_pin)
# Create a DS18X20 sensor instance
sensor = ds18x20.DS18X20(one_wire_bus)
# Scan for DS18B20 sensors on the bus
sensors = sensor.scan()
# If any DS18B20 sensors are found on the bus
if len(sensors) > 0:
# Set the resolution to 12-bit (default)
sensor.resolution(sensors[0], 12)
# Convert temperature to Fahrenheit
def c_to_f(temp_c):
return (temp_c * 1.8) + 32
# Continuously read and print the temperature
while True:
# Start a temperature conversion
sensor.convert_temp()
# Wait for the conversion to complete
time.sleep_ms(750)
# Read the temperature from the sensor
temp_c = sensor.read_temp(sensors[0])
# Convert to Fahrenheit
temp_f = c_to_f(temp_c)
# Print the temperature
print("Temperature: {}°C / {}°F".format(temp_c, temp_f))
else:
print("No DS18B20 sensors found on the bus.")
راه اندازی سنسور DS18B20 با میکروپایتون و RP2040
برای راه اندازی سنسور از میکروپایتون و برد رزبری پای پیکو Pico هم میتوانیم استفاده کنیم. الگوی عملکرد این کد به شرح زیر است:
در ابتدا، ماژولهای مورد نیاز را فراخوان میکنیم، از جمله machine برای کنترل پایههای GPIO، onewire برای ارتباط با سنسور 1-Wire، ds18x20 برای کنترل سنسور DS18B20، و time برای تاخیر وقفه سپس یک پایه GPIO برای خط داده 1-Wire انتخاب میکنیم و آن را به عنوان ورودی برای ساخت نمونه OneWire استفاده میکنیم. با استفاده از نمونه OneWire، یک نمونه سنسور DS18X20 ایجاد میکنیم. با استفاده از تابع scan()، سنسورهای DS18B20 را در اتصال اسکن میکنیم و لیستی از آدرسهای سنسورها را دریافت میکنیم. اگر سنسور DS18B20 در اتصال وجود داشت، رزولوشن آن را به 12 بیت تنظیم میکنیم. همچنین تابع c_to_f تعریف شده است که دما را از سانتیگراد به فارنهایت تبدیل میکند. در یک حلقه بینهایت، تبدیل دما را آغاز کرده و سپس منتظر تکمیل تبدیل میشویم. سپس دمای خوانده شده را از سنسور میخوانیم و به فارنهایت تبدیل میکنیم. در نهایت، دمای خوانده شده را به صورت درجه سانتیگراد و فارنهایت چاپ میکنیم. اگر هیچ سنسوری در اتصال یافت نشد، پیام "هیچ سنسور DS18B20 در اتصال یافت نشد" چاپ میشود. این کد امکان خواندن دمای سنسور DS18B20 را فراهم میکند و دما را به صورت مشخص و با دقت رزولوشن تعیین شده نمایش میدهد.
import machine
import onewire
import ds18x20
import time
# GPIO pin for 1-Wire data line
data_pin = machine.Pin(2)
# Create a OneWire bus instance
one_wire_bus = onewire.OneWire(data_pin)
# Create a DS18X20 sensor instance
sensor = ds18x20.DS18X20(one_wire_bus)
# Scan for DS18B20 sensors on the bus
sensors = sensor.scan()
# If any DS18B20 sensors are found on the bus
if len(sensors) > 0:
# Set the resolution to 12-bit (default)
sensor.resolution(sensors[0], ds18x20.RESOLUTION_12_BIT)
# Convert temperature to Fahrenheit
def c_to_f(temp_c):
return (temp_c * 1.8) + 32
# Continuously read and print the temperature
while True:
# Start a temperature conversion
sensor.convert_temp()
# Wait for the conversion to complete
time.sleep_ms(750)
# Read the temperature from the sensor
temp_c = sensor.read_temp(sensors[0])
# Convert to Fahrenheit
temp_f = c_to_f(temp_c)
# Print the temperature
print("Temperature: {:.2f}°C / {:.2f}°F".format(temp_c, temp_f))
else:
print("No DS18B20 sensors found on the bus.")
مشخصات
- کاربری
- مناسب برای استفاده صنعتی
- نوع ماژول
- دماسنج - Thermometer
- سطح تجربه مورد نیاز
- نیمه حرفه ای
- ابعاد
- ابعاد سنسور فولادی 6 میلی متر در قطر 30 میلی متر
- ولتاژ مورد نياز
- در محدوده 3 تا 5.5 ولت DC
- جنس مواد اولیه
- فولادی ضد زنگ
- طول کابل
- 1 متر
- دمای کاری
- - 55 تا + 100 درجه سانتی گراد
- جریان
- حداکثر 10 میلی آمپر
- رنگ بندی
- کابل با روکش مشکی
- تعداد پایه ها
- 3 پایه
- اقلام همراه محصول
- مقاومت 4.7 کیلو
- ترتیب پایه ها
- VDD - DQ - GND
- کشور سازنده
- چین
- پروتکل ارتباطی
- 1wire
- دقت اندازه گیری
- ±0.5°C
- محدوده اندازه گیری
- - 55 تا + 1250 درجه سانتی گراد - 67 تا +257 درجه فارنهایت
- سایر توضیحات
- دارای کابل پوشش PVC ضد آب
- سایر قابلیتها
- سنسورهای دما DS18b20 دارای ۶۴ بیت سریال است.
- کد تجاری ماژول و برد
- DS18B20
- نوع سنسور
- دما
این برد یک ترموستات دمایی است. برای درخواست مورد نظرتان قابل استفاده است. ولتاژ AC همان برق 220 است.
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.