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

شرح الأجهزة
حساس درجة الحرارة LM35 هو جهاز دقيق يوفر خرج جهد تناظري يتناسب مع درجة الحرارة بالدرجة المئوية. يعمل الحساس في نطاق من -55°C إلى 150°C بدقة ±0.5°C. إن استهلاكه المنخفض للطاقة بمقدار 60 ميكروأمبير يجعله مناسبًا للأجهزة التي تعمل بالبطارية. مقاومة خرج LM35 منخفضة، مما يسمح له بتشغيل حمل بشكل فعال دون انخفاض كبير في الجهد، وهو أمر حاسم للحفاظ على قراءات دقيقة. غالبًا ما يكون الحساس مغلفًا في شكل TO-92، مما يسهل دمجه في مشاريع متنوعة.
تفاصيل ورقة البيانات
| المصنع | تكساس إنسترومنتس |
|---|---|
| رقم الجزء | LM35 |
| جهد المنطق/المدخلات والمخرجات | ٤-٣٠ فولت |
| التيار الناتج (تقريباً) | 60 ميكروأمпер |
| نطاق درجة الحرارة | -55 إلى 150 درجة مئوية |
| جهد الخرج | 10 مللي فولت/درجة مئوية |
| الدقة (نموذجي) | ±0.5 درجة مئوية (حتى 25 درجة مئوية) |
| حزمة | TO-92 |
- تأكد من توفير مصدر طاقة مناسب بين 4 فولت و30 فولت.
- كن حذرًا من القطبية المعكوسة على اتصالات الطاقة.
- استخدم توصيلة أرضية مستقرة لتجنب الضوضاء في القياسات.
- ابتعد عن مصادر الحرارة المباشرة للحفاظ على دقة القراءات.
- اعتبر استخدام فلتر تمرير منخفض إذا كنت تعاني من تقلبات في جهد الخرج.
تعليمات التوصيل

لربط مستشعر LM35، قم بتوصيل السلك الأيسر (VCC) بمصدر الطاقة 5V من الأردوينو. يجب توصيل السلك الأيمن (GND) بالأرض (GND) من الأردوينو. السلك الأوسط (الإخراج) هو المكان الذي ستقرأ فيه بيانات درجة الحرارة؛ قم بتوصيل هذا السلك برمز الإدخال التناظري.A0على الأردوينو. ستسمح هذه الإعدادات للأردوينو بقراءة جهد الخرج من LM35، والذي يتوافق مع درجة الحرارة.
إذا كنت بحاجة إلى تعديل الأسلاك لتكوينات مختلفة، تأكد من تحديث مرجع الدبوس التناظري في الكود ليتناسب مع إعدادك الجديد. (في الفيديو عند 03:15)
أمثلة الشفرة ودليل الاستخدام
توضح مقاطع الشيفرة التالية كيفية قراءة درجة الحرارة من LM35 وعرضها بوحدات مختلفة. أولاً، نقوم بتعريف الدبوس المدخل وعامل تحويل LM35:
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not changeفي هذه الشريحة،inPinيمثل الدبوس التناظري المتصل بمخرج LM35، وLM35_FACTORيعرف التحويل المطلوب لتحويل الجهد إلى درجة الحرارة بالسلزيوس.
بعد ذلك، نقوم بإعداد الاتصال التسلسلي:
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}هنا،Serial.begin(9600)يبدأ الاتصال التسلسلي بمعدل نقل 9600 بت في الثانية، مما يسمح لنا بإرسال واستقبال البيانات من وإلى المراقب التسلسلي.
تقوم دالة الحلقة بقراءة درجة الحرارة بشكل مستمر وطباعة ذلك:
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000);
}في هذه الحلقة، نستدعي الـprintTemperatureدالة لكل وحدة (مئوي، فهرنهايت، كيلفن) لعرض درجات الحرارة المعنية على شاشة السيريال.
عرض / ماذا تتوقع
عند توصيل LM35 بشكل صحيح، يجب أن ترى قراءات درجة الحرارة معروضة بالسيليزية والفهرنهايت والكلفن على الشاشة التسلسلية. مع تطبيق الحرارة على المستشعر، ستزداد القراءات وفقًا لذلك. إذا لاحظت أي قيم عشوائية أو غير منتظمة، تحقق من توصيلاتك بحثًا عن اتصالات غير محكمة أو تعيينات دبابيس غير صحيحة. (في الفيديو عند :00)
طوابع الفيديو
- 00:00- مقدمة
- 01:00- نظرة عامة على LM35
- 02:30- تعليمات الأسلاك
- ٠٣:١٥- شرح الكود
- 05:00- مظاهرة
/*
* This Arduino sketch is to use LM35 to measure temperature
* This code has two ways to get temperature
* 1-To print the temperature either in C, F or K on the serial monitor
* 2-To return the value in C, F and K
*
* Watch Video instruction for this code:https://youtu.be/S5IBc_epa1A
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
//robojax.com LM35 Code for Arduino
printTemperature('C');
Serial.println();
printTemperature('F');
Serial.println();
printTemperature('K');
Serial.println();
Serial.println();
// Serial.print(" Temperature: ");
// printDegree();
// Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
// do something here (watch video)
}
// Serial.println();
delay(1000);
}
/*
* getTemperature()
* @brief gets the average temperature
* @param average temperature
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
float getTemperature(char type)
{
float value;
float averageTemperature =0;
int sensorValue = analogRead(inPin);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage / LM35_FACTOR;
for(int i=0; i< iteration; i++)
{
averageTemperature += temperature;
}
averageTemperature /=iteration;
if(type =='F')
{
value = averageTemperature *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = averageTemperature + 273.15;//convert to Kelvin
}else{
value = averageTemperature;// return Celsius
}
return value ;
}//getTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param character type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature(char type)
{
float value;
float temp = getTemperature(type);
Serial.print(temp);
printDegree();
if(type =='F')
{
Serial.print("F");
}else if(type =='K')
{
Serial.print("K");
}else{
Serial.print("C");
}
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
الأشياء التي قد تحتاجها
-
أمازوناشترِ LM35 من أمازونamzn.to
-
إي باياشترِ LM35 من eBayebay.us
الموارد والمراجع
-
ورقة البياناتدليل بيانات LM35ti.com
ملفات📁
لا توجد ملفات متاحة.