Merhaba arkadaşlar,
Mobilhanem.com için hazırladığımız Arduino derslerine Arduino Sıcaklık Sensörü ve Sıcaklık Ölçümü ile devam ediyoruz. Bu dersimizde LM35 sıcaklık sensörünü inceleyerek ortamın sıcaklık değerini nasıl ölçebileceğimizi inceleyeceğiz.
LM35 Sıcaklık Sensörü
Ortamın sıcaklığını ölçmeye yarayan LM35 sıcaklık sensörü analog çıkışlı bir sıcaklık sensörüdür. LM35 sıcaklık sensörü çıkış gerilimi sıcaklık ile doğru orantılı olarak değişir. Sıcaklık ölçüm aralığı -55 ile 150 derece arasında değişmektedir. 4-30 V arasında bir gerilim değeri ile beslendiğinde ve 60 mikro A’den az akım ile 0.5 derece hassasiyetle ölçüm yapabilmektedir. Her bir derece için çıkış değeri 10mV değişim gösterir. Sıcaklık sensöründe ölçüm yapılabilmesi için sensörün üzerinde yazıların bulunduğu tarafın sol kısmına güç hattı sağ kısmına da toprak hattı bağlanır. Orta kısımda bulunan bacak analog çıkış verdiği için Arduino kartı üzerinde bulunan analog giriş pinleri ile bağlantısı kurulur.
LM35 sıcaklık sensörü hakkında daha fazla bilgi almak için datasheet‘ine göz atabilirsiniz.
Arduino Sıcaklık Sensörü Kullanımı
Arduino ile birlikte LM35 sıcaklık sensörünün kullanabilmek için sensör üzerinde bulunan 3 bacağın örnek bağlantıları aşağıdaki şekildeki gibi olmalıdır.
Arduino Sıcaklık Sensörü Kodları
Arduino ile birlikte sıcaklık sensörünü kullanabilmek için devrenin şemasını gösterildiği gibi kurduktan sonra aşağıdaki kodları kullanarak sıcaklık ölçümü yapabilirsiniz. Gerekli açıklamaları kod satıraları arasında bulabilirsiniz.
// LM35 sıcaklık sensörü derece başına 10 mV çıkış verir. // 1000 mV = 1 V const int analogPin = A0; float gerilimDeger = 0; float sensorDeger = 0; float sicaklikDeger = 0; void setup() { // Seri port ekranını 9600 baund değerinde başlatıyoruz. Serial.begin(9600); } void loop() { // analogRead() fonksiyonu ile A0 pinindeki değeri okuyoruz. sensorDeger = analogRead(analogPin); Serial.print("Sensör Değeri: "); Serial.println(sensorDeger); // A0 pininden okunan değeri mV cinsinden gerilim değerine dönüştürüyoruz. gerilimDeger = (sensorDeger/1023)*5000; Serial.print("Gerilim Değeri: "); Serial.println(gerilimDeger); // Gerilim değerini sıcaklık değerine dönüştürüyoruz. sicaklikDeger = gerilimDeger / 10.0; Serial.print("Sıcaklık Değeri: "); Serial.println(sicaklikDeger); Serial.println("**********************************"); // Her döngüde bir saniye bekliyoruz. delay(1000); }
Ekran Çıktısı:
Matemetiksel İşlemlerin Açıklanması:
analogRead() fonksiyonu Analog pinlerden en düşük değer olarak 0(sıfır), en yüksek değer olarak 1023 değerini okuyabilir.
Analog pinlerden okunan
0 değeri = 0V
1023 değeri = 5V
eşittir.
Sıcaklık değerini hesaplayabilmek için öncelikle analogRead() fonksiyonu ile okunan değerin kaç mV değerine eşit olduğunu bulmamız gerekiyor.
0(sıfır) ile 1023 değeri arasında okunan sensör değerinin 0 ile 5000mV değeri arasındaki karşılığı nedir?(1v=1000mV)
gerilimDeger = (sensorDeger/1023)*5000;
sorusuna cevap olarak yukardaki kod satırını kullanarak gerilim değerini mV cinsinden hesapladık.
Bu dersimizde Arduino ile LM35 Sıcaklık Sensörü kullanarak nasıl sıcaklık ölçme işlemini gerçekleştirebileceğimizi anlatmaya çalıştım. Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki içeriğimizde Mobilhanem.com‘da görüşmek üzere.
Tüm Arduino Dersleri için tıklayınız..
281
TŞK
Rica ederim.
benimkinde sürekli sıcaklık değeri olarak 500 ölçüyor nedeni neyki
Öncelikle sensörden okuduğunuz değeri yazabilir misiniz?
Eğer sensörden okunan değerleri öğrenebilirsem hatayı nerde yaptığınızı daha iyi öğrenebilirim çünkü sensörden okunan değeri öncelikle gerilim değerine ardından sıcaklık değerine dönüştürüyoruz. Sensörden okunan değerleri matematiksel işlemlere tabi tutuyoruz belki matematiksel işlemlerde hata yapmış olabilirsiniz. Düşük bir ihtimal olarakta sensör bozuk olabilir.
bendede aynı sorun var
böyle değer veriyor ne yapama lazım lütfen yardımcı olun
Sensör Değeri: 549.00
Gerilim Değeri: 2683.28
Sıcaklık Değeri: 268.33
**********************************
Sensör Değeri: 342.00
Gerilim Değeri: 1671.55
Sıcaklık Değeri: 167.16
**********************************
Sensör değerinden sonraki işlemlerde hata yok projenin kodlarını atar mısınız?
bendeki sensörde sıcaklık degerini 500 civarında ölçüyor haliyle derecede 57 derece civarlarında geziyor neden kaynaklanabilir bu hata
Sıcaklık değerini 500 civarında ölçüyor derece 57 derece oluyor derken hangi değerleri kast ettiğinizi tam olarak anlamadım çünkü sıcaklık değeri derece cinsinden ifade edilir. Bu iki sonuç birbirininin aynısı olması gerekiyor.
Öncelikle sensörden okuduğunuz değeri yazabilir misiniz?
Eğer sensörden okunan değerleri öğrenebilirsem hatayı nerde yaptığınızı daha iyi öğrenebilirim çünkü sensörden okunan değeri öncelikle gerilim değerine ardından sıcaklık değerine dönüştürüyoruz. Sensörden okunan değerleri matematiksel işlemlere tabi tutuyoruz belki matematiksel işlemlerde hata yapmış olabilirsiniz. Düşük bir ihtimal olarakta sensör bozuk olabilir.
bendede aynı sorun var
böyle değer veriyor ne yapama lazım lütfen yardımcı olun
Sensör Değeri: 549.00
Gerilim Değeri: 2683.28
Sıcaklık Değeri: 268.33
**********************************
Sensör Değeri: 342.00
Gerilim Değeri: 1671.55
Sıcaklık Değeri: 167.16
**********************************
Aşağıdaki kodlarda sorun nedir ki A0 daki lm35 doğru çalışırken, A1 deki lm35 sıfır dönüyor sürekli ? şimdi den teşekkürler…
”
int h_sicaklik, s_sicaklik,h_sayac, s_sayac, h_ortalama,s_ortalama=0;
int h_kalibre=147;
int s_kalibre=150;
float h_okunan, s_okunan, h_vdeger, s_vdeger=0;
double sontime=0;
void setup()
{
analogReference(INTERNAL);
Serial.begin();
}
void loop ()
{
if (millis()-sontime>=100)
{
h_okunan+=analogRead(A0);
h_sayac++;
if (h_sayac>=10)
{
h_ortalama=h_okunan/10;
h_vdeger=h_ortalama/1023*5000;
h_sicaklik=h_kalibre-(h_vdeger/10);
h_okunan=0;
h_sayac=0;
}
s_okunan+=analogRead(A1);
s_sayac++;
if (s_sayac>=10)
{
s_ortalama=s_okunan/10;
s_vdeger=s_ortalama/1023*5000;
s_sicaklik=s_kalibre-(s_vdeger/10);
s_okunan=0;
s_sayac=0;
}
sontime=millis();
}
} “
Kodlarda bir sıkıntı yok zaten A0 pininde çalıştığını söylemişsiniz. Sizin kartınızda A1 pininde arıza olma ihtimali olabilir mi?
Bu LM35 in kararlılığı nasıldır? Her ölçümde çok fark var. 25 – 32 – 14- …. gibi . araya direnç , kondansatör falan koyarak stabil hale getirilemez mi. Mesela DHT11 sensorunda daha düzgün değerler görüyorum..
ESAT bey selamlar.
sıcaklık eksi(-) olduğuna dereceyi eksi olarak görebilecekmiyiz.
gösterdiği değerler hep aynı; “30.79, 30.30, 31.28, 31.77, 32.26, 30.30”. 30 dakika boyunca sadece bu değerlerin kendi aralarında sürekli değişmesini izledim. gerçeklik payı SIFIR.
harika yeni favorim sizsiniz
MERHABALAR;
BENİM DEĞERLER DE SÜREKLİ FARKLI OKUYOR, A0 PİNİNDEN A5E KADAR DENEDİM AMA SABİT BİR DEĞER ALAMADIM. SABİT DEĞİL DERKEN SAÇMA DEĞERLER ALIYORUM,
16:15:55.588 -> Sensör Değeri: 74.00
16:15:55.621 -> Gerilim Değeri: 361.68
16:15:55.656 -> Sıcaklık Değeri: 36.17
16:15:55.656 -> **********************************
16:15:56.649 -> Sensör Değeri: 39.00
16:15:56.649 -> Gerilim Değeri: 190.62
16:15:56.683 -> Sıcaklık Değeri: 19.06
16:15:56.718 -> **********************************
16:15:57.675 -> Sensör Değeri: 40.00
16:15:57.710 -> Gerilim Değeri: 195.50
16:15:57.745 -> Sıcaklık Değeri: 19.55
16:15:57.779 -> **********************************
16:15:58.736 -> Sensör Değeri: 45.00
16:15:58.770 -> Gerilim Değeri: 219.94
16:15:58.805 -> Sıcaklık Değeri: 21.99
16:15:58.805 -> **********************************
16:15:59.800 -> Sensör Değeri: 81.00
16:15:59.800 -> Gerilim Değeri: 395.89
16:15:59.835 -> Sıcaklık Değeri: 39.59
LM35 YENİ ALDIM AMA ARIZALI OLMA İHTİMALİ VAR MIDIR?
DAHASI DAHA GÜZEL BİR SORU,
AKLIMA YAZDIKTAN SONRA GELİP DENEME YAPTIM.
LM35’İ KABLO LEHİMLEYEREK UZATTIM, KARTIMDAN UZAK BİYERDE OLMASI GEREKİYOR ÇÜNKÜ. ŞİMDİ KABLOYU KESİP DİREK KARTA TAKTIĞIMDA DEĞERLER DAHA STABİL OLDU. LM35E EKLENEN KABLO DİRENCİ BU KADAR ETKİLER Mİ DEĞERLERİ? YADA UZATMA İÇİN NE YAPMAM LAZIM, İLLA DİREK KART SOKETİNE Mİ TAKMALIYIM?
Hem bağlantı çok kolay, hem de çalışıyor. Çok teşekkürler!
Bu arada benimkinde şu sonuçlar çıkıyor;
Sensör Değeri: 48.00
Gerilim Değeri: 234.60
Sıcaklık Değeri: 23.46
**********************************
Sensör Değeri: 54.00
Gerilim Değeri: 263.93
Sıcaklık Değeri: 26.39
**********************************
Sensör Değeri: 43.00
Gerilim Değeri: 210.17
Sıcaklık Değeri: 21.02
**********************************
Sensör Değeri: 59.00
Gerilim Değeri: 288.37
Sıcaklık Değeri: 28.84
**********************************
Sensör Değeri: 41.00
Gerilim Değeri: 200.39
Sıcaklık Değeri: 20.04
**********************************
Sensör Değeri: 60.00
Gerilim Değeri: 293.26
Sıcaklık Değeri: 29.33
**********************************
Sensör Değeri: 40.00
Gerilim Değeri: 195.50
Sıcaklık Değeri: 19.55
**********************************
Sensör Değeri: 60.00
Gerilim Değeri: 293.26
Sıcaklık Değeri: 29.33
**********************************
Arada hafif değişmeler oluyor o da abartılacak şeyler değil, büyük farklar varsa sensör bozuk olabilir veya bağlantı hatası olabilir.
Merhaba
Bende değeler bu şekilde çıkıyor nedeni ne olabilir
**********************************
Sensör Değeri: 575.00
Gerilim Değeri: 2810.36
Sıcaklık Değeri: 281.04
**********************************
Sensör Değeri: 575.00
Gerilim Değeri: 2810.36
Sıcaklık Değeri: 281.04
**********************************
Sensör Değeri: 576.00
Gerilim Değeri: 2815.25
Sıcaklık Değeri: 281.52
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Hangi Analog pine bağlarsam bağlıyayım bu değeri veriyor. Farklı sitelerden aldığım kod ve şemaları uygulayınca da sıcaklığı 200’ün üstünde gösteriyor. Sizce LM35 bozuk olabilir mi ?(bence bozuk)
Sizce direnç ve lehimli kablo kullanmam gerekiyor mu? Aldığım değerler aşağıdaki gibi 0 ile 40 derece arsında dans ediyor.
Teşekkürler,
Sensör Değeri: 48.00
Gerilim Değeri: 234.60
Sıcaklık Değeri: 23.46
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 42.00
Gerilim Değeri: 177.30
Sıcaklık Değeri: 41.46
bende önce tüm değerleri 0 veriyo sonra en alttaki sıcaklık değerini 40 veriyor ama burası 40 derece değil ve bunu tekrar ediyor şöyle:
Sensör Değeri: 84.00
Gerilim Değeri: 410.56
Sıcaklık Değeri: 41.06
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 85.00
Gerilim Değeri: 415.44
Sıcaklık Değeri: 41.54
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 84.00
Gerilim Değeri: 410.56
Sıcaklık Değeri: 41.06
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 84.00
Gerilim Değeri: 410.56
Sıcaklık Değeri: 41.06
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 3.00
Gerilim Değeri: 14.66
Sıcaklık Değeri: 1.47
**********************************
Sensör Değeri: 74.00
Gerilim Değeri: 361.68
Sıcaklık Değeri: 36.17
**********************************
Sensör Değeri: 0.00
Gerilim Değeri: 0.00
Sıcaklık Değeri: 0.00
**********************************
Sensör Değeri: 84.00