الوصف
حساس درجة الحرارة الرقمي DS18B20
حساس DS18B20 الرقمي يتواصل مع المتحكمات الدقيقة مثل Arduino عبر ناقل 1-Wire. يقيس درجات الحرارة من −55 إلى +125 °م، بدقة ±0.5 °م ضمن المجال من −10 إلى +85 °م.
المواصفات
- جهد التغذية: من 3.0 إلى 5.5 فولت
- نطاق الحرارة: من −55 إلى +125 °م
- الدقة: ±0.5 °م من −10 إلى +85 °م
- الدقة الرقمية: قابلة للبرمجة من 9 إلى 12 بت
- الواجهة: 1-Wire
- العنوان: عنوان فريد من 64 بت لكل حساس، مما يسمح باستخدام عدة حساسات على ناقل واحد
طريقة العمل
يستخدم ناقل 1-Wire خط بيانات واحدًا (إضافة إلى الأرضي) للتواصل مع المتحكم. ويمكن للحساس أيضًا أن يتغذى من خط البيانات في وضع «التغذية الطفيلية»، لذلك قد لا يحتاج إلى توصيل مصدر تغذية خارجي.
توصيلات الأطراف
- الطرف 1 — GND: الأرضي
- الطرف 2 — DQ: طرف رقمي في Arduino؛ استخدم مقاومة سحب لأعلى 4.7 kΩ إلى VCC
- الطرف 3 — VDD: مصدر تغذية 3.3 أو 5 فولت؛ يُترك غير موصول عند استخدام التغذية الطفيلية
الاستخدامات
- أنظمة HVAC والتحكم البيئي
- مراقبة الحرارة في المباني والمعدات والآلات
- التحكم في العمليات وتنظيم درجات الحرارة
الاستخدام مع Arduino Uno
المكونات المطلوبة
- 1 × حساس DS18B20
- 1 × لوحة Arduino Uno
- 1 × مقاومة 4.7 kΩ
- أسلاك توصيل ولوحة تجارب
- اختياري: شاشة LCD 1602 بواجهة I2C للمثال المتقدم
مثال أساسي: عرض الحرارة في الشاشة التسلسلية
#include <OneWire.h>
#include <DallasTemperature.h>
// Définir la broche de données
#define ONE_WIRE_BUS 2
// Créer une instance de la bibliothèque OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Passer la référence OneWire à la bibliothèque DallasTemperature
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures(); // Envoyer la commande pour obtenir les températures
float temperatureC = sensors.getTempCByIndex(0); // Lire la température en Celsius
Serial.print("Température: ");
Serial.print(temperatureC);
Serial.println(" °C");
delay(1000); // Attendre 1 seconde
}
مثال متقدم: عرض الحرارة على شاشة LCD بواجهة I2C
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 2 // Pin connectée au capteur DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C de l'écran LCD
void setup() {
lcd.begin();
lcd.backlight();
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatureC);
lcd.print(" C");
delay(1000);
}
توصيل الحساس والشاشة في المثال
- VCC (أحمر): إلى 5 فولت في Arduino
- GND (أسود): إلى GND في Arduino
- DQ (أصفر): إلى الطرف الرقمي 2 في Arduino، مع مقاومة سحب لأعلى 4.7 kΩ بين DQ وVCC
- SDA للشاشة: إلى A4 في Arduino
- SCL للشاشة: إلى A5 في Arduino
تثبيت المكتبات
- في Arduino IDE، افتح Sketch → Include Library → Manage Libraries وثبّت
OneWire. - كرّر الخطوات وثبّت
DallasTemperature. - لمثال الشاشة، ثبّت أيضًا
LiquidCrystal_I2C.
كلمات مفتاحية: حساس حرارة رقمي DS18B20، قياس الحرارة، حساس Arduino بواجهة 1-Wire.










