Bu yazıda, ortam sıcaklığı önceden belirlenmiş bir eşik seviyesine ulaştığında bir fanı veya ona bağlı diğer cihazları AÇIK konuma getirecek birkaç basit Arduino tabanlı otomatik sıcaklık kontrollü dc fan devresi inşa edeceğiz. Bu proje için DHT11 sensörü ve arduino kullanacağız.
Genel Bakış
Mikrodenetleyicilerin güzelliği, ona bağlı çevre birimleri üzerinde çok hassas bir kontrol elde etmemizdir. Bu projede kullanıcının programdaki eşik sıcaklığını girmesi yeterlidir, mikrodenetleyici işlevin geri kalanını halleder.
İnternette karşılaştırıcı ve transistör kullanımı gibi mikrodenetleyici tabanlı olmayan tonlarca otomatik sıcaklık kontrol cihazı projesi mevcuttur.
Çok basitler ve iyi çalışıyorlar ancak sorun, önceden ayarlanmış direnç veya potansiyometre kullanılarak eşik seviyesini kalibre ederken ortaya çıkıyor.
Kalibre ederken kör bir fikrimiz var ve kullanıcının tatlı noktayı bulmak için deneme yanılma yöntemi yapması gerekebilir.
Bu problemler mikrodenetleyiciler tarafından aşılır, kullanıcının bu projede sadece sıcaklığı Celsius cinsinden girmesi yeterlidir, bu nedenle kalibrasyona gerek yoktur.
Bu proje, devrenin iç sıcaklığının stabilize edilmesi veya aşırı ısınmadan korunması gerektiğinde kullanılabilir.
1. diyagramda, çıkış olarak bir CPU fanını bağlıyoruz. Bu kurulum, kapalı bir devrenin iç ortam sıcaklığını kontrol etmek için kullanılabilir.
Eşik sıcaklığına ulaşıldığında fan açılır. Sıcaklık eşik sıcaklığın altına düştüğünde fan kapanır. Yani temelde otomatik bir süreçtir.
Şema 2'de, masa fanı gibi şebeke geriliminde çalışan cihazları kontrol etmek için bir röle bağladık.
Oda sıcaklığı eşik sıcaklığına ulaştığında fan açılır ve oda soğuduğunda kapanır.
Bu, güç tasarrufu yapmanın en iyi yolu olabilir ve bu, başkalarının sıcakken fanı AÇIK konuma getirmesini isteyen tembel insanlar için cennet olabilir.
Bir DC Fan Kontrolünü Gösteren Devre Şeması
Bu kurulum, bir kutu içine alınmış devreler için kullanılabilir. Önceden ayarlanmış eşik seviyesine ulaşıldığında LED yanar ve ayrıca fanı da açar.
Daha Büyük Fanları Kontrol Etmek İçin Bir Röle Bağlama
Bu devre önceki devrenin benzer işlevini yerine getirir, şimdi fan röle ile değiştirilir.
Bu devre, bir masa fanını veya tavan vantilatörünü veya ortam sıcaklığını soğutabilen herhangi bir aygıtı kontrol edebilir.
Sıcaklık önceden ayarlanmış eşik seviyesinin altına ulaşır ulaşmaz bağlı cihaz kapanır.
Burada gösterilen sıcaklık kontrollü dc fan devre şeması birçok olasılıktan sadece birkaçıdır. Devreyi özelleştirebilir ve kendi amacınız için programlayabilirsiniz.
NOT 1: #Pin 7 çıktıdır.
NOT 2: Bu program yalnızca DHT11 sensörü ile uyumludur.
Arduino kullanarak yukarıda açıklanan otomatik sıcaklık regülatörü devresi için program:
Program kodu
Not: Programda int th = 30 // eşik sıcaklığını Celsius cinsinden ayarlayın. '30' u istenen değerle değiştirin. İkinci Tasarım Aşağıda tartışılan ikinci sıcaklık kontrollü dc fan devresi projesi, ortam sıcaklığını otomatik olarak algılar ve ortam sıcaklığını kontrol altında tutmak için fan motoru hızını ayarlar. Bu otomatik işlem, bir Arduino ve bir sıcaklık sensörü IC LM35 aracılığıyla yapılır. Tarafından:Ankit Negi 1). Çevre sıcaklığı 25 derecenin üzerine çıktığında (çalışma bölümünde anlatılan ihtiyacınıza göre bu değeri programda değiştirebilirsiniz) motor çalışmaya başlar. 2). Ve sıcaklıktaki her derece artışla birlikte motorun hızı da artar. 3). Sıcaklık 40 santigrat dereceye yükseldiğinde motor en yüksek hızında çalışır (bu değer programda değiştirilebilir). Yukarıda bahsedilen görevi başarmak için temp kullanacağız. LM35 sensörü yaygın olarak kullanıldığından ve kolaylıkla temin edilebilir. LM35'in resimde gördüğünüz gibi 3 pimi vardır. 1. Vin-- bu pin, DC güç kaynağına 4 ila 20 v arasında bağlanır. LM35, güç kaynağına bağlandığında çevrenin sıcaklığı ve çıkış pini vasıtasıyla sıcaklıktaki derece artışına göre eşdeğer voltaj gönderir. LM35 her sıcaklığı algılayabilir. -50 derece ila +150 santigrat derece arasında ve sıcaklıkta 1 derece artışla çıktıyı 10 milivolt artırır. Bu nedenle çıkış olarak verebileceği maksimum voltaj 1.5 volttur. Arduino'nun LM35'in çıkış pininden aldığı analog değeri dijital değere değiştirmesi ve karşılık gelen dijital çıkışı (PWM) mosfet tabanına göndermesi gerekir. Ayrıca kullanacağız arduino sıcaklığı yazdırmak için komutlar, ARDUINO IDE'nin seri monitöründe mosfet'e karşılık gelen analog değer ve dijital çıktı. Bu devre, yüksek akımlı motoru çalıştıramazsa hiçbir işe yaramayacaktır. Bu nedenle bu tür motorları çalıştırmak için güç mosfet kullanılır. Diyot, mosfet'i çalışırken motorun ürettiği arka E.M.F'den korumak için kullanılır. 1. LM35 2. ARDUINO 3. GÜÇ MOSFETİ (IRF1010E) 4. DİYOT (1N4007) 5. FAN (motor) 6. FAN GÜÇ KAYNAĞI Devre şemasında gösterildiği gibi bağlantıları yapın. a) lm358'in vin pinini 5v arduino'ya bağlayın A). DEĞİŞKEN X- Bu basitçe pin no. Tarafından alınan analog değerdir. LM35'in çıkış pininden A0. B). DEĞİŞKEN VE- Yalnızca bu değişken nedeniyle fan motorumuz ilgili sıcaklığa göre çalışır. Bu değişkenin yaptığı şey, analog değeri, yani değişken x'i karşılık gelen ortam sıcaklığına değiştirmesidir. Y = (500 * x) / 1023 C). DEĞİŞKEN Z- z = harita (x, 0, 1023, 0,255) NOT :: lm35'in maksimum 1.5 volt sağlayabileceğini biliyoruz ve bu da temp olduğunda. 150 derecedir. bu pratik değil. Bu, 40 santigrat derece için 0.40 volt ve 25 derece için 0.25 volt alıyoruz demektir. Bu değerler mosfet üzerinde uygun pwm için çok düşük olduğundan, onu bir faktörle çarpmamız gerekir. Dolayısıyla onu 10 ile çarpıyoruz ve bunun yerine bu değeri analog çıkış olarak PWM pin 10'a veriyoruz, yani ** analogWrite (10, z * 10) Şimdi 0,25 volt için mosfet 0,25 * 10 = 2,5 volt alır 0,40 volt için mosfet 0,40 * 10 = 4 volt alır ve motor neredeyse tam hızda çalışır DURUM 1. Sıcaklık ne zaman. 25 dereceden az Bu durumda arduino kodun son satırında olduğu gibi pin 10'a 0 PWM voltajı gönderir. ** Başka Mosfet'in tabanındaki pwm gerilimi 0 olduğu için kapalı kalır ve motor devre ile bağlantısı kesilir. Bu durumda simüle edilmiş devreye bakın. Gördüğünüz gibi sıcaklık 20 derecedir. Analog değer = 41 Ancak sıcaklık 25 derecenin altında olduğundan, mosfet, şekildeki gibi 0 volt alır (mavi nokta ile gösterilir). Sıcaklık 25 dereceye ulaştığında, kodda belirtildiği gibi pwm sinyali mosfet tabanına gönderilir ve sıcaklıktaki her derece artışta bu PWM voltajı da artar, örn. Bu durumda simüle edilmiş devreye bakın. Gördüğünüz gibi sıcaklık 20 dereceden 40 dereceye yükselirken, üç değer de değişiyor ve 40 santigrat derece Analog değer = 82 Sıcaklık 25 dereceden yüksek olduğundan, mosfet, şekildeki gibi (kırmızı nokta ile gösterilir) karşılık gelen PWM voltajını alır. Bu nedenle, motor 25 derecede çalışmaya başlar ve buna bağlı olarak, pim 10'dan mosfet tabanına kadar her derece sıcaklık pwm voltajındaki artışla birlikte artar. Bu nedenle motor hızı, sıcaklık artışı ile doğrusal olarak artar ve 40 derece Santigrat için neredeyse maksimum hale gelir. Fan ve Arduino kullanarak yukarıda açıklanan otomatik sıcaklık kontrollü dc fan devresi ile ilgili başka sorularınız varsa her zaman aşağıdaki yorum kutusunu kullanabilir ve düşüncelerinizi bize iletebilirsiniz. En kısa zamanda geri dönmeye çalışacağız.//--------------------Program developed by R.Girish---------------------//
#include
dht DHT
#define DHTxxPIN A1
int p = A0
int n = A2
int ack
int op = 7
int th = 30 // set thershold tempertaure in Celsius
void setup(){
Serial.begin(9600) // May be removed after testing
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
pinMode(op,OUTPUT)
digitalWrite(op,LOW)
}
void loop()
{
digitalWrite(p,1)
digitalWrite(n,0)
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
// you may remove these lines after testing, from here
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.print('
')
// To here
if (DHT.temperature>=th)
{
delay(3000)
if(DHT.temperature>=th) digitalWrite(op,HIGH)
}
if(DHT.temperature {
delay(3000)
if(DHT.temperature }
}
if(ack==1)
{
// may be removed after testing from here
Serial.print('NO DATA')
Serial.print('
')
// To here
digitalWrite(op,LOW)
delay(500)
}
}
//-------------------------Program developed by R.Girish---------------------// AMACIMIZ:
SICAKLIK SENSÖRÜ LM35:
2. Vout - bu pin, voltaj şeklinde çıktı verir.
3. GND - bu pin, devrenin gnd terminaline bağlanır. BU DC FAN KONTROLÖRÜ PROJESİ İÇİN NEDEN ARDUINO?
GÜÇ MOSFETİNİN ROLÜ NEDİR?
NEDEN DİYOT KULLANILIR?
PROJE İÇİN PARÇA LİSTESİ:
DEVRE ŞEMASI:
b) lm358'in vout pinini arduino'nun A0'ına bağlayın
c) lm358'in toprak pimini arduino'nun GND'sine bağlayın
d) mosfet'in tabanını arduino'nun PWM pin 10'una bağlayın KOD:
float x// initialise variables
int y
int z
void setup()
{
pinMode(A0,INPUT) // initialize analog pin A0 as input pin
Serial.begin(9600) // begin serial communication
pinMode(10,OUTPUT) // initialize digital pin 10 as output pin
}
void loop()
{
x=analogRead(A0) // read analog value from sensor's output pin connected to A0 pin
y=(500*x)/1023// conversion of analog value received from sensor to corresponding degree Celsius (*formula explained in working section)
z=map(x,0,1023,0,255) // conversion of analog value to digital value
Serial.print('analog value ')
Serial.print( x) // print analog value from sensor's output pin connected to A0 pin on serial monitor( called 'analog value')
Serial.print(' temperature ')
Serial.print( y) // print the temprature on serial monitor( called 'temprature')
Serial.print(' mapped value ')
Serial.print( z*10) // multiply mapped value by 10 and print it ( called ' mapped value ' )
Serial.println()
delay(1000) // 1 sec delay between each print.
if(y>25)
{analogWrite(10,z*10) // when temp. rises above 25 deg, multiply digital value by 10 and write it on PWM pin 10 ( ** explained in working section)
}
else
{analogWrite(10,0) // in any other case PWM on pin 10 must be 0
}
} ÇALIŞMA (kodu anlama):
1. İlk analog değer, karşılık gelen gerilime değiştirilmelidir, yani
1023: 5v
Dolayısıyla (5000 milivolt * x) / 1023 V
2. Şimdi, sıcaklıktaki her derece artışa karşılık gelen voltaj çıkışının 10 mv arttığını biliyoruz.
1 santigrat derece: 10 milivolt
Dolayısıyla (5000 milivolt * x) / (1023 * 10) DERECE
bu değişken, pin 10'daki pwm çıkışı için analog değeri dijital değere değiştirir.
{analogWrite (10,0) // diğer durumlarda pin 10'daki PWM 0 olmalıdır
} **
Sıcaklık = 20
Eşlenen değer = 100
DURUM 2. Sıcaklık ne zaman. 25 dereceden büyükif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Sıcaklık = 40
Eşlenen değer = 200
Önceki: Basit Buzdolabı Koruyucu Devresi Sonraki: Kesintisiz Güç Kaynağı (UPS) Devresi Nasıl Tasarlanır