Korona Virisü önlemleri için aldığımız tedbirler olarak Merkez ofisimiz bir süre hizmet vermeyecek olup depo hizmetlerimiz sevkiyatların aksamaması için sorunsuz çalışacaktır. Hafta içi Saat 16:00'a kadar olan siparişler aynı gün sevk edilmeye devam edecek, firma İletişim sadece mail ile yapılacaktır. [email protected] Teşekkürler.
Arduino ile Dijital Termostat

Arduino ile Dijital Termostat

    Bu devremizde arduino, 2x16 LCD ve DS 18B20 kullanarak sıcaklık set değeri ayarlanabilen ve hafızaya keydedilen bir termostat devresi yaptık. Devredeki butonlar ile set değerini arttırıp azaltabiliyoruz, ortam ısısı set değerine ulaştığında 7.pine bağlı ledlerimizin durumunun değiştiğini görebilirsiniz. Bizler devrenin daha iyi gözlemlenebilmesi için led kullandık. siz isteseniz led yerine röle kullanabilirsiniz. Örneğin röleli kullanımda ısı ayarlanan değere geldiğinde bağlanan bir fan açıp kapatabilirsiniz, örnekler hayal gücünüze kalmış. Devrenin arduino kodları ve diagramı aşağıda mevcuttur. Dilerseniz tüm malzemeleri SEPETE EKLE yaparak satın alabilir yada malzeme listesinden ihtiyacını olan ürüne ulaşabilirsiniz.


Devrede kullanılan malzemeler;

Termostat devremizin fritzing çizimi:


ve kodlarımız;

// www.hobidevre.com
// Elektronik Ürün Deponuz
#include <LiquidCrystal.h>
#include <OneWire.h> // OneWire kütüphanesini ekliyoruz. https://www.arduinolibraries.info/libraries/one-wire  adresinden indirebilirsiniz.
#include <EEPROM.h>
int addr = 0;
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz.
int DS18S20_Pin = 6; 
// Sıcaklık Sensörü Giriş-Çıkışı
OneWire ds(DS18S20_Pin);  // 6. Dijital pinde.
#define led1 7 // Ledimizi 7 nolu pine baglıyoruz
int SET;
int buton1 = 8;
int buton2 = 9;
int buton3 = 10;
void setup(void) {
 lcd.begin(16,2);
 pinMode(led1,OUTPUT);
 pinMode(buton1,INPUT);
 pinMode(buton2,INPUT);
 pinMode(buton3,INPUT);
 SET = EEPROM.read(0);// enerji verildiğinde set edilen ısı değeri epromdan okunuyor
}
void loop(void) {
  // temperature değişkenini sıcaklık değerini alma fonksiyonuna bağlıyoruz.
  float temperature = getTemp();
  // Sensörden gelen sıcaklık değerini Serial monitörde yazdırıyoruz.
  //lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("SET:");lcd.print(SET);lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Sicaklik:");
  lcd.print(temperature);lcd.print(" C");
  
  if(temperature>=SET){
    digitalWrite(led1,HIGH);
  }
 else{
  digitalWrite(led1,LOW);
 }
// Burası SET değerini değiştirme
  if(digitalRead(buton1)==HIGH)
  {
    delay(100);
  SET++;
  delay(50);
  }
  else if(digitalRead(buton2)==HIGH)
  {
    delay(100);
    SET--;
    delay(150);
  }
  EEPROM.write(0, SET); // burada set değerini eproma kaydediyoruz
  // SET değer değiştirme buraya kadar

  
 //delay(100);
 // 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değeri yazmaya devam edecek.
}

// Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri
// Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor.
// Herhangi bir değişiklik yapmamız gerekmiyor.

float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      lcd.setCursor(0,1);
      lcd.print("CRC is not valid!");
      return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      lcd.setCursor(0,1);
      lcd.print("Device is not recognized");
      return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }

  ds.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}

Yorum Yap

Lütfen yorum yazmak için oturum açın ya da kayıt olun.

Arduino ile Dijital Termostat

  • Marka: Hobidevre
  • Ürün Kodu: ARD-TERMO-PRJ
  • Stok Durumu: Stokta var
  • 74,41TL
  • Vergiler Hariç: 63,06TL
100 Adet LED Paketi - 3mm Karışık LED paketi -30%
100 adet 3mm LED Paketi.20 Adet Kırmızı LED20 Adet Sarı LED20 Adet Yeşil LED20 Adet Mavi LED20 Adet ..
11,80TL 8,26TL
Vergiler Hariç: 7,00TL
100 Adet LED Paketi - 5mm Karışık LED paketi -30%
20 Adet Kırmızı LED20 Adet Sarı LED20 Adet Yeşil LED20 Adet Mavi LED20 Adet Beyaz LED..
11,80TL 8,26TL
Vergiler Hariç: 7,00TL
14mm Reed Röle -20%
Reed kontak, reed röle, reed switch, cam tüp içinde bulunan kontaklardan oluşur. Manyetik bir etkiyl..
2,01TL 1,61TL
Vergiler Hariç: 1,36TL
2 Pin JST Konnektör Kablo -20%
 2 Pin JST Konnektör KabloErkek + dişi JST konektörüUzunluk : 31cm konnektörler takılı iken. ( ..
4,01TL 3,21TL
Vergiler Hariç: 2,72TL
2 Pin SM JST Konnektör Kablo -33%
 2 Pin SM JST Konnektör KabloErkek + dişi SM JST konektörüUzunluk : 31cm konnektörler takılı ik..
3,61TL 2,41TL
Vergiler Hariç: 2,04TL
2 WD Araç Kiti  ( Demonte Kırmızı Renk ) -17%
2WD Araç KitiBu araç kiti bir çok robot pojenize uyum sağlayacak şekilde tasarlanmıştır. Çizgi izley..
72,24TL 60,20TL
Vergiler Hariç: 51,02TL
2 WD Araç Kiti  ( Demonte Mavi Renk ) -17%
2WD Araç KitiBu araç kiti bir çok robot pojenize uyum sağlayacak şekilde tasarlanmıştır. Çizgi izl..
72,24TL 60,20TL
Vergiler Hariç: 51,02TL
20mm Reed Röle -20%
Reed kontak, reed röle, reed switch, cam tüp içinde bulunan kontaklardan oluşur. Manyetik bir etkiyl..
2,41TL 1,93TL
Vergiler Hariç: 1,63TL
2x16 Karakter Mavi Lcd Display -19%
2X16 Sol üst sıralı bağlantı...Özellikleri:Çalışma Voltajı: +5V LCD Çalışma Akımı: 1.5mA LC..
14,85TL 12,04TL
Vergiler Hariç: 10,20TL
2x16 Karakter Yeşil Lcd Display -19%
2X16 Sol üst sıralı bağlantı...Özellikleri:Çalışma Voltajı: +5V LCD Çalışma Akımı: 1.5mA LC..
14,85TL 12,04TL
Vergiler Hariç: 10,20TL