USB’den Çalışan Isıtıcı Ve Soğutucu(Bitmek üzere)

Bilgisayarımızla herhangi bir iş yaparken içeceğimiz çay soğuyor, yok eğer bu içecek kola yada meyve suyu ise ısınıyor değilmi .O zaman projemiz tam size göre.

Aslında projemizin espirisi  soğuyan çayı sıcak tutacak ısınan soğuk içeceğimizi  soğutacak bir proje. Yok canım bu nasıl olacak hemde usb ile diyenleriniz olabilir . Kısaca anlatayım ; Projemizde peltier denen elektirik verildiğinde bir tarafi ısınırken diğer tarafı soğuyan bir elektronik eleman kullanmamız gerekiyor.

 

Bu elemandan iki adet ihtiyacımız olacak bunları iki aliminyum plakanın arasına sıkıştıracağız. Plakaların alt tarafına bir adet cpu soğutma sistemi yerleştirirsek daha verimli çalışacaktır. Bir Paltieri soğutmak için diğerini ise ısıtmak için kullanacağız. İçeceğimizi koyacağımız aliminyum plakaya ise bir adet ısı sensörü koyacağız. Yapacağımız bu projemizde ısıyı kontrol edebilmemiz için  iki buton (biri max soğuk diğeri max sıcak için ) yada bir potansiyometre (sıcaklığı kullanıcı ayarlaması için ) kullanacağız. Bu projemizde olmazsa olmaz bir adet LCD olmalı ki sıcaklığı görebilelim. Usbden güç meselesine gelince , USB 5 volt çıkış veriyor, bu çıkış 500mA kadar bir gücü var.Bu güç peltieri 80 dereceye kadar çıkarıyor, tabi bira uzun sürüyor , eğer kullanılacak USB çıkışı 1000mAlik bir çıkışsa o zaman daha kısa zamanda soğutacak veya ısıtacaktır.

 

Projemizde iki adet LM35 var ve bunlar PELTİERin sıcaklıklarını ölçüyor . Ölçülen değer eğer istediğimiz sıcaklıkta olursa arduinomuz gücü  kesiyor , Ama eğer sıcaklık yüksek ise Soğuması için gerekli adımları atarak sıcaklığı istenen seviyeye getiriyor.

Projeyi tamamladım ama hala bır sıstem kurup projeyi içerisine yerleştremedim . Ama olsun diyorsanız yakın zamanda sizlerle paylaşacağım.

Projede
Bir adet LM35
Bir adet DS18B20
2 Adet Peltier
Bir adet potansiyometre
Bir adet 16×2 LCD
Bir adet RTC 1307 Modülü
Ve peltieri sürmek için 2 adet TİP40 transistörlü sürücü devresi .
Projenin Fotoğraflarını en kısa zamanda paylaşacağım.



#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
float tempC;
int reading;
int tempPin = A1;
int pot = A2;    // select the input pin for the potentiometer
int deger = 0;  // variable to store the value coming from the sensor
int fark;
int farkmap;
OneWire  ds(2);  // on pin 12


void setup()
{
  lcd.init();                      // initialize the lcd 
   analogReference(INTERNAL);
RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print(" ICECEK KONTROL");
}

void loop()
{
  //////////////////////
  
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;

  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }

  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return;
  }
  Serial.println();

  // the first ROM byte indicates which chip
  switch (addr[0]) {
  case 0x10:
    Serial.println("  Chip = DS18S20");  // or old DS1820
    type_s = 1;
    break;
  case 0x28:
    Serial.println("  Chip = DS18B20");
    type_s = 0;
    break;
  case 0x22:
    Serial.println("  Chip = DS1822");
    type_s = 0;
    break;
  default:
    Serial.println("Device is not a DS18x20 family device.");
    return;
  } 

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

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

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

  Serial.print("  Data = ");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // convert the data to actual temperature

  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } 
  else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  
  //////////////////////
  ///////////////////////////////
     DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
 
   for (int a=0; a <= 10; a++){ lcd.clear(); deger = analogRead(pot); //deger = map(deger, 0, 1023, 0, 100); deger = deger / 10.2; reading = analogRead(tempPin); tempC = reading / 9.31; lcd.setCursor(0, 0); lcd.print("ISTENEN"); lcd.print(" "); lcd.print("SICAKLIK"); lcd.setCursor(0, 1); lcd.print(""); lcd.print(celsius); lcd.print(" C"); lcd.print(" "); lcd.print(deger); lcd.print(" C"); fark= deger-celsius; delay(1000); } if ( fark>0 ){

farkmap  = map(fark, 0, 100, 0, 255);
analogWrite(10 ,255 );
//analogWrite(10 ,farkmap );
analogWrite(11 ,0 );
             } else {
fark = 0 - fark ;
farkmap  = map(fark, 0, 100, 0, 255);
//analogWrite(11 ,farkmap );
analogWrite(11 ,255 );
analogWrite(10 ,0 );
             }
   
 
   for (int i=0; i <= 10; i++){ // Serial.print(" now + 7d + 30s: "); lcd.clear(); lcd.print(" HALIL BARIS"); lcd.setCursor(0,1); lcd.print(future.year(), DEC); lcd.print('/'); lcd.print(future.month(), DEC); lcd.print('/'); lcd.print(future.day(), DEC); //lcd.setCursor(3,1); lcd.print(' '); lcd.print(future.hour(), DEC); lcd.print(':'); lcd.print(future.minute(), DEC); // lcd.print(':'); // lcd.print(future.second(), DEC); delay(1000); deger = analogRead(pot); //deger = map(deger, 0, 1023, 0, 100); deger = deger / 10.2; fark= deger-celsius; if ( fark>0 ){

farkmap  = map(fark, 0, 100, 0, 255);
analogWrite(10 ,255 );
//analogWrite(10 ,farkmap );
analogWrite(11 ,0 );
             } else {
fark = 0 - fark ;
farkmap  = map(fark, 0, 100, 0, 255);
//analogWrite(11 ,farkmap );
analogWrite(11 ,255 );
analogWrite(10 ,0 );
             }
    
 }
 
  ///////////////////////////////
  ///////////////////////////////

}


  1. Meriç 24 Şubat 2016 18:07

    S.a proje bittiyse eğer kodlari ve cizimleri atabilirmisiniz ? Ve ben yeni öğrenmeye başlıyorum incelikleri filan var mı yardımcı olabilir misiniz?

    Cevapla
  2. Proje 19 Şubat 2016 11:25

    Bu projeye benzer bir proje yapmayı planlıyorum fikir olması açısından çalışmanızı paylaşır mısınız?

    Cevapla
    • Mehmet Selim 19 Şubat 2016 15:10

      Proje hanım
      projenin devrelerini çizmedim ama devreyi kurdum . Daha önce hazırladığım tek peltierli ve PWM kontrollü bir program var işinize yarar ümidiyle
      BUYRUN
      #include
      #include

      LiquidCrystal_I2C lcd(0x20,16,2);
      float tempC;
      int reading;
      int tempPin = A1;
      int pot = A2;
      int deger = 0;
      int fark;
      int farkmap;
      void setup()
      {
      lcd.init();
      analogReference(INTERNAL);

      lcd.backlight();
      lcd.print(“USB Termostad”);
      }

      void loop()
      {
      lcd.clear();
      deger = analogRead(pot);
      deger = map(deger, 0, 1023, 0, 100);

      reading = analogRead(tempPin);
      tempC = reading / 9.31;
      lcd.setCursor(0, 0);
      lcd.print(“ISTENEN”);
      lcd.print(” “);
      lcd.print(“SICAKLIK”);
      lcd.setCursor(0, 1);
      lcd.print(“”);
      lcd.print(tempC);
      lcd.print(“C”);
      lcd.print(” “);
      lcd.print(deger);
      lcd.print(“C”);
      fark= deger-tempC;
      delay(1000);

      if ( fark>0 ){

      farkmap = map(fark, 0, 100, 0, 255);
      analogWrite(10 ,255 );
      //analogWrite(10 ,farkmap );
      analogWrite(11 ,0 );
      } else {
      fark = 0 – fark ;
      farkmap = map(fark, 0, 100, 0, 255);
      //analogWrite(11 ,farkmap );
      analogWrite(11 ,255 );
      analogWrite(10 ,0 );
      }

      }

      Cevapla
  3. Hamza özkan 12 Kasım 2015 00:54

    Hocam merhaba bu proje bana cok cok lazim bir proje bittiyse eğer kodlari ve cizimleri atabilirmisiniz ?

    Cevapla
    • admin 12 Kasım 2015 06:22

      hamza bey projeyi tamamladim ve cok bazit bir yazilim yazdim. daha gelistirilebilir. programlama ile daha kararli ve elektrik kullanimini minumuma indirilebilir

      kodlarini yakin zamanda eklerim . ama cizimleri zaman aldigi icin biraz zaman alabilir .

      Cevapla
      • hamza 12 Kasım 2015 12:23

        hocam proje dosyalarını adresime göndermenizde sakınca yoksa bekliyorum kendimde geliştirebilirim çok az zamanım kaldı projeyi yapmam için..

        Cevapla
      • Metehan 14 Şubat 2017 17:08

        Merhaba ben TVT dersi için yapmayı düşünüyorum birkaç sorum var. Öncelikle TİP40 transistörlü sürücü devresi yerine ne kullanılabilir 2. si fotoğrafları atabilir misiniz bittiyse.
        Ve biraz daha ayrıntılı anlatabilir misiniz?

        Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.