19 Ekim 2026 Pazartesi


Programlama Kodları

//AÇIKLAMA
//Referans voltaj olarak Arduino'nun dahili referans voltajı olan 1.1V'u kullandık.
//analogReference(DEFAULT): Bu komut Arduino Uno'da Referans voltajını dahili 5V yapar.Bu komut
//                          hiç kullanılmadığında da varsayılan referans voltajı yine dahili 5V'tur.
//analogReference(INTERNAL): Bu komut Arduino Uno'da Referans voltajını dahili 1.1V yapar.

int okunan_deger;
float voltaj, sicaklik;
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL);
}

void loop()
{
  okunan_deger = analogRead(A0);
  voltaj = okunan_deger * (1.1 / 1023.0);
  sicaklik = (voltaj - 0.5) / 0.01;
  Serial.print("Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.print(" derece ");
  Serial.print("\xC2\xB0"); //Santigratın üzerindeki küçük yuvarlağı çıkarır.
  Serial.println("C");
  delay(1000);
}



Devre Şeması




Seri Port Ekran Görüntüleri






Programlama Kodları

//AÇIKLAMA
//Referans voltaj olarak Arduino'nun dahili referans voltajı olan 5V'u kullandık.
//analogReference(DEFAULT): Bu komut Arduino Uno'da Referans voltajını dahili 5V yapar.Bu komut
//                          hiç kullanılmadığında da varsayılan referans voltajı yine dahili 5V'tur.
//analogReference(INTERNAL): Bu komut Arduino Uno'da Referans voltajını dahili 1.1V yapar.

int okunan_deger;
float voltaj, sicaklik;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  okunan_deger = analogRead(A0);
  voltaj = okunan_deger * (5.0 / 1023.0);
  sicaklik = (voltaj - 0.5) / 0.01;
  Serial.print("Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.print(" derece ");
  Serial.print("\xC2\xB0"); //Santigratın üzerindeki küçük yuvarlağı çıkarır.
  Serial.println("C");
  delay(1000);
}



Devre Şeması




Seri Port Ekran Görüntüleri





TMP36 Sıcaklık Sensörü


TMP36, Analog Devices tarafından üretilen düşük voltajlı, hassas bir santigrat sıcaklık sensörüdür. Santigrat °C cinsinden sıcaklığa doğrusal orantılı bir voltaj çıkışı sağlar. TMP36 sıcaklık sensörü oldukça hassastır. Asla aşınmaz. Birçok çevre koşulunda çalışır ve çalışması için harici bir bileşene ihtiyaç duymaz. Ayrıca, TMP36 sensörü kalibrasyon gerektirmez. +25°C'de ±1°C ve -40°C ile +125°C arasında ±2°C'lik bir doğruluk sağlar.

Sensör, 2,7 V ile 5,5 V güç kaynağıyla çalıştırılabilir ve aktif sıcaklık dönüşümleri sırasında yalnızca 50 µA tüketerek çok düşük bir kendi kendine ısınma sağlar (durgun havada 0,1°C'den az). Ayrıca, besleme akımını 0,5 µA'nın altına düşürmek için bir kapatma fonksiyonu da mevcuttur.

TMP36'nın çıkış ölçek faktörü 10 mV/°C'dir. Yani analog çıkış, sıcaklıktaki her 1°C'lik artış için 10 mV artar. Vout aralığı -40°C'de 0,1 V ve +125°C'de 1,75 V’tur. Oda sıcaklığında (25°C) ise Vout 0,75V'dur. 



Voltaj-Sıcaklık Grafiği





TMP Serisi Sıcaklık Sensörlerinin Karakteristik Değerleri


TMP Sıcaklık Sensörü

Sıcaklık Aralığı

Ölçek Faktörü

TMP35

10°C ≤ TA ≤ 125°C

10 mV/°C

TMP36

−40°C ≤ TA ≤ +125°C

10 mV/°C

TMP37

5°C ≤ TA ≤ 85°C

20 mV/°C



TMP36 Sıcaklık Sensörünün Çalışma Prensibi

Hemen hemen her silikon diyot sıcaklık ölçüm dönüştürücüsü olarak kullanılabilir. Standart bir gerçek diyot yerine diyot bağlantılı bir bipolar transistör (BJT) önerilir. Bunun nedeni, BJT'lerin tutarlı sıcaklık katsayısına sahip olması ve bu sayede sıcaklık üzerindeki hataların daha düşük olmasıdır. Transistör diyot bağlantılı olduğundan, kollektör-emitör gerilimi, baz-emitör gerilimiyle aynıdır. Bu gerilim, diyotun ileri gerilimi olarak kabul edilir. İleri gerilim, diyot uyarımı için yeterli akım kaynağı olduğunda mevcuttur. 

TMP36, diyot bağlantılı transistörün baz ve emitör arasındaki voltaj düşüşünün (ileri voltaj – VBE ) sıcaklık arttıkça bilinen bir oranda azaldığı gerçeğinden yararlanır. Bu voltaj değişimini hassas bir şekilde artırarak, sıcaklıkla doğru orantılı bir analog sinyal üretmek kolaydır. İleri gerilim ve sıcaklık arasındaki bu doğrusal ilişki, diyot bağlantılı transistörlerin sıcaklık ölçüm cihazı olarak kullanılmasının nedenidir. Esasen sıcaklık bu şekilde ölçülür.



TPM36 Sıcaklık Sensörünün Arduino İle Kullanımı




Sensörünün Vout pinini Arduino'daki A0 pinine veya herhangi bir analog giriş pinine bağlayabilirsiniz. Sensörün kararlılığını artırmak için, veri sayfasında +Vs pini ile GND arasına 0,1μF seramik kapasitör eklenmesi öneriliyor. Uzun kablolar kullanıyorsanız, sinyal hattına (Vout) seri olarak küçük bir direnç (örneğin 750 Ω) eklemek de gürültüyü azaltabilir.


TMP36 Sıcaklık Sensörü Nasıl Okunur?

TMP36'ya güç verdiğinizde, Vout pini hemen analog bir voltaj sinyali göndermeye başlar. Bu voltaj, sıcaklıkla orantılı (doğrusal) olarak değişir. Sıcaklıktaki her 1°C'lik artışta voltaj 10 milivolt (mV) veya 0,01 volt (V) artar. Örneğin, sensör -40°C'de 100mV ve +125°C'de 1750mV çıkış verir. Oda sıcaklığında (25°C) ise Vout 750mV'dur.

Arduino’da analogRead() komutu ile analog voltajı okuyabiliriz. Fakat bu fonksiyon bize gerçek voltajı doğrudan vermez. Voltajın karşılık geldiği dijital değeri verir. Arduino'da 10 bitlik bir Analog-Dijital Dönüştürücü (ADC) bulunur. Bu dönüştürücü, 0 ile ADC referans voltajı arasındaki giriş voltajlarını, 0 ile 1023 arasında tam sayı değerlerine dönüştürür. Bu, toplamda 1024 farklı olası değer anlamına gelir. İşte analogRead() komutu bize bu 0-1023 arasındaki dijital değerleri verir.





Arduino Uno’da referans voltajını yapılandırmadığımızda varsayılan olarak 5V’tur. Referans voltajı 5V ise; 5000mV / 1023 = 4,88 mV. Her bir dijital değerin karşılığı 4,88 mV’tur. Buna çözünürlük voltajımız 4,88 mV diyebiliriz. analogRead() komutu; 0V’da 0 değerini,  4,88mV’da 1 değerini,  9,76mV’da 2 değerini okur.

analogRead() komutu ile elde ettiğiniz sayıyı gerçek voltaja dönüştürmek için şu formülü kullanabilirsiniz: 

  • Vout = (analogOkuma değeri) × (ADC referans voltajı / 1023)

Voltajı elde ettiğimize göre artık bunu sıcaklığa dönüştürebiliriz. TMP36'nın 500 mV ofseti olduğundan çıkış voltajından(Vout) 500mV(veya 0,5V) çıkarıyoruz. Bu ofset, sensöre negatif sıcaklıkları okuma yeteneği kazandırır. Ardından, TMP36 her santigrat derece için 10 mV (veya 0,01 V) ürettiğinden sıcaklığı hesaplamak için çıkan sonucu 10mV(veya 0,01 V)’a bölmeniz gerekir:

  • Sıcaklık (°C) = [Vout(mV) - 500(mV)] / 10(mV)







Vout=100 x 4,88 = 488 mV, Sıcaklık=[488-500] / 10 = -1,2 ⁰С.

Vout=101 x 4,88 = 492,88 mV, Sıcaklık=[492,88-500] / 10 = -0,71 ⁰С.

Vout=102 x 4,88 = 497,76 mV, Sıcaklık=[497,76 -500] / 10 =  -0,22⁰С.

Vout=103 x 4,88 = 502,64 mV, Sıcaklık=[502,64 -500]  / 10 = 0,26 ⁰С.

Vout=104 x 4,88 = 507,52 mV, Sıcaklık=[507,52-500]  / 10 =  0,75⁰С.

olur.

Sıcaklığı bu şekilde bulabiliriz. Fakat burada dikkat edilmesi gereken birkaç nokta vardır: Referans voltajını 5V olarak aldığımız zaman analogRead() komutu 4,88mV’un tam katlarında bir değer okur. Yani 4,88mV’da, 9,76mV’da, 14,64mV’da, 19,52mV’da……… gibi ama TMP36’nın çıkışı, sıcaklık her 1°C arttığında 10mV artar. 4,88mV’lik artışlarla 10mV’luk artışlar kolay kolay aynı katta birleşmez. Bu nedenle 10mV’un tam katlarında okuma yapamayabiliriz. Bu durumdan dolayı hesaplanan sıcaklık değeri çoğu zaman gerçek sıcaklık değerine yakın, virgüllü değer çıkar. Bunun önüne geçmek için referans voltajını 1,1V ya da 3,3V yapabiliriz. Referans voltajını 1,1V yaparsak yeni çözünürlük değerimiz 1100mV / 1023 = ~ 1mV olur. Yani her bir dijital değerin karşılığı 1mV olur. Daha küçük değerlerde, dolayısıyla daha sık okuma yapacağımız için çözünürlüğü artırmış oluruz. Bu durumda 10mV’un tam katlarında voltaj değeri okuyabilir ve gerçek sıcaklık değerlerine daha yakın sıcaklık değerleri okuyabiliriz.

Referans voltajını 1,1V yaptığımızda gerçeğe daha yakın değerler okuyabiliriz ama bu seferde TMP36’nin yüksek sıcaklıklardaki çıkış voltajlarını okuyamayız. Çünkü referans voltajı 1100mV’tur. Oysaki TMP36 maximum 125°C’de 1750mV çıkış verir. 3,3V ya da farklı referans voltajları kullanabiliriz. Oda sıcaklığında uygulama yapacağımız için referans voltajını 1,1V ve 5V olarak alarak farklı Arduino uygulamaları yaptık.






Vout=480 x 1 = 480 mV, Sıcaklık=[480-500] / 10 = -2 ⁰С.

Vout=490 x 1 = 490 mV, Sıcaklık=[490-500] / 10 =  -1⁰С.

Vout=500 x 1 = 500 mV, Sıcaklık=[500 -500] / 10 =  0⁰С.

Vout=510 x 1 = 510 mV, Sıcaklık=[510 -500]  / 10 =  1⁰С.

Vout=520 x 1 = 520 mV, Sıcaklık=[520-500]  / 10 =  2⁰С.

olur.


Yapılan uygulamalarda TMP36’yı uzun kablo ile Arduino’ya bağladığımızda aynı ortamda ardı ardına yapılan ölçümlerde ±1-2 derece farklılıklar olduğu gözlemlendi. Aynı ortamda sürekli olarak aynı sıcaklık değerini vermedi. Fakat kısa kablo ile yapılan ölçümlerde daha stabil değerler ölçüldü.









Programlama Kodları

//AÇIKLAMA
//Referans voltaj olarak Arduino'nun dahili referans voltajı olan 1.1V'u kullandık.
//analogReference(DEFAULT): Bu komut Arduino Uno'da Referans voltajını dahili 5V yapar.Bu komut
//                          hiç kullanılmadığında da varsayılan referans voltajı yine dahili 5V'tur.
//analogReference(INTERNAL): Bu komut Arduino Uno'da Referans voltajını dahili 1.1V yapar.

int okunan_deger;
float voltaj, sicaklik;
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL);
}

void loop()
{
  okunan_deger = analogRead(A0);
  voltaj = okunan_deger * (1.1 / 1023.0);
  sicaklik = voltaj / 0.01;
  Serial.print("Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.print(" derece "); 
  Serial.print("\xC2\xB0"); //Santigratın üzerindeki küçük yuvarlağı çıkarır.
  Serial.println("C");
  delay(1000);
}



Devre Şeması




Seri Port Ekran Görüntüsü





Programlama Kodları

//AÇIKLAMA
//Referans voltaj olarak Arduino'nun dahili referans voltajı olan 5V'u kullandık.
//analogReference(DEFAULT): Bu komut Arduino Uno'da Referans voltajını dahili 5V yapar.Bu komut
//                          hiç kullanılmadığında da varsayılan referans voltajı yine dahili 5V'tur.
//analogReference(INTERNAL): Bu komut Arduino Uno'da Referans voltajını dahili 1.1V yapar.

int okunan_deger;
float voltaj, sicaklik;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  okunan_deger = analogRead(A0);
  voltaj = okunan_deger * (5.0 / 1023.0);
  sicaklik = voltaj / 0.01;
  Serial.print("Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.print(" derece "); 
  Serial.print("\xC2\xB0"); //Santigratın üzerindeki küçük yuvarlağı çıkarır.
  Serial.println("C");
  delay(1000);
}



Devre Şeması




Seri Port Ekran Görüntüsü




LM35 Serisi Sıcaklık Sensörü


LM35 serisi sıcaklık sensörü, Texas Instruments'ın düşük voltajlı, yüksek hassasiyetli bir sıcaklık sensörüdür. LM35, santigrat derece cinsinden sıcaklık ile doğru orantılı olarak değişen bir analog voltaj çıkışı verir. Analog çıkış, sıcaklıktaki her 1°C'lik artış için 10 mV artar. Örneğin; oda sıcaklığı 18 °C ise çıkış 180 mV olur. Analog çıkış verdiği için Arduino kartı üzerinde bulunan analog giriş pinleri ile kullanılabilir ve kalibrasyon gerektirmez.

LM35 serisi sıcaklık sensörü, 4 ila 30 volt arasında değişen bir güç kaynağıyla beslenir ve 60 µA'den az akım tüketir. Bu son derece düşük güç tüketimi, çalışırken neredeyse hiç ısınmadığı anlamına gelir (durgun havada 0,08°C'den az). Kendi kendine ısınma özelliğinin düşük olması önemlidir. Çünkü sensör, kendi kendine çok ısınırsa, sıcaklık okumalarını bozar ve doğruluğu azaltır. LM35 serisi sıcaklık sensörü etkileyici bir doğruluk oranına sahiptir. Oda sıcaklığında (25°C) tipik olarak ±0,5°C hassasiyete sahiptir. -55°C ile 150°C arasındaki tam çalışma aralığında ise ±1°C hassasiyeti vardır.  



Voltaj-Sıcaklık Grafiği




LM35 serisi sıcaklık sensörünün dezavantajı, negatif sıcaklıkları ölçmek için LM35’e negatif bir ön gerilim voltajı vermek gerekir. Bu da devrenizi daha karmaşık hale getirir. Temel Santigrat ve Tam Aralıklı Santigrat Sıcaklık ile ilgili durumlar aşağıdaki şemada gösterilmiştir. 






Negatif sıcaklıkları daha kolay yoldan ölçmek istiyorsanız, Analog Devices'ın TMP36 sensörü daha iyi bir seçim olabilir. Herhangi bir özel kurulum gerektirmeden -40°C ile +125°C arasındaki sıcaklıkları ölçebilir.



LM35 Serisi Sıcaklık Sensörü Çeşitleri

LM35 serisi sıcaklık sensörünün çok farklı çeşitleri vardır. Bu çeşitlere göre de farklı sıcaklık aralıkları vardır. Bunlardan bazıları ve sıcaklık değerleri aşağıdaki tabloda yer almaktadır:


LM35 Serisi

Sıcaklık Aralığı

LM35 and LM35A

−55°C ≤ TJ ≤ 150°C

LM35C and LM35CA

−40°C ≤ TJ ≤ 110°C

LM35D

0°C ≤ TJ ≤ 100°C

LM35DZ

−55°C ≤ TJ ≤ 150°C



Biz uygulamalarımızda sıcaklık aralığı −55°C ≤ TJ ≤ 150°C olan LM35DZ sıcaklık sensörünü kullanacağız. 






LM35'in Çalışma Prensibi


LM35, bir tür Silikon Bant Aralığı Sıcaklık Sensörüdür. Sıcaklık değiştiğinde silikon diyotun ileri voltajının öngörülebilir bir şekilde değişmesi esasına dayanarak çalışır. LM35, basit bir diyot kullanmak yerine, esasen bir diyot gibi davranacak şekilde kablolanmış ancak daha iyi performans gösteren bir transistör olan diyot bağlantılı bir transistör kullanır. Sıcaklık arttıkça, transistörün baz ve emitör uçları arasındaki voltaj (VBE) azalır. Bu ilişki oldukça doğrusaldır. Yani sıcaklık arttıkça voltaj sabit bir oranda düşer. LM35 sensörü bu küçük voltaj değişimlerini algılar, işler ve sıcaklıkla doğrusal orantılı bir çıkış sinyali üretir ve yükselterek çıkışa verir.

LM35 sıcaklık sensörünün yanında LM335 ve LM34 sensörleri de vardır. Benzer şekilde, LM335, sıcaklıktaki her Kelvin derecelik artış için 10 mV, LM34 ise sıcaklıktaki her Fahrenheit derecelik artış için 10 mV çıkış verir.


Sıcaklık Sensörü

Çıkış Voltajı

Doğrusallık

LM35 (LM35DZ)

Santigrat (ºC) cinsinden sıcaklığa orantılı

10mV/ºC

LM335

Kelvin (ºK) cinsinden sıcaklığa orantılı

10mV/ºK

LM34

Fahrenheit (ºF) cinsinden sıcaklığa orantılı

10mV/ºF


LM35 Datasheet: https://www.ti.com/lit/ds/symlink/lm35.pdf




LM35DZ Sıcaklık Sensörünün Arduino İle Kullanımı





LM35DZ sıcaklık sensörünün Vout pinini Arduino'daki A0 pinine veya herhangi bir analog giriş pinine bağlayabilirsiniz.


LM35DZ Sıcaklık Sensörü Nasıl Okunur?

LM35'e güç verdiğinizde, Vout pini hemen analog bir voltaj sinyali göndermeye başlar. Bu voltaj, sıcaklıkla orantılı (doğrusal) olarak değişir. Sıcaklıktaki her 1°C'lik artışta voltaj 10 milivolt (mV) veya 0,01 volt (V) artar. Örneğin, sensör 0°C'de 0V, 25°C'de 0,25V ve 100°C'de 1,00V çıkış verir.

Arduino’da analogRead() komutu ile analog voltajı okuyabiliriz. Fakat bu fonksiyon bize gerçek voltajı doğrudan vermez. Voltajın karşılık geldiği dijital değeri verir. Arduino'da 10 bitlik bir Analog-Dijital Dönüştürücü (ADC) bulunur. Bu dönüştürücü, 0 ile ADC referans voltajı arasındaki giriş voltajlarını, 0 ile 1023 arasında tam sayı değerlerine dönüştürür. Bu, toplamda 1024 farklı olası değer anlamına gelir. İşte analogRead() komutu bize bu 0-1023 arasındaki dijital değerleri verir.







Arduino Uno’da referans voltajını yapılandırmadığımızda varsayılan olarak 5V’tur. Referans voltajı 5V ise; 5000mV / 1023 = 4,88 mV. Her bir dijital değerin karşılığı 4,88 mV’tur. Buna çözünürlük voltajımız 4,88 mV diyebiliriz.  analogRead() komutu; 0V’da 0 değerini,  4,88mV’da 1 değerini,  9,76mV’da 2 değerini okur. 

analogRead() komutu ile elde ettiğiniz sayıyı gerçek voltaja dönüştürmek için şu formülü kullanabilirsiniz: 

  • Vout = (analogOkuma değeri) × (ADC referans voltajı / 1023)

Voltajı elde ettiğimize göre artık bunu sıcaklığa dönüştürebiliriz. LM35DZ her santigrat derece için 10 mV (veya 0,01 V) ürettiğinden sıcaklığı hesaplamak için Vout’u 10mV(veya 0,01)’a bölmeniz gerekir:

  • Sıcaklık (°C) = Vout(mV) / 10(mV)






Vout=1 x 4,88 = 4,88 mV, Sıcaklık=4,88 / 10 = 0,48 ⁰С.

Vout=2 x 4,88 = 9,76 mV, Sıcaklık=9,76 / 10 = 0,97 ⁰С.

Vout=3 x 4,88 = 14,64 mV, Sıcaklık=14,64 / 10 = 1,46 ⁰С.

Vout=4 x 4,88 = 19,52 mV, Sıcaklık=19,52 / 10 = 1,95 ⁰С.

Vout=5 x 4,88 = 29,28 mV, Sıcaklık=29,28 / 10 = 2,92 ⁰С.

olur.

Sıcaklığı bu şekilde bulabiliriz. Fakat burada dikkat edilmesi gereken birkaç nokta vardır: Referans voltajını 5V olarak aldığımız zaman analogRead() komutu 4,88mV’un tam katlarında bir değer okur. Yani 4,88mV’da, 9,76mV’da, 14,64mV’da, 19,52mV’da……… gibi ama LM35DZ’nin çıkışı, sıcaklık her 1°C arttığında 10mV artar. 4,88mV’lik artışlarla 10mV’luk artışlar kolay kolay aynı katta birleşmez. Bu nedenle 10mV’un tam katlarında okuma yapamayabiliriz. Bu durumdan dolayı hesaplanan sıcaklık değeri çoğu zaman gerçek sıcaklık değerine yakın, virgüllü değer çıkar. Bunun önüne geçmek için referans voltajını 1,1V ya da 3,3V yapabiliriz. Referans voltajını 1,1V yaparsak yeni çözünürlük değerimiz 1100mV / 1023 = ~ 1mV olur. Yani her bir dijital değerin karşılığı 1mV olur. Daha küçük değerlerde, dolayısıyla daha sık okuma yapacağımız için çözünürlüğü artırmış oluruz. Bu durumda 10mV’un tam katlarında voltaj değeri okuyabilir ve gerçek sıcaklık değerlerine daha yakın sıcaklık değerleri okuyabiliriz. 

Referans voltajını 1,1V yaptığımızda gerçeğe daha yakın değerler okuyabiliriz ama bu seferde LM35DZ’nin yüksek sıcaklıklardaki çıkış voltajlarını okuyamayız. Çünkü referans voltajını 1100mV’tur. Oysaki LM35DZ maximum 150°C’de 1500mV çıkış verir. 3,3V ya da farklı referans voltajları kullanabiliriz. Oda sıcaklığında uygulama yapacağımız için referans voltajını 1,1V ve 5V olarak alarak farklı Arduino uygulamaları yaptık.





Vout=10 x 1 = 10 mV, Sıcaklık= 10 / 10 = 1 ⁰С.

Vout=20 x 1 = 20 mV, Sıcaklık= 20 / 10 = 2 ⁰С.

Vout=30 x 1 = 30 mV, Sıcaklık= 30 / 10 = 3 ⁰С.

Vout=40 x 1 = 40 mV, Sıcaklık= 40 / 10 = 4 ⁰С.

Vout=50 x 1 = 50 mV, Sıcaklık= 50 / 10 = 5 ⁰С.

olur.

Yapılan uygulamalarda teoride olduğu gibi tam dereceler çıkmasa da gerçeğe daha yakın değerler elde edilmiştir. Oda sıcaklığında referans voltajını 5V aldığımızda çıkan sonuçlarla 1.1V aldığımızda çıkan sonuçlar arasında 1⁰С fark bulunduğu gözlemlenmiştir.



Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com

Blog Archive