Kablosuz kombi termostatı yapıyorum. Projem daha tamamlanmadı. Bitirdiğim zaman tüm dosyaları paylaşağım. Arkadaşlar öneri ve yardımlarınız bekliyorum.CCS C yeni yeni öğrenmeye başlıyorum.
Menü kodları için Eraygil Arkadaşına teşekkürü bir borç bilirim.
1.Sıcaklık gece ve Gündüz olarak ayarlanabilir . 00:00 ile 07:00 gece olarak 07:00 ile 23:59 arası gündüz olarak ayarlanmıştır.
2.Sıcaklık ayarı gece ve gündüz için ayrı ayrı 5-40 derece arasında 0,5 derece aralıklarla ayarlanabilir.
3.Sıcaklık ayarları yapılmaz ise Gündüz için sıcaklık 21 C Gece için sıcaklık 17 C kabul edilir.
4. Limit ayarlanabilir. Ayarlanan sıcaklıktan belirli bir limit altına yada üstüne çıkmadan kombi çalışmaz. Ayar aralığı 0,5 - 2,0 C
Ayar yapılmaz ise Alt ve Üst Limit 0,5 C yani ayarlanan 20 C ise kombi 19,4 C devreye girer 20,6 devreden çıkar.
Tüm Dosyalar Proteus Dsn+ C proje dosyaları http://www.mediafire.com/?dbd3m360noq3je0
(http://img403.imageshack.us/img403/6082/kombiq.png)
Verici Kodları
#include <16F886.h>
#device adc=10
#FUSES NOWDT, XT, NOPUT, MCLR, NOPROTECT, NOCPD, NOFCMEN,NOBROWNOUT, IESO, NOLVP, NODEBUG, NOWRT, BORV40
#use delay(clock=4000000)
#define RTC_RST PIN_C0
#define RTC_SCLK PIN_C1
#define RTC_IO PIN_C2
#define Menu PIN_A0
#define Up PIN_A1
#define Down PIN_A2
#define Open PIN_A3
#define Light PIN_A4
#define RfOpen PIN_A5
#define use_portb_lcd TRUE
#include <DS1302.C>
#include <lcd.c>
#include <ds18b20.c>
#include <internal_eeprom.c>
#include <float.h>
#use rs232(baud=600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Byte day,mth,year,dow,hr,min,sec;
float Temp,Set,Set1,Set2,Limit1,Limit2;
int Count=0,Count1=0,Count2=0;
const char Days[7][4]={
{"Paz"},{"Pzt"},{"Sal"},{"Crs"},{"Prs"},{"Cum"},{"Cts"}};
Temp_Control()
{
if (hr>7) Set=Set1;
if (hr<7) Set=Set2;
if (Temp<Set-Limit1)
{
output_high(Open);
putc('Y');
};
if (Temp>Set+Limit2)
{
output_low(Open);
putc('K');
};
}
Byte ReadRTC()
{
rtc_get_date(day,mth,year,dow);
delay_ms(5);
rtc_get_time(hr,min,sec);
if (year<2010) rtc_set_datetime(22,06,11,2,12,00);
Return (day,mth,year,dow,hr,min,sec);
}
Float ReadDS()
{
Temp=ds1820_read();
Return (Temp);
}
Void ShowLCD()
{
lcd_gotoxy(1,1);
printf(lcd_putc,"%02u:%02u %s %4.1f%cC",hr,min,Days[dow-1],Temp,223);
lcd_gotoxy(1,2);
printf(lcd_putc,"%02u/%02u/%02u %4.1f%cC",day,mth,year,Set,223);
}
Void StartUp()
{
output_high(Light);
lcd_gotoxy(1,1);
printf(lcd_putc," KABLOSUZ KOMBI ");
lcd_gotoxy(1,2);
printf(lcd_putc,"TERMOSTATI YUCEL");
Delay_ms(1000);
output_low(Light);
printf(lcd_putc,"\f");
Set1 = Read_Float_Eeprom(0);
Set2 = Read_Float_Eeprom(4);
Limit2 = Read_Float_Eeprom(8);
Limit1 = Read_Float_Eeprom(12);
if (limit1<.0) limit1=.5;
if (limit2<.0) limit2=.5;
if (Set1<0.0) Set1=21.0;
if (Set2<0.0) Set2=17.0;
}
dow_adj() //yıl ayar alt menüsü
{
if(input(Menu)) //onay kod sayacı
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
//yıl değerini 1 ve 90 arasında tutmak için
if(dow>=7)
dow=1;
if(dow==0)
dow=1;
while(input(Up))//yukarı tuş basılma işlemi
{
delay_ms(20);
dow=dow+1;
while(input(Up))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gun:%s ",Days[dow]);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))//aşağı tuş basılma işlemi
{
delay_ms(20);
dow=dow-1;
while(input(Down))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc," Gun:%s ",Days[dow]);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
hour_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
hr=hr+1;
while(input(Up))
{
if(hr==13)
hr=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Saat:%2d ",hr);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))
{
delay_ms(20);
hr=hr-1;
while(input(Down))
{
if(hr==-1)
hr=12;
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Saat:%2d ",hr);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
min_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
min=min+1;
while(input(Up))
{
if(min==60)
min=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Dakika:%2d ",min);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))
{
delay_ms(20);
min=min-1;
while(input(Down))
{
if(min==-1)
min=59;
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Dakika:%2d ",min);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
day_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
day=day+1;
while(input(Up))
{
if(day==32)
day=1;
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gun:%2d ",day);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))
{
delay_ms(20);
day=day-1;
while(input(Down))
{
if(day==0)
day=31;
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gun:%2d ",day);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
month_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
mth=mth+1;
while(input(Up))
{
if(mth==13)
mth=1;
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ay:%2d ",mth);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))
{
delay_ms(20);
mth=mth-1;
while(input(Down))
{
if(mth==0)
mth=12;
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ay:%2d ",mth);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
year_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
if(year>=90)
year=1;
if(year==0)
year=89;
while(input(Up))
{
delay_ms(20);
year=year+1;
while(input(Up))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Yil:%2d ",year);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
while(input(Down))
{
delay_ms(20);
year=year-1;
while(input(Down))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Yil:%2d ",year);
rtc_set_datetime(day,mth,year,dow,hr,min);
}
}
}
float daytemp_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
Write_Float_Eeprom(0,Set1);
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
Set1=Set1+.5;
while(input(Up))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gunduz:%3.1f%cC ",Set1,223);
if (Set1>40.0) Set1=40.0;
}
}
while(input(Down))
{
delay_ms(20);
Set1=Set1-.5;
while(input(Down))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gunduz:%3.1f%cC ",Set1,223);
if (Set1<5.0) Set1=5.0;
}
}
}
float nighttemp_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
Write_Float_Eeprom(4,Set2);
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
Set2=Set2+.5;
while(input(Up))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gece:%3.1f%cC ",Set2,223);
if (Set2>40.0) Set2=40.0;
}
}
while(input(Down))
{
delay_ms(20);
Set2=Set2-.5;
while(input(Down))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gece:%3.1f%cC ",Set2,223);
if (Set2<5.0) Set2=5.0;
}
}
}
float lowlimit_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
Write_Float_Eeprom(8,Limit2);
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
Limit2=Limit2+.5;
while(input(Up))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alt:%3.1f%cC ",Limit2,223);
if (Limit2>2.0) Limit2=2.0;
}
}
while(input(Down))
{
delay_ms(20);
Limit2=Limit2-.5;
while(input(Down))
{
lcd_gotoxy(1,1);
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alt:%3.1f%cC ",Limit2,223);
if (Limit2<.5) Limit2=.5;
}
}
}
float highlimit_adj()
{
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}
}
while(input(Up))
{
delay_ms(20);
Limit1=Limit1+.5;
Write_Float_Eeprom(12,Limit1);
while(input(Up))
{
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ust:%3.1f%cC ",Limit1,223);
if (Limit1>2.0) Limit1=2.0;
}
}
while(input(Down))
{
delay_ms(20);
Limit1=Limit1-.5;
while(input(Down))
{
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ust:%3.1f%cC ",Limit1,223);
if (Limit1<.5) Limit1=.5;
}
}
}
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
rtc_init();
lcd_init();
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
StartUp();
while(true)
{
ReadRTC();
ReadDS();
ShowLCD();
Temp_Control();
if(input(Menu))
{
Count=Count+1;
while(input(Menu))
{}}
if(Count==3)
Count=0;
output_low(Light);
while(Count==1)
{
output_high(Light);
lcd_gotoxy(1,1);
printf(lcd_putc," AYARLAR ");
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
//delay_ms(50);
//Count1=0;
if(Count1==-1)
Count1=6;
if(input(Menu))
{
delay_ms(20);
Count=0;
while(input(Menu))
{}}
if(input(Up))
{
delay_ms(20);
Count1=Count1+1;
while(input(Up))
{}}
if(input(Down))
{
delay_ms(20);
Count1=Count1-1;
while(input(Down))
{}}
while(Count1==1)
{
Count2=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}}
if(input(Up))
{
Count1=Count1+1;
while(input(Up))
{}
}
if(input(Down))
{
delay_ms(20);
Count1=Count1-1;
while(input(Down))
{}}
while(Count2==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gunduz:%3.1f%cC ",Set1,223);
delay_ms(20);
daytemp_adj();
}
while(Count2==2)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Isi Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gece:%3.1f%cC ",Set2,223);
delay_ms(20);
nighttemp_adj();
}
}
while(Count1==2)
{
Count2=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}}
if(input(Up))
{
Count1=Count1+1;
while(input(Up))
{}
}
if(input(Down))
{
delay_ms(20);
Count1=Count1-1;
while(input(Down))
{}}
while(Count2==1)
{
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Saat:%2d ",hr);
delay_ms(20);
hour_adj();
}
while(Count2==2)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Saat Ayarlama ",);
lcd_gotoxy(1,2);
printf(lcd_putc,"Dakika:%2d ",min);
delay_ms(20);
Min_adj();
}
delay_ms(100);
}
while(Count1==3)
{
Count2=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
if(input(Menu))
{
delay_ms(20);
Count2=Count2+1;
while(input(Menu))
{}}
if(input(Up))
{
delay_ms(20);
Count1=Count1+1;
while(input(Up))
{}
}
if(input(Down))
{
delay_ms(20);
Count1=Count1-1;
while(input(Down))
{}}
while(Count2==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gun:%2d ",day);
delay_ms(20);
day_adj() ;
}
while(Count2==2)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ay:%2d ",mth);
delay_ms(20);
month_adj();
}
while(Count2==3)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Yil:%2d ",year);
delay_ms(20);
year_adj();
}
while(Count2==4)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Tarih Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Gun:%s ",Days[dow]);
delay_ms(20);
dow_adj();
}
}
while(Count1==4)
{
Count2=0;
lcd_gotoxy(1,1);
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
if(input(Menu))
{
delay_ms(10);
Count2=Count2+1;
while(input(Menu))
{}}
if(input(Up))
{
Count1=Count1+1;
while(input(Up))
{}
}
if(input(Down))
{
delay_ms(20);
Count1=Count1-1;
while(input(Down))
{}}
while(Count2==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Ust:%3.1f%cC ",Limit1,223);
delay_ms(20);
highlimit_adj();
}
while(Count2==2)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Limit Ayarlama ");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alt:%3.1f%cC ",Limit2,223);
delay_ms(20);
lowlimit_adj();
}
}
while(Count1==5)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Menuden Cik ");
lcd_gotoxy(1,2);
printf(lcd_putc,"< >");
if(input(Menu))
{
delay_ms(10);
Count=0;
Count1=0;
Count2=0;
while(input(Menu))
{}}
}
}
}
}
Alıcı Kodları
#include <16F630.h>
#FUSES NOWDT, XT, NOPROTECT, NOBROWNOUT, MCLR, NOCPD, NOPUT, BANDGAP_HIGH
#use delay(clock=4000000)
#use rs232(baud=600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
#define relay PIN_A0
#define Led PIN_A1
char a=0;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC);
setup_vref(FALSE);
// TODO: USER CODE!!
While(TRUE)
{
a=getc();
if(a=='Y'){
output_high(relay);
output_high(led);
}
if(a=='K'){
output_low(led);
output_low(relay);
}
}
}
aynı yönlü benimde çalışmam var programı devresi herseyi hazır ama işlerimin yoğunluğundan dolayı uygulama fırsatım olmadı. devre olarak sorunum yok ancak kutu olayı canımı braz sıkıyor isteğime gör bi kutu bulamadım.
Sakıncası yok ise kodlarınızı paylaşırmınız? Ben bu projemi ailem için yapmaktayım. Kodların tamanını paylaşmanız mümkün değil ise sadece menu ve rf modül kodlarını paylaşabilirseniz çok iyi olacak benim için
Alıntı yapılan: smartcard - 15 Aralık 2011, 20:27:56
Sakıncası yok ise kodlarınızı paylaşırmınız? Ben bu projemi ailem için yapmaktayım. Kodların tamanını paylaşmanız mümkün değil ise sadece menu ve rf modül kodlarını paylaşabilirseniz çok iyi olacak benim için
sahsi fikrim sakın yanlış anlamayın eğer konuyu iyi bilmiyorsanız kombi v.s tarzı riskli işlere girmeyin derim...
öğrenmek için giriyor olabilir. Çok iyi bilmiyorsanız, öğrenmeyin mi diyorsunuz?
Yeri gelmişken söyliyeyim. Baymak Luna 3 Kombi kullanıcısıyım. Kombi Takılalı 15 gün civarı oldu. Kombiye 7 Yıl Garanti vermişler. Benimde yapacaklarım arasında bi oda termostatı var fakat Baymak bana Oda termostatı takarsan illa benim yaptığımı kullanacaksın diyor başka bi marka kullanırsan cihaz arızalarını garantiye saymam diyor. Kablosuz Oda Termostatlarıda 250 ile 300TL arasında değişiyor.
Evet hocam onun dediğini kullanmalısın. Yok ben kendim termostat yaparım seriüretim yapar bu markanın çakma oda termostatı diye satarım dersen uğraşabilirsin, yakışır. Bunlara birilerinin haddini bildirmesi gerek. fahiş fiyattan satmasınlar. Vur..
Zaten projeye başlama sebebim 1. firmasının kendi kablosuz termostatlarının fiyatlarının 250-300 TL civarında olması 2. Senelerdir elektronik ile uğraşan biri olarak Pic porgramlamayı öğrenmek istemek 3. Kendi imkanlarınla yapmış olmanın verdiği haz 4. Proje kesinlikle bir ticari faaliyet değildir
Alıntı yapılan: t2 - 16 Aralık 2011, 01:20:02
Evet hocam onun dediğini kullanmalısın. Yok ben kendim termostat yaparım seriüretim yapar bu markanın çakma oda termostatı diye satarım dersen uğraşabilirsin, yakışır. Bunlara birilerinin haddini bildirmesi gerek. fahiş fiyattan satmasınlar. Vur..
Bir ara kombinin içini açıp bakıcam. Odatermostatı klemensine nasıl bir bağlantı yapılmış. Yani karta zarar vermedikten sonra ne gibi sorunla karşılaşabilirimki.
@smartcard;
uğraşınız geniş bir kitleye hitap eden bence hoş bir çalışma,
ilk mesajınızda kablosuz modüle ait bağlantılar görünmüyor,
bu kısmı ne ile yapmayı düşünüyorsunuz ?
RWS434N-TWS-BS3 rf modül ve alıcı kısmında pic olarak 16F630 kullanmayı planlıyorum.Verici yazılımı tamamlanmadığı için yer almıyor. Bitirdiğim zaman ekleyeceğim.
Alıntı yapılan: t2 - 16 Aralık 2011, 00:10:39
öğrenmek için giriyor olabilir. Çok iyi bilmiyorsanız, öğrenmeyin mi diyorsunuz?
benim söylediğim şey kombi v.s gibi şeylere bulaşmamak gerektiği yoksa öğrenmek için yapılacak bir ton konu var ama benden çok daha tecrübeliler destek olduğuna göre saygı gösterip çalışmalarında başarılar dilemek gerekli...
Alıntı yapılan: skara1214 - 16 Aralık 2011, 18:11:25
benim söylediğim şey kombi v.s gibi şeylere bulaşmamak gerektiği yoksa öğrenmek için yapılacak bir ton konu var ama benden çok daha tecrübeliler destek olduğuna göre saygı gösterip çalışmalarında başarılar dilemek gerekli...
Niye karşı çıkıyorsunuz anlamadım ama ben bunu yapmak istiyorum ve bitirdiğim zaman tüm kodları ile paylaşacağım.
Kombi dediğiniz cihazı bu kadar gözünüzde büyütmeyin benim yapacağım kombide oda termostatı girişinde bulunan tel köprüyü söküp yerine alıcı devredeki röleyi bağlamaktan öteye gimeyecek kombiye müdahalem yani gaz yada ateşleme devresine yaptığım bir müdahele yok
Ben daha çok bu konuda yardım ve fikirlerinizi beklemekteyim.
Baskı devresini hazırlayıp bu haftasonuna kadar çalıştırmayı düşünüyorum.
Devrenizi inceledim gerçi şimdilik simülasyon olarak çalıştırdınız sanırım. Sizde biliyorsunuzdur.
1. LED'lere seri direnç bağlayın. Ve LED'in diğer ucuna gnde yerine vcc bağlayın (uygun şekilde çevirmeyi unutmayın). Gerçi programda değişiklik yapmanız gerekecek. (işlemcilerin dışarı akım verme kapasiteleri içeri akıtma kapasiterilden daha azdır)
2. Röleyi bir transistör üzerinden sürün. Kullanacağınız röleyi bilmiyorum ama işlemcilerin akım akıtma kapasiteleri düşüktür.
3.LCD'nin Vee olarak belirtilen ucu bir trimpotun orta ucuna gelecek şekilde (trimptun diğer uçları besleme uçları arasında olacak şekilde) bağlamanızı öneririm. (ekran kontrastını ayarlamak için)
4. Veri kağıtların DS1302 bat ucuna doğrudan bilgisayar bios pili bağlanması önerilmiyor. Çünkü bu entegre şarjlı tip pil ile kullanılmak üzere tasarlanmış. Eğer bu pili kullanacaksan entegre ile pil arasına diyot konulması öneriliyor.
5. i2c yollarına pull up dirençleri (10K) koymanız önerilir.
6.Her entegrenin besleme bacakları arasına entegreye yakın 100 nf kondansaör koymanız önerilir.
Kolay gelsin.
Tavsiyelerin için teşkekürler @ambar7 dikkate alacağım.
Rf kısmı halen daha deneme durumunda mı?
Veri göndermeden önce "uyandırma" işlemi için 5 baytlık 01 gönderilmesi gerekmez mi?
Şu an Rf kısmı deneme aşamasında şu an baskı devresini çizmeye çalışıyorum.Rf kısmı ile düzeltmeleri en sona bıraktım.Bitince en son halini ekleyeceğim. Teşekkürler.
Devre araya başka işlerim olmasından dolayı biraz ara vermiş idim. Verici devrenin baskı devresini bitirdim. Baskı devre ile ilgili önerilerinizi beklemekteyim. Kod kısmında değişiklik yapılması gerekmektedir. Onuda bu hafta sonu yapmayı planlıyorum.
(http://img836.imageshack.us/img836/4129/verici.png)
Ares Verici Baskı Devresi
http://www.mediafire.com/?aupwkazke1dtbmo
Baskı devreyi istersen altın kaplama yap bunlar devrenin çalışmasını sağlar mı? uğraştığın kombinin protokolü nedir? belki de protokol filan yok sadece kontak ile çalışıyor olabilir. Bu konudaki deneyiminizi öğrenebilir miyim? Kontak ile mi çalışıyor?
Entegreye yakın besleme hatlarına 100nF kondansatör koy.
@ambar7 Daha önce belirttiğin gibi 7805,pic,ds,buton kontaklarına 100nf bağladım.
@t2 Kombim on - off şeklinde çalışmakta plaketi altın kaplamaya gerek yok diye düşünmekteyim fakat yolları kalay ile kaplamayı düşünüyorum.
Peki son bir soru daha Ankara'da sadece Solder Mask(Plaket bakırlı yüzeydeki yeşil veya farklı renkteki boya ) yaptıracağım bir yer önerebilirmisiniz?
Pardon DS1302'nin ki biraz uzak kaldığı için görememişim.
http://pdfserv.maxim-ic.com/en/ds/DS1302.pdf (http://pdfserv.maxim-ic.com/en/ds/DS1302.pdf)
DS1302 veri kağıtlarında kristalin bağlantısı konusunda 5. sayfada bazı öneriler var. Kristal çevresini gnd hattı ile çevrelenmesi gerektiğini belirtiyor. (topraklama) Çevredeki elektriksel alanlardan etkilenmesi söz konusu olabiliyor.
Bilemiyorum pic ile donanım olarak ilgim olmadı ama yaptığım mikrokontroller uygulamalarında kristlin dışı kılıfını gnd'ye bağlıyorum. Böylece elle yaklaşma ve kristale dokunma durumunda işlemci saat frekansı değişmiyor. (bu konuda hiç başım ağrımadı!)
@ambar7 Tamam onu da ekleyeyim onun dışında ilk defa PCB çizen birine göre nasıl olmuş?
Birde daha önce ETE beyin saat uygulamasını yaptım orada DS1302 ayaklarında pullup dirençleri yoktu.Ben yanlış mı biliyorum DS1307'de SDA-SCL hatlarına 10K pullup direnci takılıyordu.
hocam termostat ne alemde, çalıştırabıldınız mı?
Merhaba, üstad bi ara internette texas' ın saatleri ile yapıldığını hatırlar gibiyim bi yerde görmüştüm araştırmak lazım estetik olması açısından süper olur. ayrıca sitede arkadaşın biri satıyor o saatten inceleyip araştırmanı tavsiye ederim. üretici firmalara fahiş fiyattan millete yivliyor sende onlara yivle :)
hocam dosyayı tekrar upload edermisiniz silinmişte .