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
(http://s4.postimg.cc/luk5gc9w/ema.jpg) (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
Yavuz, ardı ardına 5 yazmak yerine tek mesaja hepsi sığdı bak. Chat odası değiliz.
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.
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.
Buhar Kazanlı Ütü tamiri yaptım. Elk. Prensip şemasını internette bulamadım. İhtiyacı olanlara sunulur. (http://[url=http://postimg.cc/image/tdfor5ybn/%5D%5Bimg%5Dhttp://s13.postimg.cc/tdfor5ybn/Buhar_Kazanl_t_Elk_Prensip_emas.jpg)[/url][/img]
(http://s12.postimg.cc/izon1ijax/Buhar_Kazanl_t_Elk_Prensip_emas.jpg) (http://postimg.cc/image/izon1ijax/)
(http://s14.postimg.cc/gg5df5c7h/Ar_zal_Selenoid_bobin_1.jpg) (http://postimg.cc/image/gg5df5c7h/)
(http://s14.postimg.cc/w0cr5ombx/Ar_zal_Selenoid_bobin_2.jpg) (http://postimg.cc/image/w0cr5ombx/)
Arızalı olan bu selenoid bobin değiştirilince arıza giderildi.
(http://C:%5CUsers%5Cyavuz.demir%5CDesktop%5CDiyot%20Zener%20Diyot%5CDiyot%20Zener%20Diyot%20Test%20Cihaz%C4%B1%20(1).jpg)
(http://C:%5CUsers%5Cyavuz.demir%5CDesktop%5CDiyot%20Zener%20Diyot%5CDiyot%20Zener%20Diyot%20Test%20Cihaz%C4%B1%20(6).jpg)
(http://C:%5CUsers%5Cyavuz.demir%5CDesktop%5CDiyot%20Zener%20Diyot%5CDiyot%20Zener%20Diyot%20Test%20Cihaz%C4%B1%20(7).jpg)
(http://C:%5CUsers%5Cyavuz.demir%5CDesktop%5CDiyot%20Zener%20Diyot%5CDiyot%20Zener%20Diyot%20Test%20Cihaz%C4%B1.jpg)
Ç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.
(//)