Kod Ara

Ders 42: LM35 Sıcaklık Sensörü Kullanımı | Arduino Adım Adım Kurs

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_pinout

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_basic_wiring_bb

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

Görseller

LM35_basic_project
LM35_basic_project
LM35_basic_wiring_bb
LM35_basic_wiring_bb
LM35_pinout
LM35_pinout
503-Lesson 42: Using an LM35 Temperature Sensor with Arduino
Dil: C++
++
/*
 * 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

Kaynaklar ve referanslar

Dosyalar📁

Dosya mevcut değil.