جدول المحتويات:

مستشعر درجة الحرارة DIY باستخدام ديود واحد: 3 خطوات
مستشعر درجة الحرارة DIY باستخدام ديود واحد: 3 خطوات

فيديو: مستشعر درجة الحرارة DIY باستخدام ديود واحد: 3 خطوات

فيديو: مستشعر درجة الحرارة DIY باستخدام ديود واحد: 3 خطوات
فيديو: Using the DS18B20 thermometer on the web server and OLED | ds18b20 temperature sensor Arduino 2024, يوليو
Anonim
جهاز استشعار درجة الحرارة DIY باستخدام ديود واحد
جهاز استشعار درجة الحرارة DIY باستخدام ديود واحد
جهاز استشعار درجة الحرارة DIY باستخدام ديود واحد
جهاز استشعار درجة الحرارة DIY باستخدام ديود واحد

لذا ، نظرًا لأن إحدى الحقائق حول تقاطعات PN هي أن انخفاض الجهد الأمامي يتغير وفقًا للتيار المار ودرجة حرارة الوصلة أيضًا ، سنستخدم هذا لصنع مستشعر بسيط لدرجة الحرارة.

يستخدم هذا الإعداد بشكل شائع في العديد من الدوائر المتكاملة لقياس درجة الحرارة الداخلية والعديد من مستشعرات درجة الحرارة مثل LM35 الشهير والذي يعتمد على هذه الخاصية.

ببساطة ، يتغير انخفاض الجهد الأمامي للديود (وهو تقاطع PN واحد) مع تغير مقدار التيار الذي يمر عبره ، وأيضًا مع تغير درجة حرارة الصمام الثنائي ، سيتغير انخفاض الجهد (كلما زادت درجة الحرارة ، يتغير اتجاه التيار إلى الأمام ينخفض الانخفاض بقيمة (1.0 ملي فولت إلى 2.0 ملي فولت لثنائيات السيليكون و 2.5 ملي فولت لثنائيات الجرمانيوم).

لذلك من خلال تمرير تيار ثابت عبر الصمام الثنائي ، يجب أن يتغير انخفاض الجهد الأمامي فقط وفقًا لدرجة حرارة الصمام الثنائي. نحتاج الآن فقط إلى قياس الجهد الأمامي للديود ، وتطبيق بعض المعادلات البسيطة ، وهنا هو مستشعر درجة الحرارة الخاص بك !!!

اللوازم

1 - 1n4007 الصمام الثنائي # 12-1 مقاومة Kohm # 13 - لوحة Arduino

الخطوة 1: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني

كما ترون في التخطيطي ، الأمر بسيط للغاية. من خلال توصيل الصمام الثنائي في سلسلة بمقاوم محدد للتيار ومصدر جهد ثابت ، يمكننا الحصول على مصدر تيار ثابت خام ، وبالتالي فإن الجهد المقاس عبر الصمام الثنائي سوف يختلف فقط بسبب تغير درجة الحرارة. تأكد من أن قيمة المقاوم ليست كذلك منخفض جدًا لدرجة أن الكثير من التيار يمر عبر الصمام الثنائي ويحدث تسخينًا ذاتيًا ملحوظًا في الصمام الثنائي ، كما أنه ليس مقاومًا عاليًا جدًا ، لذا فإن مرور التيار لا يكفي للحفاظ على علاقة خطية بين الجهد الأمامي ودرجة الحرارة.

يجب أن ينتج عن المقاوم 1 كيلو أوم مع إمداد 5 فولت تيار ديود 4 مللي أمبير وهو قيمة كافية لهذا الغرض. أنا (الصمام الثنائي) = VCC / (Rseries + Rdiode)

الخطوة الثانية: البرمجة

يجب أن نضع في اعتبارنا أن هناك بعض القيم التي يجب تعديلها في الشفرة للحصول على نتائج أفضل مثل:

1 - VCC_Voltage: نظرًا لأن قيمة analogRead () تعتمد على VCC لشريحة ATmega ، فنحن بحاجة إلى إضافتها إلى المعادلة بعد قياسها على لوحة اردوينو.

2 - V_OLD_0_C: انخفاض الجهد الأمامي للديود المستخدم عند تيار 4 مللي أمبير ودرجة حرارة 0 مئوية

3 - درجة الحرارة_معامل: التدرج الحراري للديود الخاص بك (من الأفضل الحصول عليه من ورقة البيانات) أو يمكنك قياسه باستخدام هذه المعادلة: Vnew - Vold = K (Tnew - Told)

أين:

Vnew = انخفاض الجهد المقاس حديثًا بعد تسخين الصمام الثنائي

فولد = انخفاض الجهد المقاس عند درجة حرارة الغرفة

Tnew = درجة الحرارة التي تم تسخين الصمام الثنائي إليها

أخبر = درجة حرارة الغرفة القديمة التي تم قياس فولد عندها

K = Temperature_Coefficient (قيمة سالبة تتراوح بين -1.0 إلى -2.5 مللي فولت) أخيرًا يمكنك الآن تحميل الكود والحصول على نتائج درجة الحرارة الخاصة بك.

#define Sens_Pin A0 // PA0 للوحة STM32F103C8

مزدوج V_OLD_0_C = 690.0 ؛ // 690 مللي فولت جهد أمامي عند 0 درجة مئوية عند تيار اختبار 4 مللي أمبير

مزدوج V_NEW = 0 ؛ // جهد أمامي جديد عند درجة حرارة الغرفة عند 4 مللي أمبير درجة حرارة مزدوجة للتيار للاختبار = 0.0 ؛ // درجة حرارة الغرفة المحسوبة درجة حرارة مزدوجة_معامل = -1.6 ؛ //-1.6 mV تغيير لكل درجة مئوية (-2.5 لثنائيات الجرمانيوم) ، من الأفضل الحصول عليها من ورقة بيانات الصمام الثنائي VCC_Voltage = 5010.0 ؛ // الجهد الموجود عند سكة اردوينو 5 فولت بالميلي فولت (مطلوب للحصول على دقة أفضل) (3300.0 لـ stm32)

الإعداد باطل() {

// ضع رمز الإعداد هنا ، للتشغيل مرة واحدة: pinMode (Sens_Pin ، INPUT) ؛ Serial.begin (9600) ؛ }

حلقة فارغة() {

// ضع الكود الرئيسي هنا ، للتشغيل بشكل متكرر: V_NEW = analogRead (Sens_Pin) * VCC_Voltage / 1024.0 ؛ // قسّم على 4.0 إذا كنت تستخدم درجة حرارة 12 بت ADC = ((V_NEW - V_OLD_0_C) / Temperature_Coefficient) ؛

Serial.print ("Temp =") ؛

Serial.print (درجة الحرارة) ؛ Serial.println ("C") ؛

تأخير (500) ؛

}

الخطوة الثالثة: الحصول على قيم أفضل

الحصول على قيم أفضل
الحصول على قيم أفضل
الحصول على قيم أفضل
الحصول على قيم أفضل

أعتقد أنه من المستحسن أن يكون لديك جهاز قياس درجة حرارة موثوق بجانبك عند القيام بهذا المشروع.

يمكنك أن ترى أن هناك خطأ ملحوظًا في القراءات يمكن أن تصل إلى 3 أو 4 درجات مئوية ، فمن أين يأتي هذا الخطأ؟

1 - قد تحتاج إلى تعديل المتغيرات المذكورة في الخطوة السابقة

2 - دقة ADC للاردوينو أقل مما نحتاجه لاكتشاف فرق الجهد الصغير

3 - الجهد المرجعي لاردوينو (5 فولت) مرتفع جدًا لهذا التغيير الصغير في الجهد عبر الصمام الثنائي

لذا ، إذا كنت ستستخدم هذا الإعداد كجهاز استشعار لدرجة الحرارة ، فيجب أن تدرك أنه على الرغم من كونه رخيصًا وسهل الاستخدام ، إلا أنه ليس دقيقًا ولكنه يمكن أن يمنحك فكرة جيدة جدًا عن درجة حرارة نظامك سواء كان على ثنائي الفينيل متعدد الكلور أو مركب لتشغيل المحرك وما إلى ذلك …

تهدف هذه التعليمات إلى استخدام أقل قدر ممكن من المكونات ، ولكن إذا كنت ترغب في الحصول على أكثر النتائج دقة من هذه الفكرة ، فيمكنك إجراء بعض التغييرات:

1 - أضف بعض التضخمات ومراحل التصفية باستخدام op-Amps كما في هذا الرابط 2 - استخدم وحدة تحكم مرجعية تناظرية داخلية منخفضة مثل لوحات STM32F103C8 بجهد مرجع تناظري 3.3 فولت (انظر النقطة 4) 3 - استخدم المرجع التناظري الداخلي 1.1 فولت في اردوينو لكن اعلم أنه لا يمكنك توصيل أكثر من 1.1 فولت بأي من دبابيس اردوينو التناظرية.

يمكنك إضافة هذا السطر في وظيفة الإعداد:

تمثيلي المرجع (داخلي) ؛

4 - استخدم متحكمًا يحتوي على دقة عالية ADC مثل STM32F103C8 الذي يحتوي على دقة 12 بت ADC لذا باختصار ، يمكن أن يعطي هذا الإعداد المستند إلى اردوينو نظرة عامة لطيفة حول درجة حرارة نظامك ولكن ليس نتائج دقيقة جدًا (حوالي 4.88 مللي فولت / قراءة)

يمنحك إعداد STM32F103C8 نتيجة دقيقة جدًا نظرًا لأنه يحتوي على ADC أعلى 12 بت وقيمة مرجعية تناظرية أقل 3.3 فولت (حوالي 0.8 مللي فولت / قراءة)

حسنًا ، هذا كل شيء !!:د

موصى به: