Yarı iletken bir yapıya sahip olan LM35 ısı sensörüdür. Hassas ve küçük değerli sıcaklık ölçümleri için ideal bir sensördür.
Bu sensör -55 derece ile 150 derece arasında çalışabilir. Bir derece değişim çıkış voltajını 10 mV değiştirir. 4 ile 20 V arasında giriş voltajı uygulanabilen sensör, 0.5 derece hassasiyete sahiptir.
Örneğin: Sensör çıkışı 328mV ise elde edilen sıcaklık 32.8’C dir.
Arduino’nun analog pinlerinden sensör çıkışı okunur. Bit seviyesine göre okunan değerle bölünür ve 500 ile çarpılarak sıcaklık değeri elde edilmiş olur.
Devremiz Aşağıdaki gibi tasarlanmıştır. A0 analog pininden sensör gerilimi okunup dönüştürme formülü ile serial portdan gönderilecek ve 2×16 LCD de sıcaklık olarak gösterilecektir.
Yazılım;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <LiquidCrystal.h> LiquidCrystal lcd(11, 10, 9, 8, 7, 6); float sicaklik; float hamdeger; void setup() { Serial.begin(9600); lcd.begin(16, 2); } void loop() { hamdeger = analogRead(A0); sicaklik = (hamdeger / 1023) * 500; lcd.print("Sicaklik: "); lcd.print(sicaklik); Serial.println(sicaklik); delay(500); lcd.clear(); } |
Yazılımımız da sicaklik ve gerilim adlı float türünde değişken tanımladık.
1 |
hamdeger = analogRead(A0); |
hamdeger değişkenimize A0 analog pininden gelen analogdan dijitale çevrilmiş olan değeri atadık. Sıcaklık örneğimiz 20 derece olsun dolayısıyla sensör çıkışı 200mv olmaktadır. Ancak Arduino veriyi işlemek için ADC dönüşüm yaptığı zaman değer (0.200*1023)*/5 = 40.92~=41 olarak okudu.
1 |
gerilim = (hamdeger / 1023) * 500; |
komutu ile hamdeger değişkenini 1023e böldük ve 500 ile çarparak sıcaklık değerimizi elde etmiş olduk. (41 / 1023) * 500 = 20.39
1 2 3 |
lcd.print("Sicaklik: "); lcd.print(sicaklik); Serial.println(sicaklik); |
LCD de ilk satıra “Sicaklik: ” yazdık. Yazının sonuna da sıcaklığın atandığı sicaklik değişkenini yazarak ekranda Sicaklik: 20.39 şeklinde sonuç almış olduk.
Aynı zamanda sicaklik değişkenini serialden göndererek görmüş olduk.
ISIS de devreyi simule ettiğimiz zaman;