یکی از سادهترین و ارزانترین راهها برای افزودن قابلیت اندازه گیری دما به پروژهتان، استفاده از سنسور دما LM35 است. این سنسورها نسبتاً دقیق هستند و نیازی به قطعات خارجی ندارند. بنابراین، تنها با چندین اتصال و یک کد آردوینو، قادر به اندازهگیری دما در کمترین زمان خواهید بود! پس در ادامه مقاله راه اندازی سنسور دما LM35 با آردوینو با ما همراه باشید.
سنسور دما LM35
LM35 یک سنسور دمای ولتاژ پایین ساخته شده توسط Texas Instruments است که میتواند دما را بر حسب درجه سانتیگراد اندازهگیری کند. خروجی این تراشه، سیگنال ولتاژی است که به طور خطی با دما (برحسب درجه سانتیگراد) تغییر میکند، بنابراین استفاده از آن با آردوینو بسیار آسان است.
سنسور دمای LM35 نسبتاً دقیق است، هرگز فرسوده نمیشود، در شرایط محیطی مختلف کار میکند و برای اندازهگیری دما به قطعات خارجی نیاز ندارد. علاوه براین، سنسور LM35 نیازی به کالیبراسیون ندارد و معمولاً با دقت 0.5± درجه سانتیگراد در دمای اتاق و 1± درجه سانتیگراد در محدوده دمایی 55- تا 155+ درجه سانتیگراد، دما را اندازه میگیرد.
ولتاژ تغذیه این سنسور 4 تا 30 ولت و جریان مصرفی آن هنگام تبدیل دما کمتر از 60 میکروآمپر است. همچنین خود گرمایی بسیار پایینی دارد (کمتر از 0.08 درجه سانتی گراد در هوای ساکن).
مشخصات کامل
ولتاژ تغذیه | 4 الی 30 ولت |
جریان مصرفی | 60 میکروآمپر |
محدوده دمای کاری | 55- الی 155+ درجه سانتی گراد |
دقت | ±0.5 درجه سانتی گراد |
ضریب مقیاس خروجی | 10 میلیولت بر درجه سانتیگراد |
خروجی در دمای 25 درجه سانتیگراد | 250 میلیولت |
برای کسب اطلاعات بیشتر در مورد سنسور LM35 به دیتاشیت آن مراجعه کنید.
تنها عیب سنسور LM35 این است که برای اندازهگیری دمای منفی به یک ولتاژ بایاس منفی نیاز دارد. بنابراین اگر قصد اندازهگیری دمای منفی را دارید، پیشنهاد میشود از سنسور دمای TMP36 استفاده کنید. TMP36 توسط دستگاههای آنالوگ نسبتاً دقیق است (40- تا 125درجه سانتیگراد) و این مزیت را دارد که دماهای منفی را بدون نیاز به ولتاژ بایاس منفی اندازهگیری کند.
یک جایگزین بهتر برای LM35 استفاده از سنسورهای دما دیجیتال مانند DS18B20 است که پکیج مشابهی دارند. سنسورهای دما دیجیتال نسبت به نویز مقاومت بیشتری دارند و زمانی که سنسور در فاصلهی دور یا در یک محیط پر سر و صدا قرار میگیرد، مفید خواهند بود.
اساس عملکرد سنسور LM35
برای راه اندازی سنسور دما LM35 با آردوینو UNO R3 یا هر مدل دیگری از آردوینو، ابتدا باید عملکرد این سنسور را بررسی کنیم. LM35 از تکنیک حالت جامد برای اندازهگیری دما استفاده میکند. براساس این واقعیت که افت ولتاژ بین بیس و امیتر (ولتاژ مستقیم – Vbe) ترانزیستور متصلشده به دیود، با ریت مشخصی با افزایش دما کاهش مییابد. با تقویت دقیق این تغییر ولتاژ، به راحتی میتوان یک سیگنال آنالوگ تولید کرد که به طور مستقیم با دما متناسب است.
رابطهی خطی بین ولتاژ مستقیم و دما دلیل استفاده از ترانزیستورهای متصلشده به دیود به عنوان دستگاههای اندازهگیری دما است. اساساً این روشِ اندازهگیری دما است، اگرچه در طول سالها پیشرفتهایی در این تکنیک حاصل شدهاست.
خبر خوب این است که تمام این محاسبات پیچیده درون LM35 انجام میشود و خروجی این سنسور ولتاژی است که به طور خطی با دما تغییر میکند.
نحوه اندازهگیری دما
راه اندازی سنسور دما LM35 با آردوینو آسان است. تنها کافی است پایه سمت چپ سنسور را به تغذیه (4 تا 30 ولت) و پایه سمت راست را به زمین (با فرض اینکه سمت صاف سنسور رو به شما باشد) متصل کنید. سپس پین میانی دارای یک ولتاژ آنالوگ خواهد بود که با دما برحسب درجه سانتیگراد متناسب است. این را میتوان به راحتی در نمودار مشخصهی ولتاژ خروجی نسبت به دما مشاهده کرد. توجه داشته باشید که ولتاژ خروجی آنالوگ مستقل از تغذیه است.
برای تبدیل ولتاژ به دما از فرمول زیر استفاده میشود:
دما (برحسب درجه سانتی گراد) = ولتاژ خروجی * 100
به عنوان مثال، اگر ولتاژ خروجی 0.5 ولت باشد، به این معناست که دما 0.5 * 100 = 50 درجه سانتیگراد است.
تست سنسور LM35
تست سنسور LM35 هم بسیار آسان است، پایه سمت چپ را به تغذیه 4 تا 30 ولت (چهار باتری AA بسیار مناسب است) و پایه سمت راست را به زمین (با فرض اینکه سمت صاف سنسور رو به شما باشد) وصل کنید. اکنون مولتیمتر خود را در مد ولتاژ DC قرار دهید و پایه میانی را به زمین متصل کنید. در دمای اتاق (25 درجه سانتیگراد)، ولتاژ باید حدود 0.25 ولت باشد.
اگر محفظه پلاستیکی سنسور را به آرامی فشار دهید، شاهد افزایش دما خواهید بود.
یا اگر یک تکه یخ را به سنسور نزدیک کنید (یخ را در یک کیسه پلاستیکی قرار دهید تا سنسور با آب تماس پیدا نکند)، کاهش دما را مشاهده خواهیدکرد.
پایههای سنسور LM35
LM35 به سه شکل مختلف عرضه میشود، اما رایجترین نوع آن پکیج سه پایه TO-92 است که دقیقاً شبیه یک ترانزیستور است. بیایید نگاهی به پایههای این سنسور بیندازیم.
پين VCC پایهی تغذیه سنسور که میتواند به 4 تا 30 ولت متصل شود.
پين Vo این پایه یک ولتاژ آنالوگ تولید میکند که با دما رابطهی مستقیم دارد و باید به پایه ورودی آنالوگ (ADC) متصل شود.
پين GND پایه زمین است.
اتصال سنسور دمای LM35 به یک آردوینو
اتصال LM35 به آردوینو بسیار ساده است. فقط کافی است باید سه پایه را به آن متصل کنید: دو پایه برای تغذیه و یک پایه برای خواندن مقدار سنسور.
این سنسور را میتوان با 5 ولت تغذیه کرد. ولتاژ مثبت به “Vs+” و زمین به “GND” متصل میشود. پایه میانی “Vout” خروجی سیگنال آنالوگ سنسور است و به پایه ورودی آنالوگ (A0) یک آردوینو متصل میگردد.
در شکل زیر نحوهی اتصالات نشان داده شدهاست:
برای اندازهگیری دمای هوا، سنسور را در هوای آزاد قرار دهید یا آن را به جسمی که میخواهید دمای آن را اندازهگیری کنید، مانند هیت سینک متصل کنید.
خواندن دادههای دمای آنالوگ
همانطورکه در شکل بالا مشاهده میکنید، خروجی LM35 به یکی از ورودیهای آنالوگ آردوینو متصل میشود. مقدار این ورودی آنالوگ با تابع ()analogRead قابل خواندن است.
با این حال، تابع ()analogRead ولتاژ خروجی سنسور را بر نمیگرداند. بلکه ولتاژ ورودی در بازهی ولتاژ 0 تا ولتاژ مرجع ADC (از لحاظ فنی ولتاژ کاری 5 یا 3.3 ولت است مگر اینکه آن را تغییر دهید) را به مقادیر صحیح 10 بیتی از 0 تا 1023 نگاشت میکند. برای تبدیل مجدد این مقدار به ولتاژ ، از فرمول زیر استفاده میشود:
ولتاژ خروجی = (5/1024) * (مقدار خوانده شده از ADC)
این فرمول عدد 0تا 1023 از ADC را به 0تا 5 ولت تبدیل میکند.
سپس برای تبدیل ولت به دما از فرمول زیر استفاده میشود:
دما (برحسب درجه سانتیگراد) = ولتاژ خروجی * 100
کد آردوینو – دماسنج ساده
برنامه زیر روشی سریع برای خواندن دمای اندازهگیری شده توسط سنسور LM35 را نشان میدهد و میتواند به عنوان برنامهی پایه برای اکثر آزمایشها و پروژههای عملی مورد استفاده قرارگیرد. این برنامه به سادگی با استفاده از پورت آنالوگ A0 مقادیر از LM35 خوانده و دمای فعلی (بر حسب درجه سانتیگراد و درجه فارنهایت) بر روی مانیتور سریال چاپ میشود. برنامه را برروی آردوینو خود آپلود کنید.
// Define the analog pin, the LM35's Vout pin is connected to
#define sensorPin A0
void setup() {
// Begin serial communication at 9600 baud rate
Serial.begin(9600);
}
void loop() {
// Get the voltage reading from the LM35
int reading = analogRead(sensorPin);
// Convert that reading into voltage
float voltage = reading * (5.0 / 1024.0);
// Convert the voltage into the temperature in Celsius
float temperatureC = voltage * 100;
// Print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.print("C | ");
// Print the temperature in Fahrenheit
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF);
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.println("F");
delay(1000); // wait a second between readings
}
سپس خروجی زیر را در مانیتور سریال خود مشاهده خواهید کرد.
توضیحات کد راه اندازی سنسور LM35 با آردوینو:
برنامه با تعریف پایهای از آردوینو که به پایهی ولتاژ خروجی سنسور(Vout) متصل است، شروع میشود.
#define sensorPin A0
در تابع setup ، اتصال سریال با کامپیوتر را مقداردهی میکنیم.
void setup() {
Serial.begin(9600);
}
در تابع loop، ابتدا سیگنال آنالوگ را با استفاده از تابع ()analogRead از سنسور LM35 میخوانیم.
int reading = analogRead(sensorPin);
سپس، از فرمولهایی که ذکر شد برای تبدیل مقدار آنالوگ خواندهشده به ولتاژ و سپس به دما استفاده خواهیم کرد.
float voltage = reading * (5.0 / 1024.0);
float temperatureC = voltage * 100;
سپس نتایج بر روی مانیتور سریال چاپ میشود.
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.print("C | ");
مقدار دمایی که بهدست میآید بر حسب درجه سانتیگراد است. با استفاده از فرمول سادهی زیر به فارنهایت (°F) تبدیل و بر روی مانیتور سریال چاپ میشود.
دما برحسب درجه فارنهایت = دما برحسب درجه سلسیوس * 9/5 + 32
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF);
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.println("F");
پروژه آردوینو – یک دماسنج مستقل با LM35 و LCD
گاهی اوقات ایدهای به ذهنتان میرسد که در آن میخواهید مقادیر دما را در زمان واقعی نمایش دهید و زمانی که دما خارج از محدوده مشخص شدهباشد هشداری نشان دادهشود. احتمالاً به جای مانیتور سریال به یک LCD کاراکتری 16×2 نیاز خواهید داشت.
در این مثال، ما LCD را به همراه LM35 به آردوینو متصل میکنیم.
همانطور که در شکل زیر مشاهده میکنید، اتصال LCD بسیار آسان است. اگر با LCD آشنایی ندارید، میتوانید مقاله آموزش راه اندازی LCD كاراكتری 2×16 با آردوینو را مطالعه کنید.
نحوهی اتصال LCD و سنسور به آردوینو در شکل زیر نشان داده شدهاست.
برنامه زیر مقادیر دما را روی LCD چاپ میکند. این کد مشابه مثال قبلی است، با این تفاوت که مقادیر روی LCD چاپ میشوند.
// Include the LiquidCrystal_I2C library
#include <LiquidCrystal_I2C.h>
// Create a new instance of the LiquidCrystal_I2C class
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// Define a custom degree character
byte Degree[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
// Define the analog pin, the LM35's Vout pin is connected to
#define sensorPin A0
void setup() {
// Start the LCD and turn on the backlight
lcd.init();
lcd.backlight();
// Create a custom character
lcd.createChar(0, Degree);
}
void loop() {
// Get the voltage reading from the LM35
int reading = analogRead(sensorPin);
// Convert that reading into voltage
// Replace 5.0 with 3.3, if you are using a 3.3V Arduino
float voltage = reading * (5.0 / 1024.0);
// Convert the voltage into the temperature in Celsius
float temperatureC = voltage * 100;
// Print the temperature on the LCD;
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(temperatureC, 1);
lcd.write(0); // print the custom degree character
lcd.print("C ");
// Print the temperature in Fahrenheit
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
lcd.print(temperatureF, 1);
lcd.write(0); // print the custom degree character
lcd.print("F ");
delay(1000); // wait a second between readings
}
سپس خروجی زیر را روی LCD خواهید دید:
حالا که با راه اندازی سنسور دما LM35 با آردوینو به طور کامل آشنا شدید، شروع به ساخت پروژه خود کنید و از آن در خانه، محل کار و هر مکان دیگری که مد نظرتان است استفاده کنید. برای یادگیری ساخت پروژههای بیشتر مقالات آکادمی روبوایکیو را مطالعه کنید. شما میتوانید سوالات و نظرات خود را در بخش دیدگاه برای ما ارسال کنید.
۲ دیدگاه. Leave new
با تشکر خیلی مفید واقع شد ولی کاش برنامه نویسیش رو در محیط خود آپ اردونیو مینوشتین بهتر بود 💗🌹
سلام و درود به شما،
خواهش میکنم، خوشحالیم که مفید بوده،
این کد، مختص محیط آردوینو نوشته شده و فقط کافیه شما اون رو کپی پیست کنی.