جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
MCP9808 عبارة عن مستشعر درجة حرارة رقمي عالي الدقة ± 0.5 درجة مئوية وحدة صغيرة I2C. وهي مُجسَّدة بسجلات قابلة للبرمجة بواسطة المستخدم تسهل تطبيقات استشعار درجة الحرارة. أصبح مستشعر درجة الحرارة عالي الدقة MCP9808 معيارًا صناعيًا من حيث عامل الشكل والذكاء ، مما يوفر إشارات مستشعر خطية ومعايرة بتنسيق رقمي I2C.
في هذا البرنامج التعليمي ، تم توضيح التفاعل بين وحدة استشعار MCP9808 مع فوتون الجسيم. لقراءة قيم درجة الحرارة ، استخدمنا raspberry pi مع محول I2c. يجعل هذا المحول I2C الاتصال بوحدة المستشعر أسهل وأكثر موثوقية.
الخطوة 1: الأجهزة المطلوبة:
تشمل المواد التي نحتاجها لتحقيق هدفنا مكونات الأجهزة التالية:
1. MCP9808
2. جسيم الفوتون
3. كابل I2C
4. I2C Shield للفوتون الجسيمي
الخطوة 2: ربط الأجهزة:
يشرح قسم توصيل الأجهزة بشكل أساسي اتصالات الأسلاك المطلوبة بين المستشعر وفوتون الجسيم. يعد التأكد من التوصيلات الصحيحة ضرورة أساسية أثناء العمل على أي نظام للإخراج المطلوب. إذن ، الاتصالات المطلوبة هي كما يلي:
سيعمل MCP9808 على I2C. فيما يلي مثال على مخطط الأسلاك ، يوضح كيفية توصيل كل واجهة من أجهزة الاستشعار.
خارج الصندوق ، تم تكوين اللوحة لواجهة I2C ، لذلك نوصي باستخدام هذا التوصيل إذا كنت غير مدرك. كل ما تحتاجه هو أربعة أسلاك!
مطلوب أربعة اتصالات فقط دبابيس Vcc و Gnd و SCL و SDA ويتم توصيلها بمساعدة كابل I2C.
هذه الوصلات موضحة في الصور أعلاه.
الخطوة الثالثة: كود قياس درجة الحرارة:
لنبدأ الآن برمز الجسيمات.
أثناء استخدام وحدة الاستشعار مع arduino ، نقوم بتضمين مكتبة application.h و spark_wiring_i2c.h. تحتوي مكتبة "application.h" و spark_wiring_i2c.h على الوظائف التي تسهل اتصال i2c بين المستشعر والجسيم.
يتم توفير رمز الجسيمات بالكامل أدناه لراحة المستخدم:
#يشمل
#يشمل
// عنوان MCP9808 I2C هو 0x18 (24)
#define Addr 0x18
تعويم cTemp = 0 ، fTemp = 0 ؛
الإعداد باطل()
{
// تعيين متغير
Particle.variable ("i2cdevice"، "MCP9808") ؛
Particle.variable ("cTemp" ، cTemp) ؛
// تهيئة اتصال I2C باعتباره MASTER
Wire.begin () ؛
// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600
Serial.begin (9600) ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل التكوين
Wire.write (0x01) ؛
// وضع التحويل المستمر ، التشغيل الافتراضي
Wire.write (0x00) ؛
Wire.write (0x00) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد قرار التسجيل
Wire.write (0x08) ؛
// الدقة = +0.0625 / C.
Wire.write (0x03) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
تأخير (300) ؛
}
حلقة فارغة()
{
بيانات int غير الموقعة [2] ؛
// يبدأ اتصال I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل البيانات
Wire.write (0x05) ؛
// إيقاف انتقال I2C
Wire.endTransmission () ؛
// طلب 2 بايت من البيانات
Wire.request From (Addr، 2) ؛
// قراءة 2 بايت من البيانات
// temp msb، temp lsb
إذا (Wire.available () == 2)
{
البيانات [0] = Wire.read () ،
البيانات [1] = Wire.read () ،
}
تأخير (300) ؛
// تحويل البيانات إلى 13 بت
int temp = ((data [0] & 0x1F) * 256 + data [1]) ؛
إذا (درجة الحرارة> 4095)
{
درجة الحرارة - = 8192 ؛
}
cTemp = درجة الحرارة * 0.0625 ؛
fTemp = cTemp * 1.8 + 32 ؛
// إخراج البيانات إلى لوحة القيادة
Particle.publish ("درجة الحرارة بالدرجة المئوية:" ، سلسلة (cTemp)) ؛
Particle.publish ("درجة الحرارة بالفهرنهايت:" ، سلسلة (fTemp)) ؛
تأخير (500) ؛
}
تنشئ الدالة Particle.variable () المتغيرات لتخزين إخراج المستشعر وتعرض وظيفة Particle.publish () الإخراج على لوحة القيادة بالموقع.
يظهر خرج المستشعر في الصورة أعلاه للرجوع إليها.
الخطوة 4: التطبيقات:
يحتوي مستشعر درجة الحرارة الرقمي MCP9808 على العديد من التطبيقات على مستوى الصناعة والتي تتضمن المجمدات الصناعية والثلاجات جنبًا إلى جنب مع العديد من معالجات الطعام. يمكن استخدام هذا المستشعر للعديد من أجهزة الكمبيوتر الشخصية والخوادم بالإضافة إلى الأجهزة الطرفية الأخرى للكمبيوتر الشخصي.