Ders 42: LM35 Sıcaklık Sensörü Kullanımı | Arduino Adım Adım Kurs
Bu derste, Arduino ile LM35 sıcaklık sensörünü kullanarak sıcaklığı Celsius, Fahrenheit ve Kelvin cinsinden nasıl ölçeceğimizi ve görüntüleyeceğimizi öğreneceğiz. Bu sensör, sıcaklıkla orantılı bir voltaj çıkışı sağlar ve Arduino programımızda verileri kolayca okumamıza ve işlememize olanak tanır. Bu eğitimin sonunda, projelerinizde sıcaklığa dayalı eylemler uygulayabileceksiniz.

LM35 sıcaklık sensörü üç pine sahiptir: soldaki pin güç kaynağı içindir, ortadaki pin sıcaklığa karşılık gelen voltajı çıkarır ve sağdaki pin toprak içindir. Sensör 4 ila 30 volt arasında bir voltaj aralığında çalışır ve santigrat derece başına 10 milivolt çıkış sağlar. Bu hassasiyet, çeşitli uygulamalarda doğru sıcaklık okumalarına olanak tanır.
Donanım Açıklaması
Bu projedeki ana bileşen LM35 sıcaklık sensörüdür. Santigrat derece cinsinden sıcaklıkla doğrusal olarak orantılı analog voltaj çıkışı sağlamak üzere tasarlanmıştır. Sensör, -55°C ile +150°C arasında geniş bir sıcaklık aralığı için uygundur ve farklı ortamlar için çok yönlüdür.
LM35 minimum güç gerektirir (60 mikroamper) ve geniş bir voltaj aralığında çalışır. Düşük çıkış empedansı, ek devre olmadan doğrudan Arduino'nun analog giriş pinlerine bağlanmasına olanak tanır. Tasarımdaki bu basitlik, LM35'i sıcaklık ölçüm görevleri için mükemmel bir seçim haline getirir.
Veri Sayfası Detayları
| Üretici | Texas Instruments |
|---|---|
| Parça numarası | LM35 |
| Mantık/G/Ç voltajı | 4–30 V |
| Çıkış akımı (kanal başına) | 1 mA maks |
| Sıcaklık aralığı | -55 ila +150 °C |
| Çıkış voltajı | 10 mV/°C |
| Doğruluk | ±0.5 °C (25 °C'de) |
| Paket | TO-92 |
- Doğru okumalar için 4V ile 30V arasında uygun güç kaynağı sağlayın.
- Çıkış voltajı sıcaklıkla doğrudan orantılıdır (10 mV/°C).
- Stabilizasyon için güç pininin yakınına dekuplaj kapasitörleri kullanın.
- Hasardan kaçınmak için bağlantılarda doğru polariteyi koruyun.
- Hataya neden olabilecek yüzen girişleri önlemek için iyi bağlantılar sağlayın.
Bağlantı Talimatları

LM35 sıcaklık sensörünü bağlamak için sol pini (VCC) Arduino'daki 5V çıkışına bağlayın. Ortadaki pin (Çıkış), sıcaklığı okumak için kullanacağımız analog giriş pinine A0 bağlanmalıdır. Son olarak, sağdaki pini (Toprak) Arduino'daki toprak pinlerinden birine bağlayın. Çalışma sırasında sorunları önlemek için tüm bağlantıların güvenli olduğundan emin olun.
Bağlantı yaparken, LM35'in 4V ile 30V arasında bir besleme voltajıyla çalıştırılabileceğini unutmayın, ancak Arduino uygulamaları için 5V kullanmak yeterlidir. Beklenmeyen sıcaklık okumaları görürseniz, bağlantıları tekrar kontrol edin ve sensörün doğru şekilde beslendiğinden emin olun.
Kod Örnekleri ve Açıklama
Arduino kodunda, LM35 çıkış voltajını okumak için analog giriş pinini inPin tanımlayıcısıyla tanımlarız ve bu A0 olarak ayarlanır. Ayrıca, sensörün santigrat derece başına çıkışını temsil etmek için LM35_FACTOR adlı bir sabiti 0.01 olarak tanımlarız.
const int inPin = A0; // değiştirilebilir
const float LM35_FACTOR = 0.01; // değiştirmeyin
Bu kurulum, sıcaklığı basit bir şekilde okumamızı sağlar. Ardından, seri monitöre sıcaklık verilerini çıkarmaya başlamak için setup() fonksiyonunda seri iletişimi başlatırız.
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
}
loop() fonksiyonu içinde sürekli olarak sıcaklığı okur ve farklı birimlerde yazdırırız. printTemperature() fonksiyonu, istenen sıcaklık formatını belirtmek için bir karakter parametresi alır ve sıcaklığı Celsius, Fahrenheit veya Kelvin cinsinden görüntülememize olanak tanır.
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000); // 1000ms bekle
}
Sıcaklığa dayalı bir eylem gerçekleştirmek için, getTemperature() fonksiyonunu kullanarak sıcaklığın belirli bir eşiği aşıp aşmadığını kontrol edebiliriz. Bu fonksiyon, belirtilen sayıda örnek üzerinden ortalama sıcaklığı hesaplar.
Daha fazla ayrıntı için, tam kod açıklaması için ilgili videoyu izleyin (videoda 10:15'te).
Gösterim / Beklentiler
LM35 sensörü doğru şekilde bağlandığında ve Arduino kodu yüklendiğinde, seri monitörde sıcaklığın Celsius, Fahrenheit ve Kelvin cinsinden görüntülendiğini görmelisiniz. Sensöre ısı uygularsanız, sıcaklık okumalarının buna göre arttığını gözlemlersiniz.
Yanlış bağlantıların, aşırı yüksek veya düşük değerler gibi düzensiz sıcaklık okumalarına yol açabileceğini unutmayın. Bu tür sorunlardan kaçınmak için sensörün doğru bağlandığından her zaman emin olun (videoda 12:30'da).
Video Zaman Damgaları
- 00:00 - LM35'e Giriş
- 02:30 - Bağlantı Talimatları
- 05:00 - Kod Açıklaması
- 10:15 - Sıcaklık Okumalarının Gösterimi
- 12:30 - Yaygın Sorunlar ve Sorun Giderme
++
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 42: Introduction to LM35
* 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
*
Please watch video instruction here https://youtu.be/DRIC4wDu878
This code is available at http://robojax.com/course1/?vid=lecture37
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* * 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:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
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);//Wait for 1000ms (change it if you want)
}
/*
* 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)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value,voltage,temperature;//define variables
int sensorValue;
float averageTemperature =0;
for(int i=0; i< iteration; i++)
{
sensorValue = analogRead(inPin);//read analog value
voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
temperature = voltage / LM35_FACTOR; //convert voltage to temperature
averageTemperature += temperature;//add
}
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 charact 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)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
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");
}
İhtiyacın olabileceğini düşünüyor
-
AmazonPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Kaynaklar ve referanslar
-
Veri SayfasıLM35 Datasheetti.com
Dosyalar📁
Dosya mevcut değil.