🌡️ سنسور دما TMP36 / LM35 (TMP36 / LM35 Temperature Sensor)
| اسم انگلیسی | TMP36 / LM35 Temperature Sensor |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
سنسور دما TMP36 و LM35 (Analog Temperature Sensor) دو سنسور سهپایهی کوچک با بدنهی TO-92 هستند که شبیه ترانزیستورند و دما را به ولتاژ تبدیل میکنند: هر یک درجه، ده میلیولت. آردوینو این ولتاژ را با analogRead میخواند و با یک فرمول ساده به سانتیگراد میرساند. با آنها دماسنج دیجیتال، ترموستات فن، هشدار گرم شدن جعبهی برق یا ثبتکنندهی دمای اتاق میسازی. در تینکرکد فارسی همین قطعه در مود ساده TMP36 است و در مود آردوینو LM35، برای همین این صفحه هر دو را با هم پوشش میدهد.
سنسور دما در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد؛ یعنی نه TMP36 دارد و نه LM35. نزدیکترین قطعه wokwi-ntc-temperature-sensor است، ماژولی با سه پایهی GND، VCC و OUT. ولی حواست باشد که این یک ترمیستور NTC است، یعنی سنسور دیگری با رابطهی غیرخطی: هرچه گرمتر شود مقاومتش کمتر میشود و برای تبدیل عددش به دما باید از معادلهی بتا (Beta) استفاده کنی، نه از فرمول ده میلیولت بر درجه. اگر دمای دیجیتال هم کارت را راه میاندازد، سنسور DHT22 در ووکوی کامل وجود دارد.
برای امتحان خود TMP36 و LM35، تینکرکد فارسی این سنسور را رایگان شبیهسازی میکند: مدار آمادهی دماسنج را باز کن و عدد سریال مانیتور را ببین، یا درس دماسنج دیجیتال را برو.
سیمکشی با آردوینو
سمت تخت سنسور را رو به خودت بگیر و پایهها را رو به پایین؛ در هر دو سنسور ترتیب یکی است:
| پایهی قطعه | وصل به |
|---|---|
| پایهی چپ (+Vs) | 5V |
| پایهی وسط (Vout) | A0 |
| پایهی راست (GND) | GND |
| خازن ۱۰۰ نانوفاراد (اختیاری) | بین +Vs و GND، نزدیک خود سنسور |
تفاوت اصلی در نقطهی صفر است: TMP36 در صفر درجه ۵۰۰ میلیولت میدهد تا دمای زیر صفر را هم بخواند، ولی LM35 در صفر درجه صفر ولت میدهد. پس دمای TMP36 برابر است با «(ولتاژ منهای ۰٫۵) ضرب در ۱۰۰» و دمای LM35 برابر «ولتاژ ضرب در ۱۰۰».
کد نمونه
این برنامه برای هر دو سنسور کار میکند؛ فقط مقدار USE_TMP36 را عوض کن. بهجای یک خواندن، ۱۶ نمونه را میانگین میگیرد تا عدد کمتر بپرد. خروجی با قالب temp: چاپ میشود تا در نمودار سریال هم یک خط تمیز ببینی.
// TMP36 or LM35 on A0: averaged temperature in Celsius.
const bool USE_TMP36 = true; // false for an LM35
const int SENSOR_PIN = A0;
const int SAMPLES = 16;
float readCelsius() {
long sum = 0;
for (int i = 0; i < SAMPLES; i++) {
sum += analogRead(SENSOR_PIN);
delay(2);
}
float volts = (sum / (float)SAMPLES) * 5.0 / 1023.0;
if (USE_TMP36) return (volts - 0.5) * 100.0; // 0.5 V at 0 C
return volts * 100.0; // LM35: 0 V at 0 C
}
void setup() {
Serial.begin(9600);
}
void loop() {
float c = readCelsius();
Serial.print("temp:");
Serial.println(c, 1);
delay(1000);
}
اشتباههای رایج
- پایههای برعکس: اگر +Vs و GND جابهجا شوند، سنسور در چند ثانیه آنقدر داغ میشود که دست را میسوزاند. فوراً برق را قطع کن.
- فرمول اشتباه: فرمول TMP36 روی LM35 حدود ۵۰ درجه کمتر نشان میدهد و برعکس، ۵۰ درجه بیشتر. اول مطمئن شو سنسورت کدام است؛ اسمش روی سمت تخت چاپ شده.
- انتظار دمای زیر صفر از LM35: LM35 با این سیمکشی ساده فقط دمای بالای حدود ۲ درجه را درست میدهد. برای زیر صفر، TMP36 یا DHT22 بهتر است.
- عدد پرنوسان: ولتاژ ۵ ولت USB تمیز نیست و هر نوسانش مستقیم در دما دیده میشود. میانگینگیری کمک میکند؛ برای LM35 میتوانی با
analogReference(INTERNAL)مرجع ۱٫۱ ولتی بگیری و دقت را حدود چهار برابر کنی، به شرط اینکه در فرمول بهجای ۵٫۰ عدد ۱٫۱ بگذاری.
آموزشهای مرتبط
- سیستم اعلام حریق با آردوینو و سنسور TMP36
- سنسور دما و رطوبت DHT22 با آردوینو
- نمودار سریال برای دیدن تغییر دما
- ۴۰ مدار آردوینو برای ووکوی، از جمله دماسنج NTC
سؤالهای رایج
فرق TMP36 و LM35 چیست؟
هر دو ۱۰ میلیولت بر درجه میدهند، ولی TMP36 در صفر درجه ۰٫۵ ولت خروجی دارد و دمای زیر صفر را با تغذیهی ساده میخواند؛ LM35 در صفر درجه صفر ولت میدهد و فرمولش فقط ولتاژ ضرب در ۱۰۰ است.
آیا ووکوی سنسور LM35 یا TMP36 دارد؟
تا جایی که میدانیم نه. نزدیکترین قطعه wokwi-ntc-temperature-sensor است که یک ترمیستور NTC با فرمول متفاوت است. خود TMP36 و LM35 در تینکرکد فارسی رایگان شبیهسازی میشوند.
چرا سنسور دمایم داغ میشود؟
تقریباً همیشه یعنی پایههای تغذیه و زمین را برعکس وصل کردهای. فوراً برق را قطع کن، سمت تخت سنسور را رو به خودت بگیر و پایهی چپ را به 5V و راست را به GND ببر.