İçindekiler:

Bir Diyot Kullanan Kendin Yap Sıcaklık Sensörü: 3 Adım
Bir Diyot Kullanan Kendin Yap Sıcaklık Sensörü: 3 Adım

Video: Bir Diyot Kullanan Kendin Yap Sıcaklık Sensörü: 3 Adım

Video: Bir Diyot Kullanan Kendin Yap Sıcaklık Sensörü: 3 Adım
Video: Kendi Sıcaklık Göstergemizi Yaptık! Kendin Yap #5 2024, Temmuz
Anonim
Bir Diyot Kullanan DIY Sıcaklık Sensörü
Bir Diyot Kullanan DIY Sıcaklık Sensörü
Bir Diyot Kullanan DIY Sıcaklık Sensörü
Bir Diyot Kullanan DIY Sıcaklık Sensörü

PN-bağlantıları hakkındaki gerçeklerden biri, ileri voltaj düşüşlerinin geçen akıma ve bağlantı sıcaklığına göre değişmesidir, bunu basit bir ucuz sıcaklık sensörü yapmak için kullanacağız.

Bu kurulum, dahili sıcaklığını ölçmek için birçok Entegre Devrede yaygın olarak kullanılır ve bu özelliği temel alan ünlü LM35 gibi birçok sıcaklık sensörü.

Basitçe bir diyotun (tek bir PN bağlantısı olan) ileri voltaj düşüşü, içinden geçen akımın miktarı değiştikçe değişir, ayrıca diyot sıcaklığı değiştikçe voltaj düşüşü de değişecektir (Sıcaklık arttıkça, ileri düşüş (silikon diyotlar için 1.0 miliVolt ila 2.0 miliVolt ve germanyum diyotlar için 2.5 miliVolt) değerinde azalır.

Bu yüzden diyottan sabit bir akım geçirerek ileri voltaj düşüşü artık sadece diyot sıcaklığına göre değişmelidir. Şimdi sadece diyotun ileri voltajını ölçmemiz, bazı basit denklemler uygulamamız ve işte burada sıcaklık sensörünüz !!!

Gereçler

1 - 1n4007 diyot #12 - 1 Kohm direnci #13 - Arduino kartı

Adım 1: Devre Şeması

Devre şeması
Devre şeması

Şematikte görebileceğiniz gibi, çok basit. diyotu bir akım sınırlama direnci ve kararlı bir voltaj kaynağı ile seri olarak bağlayarak ham bir sabit akım kaynağı elde edebiliriz, bu nedenle diyot boyunca ölçülen voltaj sadece sıcaklık değişikliği nedeniyle değişecektir. Direnç değerinin değişmediğinden emin olun. diyottan çok fazla akım geçecek ve diyotta gözle görülür bir kendi kendine ısınma yapacak kadar düşük, ayrıca çok yüksek bir direnç değil, bu nedenle geçen akım, ileri voltaj ve sıcaklık arasında doğrusal bir ilişki sürdürmek için yeterli değil.

5V beslemeli 1 kilo Ohm'luk bir direnç, bu amaç için yeterli bir değer olan 4 miliAmper diyot akımı ile sonuçlanmalıdır. I(diyot) = VCC / (Rseries + Rdiyot)

Adım 2: Kodlama

Aşağıdaki gibi daha iyi sonuçlar elde etmek için kodda ince ayar yapılması gereken bazı değerler olduğunu aklımızda tutmalıyız:

1 - VCC_Voltage: analogRead() değeri ATmega çipinin VCC'sine bağlı olduğu için arduino kartında ölçtükten sonra denkleme eklememiz gerekiyor.

2 - V_OLD_0_C: 4 mA akımda ve 0 Santigrat sıcaklıkta kullanılan diyotun ileri voltaj düşüşü

3 - Sıcaklık_Katsayı: diyotunuzun sıcaklık gradyanı (veri sayfasından almak daha iyidir) veya bu denklemi kullanarak ölçebilirsiniz: Vnew - Vold = K (Tnew - Told)

nerede:

Vnew = diyotun ısıtılmasından sonra yeni ölçülen düşüş voltajı

Vold = bazı oda sıcaklığında ölçülen düşüş voltajı

Tnew = diyotun ısıtıldığı sıcaklık

Told = Vold'un ölçüldüğü eski oda sıcaklığı

K = Sıcaklık_Katsayı (-1.0 ile -2.5 miliVolt arasında değişen negatif bir değer)Son olarak artık kodu yükleyebilir ve sıcaklık sonuçlarınızı alabilirsiniz.

#define Sens_Pin A0 //STM32F103C8 kartı için PA0

çift V_OLD_0_C = 690.0; //690 mV 4 mA test akımında 0 Santigratta İleri voltaj

çift V_NEW = 0; //Oda sıcaklığında 4 mA test akımında yeni ileri gerilim çift Sıcaklık = 0.0; //Oda hesaplanan sıcaklık çift Sıcaklık_Katsayı = -1.6; // Santigrat derece başına 1,6 mV değişim (germanyum diyotlar için -2,5), diyot veri sayfasından almak daha iyidir double VCC_Voltage = 5010.0; //Arduino'nun 5V rayında milliVolt cinsinden mevcut voltaj (daha iyi doğruluk için gereklidir) (stm32 için 3300.0)

geçersiz kurulum() {

// bir kez çalıştırmak için kurulum kodunuzu buraya koyun: pinMode(Sens_Pin, INPUT); Seri.başla(9600); }

boşluk döngüsü () {

// tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: V_NEW = analogRead(Sens_Pin)*VCC_Voltage/1024.0; // 12 bit ADC kullanıyorsanız 4.0'a bölün Sıcaklık = ((V_NEW - V_OLD_0_C)/Sıcaklık_Katsayı);

Serial.print("Sıcaklık = ");

Serial.print(Sıcaklık); Serial.println("C");

gecikme(500);

}

3. Adım: Daha İyi Değerler Elde Etme

Daha İyi Değerler Elde Etme
Daha İyi Değerler Elde Etme
Daha İyi Değerler Elde Etme
Daha İyi Değerler Elde Etme

Bu projeyi yaparken yanınızda güvenilir bir sıcaklık ölçüm cihazı bulundurmanızda fayda var diye düşünüyorum.

3 veya 4 santigrat dereceye kadar çıkabilen okumalarda gözle görülür bir hata olduğunu görebiliyorsunuz peki bu hata nereden geliyor?

1 - önceki adımda belirtilen değişkenleri değiştirmeniz gerekebilir

2 - arduino'nun ADC çözünürlüğü, küçük voltaj farkını tespit etmek için ihtiyacımız olandan daha düşük

3 - arduino'nun (5V) voltaj referansı, diyottaki bu küçük voltaj değişikliği için çok yüksek

Bu nedenle, bu kurulumu bir sıcaklık sensörü olarak kullanacaksanız, ucuz ve kullanışlı olmasına rağmen doğru olmadığının farkında olmalısınız, ancak sisteminizin sıcaklığı hakkında size çok iyi bir fikir verebilir. PCB veya çalışan motora monte vb…

Bu talimat, mümkün olan en az miktarda bileşeni kullanmak içindir, ancak bu fikirden en doğru sonuçları almak istiyorsanız, bazı değişiklikler yapabilirsiniz:

1 - bu bağlantıdaki gibi op-amp'leri kullanarak bazı amplifikasyonlar ve filtreleme aşamaları ekleyin2 - 3,3 Volt analog referans voltajına sahip STM32F103C8 kartları olarak daha düşük bir dahili analog referans denetleyicisi kullanın (bkz. nokta 4)3 - dahili 1.1 V analog referansı kullanın arduino, ancak arduino analog pinlerinden herhangi birine 1,1 Volt'tan fazlasını bağlayamayacağınızı unutmayın.

bu satırı kurulum işlevine ekleyebilirsiniz:

analogReferans(DAHİLİ);

4 - 12 bit ADC çözünürlüğüne sahip STM32F103C8 gibi daha yüksek çözünürlüklü ADC'ye sahip bir mikrodenetleyici kullanın Özetle, bu arduino tabanlı kurulum sisteminizin sıcaklığı hakkında güzel bir genel bakış sağlayabilir ancak çok doğru sonuçlar vermez (yaklaşık 4.88 mV/Okuma)

STM32F103C8 kurulumu, daha yüksek bir 12-bit ADC ve daha düşük bir 3.3V analog referans değerine (yaklaşık 0,8 mV/Okuma) sahip olduğu için size oldukça doğru bir sonuç verecektir.

işte bu kadar!!:NS

Önerilen: