جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
TMP112 وحدة I2C صغيرة عالية الدقة ومنخفضة الطاقة ومستشعر درجة الحرارة الرقمية. يعتبر TMP112 مثاليًا لقياس درجة الحرارة الممتدة. يوفر هذا الجهاز دقة تبلغ ± 0.5 درجة مئوية دون الحاجة إلى معايرة أو تكييف إشارة مكون خارجي.
في هذا البرنامج التعليمي ، تم توضيح واجهة وحدة المستشعر TMP112 مع اردوينو نانو. لقراءة قيم درجة الحرارة ، استخدمنا اردوينو مع محول I2c. يجعل هذا المحول I2C الاتصال بوحدة المستشعر أسهل وأكثر موثوقية.
الخطوة 1: الأجهزة المطلوبة:
تشمل المواد التي نحتاجها لتحقيق هدفنا مكونات الأجهزة التالية:
1. TMP112
2. اردوينو نانو
3. كابل I2C
4. I2C Shield لاردوينو نانو
الخطوة 2: ربط الأجهزة:
يشرح قسم توصيل الأجهزة بشكل أساسي اتصالات الأسلاك المطلوبة بين المستشعر واردوينو نانو. يعد التأكد من التوصيلات الصحيحة ضرورة أساسية أثناء العمل على أي نظام للإخراج المطلوب. إذن ، الاتصالات المطلوبة هي كما يلي:
سيعمل TMP112 على I2C. فيما يلي مثال على مخطط الأسلاك ، يوضح كيفية توصيل كل واجهة من أجهزة الاستشعار.
خارج الصندوق ، تم تكوين اللوحة لواجهة I2C ، لذلك نوصي باستخدام هذا التوصيل إذا كنت غير مدرك. كل ما تحتاجه هو أربعة أسلاك!
مطلوب أربعة اتصالات فقط دبابيس Vcc و Gnd و SCL و SDA ويتم توصيلها بمساعدة كابل I2C.
هذه الوصلات موضحة في الصور أعلاه.
الخطوة 3: كود لقياس درجة الحرارة:
لنبدأ برمز Arduino الآن.
أثناء استخدام وحدة الاستشعار مع Arduino ، نقوم بتضمين مكتبة Wire.h. تحتوي مكتبة "Wire" على الوظائف التي تسهل اتصال i2c بين المستشعر ولوحة Arduino.
يتم تقديم كود Arduino بالكامل أدناه لراحة المستخدم:
#يشمل
// عنوان TMP112 I2C هو 0x48 (72)
#define Addr 0x48
الإعداد باطل()
{
// تهيئة اتصال I2C باعتباره MASTER
Wire.begin () ؛
// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600
Serial.begin (9600) ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل التكوين
Wire.write (0x01) ؛
// التحويل المستمر ، وضع المقارنة ، دقة 12 بت
Wire.write (0x60) ؛
Wire.write (0xA0) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
تأخير (300) ؛
}
حلقة فارغة()
{
البيانات غير الموقعة [2] ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل البيانات
Wire.write (0x00) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
تأخير (300) ؛
// طلب 2 بايت من البيانات
Wire.request From (Addr، 2) ؛
// قراءة 2 بايت من البيانات
// temp msb، temp lsb
إذا (Wire.available () == 2)
{
البيانات [0] = Wire.read () ،
البيانات [1] = Wire.read () ،
}
// تحويل البيانات إلى 12 بت
int temp = ((data [0] * 256) + data [1]) / 16 ؛
إذا (درجة الحرارة> 2048)
{
درجة الحرارة - = 4096 ؛
}
تعويم cTemp = درجة الحرارة * 0.0625 ؛
تعويم fTemp = cTemp * 1.8 + 32 ؛
// إخراج البيانات إلى الشاشة التسلسلية
Serial.print ("درجة الحرارة بالدرجة المئوية:") ؛
Serial.print (cTemp) ؛
Serial.println ("C") ؛
Serial.print ("درجة الحرارة في Farhenheit:") ؛
Serial.print (fTemp) ؛
Serial.println ("F") ؛
تأخير (500) ؛
}
في مكتبة الأسلاك ، يتم استخدام Wire.write () و Wire.read () لكتابة الأوامر وقراءة إخراج المستشعر.
يتم استخدام Serial.print () و Serial.println () لعرض إخراج المستشعر على الشاشة التسلسلية لـ Arduino IDE.
يظهر خرج المستشعر في الصورة أعلاه.
الخطوة 4: التطبيقات:
تتضمن التطبيقات المختلفة التي تتضمن مستشعر درجة الحرارة الرقمية ذات الطاقة المنخفضة وعالية الدقة TMP112 مراقبة درجة حرارة مزود الطاقة ، والحماية الحرارية للأجهزة الطرفية للكمبيوتر ، وإدارة البطارية بالإضافة إلى الأجهزة المكتبية.