çift Kontaklı Termometre Yaptım yazılımı yazımın içindedir.

Başlatan yavuz, 24 Haziran 2011, 10:34:42

yavuz

12F877A ve lm35 ısı sensörlü BreadBoard da çift kontaklı termometre yaptım çalıştırdım sizlerle paylaşmak istiyorum.
kullandığım yazılımın txt görünümü aşağıdadır. İlgilenenlere sunulur:

#include "16F877A.H"
#device ADC=10  // 10 bitlik ADC kullanılacağı belirtiliyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(a) //Port yönlendirme komutları A portu için geçerli

#DEFINE use_portb_lcd TRUE   // LCD B portuna bağlı

#INCLUDE <lcd.c>   // lcd.c dosyası tanıtılıyor

unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
float voltaj,sicaklik;   // ondalıklı tipte değişkenler tanıtılıyor

//********** ANA PROGRAM FONKSİYONU*******
//unsigned char sonuc[]="SICAKLIK="; //ORJİNAL
void main ( ) 
{ 
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_a(0x01);  // RA5 Giriş olarak yönlendiriliyor

   setup_adc(adc_clock_div_32);   // ADC clock frekansı fosc/32
   setup_adc_ports(AN0); //RA0/AN0 girişi analog

   lcd_init();   // LCD hazır hale getiriliyor
   
   set_adc_channel(0); // RA0 / AN0 ucundaki sinyal A / D işlemine tabi tutulacak
   delay_us ( 20 );  // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   
  While(1)   // sonsuz döngü
   {
      bilgi=read_adc();  // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor

      voltaj=(0.0048828125*bilgi)*1000;   // Dijitale çevirme işlemine uğrayan sinyalin mV olarak gerilimi hesaplanıyor
      sicaklik=(voltaj/10)-0.96;    // Her 10mV'ta 1 derece artma
     
      bas:
      
      delay_ms(1500); // 2000 msn gecikme //ORJİNAL
       
   {
  
int i; //ORJİNAL

//char karakter1[8]={0x00,0x00,0x0e,0x10,0x10,0x11,0x0e,0x04};  //ç 
//char karakter2[8]={0x00,0x00,0x0e,0x10,0x0e,0x01,0x1e,0x04};  //ş
//char karakter3[8]={0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x00};  //ı 
char karakter4[8]={0x0f,0x10,0x10,0x0e,0x01,0x01,0x1e,0x04};  //Ş //ORJİNAL
char karakter5[8]={0x04,0x0e,0x04,0x04,0x04,0x04,0x0e,0x00};  //İ// ORJİNAL
//char karakter6[8]={0x0e,0x00,0x0f,0x11,0x11,0x0f,0x01,0x0f};  //ğ 
char karakter6[8]={0x0e,0x00,0x0f,0x10,0x13,0x11,0x0f,0x00};  //Ğ 
//char karakter7[8]={0x04,0x0e,0x1f,0x00,0x06,0x04,0x0c,0x0c};  // zil sekli//çalışıyor
char karakter7[8]={0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00}; // Derece //Çalışıyor
//char karakter8[8]={0x0a,0x00,0x0e,0x11,0x11,0x11,0x11,0x0e};  //Ö 

{ 

lcd_init(); //ORJİNAL

//lcd_send_byte(0,0x40); //ilk karakter hafızasının adresi /çalışıyor
// for (i=0;i<=8;++i) 
//{
//lcd_putc(karakter1[i]);
//}


//lcd_send_byte(0,0x48); //2. karakter hafızasının adresi /çalışıyor
//for (i=0;i<=8;++i)  
//{
//lcd_putc(karakter2[i]);
//}
  //lcd_send_byte(0,0x64);//cgram'de 3.karakteri göndereceğimiz yolu açıyoruz
//lcd_send_byte(0,0x50); //3. karakter hafızasının adresi /çalışıyor
//for (i=0;i<=8;++i)  
//{
//lcd_putc(karakter3[i]); 
//}
  lcd_send_byte(0,0x60); //4. karakter hafızasının adresi //ORJİNAL
    for (i=0;i<=8;++i) //ORJİNAL
  {
  lcd_putc(karakter4[i]); //ORJİNAL
  }
    lcd_send_byte(0,0x68); //5. karakter hafızasının adresi
    for (i=0;i<=8;++i)
 {
  lcd_putc(karakter5[i]);
  }

  lcd_send_byte(0,0x70); //6. karakter hafızasının adresi /çalışıyor
    for (i=0;i<=8;++i) //çalışıyor
  {
  lcd_putc(karakter6[i]); //çalışıyor
  }

lcd_send_byte(0,0x78); //7. karakter hafızasının adresi /çalışıyor
//lcd_send_byte(0,0x60); //7. karakter hafızasının adresi /çalışıyor
for (i=0;i<=8;++i)
{
lcd_putc(karakter7[i]);
}

//lcd_send_byte(0,0x70); //8. karakter hafızasının adresi /çalışıyor
//for (i=0;i<=8;++i) //çalışıyor
//{
//lcd_putc(karakter8[i]); //çalışıyor
//}

//{

   // for(;;) //ORJİNAL
  
   delay_ms(6);
   lcd_gotoxy(1,1);
   //lcd_putc(0);
   //lcd_putc(1);
   //lcd_putc(2);
   //lcd_putc(3);
   lcd_putc(4);
   lcd_putc(5);
   lcd_putc(6);
   lcd_putc(7);
   printf(lcd_putc,"\fTEDA%c B%cM S%cSTEM",4,5,5);
   lcd_gotoxy(1,2);
   printf(lcd_putc,"SUNUCU ODASI");
   


  lcd_gotoxy(8,2);
   delay_ms(150);
   
   //lcd_putc(sonuc);

   delay_ms(550);
  
   //for(;;){}        

  
   IF(sicaklik>30)
{
lcd_init();
delay_ms(6);
lcd_gotoxy(1,1); // Ekranın 1. satırının 1. sütununa gider.
printf(lcd_putc,"\fTEDA%c B%cM S%cSTEM",4,5,5); //Ekrana yazar.
delay_ms(6);
lcd_gotoxy(1,2);//ORJ
printf(lcd_putc,"SICAKLI%cI=",6);
printf(lcd_putc,"\%3.1f%cC",sicaklik,7);
output_high(pin_c0);
delay_ms(100);
} // ölçümü Tekrarla

Else
{
output_low(pin_c0);
delay_ms(6); //ORJ
lcd_gotoxy(1,2); //ORJ
printf(lcd_putc,"SICAKLI%cI=",6);
printf(lcd_putc,"\%3.1f%cC",sicaklik,7);
output_low(pin_c0);
delay_ms(60); //ORJ
} // ölçümü Tekrarla

IF(sicaklik>35)
{
lcd_init();
delay_ms(6);
lcd_gotoxy(1,1); // Ekranın 1. satırının 1. sütununa gider.
printf(lcd_putc,"\fTETA%c B%cM S%cSTEM",4,5,5); //Ekrana  yazar.
delay_ms(6);
lcd_gotoxy(1,2);
printf(lcd_putc,"SICAKLI%cI=",6);
printf(lcd_putc,"\%3.1f%cC",sicaklik,7);
output_high(pin_c1);
delay_ms(100);
} // Ölçümü Tekrarla

Else
{
output_low(pin_c1);
delay_ms(6); //ORJ
lcd_gotoxy(1,2); //ORJ
printf(lcd_putc,"SICAKLI%cI=",6);
printf(lcd_putc,"\%3.1f%cC",sicaklik,7);
output_low(pin_c1);
delay_ms(60); //ORJ
       } // ölçümü Tekrarla
  }} }}



Kusura bakmayın 12f877a değil doğrusu 16f877a olacaktı.

Bu da şeması
http://postimg.cc/image/luk5gc9w


şema bu sitededir.

Bu da çalışan uygulamanın video görüntüsü hayırlı olsun.
http://hotfile.com/links/132646914/f144e9e/PICileKontakl_Termometre_Tantm.mp4

30 santigrat derecede yeşil LED yanıyor.
35 santigrat derecede ise kırmızı LED yanıyor.

http://www.youtube.com/watch?v=hw1VPTFv-HU
Bu da başka bir link





   

OG

Yavuz, ardı ardına 5 yazmak yerine tek mesaja hepsi sığdı bak. Chat odası değiliz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

yavuz

Teşekkürler hocam sağolun istemeden zahmet verdim.
Tüm bu işlemleri tek bir süreçte planlama zamanım olmadı.
Sitenizi chat odası olarak hiç algılamadım.
Hakkını, emeğini helal edersen sevinirim.
Saygılarımla.

t2

gevv hocamın dikkatine,
Kod içeren sayfaları açtığımda sayfa donuyor 15-20sn sonra kendine gelebiliyor. internet explorer 7 kullanıyorum. kod parlatma eklentisi nedeniyle olabilir.

yavuz

Buhar Kazanlı Ütü tamiri yaptım. Elk. Prensip şemasını internette bulamadım. İhtiyacı olanlara sunulur. [/url][/img]

yavuz

#5





Arızalı olan bu selenoid bobin değiştirilince arıza giderildi.


yavuz

Çin malı bu multimetre 220 v ac gerilimini yanlışlıkla 320 v ac olarak ölçüyordu.
Resimde görülen smd direnç 147,5 ohma olarak değer değiştirdiğinden yanlış ölçüyordu.
100 ohm sağlamıyla değiştirdim devredeki potansiyometre ile de voltaj ayarı yaptım. Düzeldi.