Ocak 2018 Arduino Başlangıç (11) 7 Okunma Sayısı: 12451
Merhabalar arduino dostları. Bugün sizlerle birlikte Arduino UNO, I2C LCD ekran ve LM35 sensör kullanarak sıcaklık ölçme uygulaması yapacağız.Gerekli malzemeler:
Arduino UNO
Breadboard
16×2 I2C LCD Ekran
LM35
LM35 in bacak bağlantı şeması yukarıdaki gibidir.
LM35 i transistör ile karıştırmamak gerekiyor bunun için lütfen üzerinde LM35 yazısının olmasına dikka edelim. LM35 in , 2 numaralı bacağından sıcaklıkla doğru orantılı olacak şekilde LM35 bize 0 ile 1V arasında gerilim çıkışı vermektedir. Bildiğimiz gibi Arduino UNO’muzun analog girişleri, biz aksini belirtmediğimiz sürece 0-5V arasında voltaj değerleri vermektedir.
Eğer analog giriş aralığımızı 0-5V arasında bırakırsak, sensörümüz LM35 in hassasiyet kabiliyetinin %80’lik kısmı boşa gitmiş olacak. LM35 in bu kaybını engellemek için Arduino’muzun analog ölçümünü 0 ile 1,1V arasında yapacak şekilde Arduino UNO muzu ayarlamamız gerekiyor.
Öncelikle devremizi kuralım:
İ2c pinleri ——- Arduino pinleri
VCC 5 VOLT
GND GND
SCL SCL
SDA SDA
Kodumuz:
#include <LiquidCrystal_I2C.h>
int lm35Pin = A0;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.begin(16, 2);
analogReference(INTERNAL);
lcd.print("Sicaklik Olcumu:");
pinMode(10,OUTPUT);//Ledimiz için Arduino Uno nun 10 numaralı bacağını ÇIKIŞ olarak ayarlıyoruz.
pinMode(A0,INPUT);//Lm35 için Arduino nun A0 pinini GİRİŞ Olarak ayarlıyoruz.
}
void loop()
{
int sicaklikVolt = analogRead(lm35Pin);
float sicaklikC =sicaklikVolt / 9.31;
lcd.setCursor(0, 1);
lcd.print(sicaklikC);
lcd.setCursor(6,1);
lcd.print("\337C");
delay(100);
if(sicaklikC>25)
{
digitalWrite(10,HIGH);
}
else
{
digitalWrite(10,LOW);
}
}
I2C LCD kütüphanemizi indirmek için aşağıdaki linke tıklayarak I2C LCD kütüphanesini indirip Arduino derleyicinin Libraries klasörünin altın atmalısınız.
İ2C bağlantılı LCD ekranlar diğer ekranlara göre daha sade devreler oluşturmamızı sağlar.
ancak i2c LCD de bazen aşağıdaki sorunlarla kaşılaşabilirsiniz.Yukarıdaki kodu I2C LCD bağlı arduinoya bağladık ancak ekrana yazılar gelmedi ise aşağıdakileri sırasıyla deneyelim.
1-) i2c LCD de Ekran siyah koyu gözüküyor yazılar gözükmüyor ise; i2c LCD nin arka yüzünde i2c LCD nin ekran kontrastını ayarlayan trimpot var onu saatin tersi yönünde yavaş yavaş çeviriniz.
2-) i2c LCD de Ekran açık renk gözüküyor yazılar gözükmüyor ise; i2c LCD nin arka yüzünde i2c LCD nin ekran kontrastını ayarlayan trimpot var onu saat yönünde yavaş yavaş çeviriniz.
3-) Yukarıdakileri denediniz ancak yine yazılar gözükmüyor ise LiquidCrystal_I2C lcd(0x27, 16, 2); satıırındaki 0x27 değerini 0x3f olarak değiştirin yani yeni satır
LiquidCrystal_I2C lcd(0x3f, 16, 2); olmalı.
Arduino derleyicinin setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyordu. Bu sayede, Arduino UNO muzun analog girişten okuyacağımız 0-1023 arası değerlerin her bir basamağı 1,0742 mV (milivolt) gerilime denk düşüyor. LM35 sıcaklık sensörünün çıkış bacağında okuduğumuz her 10 mV, 1 °C sıcaklığa denk geldiğinden; 10 / 1,0742 bize yaklaşık olarak 9,31 değerini verir. Bu demek oluyor ki, Arduino UNO nun analog girişinden ölçtüğümüz değeri 9,31 ile çarptığımızda, elde ettiğimiz sonuç sensörün verdiği çıkış geriliminin santigrat cinsinden değerini elde ediyoruz.
lcd.setCursor(0,1) komutu,I2C LCD ekranımızın 1 numaralı satırının (ilk satır 0 olarak kabul edilir, yani 1 numaralı satır alt satır olmuş oluyor) 0’ıncı karakterine istediğimiz sonucu yazmamızı sağlıyor. Aynı şekilde ##.## şeklindeki sıcaklık değeri 5 karakter yer tuttuğu için bir karakter boşluk vererek 6’ıncı karaktere de santigrat derece sembolünü koyuyoruz (°C). Eğer sıcaklık ölçümü çok hızlı değişiyorsa, delay() komutunun alacağı parametre ile her bir ölçüm arasındaki süreyi arttırarak daha sabit bir değer elde edebiliriz.