avatar_elektro77

FAZ SIRASI DEDEKTORÜ

Başlatan elektro77, 23 Kasım 2018, 17:18:32

ete

Çalışmaz demiyorum. Şöyle düşün.
Sırası ile PORTB.2 - PORTB.1 ve PORTB.0 pinlerine R-S-T olarak bağlantı yaptım.
PORTB.0 kesmesi aktif ve kesme içinde Portu okuduğum zaman bana %110 bilgisini verecektir. Buraya kadar hemfikiriz sanırım.
Şimdi S fazı ile T fazının yerini değiştirdim diyelim. Yukarıdaki işlemi tekrarladığım zaman bana yine kesme içinde %110 bilgisini verecektir. Ama fazların yerini değiştirdim. Aslında şimdiki sıram R-T-S şeklinde ama bunu bu yöntem ile tepsit edebilmem imkansız.
Bu noktayı aşabilirsek bu yöntem kısa ve basit olacak.
Ete



fatih88

süre ölçmeden bence zor hocam
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

elektro77

Çalışan ne. Kodlar olmadan anlayabilecegimizi düşünmüyorsunuz heralde değilmi.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

#18
Çalışan kodlar burada,
Ete
#CONFIG
  __CONFIG _CP_ALL & _WRT_256 & _CPD_ON & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
#ENDCONFIG 
'-------------------------------------------------------------------------------
define OSC 4
DEFINE LCD_DREG        PORTC    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        4        'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG        PORTC    'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT        3        'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG       PORTC    'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT       2        'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS        4        'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES       2        'LCD Kaç sıra yazabiliyor

DEFINE LCD_COMMANDUS   2000     'Command delay time in us
DEFINE LCD_DATAUS      50       'Data delay time in us

'-------------------------------------------------------------------------------
TRISA=%00000111
TRISB=%01110000
TRISC=%00000000
portb=0
PORTC=0
'------------------------------------------------------------------
ADCON1=%10001110                '7. bit 1 yapıldı 10 bit sonuç almak için.
INTCON=%11001000                'PORTB değişiklik kesmesi aktif
'T1CON =%00000000                'Bölme oranı 1/1yapılacak
CMCON=7
'-------------------------------------------------------------------------------
symbol faz_R=portB.4
symbol faz_S=portB.5
symbol faz_T=portB.6
KONT var bit
TEMP VAR BYTE
FAZ VAR  BYTE

'---------------------------------------------------------------
LCDOUT $FE,1
PAUSE 250
LCDOUT $FE,$80,"LUTFEN  BEKLEYIN"
PAUSE 1000
ON INTERRUPT GOTO KESME

sira:
       IF FAZ=123 THEN
LCDOUT $FE,$80,"FAZ SIRASI:R-S-T"
   ENDIF
       
   IF FAZ=132 THEN
         LCDOUT  $FE,$80,"FAZ SIRASI:R-T-S"
       ENDIF
       IF FAZ=0 THEN
         LCDOUT $FE,$80,"FAZ SIRASI YOK"
       ENDIF
       GOTO SIRA
             


DISABLE
KESME:
      IF FAZ_R=0 THEN
        KONT=1
      ELSE
        KONT=0
      ENDIF
     
      IF KONT=1 AND FAZ_S=1 THEN
        FAZ=123:KONT=0
      ENDIF 
      IF KONT=1 AND FAZ_T=1 THEN
        FAZ=132:KONT=0
      ENDIF
     
      INTCON.0=0
      TEMP=PORTB
      RESUME
      ENABLE
           

LCD bağlantısını C portuna yaptım. Kodlardan bacaklarını tespit edebilirsiniz.
PORTB değişiklik kesmesi uygulandı ve PORTB.4-5-6 pinleri faz girişlerine ayrıldı. Bu pinlere optocoupler kullanılarak birer sıfır geçiş dedektörü yapılıp çıkışlar bu pinlere bağlanacak. Böylece sistem faz sırasını belirleyecek.
Unutmayın PORTB.4 pinine bağlı olan faz daima R fazı kabul edilecek. Diğer ikisi tercihinize göre ekrana R-T-S veya R-S-T şeklinde bağlantıya göre yansıtılacaktır.

Ete



elektro77

Hocam ellerinize saglik. Fakat bu isin mantigi tam olarak bumudur. Neden STR veya TSR diye ayir edemiyoruz. Mantigini cozmemde yardimci olurmusunuz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Faz isimleri sanaldır. Bu isimleri biz veriyoruz zaten.
Bu nedenle birisini en başta R olarak kabul ediyoruz. Diğerlerinide sırasını bulup R_S_T yada R_T_S olarak adlandırıyoruz.
Açıklama budur.
Ete

elektro77

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

hocam projeyi ekteki şekilde tamamladım sayılır.
fakat grammer de bazı hatalarım olduğunu düşünüyorum veya biliyorum.
lcd de stabil ve düzenli bir görüntü alamadım.
Bir bakıp düzeltmemi sağlayabilir misiniz?

faz değişimi anında O anki faz sırasını ekrana yazdırma işlemini önemsemeden yaptım. Daha doğrusu yapabildim.
Konfigürasyon ayarlarım ve diğer ayarlarım doğru mudur, onuda bi inceler misiniz.
devre ve kodlar ekdedir.
'****************************************************************
'*  Name    : FAZ SIRASI KONTROL.BAS                            *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2018 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 23.11.2018                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F876A
@ DEVICE pic16F876A, WDT_OFF
@ DEVICE pic16F876A, PWRT_ON
@ DEVICE pic16F876A, PROTECT_OFF
@ DEVICE pic16F876A, XT_OSC
'-------------------------------------------------------------------------------
define OSC 4
DEFINE LCD_DREG        PORTC    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        4        'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG        PORTC    'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT        3        'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG       PORTC    'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT       2        'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS        4        'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES       4        'LCD Kaç sıra yazabiliyor
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us
DEFINE ADC_BITS 10     ' Set number of bits in result
DEFINE ADC_CLOCK 3     ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50     ' Set sampling time in uS

'-------------------------------------------------------------------------------
TRISA=%00000111
TRISB=%01110000
TRISC=%00000010
portb=0
PORTC=%00000000
'------------------------------------------------------------------
ADCON1=%10001001               '7. bit 1 yapıldı 10 bit sonuç almak için.
INTCON=%11000000                'INTCON.7 ve INTCON.6 bitleri SET edilecek.
T1CON =%00000000                'Bölme oranı 1/1yapılacak
CMCON=7
'OPTION_REG=%10000101            'Pull up dirençleri İPTAL- Bölme oranı 1/64.
'-------------------------------------------------------------------------------
symbol SIRAHATALI=portc.1
symbol role=portc.0
ham1 var word
ham2 var word
ham3 var word
RV VAR word
SV VAR word
TV VAR word
'---------------------------------------------------------------

LCDOUT $FE,1
PAUSE 250

BASLA:

IF SIRAHATALI=0 THEN
role=1
GOSUB HATA
ELSE
ROLE=0
ENDIF

IF RV<50 or sv<50 or tv<50 THEN
role=1
GOSUB FAZYOK
ELSE
ROLE=0
ENDIF     
GOSUB OKU


GOTO BASLA

OKU:
'-----------------------------ADC 1---------------------------------------------
ADCIN 0,HAM1               
LCDOUT $FE,$C0,"R= ",# RV,"V           "'"RHAM=",# HAM1,"    ":
Ham1=ham1+1 'Hesap kolaylığı açısından Ham değerini bir artırdık
RV=(ham1 */ 1250)   '(380 voltta)Ham ile 1250 ı 32 bit olarak çarp.. 380 volt ölçeceğimiz için çarpan 1250 eder
'     Mvolt=volt//10
RV=RV/10             
'-----------------------------ADC 2---------------------------------------------       
ADCIN 1,HAM2
lcdout $FE,$94,"S= ",# SV,"V           "'"SHAM=",# HAM2,"    "
Ham2=ham2+1
SV=(ham2 */ 1250)   '(380 voltta)Ham ile 1250 ı 32 bit olarak çarp.. 380 volt ölçeceğimiz için çarpan 1250 eder
'       Mvolt=volt//10
SV=SV/10   
'-----------------------------ADC 3---------------------------------------------
ADCIN 2,HAM3       
LCDOUT $FE,$D4,"T= ",# TV,"V           "'"THAM=",# HAM3,"    "
Ham3=ham3+1
TV=(ham3 */ 1250)   '(380 voltta)Ham ile 1250 ı 32 bit olarak çarp.. 380 volt ölçeceğimiz için çarpan 1250 eder
'       Mvolt=volt//10
TV=TV/10
'-------------------------------------------------------------------------------
RETURN


'-------------------------------------------------------------------------------
HATA:
LCDOUT $FE,$80,"      DIKKAT         "
LCDOUT $FE,$C0," FAZ SIRASI HATALI   "
LCDOUT $FE,$94,"  LUTFEN FAZLARI     "
LCDOUT $FE,$D4,"   KONTROL EDIN      "
PAUSE 100
return
'-------------------------------------------------------------------------------
FAZYOK:
IF RV<50 THEN
LCDOUT $FE,$C0,"DIKKAT R FAZI YOK   "
lcdout $FE,$94,"S= ",# SV,"V"
LCDOUT $FE,$D4,"T= ",# TV,"V"
PAUSE 250
ENDIF

IF SV<50 THEN
LCDOUT $FE,$C0,"R= ",# RV,"V   "
lcdout $FE,$94,"DIKKAT S FAZI YOK   "
LCDOUT $FE,$D4,"T= ",# TV,"V"
PAUSE 250
ENDIF

IF TV<50 THEN
LCDOUT $FE,$C0,"R= ",# RV,"V   "
lcdout $FE,$94,"S= ",# SV,"V   "
LCDOUT $FE,$D4,"DIKKAT S FAZI YOK  "
PAUSE 250
ENDIF

return
     
END
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Ne ayarından bahsediyorsun onu bilmiyorum ama ben sana programın nasıl olması gerektiğini verdim sen ise tamamen farklı bir program bana yolluyorsun. Bunu daha öncede verdin bu sistemle faz sırası bulman bence pek mümkün değil.
Yinede programını denedim. Ekran çalışıyor göstereceklerini gösteriyor sorun yok gözüküyor. Simulasyonu faz sırasını değil faz kopukluğunu tespit ediyor bence.

Bu donanımda banim kafama hiç yatmadı. Bu şekilde bir sistemle çalışmak hem çok tehlikeli hemde kullanılabilir değil. Tabiiki bana göre böyle sen çalışır diyorsan yapmaya devam et.
Ete

elektro77

Peki hocam.
Bana opto ile yapılmış sizin beğendiğiniz veya çalıştırdığınız örnek bir sıfır geçiş devre şeması önerebilirmisiniz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

İlişiktekini kullandım programı test etmek için
Ete

elektro77

Ekteki devre ve kodlarda fazın biri yok iken role surekli kendini çekip bırakıyor.
sebebini bir türlü anlayamadım. bakabilir misiniz lütfen.
Bu arada ete hocam bu devrede faz sırasını değilde herhangi bir fazın  yer değiştirdiğini ölçen 4013 devresi mevcut.
tüm çalışmalarımı bu sisteme göre yapıp sizin gönderdiğiniz opto kuplör devresini kurucam. kesmeyide bu kodlara ekleyeceğim.
fakat şu role açıp kapama sorununu bir türlü çözemedim. Yardımcı olursanız sevinirim.

@ DEVICE pic16F876A
@ DEVICE pic16F876A, WDT_OFF
@ DEVICE pic16F876A, PWRT_ON
@ DEVICE pic16F876A, PROTECT_OFF
@ DEVICE pic16F876A, XT_OSC
'-------------------------------------------------------------------------------
define OSC 4
DEFINE LCD_DREG        PORTC    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        4        'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG        PORTC    'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT        3        'LCD Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG       PORTC    'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT       2        'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS        4        'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES       4        'LCD Kaç sıra yazabiliyor
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us
DEFINE ADC_BITS 10     ' Set number of bits in result
DEFINE ADC_CLOCK 3     ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50     ' Set sampling time in uS

'-------------------------------------------------------------------------------
TRISA=%00000111
TRISB=%01110000
TRISC=%00000010
portb=0
PORTC=0
'------------------------------------------------------------------
ADCON1=%10001001                '7. bit 1 yapıldı 10 bit sonuç almak için.
INTCON=%11000000                'INTCON.7 ve INTCON.6 bitleri SET edilecek.
T1CON =%00000000                'Bölme oranı 1/1yapılacak
CMCON=7
'OPTION_REG=%10000101            'Pull up dirençleri İPTAL- Bölme oranı 1/64.
'-------------------------------------------------------------------------------
symbol SIRAHATALI=portc.1
symbol role=portc.0
ham1 var word
ham2 var word
ham3 var word
RV VAR word
SV VAR word
TV VAR word
'---------------------------------------------------------------
LCDOUT $FE,1
PAUSE 250

BASLA:
'*********************************ADC 1****************************************
ADCIN 0,HAM1               
Ham1=ham1+1
RV=(ham1*/125)
LCDOUT $FE,$C0,"R= ",# RV,"V             "       
'********************************ADC 2*****************************************       
ADCIN 1,HAM2
Ham2=ham2+1
SV=(ham2*/125)
lcdout $FE,$94,"S= ",# SV,"V             "   
'*******************************ADC 3*****************************************
ADCIN 2,HAM3       
Ham3=ham3+1
TV=(ham3*/125)
LCDOUT $FE,$D4,"T= ",# TV,"V             "
'******************************************************************************

IF RV<100 THEN
ROLE=1
GOSUB RYOK
ELSE
ROLE=0
ENDIF

IF SV<100 THEN
ROLE=1
GOSUB SYOK
ELSE
ROLE=0
ENDIF

IF TV<100 THEN
ROLE=1
GOSUB TYOK
ELSE
ROLE=0
ENDIF

IF SIRAHATALI=0 THEN
ROLE=1
GOSUB HATAYAZ
ELSE
ROLE=0
ENDIF

GOTO BASLA

'-----------------------------------------
HATAYAZ:
LCDOUT $FE,$80,"      DiKKAT       "
LCDOUT $FE,$C0," FAZ SIRASI HATALI "
LCDOUT $FE,$94,"  LUTFEN FAZLARI   "
LCDOUT $FE,$D4,"   KONTROL EDiN    "
PAUSE 500
LCDOUT $FE,1
PAUSE 250
RETURN
'---------------------------------------

RYOK:
IF RV<100 THEN
pause 200
LCDOUT $FE,$C8,"R FAZI YOK  "
pause 200
ENDIF
RETURN

SYOK:
IF SV<100 THEN
lcdout $FE,$9C,"S FAZI YOK  "
pause 200
ENDIF
RETURN

TYOK:
IF TV<100 THEN                     
LCDOUT $FE,$DC,"T FAZI YOK  "
pause 400
ENDIF
RETURN
'------------------------------------------   
END
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

Bu arada cok merak ettim bildigimiz multimetrelerle 380 volt ölçümü nasıl bir devre ile yapılıyor. Bilgisi olan varmı.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Yolladığın programda dediğin olmuyor. Röle çekili değil ve fazın anahtarını açtığğımda çekip öyle kalıyor açıp kapama yapmıyor.
Röleyi çalıştıran IF RV<100 THEN ve IF SV<100 THEN ve IF TV<100 THEN ile başlayan komut satırlarının hemen altındaki komut. Şart doğru değil ise röleyi her biri kapatıyor.

Sorun yok bana kalırsa
Ete

elektro77

Benim simulemde düzensiz aralıklarla kapatip aciyor.
Acaba gercekte olmayabilirmi hocam. Sizde neden olmadigini anlamıyorum.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Powered by EzPortal