simülasyonda çalışan butonun devrede farklı bir şekilde çalışması...?

Başlatan myprayer14, 12 Mayıs 2015, 01:15:25

myprayer14

Devre şeması

Devre için yazılan kod
asm
   __CONFIG    _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
   __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
   __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
   __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
endasm
DEFINE OSC 8
OSCCON=%01110110   

CMCON=%00000111
ADCON1=%00001111




trisa=%00000111
trisc=%00000000


porta=0
portb=0
portc=0



symbol btn1=porta.0
symbol btn2=porta.2
symbol btn3=porta.3
symbol L1=portc.0
symbol L2=portc.1
symbol L3=portc.2
symbol L4=portc.3



motor:  if btn1=1  then
        High L1
        pause 100
        high L3
        endif
       
     
       
        goto motor
        end



sorun şu ki Devre de butona bir kere bastığımda simülasyonda normal bir şekilde motor dönüyor ancak baskı devrede ise butona basılı tuttuğumda çalışıyor elimi çektiğimde motor duruyor. bu çok basit nedenin neden kaynaklandığını bilen varsa yardımcı olabilir mi?
(pic 18f2520)
(push buton kullanıyorum)

kgguler

Motor pic icin reset paraziti üretiyor olabilir.Motor,röle gibi bobin özelliği taşıyan yüklerin beslemesini ayrı bir kaynaktan yapmanızda fayda var.Ayrıca optokuplör kullanmanız uygun olur.Pic-parazit arama yaparsanız daha detaylı bilgiye ulaşabilirsiniz.

er-da

butona basmayı bıraktığında   if btn1=0  oluyor da ondan....

ete

Butonu bıraksanda Lı1 ve L3 bitlerini HIGH yapmış isem kendi kendine LOW olmaması gerekir.
Bu işin buton ile alakası yok olsa olsa WDT programı resetleyip sürekli baştan başlamasına sebep oluyordur.

Sigorta ayarlarından WDT_OFF olarak ayarlayıp yeniden denemelisin.
Aslında mevcut halinde,  Motor: etiketinden önce 200ms lik bir gecikme koy bu zaten açılış gecikmesi olarak gereklidir.
Bu satırın altına HIGH PORTC.7 satırını ekle.
Sonra programı çalıştır bakalım PORTC.7 nin HIGH olup orada kalması gerekir. Şayet oda bir LOW bir HIGH oluyorsa program kesin reset atıyor demektir. WDT_OFF yapılarak bu sorun giderilir.

Ete

myprayer14

Ete hocam, dediğiniz gibi zaten denemiştim. Wdt_off yaptım yine bir değişiklik olmadı. Portc.7 deneme yap demişsiniz. Benim normalde port c0 ve c2 de low olmuyor simülasyonda sürekli high da kalıyor. Port c7 de de olmaz yani. Ama asıl baskı devremde sürekli highda  kalmıyor.

ete

Sorunu anlamıştım yeniden izah etmene gerek yok idi. Bu yüzden dediğim denemeyi önermiştim.
O pinler yalnızca tuşa basınca HIGH yapan ve bırakınca LOW yapan bir komut yok ise kendi kendilerine ancak ve ancak WDT veya başka bir reset faktörü LOW yapabilir. Bunun dışında bir alternatif yok ki. Sen yinede PORTC.7 denemesini yap ve sonucu söyle.
Mümkünse PCB şemasınıda buraya koy. Bir yerde hatan var ama göremiyorusn mutlaka.

Programın tamamını verdiğinden eminmisin?
Zira başka kısımlarda PORTC=0 gibi bir komut kullanmış isen buda portu LOW a çeker.
Yada işlemcin bozuktur.

Ete

Maxim

kesin config hatası falan var yoksa o kodun çalışması gerekirdi
ete abinin dediği gibi sen çıkışı high yaptıktan sonra kendi kendine low olmaz

mesela portc.7 neden high kalıyor yazayım
en başa RCSTA.7=0 yazmalısın
çünkü işlemcinin o ayakları default uart tanımlıdır.

myprayer14

portc.7 de belli bir voltaj gözükmüyor. programın hepsi o kadar bir şey değiştirmedim. pic programlayıcıyla ilgisi bi sıkıntı yaşadığımdan yeni bir brenner devresi yaptığım için dönmem uzun sürdü kusuruma bakmayın. config. ayarları içinde wdt'yi off yaptım sonuç değişmedi başka bi ayarın resetle ne ilgisi olabileceğini bilmiyorum.

myprayer14

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 2.5.2015                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 27.12.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

asm
   __CONFIG    _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
   __CONFIG    _CONFIG2H, _WDT_OFF_2H & _WDTPS_512_2H
   __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
   __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
endasm
define osc 4
OSCCON=%01110110
CMCON=%00000111
ADCON1=%00001111
trisa=%00000111
trisc=%00000000
porta=0
portb=0
portc=0
symbol btn1=porta.0
symbol btn2=porta.2
symbol btn3=porta.3
symbol L1=portc.0
symbol L2=portc.1
symbol L3=portc.2
symbol L4=portc.3

MOTOR:
HIGH L1
HIGH L3
GOTO MOTOR
     



böyle deneme yaptığımda butona gerek kalmadan portc.0 ve portc.2 nin çıkışları 5v olması gerekmiyor mu? ama 0gerilim . acaba sorun baskı devre de mi ?


İlyas KAYA

Açıkcası bu pcb nin yerinde olsam bende çalışmam :))

İlk gördüğüm hatalar ;

- PIC beslemesi yakınında 100 nf kondansatör yok.

- Beslemenin hiçbir yerinde kondansatör de göremedim. 7805 çıkışına (5volta) 1000u/16v ve 10u/16v kondansatör bağla. Girişine ise 220u/63v ile 47u/63v kondansatör bağla.

- 5volt ve besleme girişine 1n4148 diyotu şaseye göre ters bağla. (bu pic akımlarını ve anlık yüksek gerilimlerden pic 'in resetlemesini engelliyor)

- Motor uçlarına ters hızlı diyotlar yok. (her çıkış için 2 adet- tıpkı köprü diyot gibi)
- PCB hatları çok zayıf ve güç hatları PIC üzerinden geçiyor. Motor çıkışları besleme girişine en yakın yerde olmalı ve PIC besleme hatları motor beslemesine göre daha uzak olmalı. Unutma ki akım en kısa yolu takip eder.
- MCLR 'yi yazılımdan iptal et.
- BOR konfigrasyonu var ise 2.1 volt olarak set et. 4.5 volt standart olarak gelir. Beslemeye yüklendiğinde PIC reset atar. Kullandığın PIC'de bu özellik var mı bilmiyorum ama yeni nesil PIC'lerde var. Datasheet'i incelemen gerekir.

Şimdilik bunlar gördüklerim.

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

myprayer14

Bu besleme için söylediğiniz kondansator ler pek çok devre için gerekli sanırım, bilmiyordum. Çünkü sadece motoru sağa sola döndürmek için röle ler ile de yapmıştım aynı devreyi çok fazla  malzeme yoktu yine aynı sorun vardı. Birde motordan evvel en son yorumunda dediğim gibi butonları hiç aktif etmeden sadece cikislari(her hangi birini)  high yapsamda  belli bir voltaj değeri gözükmüyor pic in bacaklarında.

İlyas KAYA

Alıntı yapılan: myprayer14 - 20 Mayıs 2015, 21:23:18
Bu besleme için söylediğiniz kondansator ler pek çok devre için gerekli sanırım, bilmiyordum. Çünkü sadece motoru sağa sola döndürmek için röle ler ile de yapmıştım aynı devreyi çok fazla  malzeme yoktu yine aynı sorun vardı. Birde motordan evvel en son yorumunda dediğim gibi butonları hiç aktif etmeden sadece cikislari(her hangi birini)  high yapsamda  belli bir voltaj değeri gözükmüyor pic in bacaklarında.

Motoru söküp yerine bir tane LED'i direnç ile bağla. Öyle dene bakalım ne olacak.

Role de kullansanız aynı sıkıntıları yaşarsınız değişen herhangi birşey olmaz.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

myprayer14

Alıntı yapılan: İlyas KAYA - 20 Mayıs 2015, 22:51:17
Motoru söküp yerine bir tane LED'i direnç ile bağla. Öyle dene bakalım ne olacak.

Role de kullansanız aynı sıkıntıları yaşarsınız değişen herhangi birşey olmaz.

denedim. sonuç aynı, basılı tuttuğumda Led yanıyor çektiğimde sönüyor.

İlyas KAYA

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Powered by EzPortal