Arkadaşlar dursuncanteknik arkadaşımızın tasarladığı kuluçka makinası devresini bitirdim devre çalıştı sadece tek bir sorun var ısı rölesi devamlı çekli kalıyor yani pic devamlı çıkış veriyor ısı limitini düşürsem bile röle kontaklarını bırakmıyor tamamen programsal bişey bu konuda ne yapmalıyım sizce programda değişiklikde yapamıyorum çünkü mcs de derlemeye çalıştığında fattal of memory diye bi hata veriyor galiba yetersiz hafıza diyor. Dursun kardeş nasıl derlemiş çok merak ediyorum. Benim bildiğim kadarıyla 16F877 ile 18F452 nin bacak yapısı aynı eğer dursun kardeş programı 18F452 ye göre düzenlerse hafıza sorunu felan kalmaz beraber bu devreyi çok iyi bir hale sokabiliriz. Bende kendisine bu konuda yardımcı olurum devrenin çalışması ile ilgili bilgi verebilirim
Arkadaşlar eğer bu ısı sorununu çözemezsem ısı için ayrı bi devre kullanmak gerekecek.Bu konuda bana yardımcı olursanız çok sevinirim
Devrenin kaynak kodlarını veriyorum umarım yardımcı olur size
Devrenin ares ve isis çizimleri hex kodu vs.Kod:'**************************************************************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2009 [dursuncanteknik@hotmail.com] * '* : All Rights Reserved * '* Date : 14.09.2009 * '* Version : 1.2 * '* Notes :Bu program Kuluçka makinesi için Dursun CAN * '* Tarafından yazılmıştır * '**************************************************************** @ DEVICE pic16F877 @ DEVICE pic16F877, WDT_ON @ DEVICE pic16F877, PWRT_ON @ DEVICE pic16F877, PROTECT_OFF @ DEVICE pic16F877, XT_OSC TRISA=%111111 TRISB=%00000000 TRISC=%11110000 PORTA=0 PORTB=0 PORTC=0 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 2 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 3 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 ADCON1 = 7 '---------------------------değişkenler----------------------------------------- E var byte AY var byte YIL var byte SN VAR BYTE DAK VAR BYTE SAAT VAR BYTE GUN VAR BYTE MEM var byte ONLAR VAR BYTE BIRLER VAR BYTE Y VAR BIT SAYAC VAR BYTE TERM VAR BYTE NEM VAR BYTE KONTROL VAR BYTE ISI1 VAR BYTE ISI2 VAR BYTE U1 VAR BYTE U2 VAR BYTE C0 VAR BYTE Z VAR BYTE SAYI VAR BYTE SAY VAR BYTE H0 VAR HAM.BYTE0 H1 VAR HAM.BYTE1 HAM VAR WORD RAW var word ISI VAR WORD RUT VAR WORD P1 VAR WORD P2 VAR WORD P3 VAR WORD C VAR WORD B VAR WORD W VAR WORD DUR VAR BYTE ZAMAN VAR BYTE ZAMAN1 VAR BYTE ZAMAN2 VAR BYTE ZAMAN3 VAR BYTE ZAMAN4 VAR BYTE ZAMAN5 VAR BYTE CLK VAR PORTA.5 DTA VAR PORTA.3 ISARET VAR BIT 'sensor değeri 0 ise artı, 1 ise eksi SIGN VAR BIT 'ısı isareti 0 ise artı 1 ise eksi HATA var BIT MENU VAR PORTA.0 YUKARI VAR PORTA.1 ASAGI VAR PORTA.2 symbol ROLE1=PORTC.0 symbol ROLE2=PORTC.1 symbol ROLE3=PORTC.2 SYMBOL BUZER=PORTC.3 RTC_RST var PORTC.5 RTC_CLK var PORTC.6 RTC_DTA var PORTC.4 '-----------------------------B A Ş L A N G I Ç ------------------------------ LOW ROLE1 LOW ROLE2 LOW ROLE3 PAUSE 20 ' CLEAR: 'TRISA=%00111111:TRISB=0 PAUSE 500:ISARET=0 LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0 'derece işareti dataları LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0 '------------------------------------------------------------------------------- LCDOUT $FE,1, "KULUCKA MAKiNESi" lcdout $FE,$C0," version 1.2 " pause 3000 LCDOUT $FE,1 HIGH BUZER:PAUSE 50:LOW BUZER BASLA: KONTROL=%00000011:HAM=0 'SICAKLIK ÖLÇME GOSUB OLCUMAL Gosub ISIHESAP:GOSUB EKRAN1 'PAUSE 250 KONTROL=%00000101:HAM=0 'RUTUBET ÖLÇME GOSUB OLCUMAL GOSUB RUTHESAP 'GOSUB EKRAN2 pause 200 GOSUB ISIKONTROL GOSUB RUTKONTROL IF MENU=1 THEN WHILE MENU=1:WEND GOTO AYAR_MENULERI ENDIF goto BASLA '---------------------------------------EKRANA YAZ ----------------------------- EKRAN1: GOSUB DONUSEBAK GOSUB ZAMAN_OKU READ $07,GUN lcdout $FE,$80,DEC2 ISI1,".",dec1 ISI2 ,0,"C ",DEC2 GUN,".GUN" lcdout $FE,$C0,"NEM:",DEC2 U1 ," ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN READ $09,DUR IF SN = DUR THEN LOW ROLE3 IF SAAT=0 AND DAK=0 AND SN=0 THEN GUN=GUN+1 IF GUN=31 THEN GUN=1 WRITE $07,GUN PAUSE 300 ENDIF RETURN '''''''''''''''''MOTOR ÇALIŞ ''''''''''''''''' DONUSEBAK: READ $0,SAYI READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF SAYI=1 THEN IF SAAT AND ZAMAN AND SN=0 THEN HIGH ROLE3 ENDIF IF SAAT AND ZAMAN1 AND SN=0 THEN HIGH ROLE3 ENDIF IF SAAT AND ZAMAN2 AND SN=0 THEN HIGH ROLE3 ENDIF IF SAAT AND ZAMAN3 AND SN=0 THEN HIGH ROLE3 ENDIF IF SAAT AND ZAMAN4 AND SN=0 THEN HIGH ROLE3 ENDIF IF SAAT AND ZAMAN5 AND SN=0 THEN HIGH ROLE3 ENDIF ENDIF RETURN ''''''''''''''''TEK BIP''''''''''''''''''''''''''''''''' BIP: HIGH buzer for sayac=0 to 2 pauseus 65535 next LOW buzer RETURN ''''''''''''''''ÇİFT BİP'''''''''''''''''''''''''' BIPBIP: HIGH buzer PAUSE 50 LOW buzer PAUSE 100 HIGH BUZER PAUSE 50 LOW BUZER RETURN '------------------------------- İŞLEM START ----------------------------------- T_START: OUTPUT DTA:OUTPUT CLK HIGH DTA LOW CLK PAUSE 1 HIGH CLK LOW DTA PAUSE 1 LOW CLK PAUSE 1 HIGH CLK PAUSE 1 HIGH DTA LOW CLK RETURN '-----------------------SENSORE KOMUT GÖNDER ----------------------------------- OLCUMAL: GOSUB T_Start SHIFTOUT DTA,CLK,1,[KONTROL] INPUT DTA PULSOUT CLK,10 HATA=0 FOR W=0 to 65500 IF DTA=0 then EXIT NEXT W HATA=1 EXIT: IF HATA=1 then endif SHIFTIN DTA,CLK,0,[H1] OUTPUT DTA LOW DTA PULSOUT CLK,10 INPUT DTA SHIFTIN DTA,CLK,0,[H0] PULSOUT CLK,10 RETURN '----------------------ISI HESAP ALT PROGRAMI----------------------------------- ISIHESAP: If ham<4000 then ISARET=1 'sıcaklık eksi değerde demek ISI1=(4000-HAM)/100 ISI2=((4000-ham)//100)/10 goto ISISON endif ISI1=(HAM-4000)/100 ISI2=((HAM-4000)//100)/10 ISISON: ISI1=(HAM-4000)/100 ISI2=((HAM-4000)//100)/10 RETURN '-------------------------RUTUBET HESAP ALT PROGRAMI---------------------------- RUTHESAP: 'ISI=ISI1*10+ISI2 p1=(26542-(54722**ham+ham))**ham-25 P2=655+(HAM*5)+(HAM**15917) P3=(P2**(ISI*10+2480))-(P2**2730)+P1 U1=p3/10:U2=p3//10 IF ham>3710 THEN U1=0:U2=0 ENDIF return '----------------------------ISI KONTROL---------------------------------------- ISIKONTROL: read 1,TERM if TERM<ISI1-0 then LOW Role1 ELSE ENDIF if ISI1<TERM+0 then HIGH ROLE1 Endif RETURN '----------------------------RUTKONTROL----------------------------------------- RUTKONTROL: READ 2,NEM if NEM<U1 then HIGH Role2 ELSE LOW ROLE2 ENDIF RETURN '------------------------------------------------------------------------------- AYAR_MENULERI: WHILE MENU=1:WEND GOSUB TEMIZLE ISI_AYARI: lcdout $fe,$c0," ISI LiMiTi " IF MENU=1 then WHILE MENU=1:WEND GOTO TERM_KONTROL ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO NEM_AYARI ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO GUNN ENDIF GOTO ISI_AYARI NEM_AYARI: lcdout $fe,$c0," NEM LiMiTi " IF MENU=1 then WHILE MENU=1:WEND GOTO NEM_KONTROL ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO CIK ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO ISI_AYARI ENDIF goto NEM_AYARI CIK: WHILE MENU=1:WEND GOSUB TEMIZLE CK: lcdout $fe,$c0," MENUDEN CIKIS " IF MENU=1 then WHILE MENU=1:WEND GOTO BASLA ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO MOTO ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO NEM_AYARI ENDIF goto CK MOTO: GOSUB TEMIZLE MOTOR: lcdout $fe,$c0," CEViRiCi MOTOR " IF MENU=1 then WHILE MENU=1:WEND GOTO MOT_AYAR ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO SAATT ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO CIK ENDIF goto MOTOR SAATT: GOSUB TEMIZLE SAT: lcdout $fe,$c0," SAAT AYARI " IF MENU=1 then WHILE MENU=1:WEND GOTO SAATAYAR1 ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO GUNN ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO MOTO ENDIF goto SAT GUNN: GOSUB TEMIZLE GUNU: lcdout $fe,$c0," GUNU SIFIRLA " IF MENU=1 then WHILE MENU=1:WEND GOTO GUNAYARI ENDIF IF ASAGI=1 then WHILE ASAGI=1:WEND GOTO ISI_AYARI ENDIF IF YUKARI=1 then WHILE YUKARI=1:WEND GOTO SAATT ENDIF goto GUNU GUNAYARI: GOSUB TEMIZLE WHILE MENU=1:WEND GUNA: READ $07,GUN lcdout $FE,$C0,"GUN:",DEC2 GUN IF MENU=1 THEN AYARLANDI WHILE MENU=1:WEND IF YUKARI=1 THEN GUN=1 PAUSE 10 WRITE $07,GUN GOTO GUNA '''''''''''''''''''''''''''''''''''''''' MOT_AYAR: GOSUB TEMIZLE WHILE MENU=1:WEND MOTOR_AYAR: READ $0,SAYI lcdout $fe,$80," MOTOR DURUMU " IF MENU=1 THEN M_ZAMANI WHILE MENU=1:WEND IF YUKARI=1 THEN SAYI=SAYI+1 WHILE YUKARI=1:WEND IF SAYI=2 THEN SAYI=0 WRITE $0,SAYI IF SAYI=1 THEN lcdout $FE,$C0," ACIK " IF SAYI=0 THEN LCDOUT $FE,$C0," KAPALI " GOTO MOTOR_AYAR M_CALISMA: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_CALISMA: READ $09,DUR IF MENU=1 THEN AYARLANDI WHILE MENU=1:WEND lcdout $fe,$80,"MOT.DONUS SURESi" lcdout $FE,$C0,"SURE :",DEC2 DUR," SANIYE" IF YUKARI=1 THEN DUR=DUR+1 WHILE YUKARI=1:WEND IF DUR=60 THEN DUR=0 IF ASAGI=1 THEN DUR=DUR-1 WHILE ASAGI=1:WEND IF DUR=255 THEN DUR=59 WRITE $09,DUR GOTO MOTO_CALISMA M_ZAMANI: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_ZAMANI1 WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",e=0,DEC2 ZAMAN lcdout $FE,$C0,DEC2 ZAMAN1,":",DEC2 ZAMAN2,":",DEC2 ZAMAN3,":",DEC2 ZAMAN4,":",DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN=ZAMAN+1 WHILE YUKARI=1:WEND IF ZAMAN=24 THEN ZAMAN=0 IF ASAGI=1 THEN ZAMAN=ZAMAN-1 WHILE ASAGI=1:WEND IF ZAMAN=255 THEN ZAMAN=23 WRITE $10,ZAMAN GOTO MOTO_ZAMANI M_ZAMANI1: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI1: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_ZAMANI2 WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",DEC2 ZAMAN lcdout $FE,$C0,e=0,DEC2 ZAMAN1,":",DEC2 ZAMAN2,":",DEC2 ZAMAN3,":",DEC2 ZAMAN4,":",DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN1=ZAMAN1+1 WHILE YUKARI=1:WEND IF ZAMAN1=24 THEN ZAMAN1=0 IF ASAGI=1 THEN ZAMAN1=ZAMAN1-1 WHILE ASAGI=1:WEND IF ZAMAN1=255 THEN ZAMAN1=23 WRITE $11,ZAMAN1 GOTO MOTO_ZAMANI1 M_ZAMANI2: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI2: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_ZAMANI3 WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",DEC2 ZAMAN lcdout $FE,$C0,DEC2 ZAMAN1,":",e=0,DEC2 ZAMAN2,":",DEC2 ZAMAN3,":",DEC2 ZAMAN4,":",DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN2=ZAMAN2+1 WHILE YUKARI=1:WEND IF ZAMAN2=24 THEN ZAMAN2=0 IF ASAGI=1 THEN ZAMAN2=ZAMAN2-1 WHILE ASAGI=1:WEND IF ZAMAN2=255 THEN ZAMAN2=23 WRITE $12,ZAMAN2 GOTO MOTO_ZAMANI2 M_ZAMANI3: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI3: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_ZAMANI4 WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",DEC2 ZAMAN lcdout $FE,$C0,DEC2 ZAMAN1,":",DEC2 ZAMAN2,":",e=0,DEC2 ZAMAN3,":",DEC2 ZAMAN4,":",DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN3=ZAMAN3+1 WHILE YUKARI=1:WEND IF ZAMAN3=24 THEN ZAMAN3=0 IF ASAGI=1 THEN ZAMAN3=ZAMAN3-1 WHILE ASAGI=1:WEND IF ZAMAN3=255 THEN ZAMAN3=23 WRITE $13,ZAMAN3 GOTO MOTO_ZAMANI3 M_ZAMANI4: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI4: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_ZAMANI5 WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",DEC2 ZAMAN lcdout $FE,$C0,DEC2 ZAMAN1,":",DEC2 ZAMAN2,":",DEC2 ZAMAN3,":",e=0,DEC2 ZAMAN4,":",DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN4=ZAMAN4+1 WHILE YUKARI=1:WEND IF ZAMAN4=24 THEN ZAMAN4=0 IF ASAGI=1 THEN ZAMAN4=ZAMAN4-1 WHILE ASAGI=1:WEND IF ZAMAN4=255 THEN ZAMAN4=23 WRITE $14,ZAMAN4 GOTO MOTO_ZAMANI4 M_ZAMANI5: GOSUB TEMIZLE WHILE MENU=1:WEND MOTO_ZAMANI5: READ $10,ZAMAN READ $11,ZAMAN1 READ $12,ZAMAN2 READ $13,ZAMAN3 READ $14,ZAMAN4 READ $15,ZAMAN5 IF MENU=1 THEN M_CALISMA WHILE MENU=1:WEND lcdout $fe,$80,"D.SAATLERi :",DEC2 ZAMAN lcdout $FE,$C0,DEC2 ZAMAN1,":",DEC2 ZAMAN2,":",DEC2 ZAMAN3,":",DEC2 ZAMAN4,":",e=0,DEC2 ZAMAN5 IF YUKARI=1 THEN ZAMAN5=ZAMAN5+1 WHILE YUKARI=1:WEND IF ZAMAN5=24 THEN ZAMAN5=0 IF ASAGI=1 THEN ZAMAN5=ZAMAN5-1 WHILE ASAGI=1:WEND IF ZAMAN5=255 THEN ZAMAN5=23 WRITE $15,ZAMAN5 GOTO MOTO_ZAMANI5 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' AYARLANDI: IF MENU=1 then AYARLANDI lcdout $fe,1," AYARLANDI " PAUSE 1000 gosub BIPBIP GOSUB TEMIZLE goto CIK TEMIZLE: lcdout $fe,1 RETURN '------------------------------------------------------------------------------- TERM_KONTROL: GOSUB TEMIZLE TERM_KONT: lcdout $fe,$80," ISI LiMiTi " lcdout $FE,$C0,"AYARI:",DEC2 TERM IF YUKARI=1 then TERM=TERM+1 WHILE YUKARI=1:WEND IF TERM=01 then TERM=121 IF ASAGI=1 then TERM=TERM-1 WHILE ASAGI=1:WEND IF TERM=121 then TERM=01 WRITE 1,TERM:PAUSE 10 IF MENU=1 THEN WHILE MENU=1:WEND GOTO AYARLANDI ENDIF GOTO TERM_KONT RETURN '------------------------------------------------------------------------------- NEM_KONTROL: GOSUB TEMIZLE NEM_KONT: lcdout $fe,$80," NEM LiMiTi " lcdout $FE,$C0,"AYARI:",DEC2 NEM IF YUKARI=1 then NEM=NEM+1 WHILE YUKARI=1:WEND IF NEM=01 then NEM=121 IF ASAGI=1 then NEM=NEM-1 WHILE ASAGI=1:WEND IF NEM=121 then NEM=01 WRITE 2,NEM:PAUSE 10 IF MENU=1 THEN WHILE MENU=1:WEND GOTO AYARLANDI ENDIF GOTO NEM_KONT RETURN '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' SAATAYAR1: lcdout $fe,1 IF MENU=1 then SAATAYAR1 gosub EKRAN0 SAATAYAR: PAUSE 200 lcdout $fe, $c7, dec2 SAAT lcdout $fe,$0e lcdout $fe, $10 E=0 button MENU, 1, 255, 255, E, 1,DAKIKAAYAR1 button YUKARI,1,255,255,E,1,SAATIARTIR button ASAGI,1,255,255,E,1,SAATIAZALT goto SAATAYAR SAATIARTIR: IF YUKARI=1 then SAAT=SAAT+1 IF SAAT=24 then SAAT=0 goto SAATAYAR SAATIAZALT: IF ASAGI=1 then SAAT=SAAT-1 IF SAAT=255 then SAAT=23 goto SAATAYAR DAKIKAAYAR1: IF MENU=1 then DAKIKAAYAR1 lcdout $fe,1 gosub EKRAN0 DAKIKAAYAR: PAUSE 200 lcdout $fe, $ca, dec2 DAK lcdout $fe,$0e lcdout $fe, $10 E=0 button MENU, 1, 255, 255, E, 1,ZAMAN_B button YUKARI,1,255,255,E,1,DAKARTTIR button ASAGI,1,255,255,E,1,DAKAZALT DAKARTTIR: IF YUKARI=1 then DAK=DAK+1 IF DAK=60 then DAK=0 goto DAKIKAAYAR DAKAZALT: IF ASAGI=1 then DAK=dak-1 IF DAK=255 then DAK=59 goto DAKIKAAYAR ZAMAN_B: IF MENU=1 then ZAMAN_B gosub ZAMAN_YAZ GOSUB TEMIZLE GOSUB AYARLANDI goto CIK '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ZAMAN_OKU: high RTC_RST:OUTPUT RTC_DTA shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM] 'OKU MEM=SN:GOSUB CEVIR:SN=SAYI MEM=DAK:GOSUB CEVIR:DAK=SAYI MEM=SAAT:GOSUB CEVIR:SAAT=SAYI MEM=GUN:GOSUB CEVIR:GUN=SAYI MEM=AY:GOSUB CEVIR:AY=SAYI MEM=YIL:GOSUB CEVIR:YIL=SAYI low RTC_RST return ZAMAN_YAZ: MEM=sn:gosub TERSCEVIR:sn=SAYI MEM=DAK:gosub TERSCEVIR:DAK=SAYI MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI MEM=GUN:gosub TERSCEVIR:GUN=SAYI MEM=AY:gosub TERSCEVIR:AY=SAYI MEM=YIL:gosub TERSCEVIR:YIL=SAYI high RTC_RST SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0] 'WRT Protek açıldı low RTC_RST:PAUSEUS 10 high RTC_RST SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, 128] 'YAZ low RTC_RST PAUSEUS 10 return CEVIR: ONLAR=MEM & %01110000 ONLAR=ONLAR>>4 BIRLER=MEM & %00001111 SAYI=ONLAR*10+BIRLER return TERSCEVIR: ONLAR=MEM DIG 1 ONLAR=ONLAR<<4 BIRLER=MEM DIG 0 SAYI=ONLAR+BIRLER return EKRAN0: lcdout " SAATi AYARLA " lcdout $fe,$c0,"SAAT : ",dec2 SAAT,":",dec2 DAK,":",dec2 SN return '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' END
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Mucit23 Çalışmanda başarılar Dilerim İnşallah Sonunda Güzel Bir Çalışma Olur.
Fakat dediğim gibi programda elden geçmesi gereken çok yerler var dahili eeprom ana program içerisinde okutulmuş bazı işler daha kısa yoldan halledilebilir.
Bu çalışma kendimi ısı kontrol sisteminde geliştirmek için bir çalışmam idi hatta nem ve ısı hesap formülü Saygı Değer ETE Hocamızın Formülüdür.
Tekrar elden geçirilerek tecrübeli kişilerin yol göstermesiyle de ciddi bir çalışma ortaya koyulabilir diye inanıyorum..

Arkadaşlar biraz komik bir soru olacak ama bu kuluçka makinasına yumurta konurken adamların koydu bütün yumurtaların hepsi tavuk oluyor. Bunu nasıl anlıyorlar bu konuda bilgisi olan var mı? Tamam yani elektronik sitesinde böyle bir soru olması belkide saçma oldu belki bu makneyi yaptığınız için biliyor olabilirsiniz diye sordum.![]()
Dursun bey ilginiz için teşekkür ederim kodları incelediğimde bende pek bir sorun göremiyorum fakat aynı şekilde devreye enerji verdikten sonra ısı rölesi çalışıyor yanı picin ısı limit çıkışı 1 konumuna geçiyor bi türlü anlam veremedim ayrıca devrede bir önemli sorun daha teşhis ettim çevirici motorda motoru aktif edip zaman sürelerini ayarladıktan sonra çevirici motor çıkışı ayarladığımız zamanların dışında çalışıyor her bir dakikanın başında motorun çalışma süresini kaç saniyeye ayarladıysak o kadar çalışıyor ve duruyor bu her dakika için devam ediyor bunuda düzeltmemlazım bu konudada bana yardımcı olmanızı istiyorum ayrıca ben hala programı mcs de derleyemiyorum. bilgisayarında mcs yüklü olan arkadaşlardan biri kendi bilgisayarında derlemeyi denerse çok memnun olurum
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Arkadaşlar basic diliyle programlama yapmadım ama ben CCS C de ds1820 de okulduğumuz değerin küsüratlı görünmesi için float bir değişkene atanıyo. Burdaki devrede sıcaklık küsüratlı. Ben sıcaklığı kontrol ettiğim yazılımlarda okuduğum değeri bir int değere atıyorum ve o deger için bir if döngüsü yazıyorum. Float değerde bu kontrolü yapamadım. Acaba sizin ısı değişkenide floatmı? Oyle ise değeri int bi değişkene atamayı deneyin. Tekrar sölüyorum basic dilini hiç kullanmadım. Sadece tecrübemi paylaşmak istedim. Umarım yardımı olur.
@mucit23 kardeş bende MCS kullanıyorum bende derledi buyur oluşan .hex .mac .pbp .asm dosyalarını paylaştım
tavsiyem mcs programını güncel tutmandır kolay gelsin
Arda bey acaba mcs nin hangi versiyonunu kullanıyorsunun bben microcode studio plus u kullanıyorum bu mcs nin bi ayarı felan varmı
Ayrıca dün ilginç bir duruma şahit oldum aynı programı başka bir pice yükleyince ısı kontrol kısmı çalıştı fakat buseferde nem bozuldu nem olduğu değerden çok yüksek gösteriyor haliyle çıkış daima bir konumunda
motor kısmı ise aynı her dakikanın başında çalışıyor motor
----------
arkadaşlar programda ısı ve nem sorununu ete hocamın yardımıyla çözdüm.Gayet mantıklı bir açıklaması var programda ısı konrol kısmında epromdan term değeri okunup ısıyla karşılaştırılıyor.
Ama devreye ilk enerji verildiğinde eproma daha önceden hiç birşey yazılmadan eproom okunduğu için direk term değeri 255 olarak okunuyor dolayısıyla term değeri ısı dan yüksek olduğu için röle1 devamlı çıkış veriyor
bunu önlemek için
ISIKONTROL:
read 1,TERM
if TERM=255 then TERM=0 '.........çözüm bu
if TERM<ISI1-0 then
LOW Role1
ELSE
ENDIF
if ISI1<TERM+0 then
HIGH ROLE1
Endif
RETURN
yukarıdaki gibi bir ekleme yapılarak sorun çözülüyor aynı işlem rutubet kontrol kısmınada yapılması gerekiyor
şimdilik tek bir sorun kaldı cevirici motor kısmı motorda nedense ayarladığım saatler dışında çalışıyor her dakikanın başında motorun çalışma süresini ne kadara ayarlamışsam o kadar çalışıyor ve duruyor
bu sorunuda çözersem eğer dört dörtlük bi devre ortaya çıkmış olur
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Arkadaşlar Dünden beri programda uğraşıyorum ve ete hocamın büyük katkılarıyla sorunları çözdüm.Kendisine bu yüzden teşekkür ediyorum.
program bu haliyle sorunsuz çalışmaktadır tüm fonksiyonlar çalışıyor yapacak arkadaşlar yeni vereceğim hex le devresini çalıştırsınlar
Konu Mucit23 tarafından (09.Haziran.2010 Saat 19:31 ) değiştirilmiştir.
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
arkadaşlar devreye artık son şeklini veriyorum internette biraz araştırma yapınca yumurtaların en az dört saatte bir normal olarak 3 saatte bir çevrilmesi gerektiği yazıyordu ben motorun dönüş sürelerini arttırdım bu şekilde motor 3 saatte bir günde 8 defa çevrim işlemi yapıyor
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
kardeşim çıkıcak olan civcivleri bekliyorum.haberin ola.
tamam tamam aklımda![]()
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Merhaba arkadaşlar;
arkadaşlar bugün devreyle ilgilenirken aklıma şöyle bişey geldi bende hemen işe koyuldum
bundan önceki son verdiğim programda günde 8 defa çevrim işlemi yapılıyordu yani 3 saatte bir kez çevirici motoru çalıştırıyordu.Benim aklıma gelen şey ise menüde motorun 1 gündeki çevirme saatleri yerine motorun kaç saatte bir çevirileceğini ayarlamak.Şimdi sizlere soruyorum;sizce eğer motor 3 saatte bir dönecekse tekrardan motorun dönüş saatlerini ayarlamak mantıklımı sizce bence çok gereksiz.Ben bunu düşünerem programda motor kaç saatte bir çevirilsin diye bir menü ekledim. Bu menü ile motorun kaç saatte bir çevirileceği 1 ile 4 arasında ayarlanıyor örnek vereyi
diyelimki 1 e ayarladık
bu sefer motor saat başı çalışır.
ikiye ayarlarsak motorun dönüş süreleri 00,02,04,06,08,10,12,14,16,18,20,22 motoru bu saatlerde çalışır
eğer 3 e ayarlarsak bu sefer 3 saatte bir çeviriliyor aynısı 4 içinde geçerli
bu şekilde program çok daha sadecelşti programın boyutu küçülmüş oldu.Eskidem program 6583kword iken şimdi 5426kword oldu.
Ben sadece en yüksek verim için çalışıyorum internette bu iş için tüm bilgileri okudum ve olabildiğince programa yansıtmaya çalışıyorum.Umarım faydalı olurum
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
mucit23 arkadaşım Çözümde bir hata var sanki.
TERM_KONTROL:
GOSUB TEMIZLE
TERM_KONT:
lcdout $fe,$80," ISI LiMiTi "
lcdout $FE,$C0,"AYARI:",DEC3 TERM
if TERM=255 then TERM=37 'bana göre burada olması gerekir'
IF YUKARI=1 then TERM=TERM+1
WHILE YUKARI=1:WEND
IF TERM=1 then TERM=046
IF ASAGI=1 then TERM=TERM-1
WHILE ASAGI=1:WEND
IF TERM=046 then TERM=01
WRITE 1,TERM:PAUSE 10
IF MENU=1 THEN
WHILE MENU=1:WEND
GOTO AYARLANDI
ENDIF
GOTO TERM_KONT
RETURN
Ayrıca değeride 37 olarak seçersek ayarlı olarak gelecektir.sizin düşünceniz nedir.(nem kısmıda aynen 60 olarak verilebilir.)
-İyi dostu olanın aynaya gereksinimi yoktur.(Hz.Mevlana)
-Düşman isterseniz dostlarınızı geçmeye çalışınız. Dost isterseniz , bırakın , dostlarınız sizi geçsin.
-Çalışmak, neşeli olmak, çeneyi sıkı tutmak, işte sana başarı
dediğine pek anlam veremedim doğrusu!
Neden ısı set değerini 37 ile 46 arasında bırakıyorsun
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Mucit23 merhaba.Geçen yıl devreyi kurdum.Çalıştırdım.Emin olmamakla beraber bir sorun yaşmamıştım.Ancak şimdi çalıştırınca gördüm ki saati durp dururken donuyor.Sence sorun nerede olabilir.
Ayrıca derece kısımını ondalık yapabilirmiyiz.
Derece kısmı ondalık olabilir fakat işlemci hafızasında fazla yer yok.
Diğer bir andan DS1302 nin pilini değiştirmeyi dene. .daha önce başıma gelmişti.Anlamsız ama pil bittimi saat çalışmıyabiliyor. Veya kristalle ilgilen.
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır
Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)