Bir türlü çözemedim...

Başlatan solidus, 18 Mart 2006, 16:17:45

solidus

16f877 ile sayıcı bazlı bir devrede sayıcı"000" olduğunda bir çıkışı aktifleştirdim. ISIS simülasyonunun sorunsuz olduğunu görünce Bu çıkışı 1K lık bir dirençle BD 131 in beyzine verdim. Kollektör yükü olarak 5v luk bir röle çektirmek istedim ama...Röle ötüyor.. Beys direncini değişik değerli (1K altında olmayan ) dirençlerle değiştirdim ama olmadı. Neyi yanlış yapıyorum ?
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

argeelektronik

röle ötüyorsa susturman gerekiyor :P  bunuda 100mf lık bir kondansatörü rölenin voltaj verdiğin bacakları arasına tak sesi kesilmiş olur .
Altında Çürümekten Kurtulamıyacağın Topraklar Üzerinde Böbürlenerek Yürüme, Üzerine Tükürmeye Bile Miğdenin kaldıramıyacağı Kurtçuklara Yem Olacak Bedeninle...

CaFFeiNe

bir ihtimal 877 çıkışı hızlı bir şekilde kesilip geliyor olabilir programını dikkatli incelemeni öneririm

röle bobini fazla akım çekerek beslemeyi çökertmiyor değilmi? röleye direk 5V vererek çektiği akımı veya beslemenin düşüp düşmediğini ölçebilirsin

imkanın varsa BD131 yerine BC337 bağlayıp emiteri GND ye kollektörü röle bobinine bobinin diğer ucunuda +5V a bağlayıp deneyebilirsin

röle bobinine paralel 1N4007 gibi bir diyot bağlamayı kesinlikle ihmal etmemelisin (+5V a katot bağlanacak!)

ipek

877 Soketli ise cikar 1 k direncin beyz'de olmayan tarafi bir tel cimbiz vs
vs direkt + 5 volt ta ver problem devam etmiyor ise programi incele
logic 1 yerine gurultu geliyor demektir kolay gelsin.....

argeelektronik

hatanın yazılımda olduğu kesin ama buna rağmen yukarda söylediğim gibi röleye bir kondansatör takarsan röle titremez , transistörün beyzine jojik 1 kesik kesik geliyor buda röleyi hızla çekip bırakıyor ama kondansatör takarsan 1 varken kondansatör şarj olur yokken bir sonraki 1 gelinceye kadar röleyi çekik tutacaktır , bu şekilde işin görülmüş olur ama asıl sorun  çözülmüş olmaz , sorunu çözene kadar bu şekilde çalıştırabilirsin

@CaFFeiNe 'de söylediği gibi röleye diyot takmayıda unutma , bu diyotun  görevi rölenin bobininde oluşan ters fazlı palsları kısadevre ederek  transistöre veya pic zarar vermesini önlemek, burda Bd tipi transistör kullandığın için bu palslar Bd tipi transistörü yakamaz ama yinede tak en azından alışkanlık yapar
Altında Çürümekten Kurtulamıyacağın Topraklar Üzerinde Böbürlenerek Yürüme, Üzerine Tükürmeye Bile Miğdenin kaldıramıyacağı Kurtçuklara Yem Olacak Bedeninle...

solidus

Sevgili İpek dediğini yaptım sıkıntı yazılımda % 100 belli oldu. Fakat içinden çıkamadım bi türlü. Acaba sana pm den yada başka bir yolla ulaşsam ne dersin ?
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

ipek

sayin solidus hocalara mahcup olmak istemem bence yazilimin bir kismini
birak hocalar incelesin en iyi fikir bu gozukuyor kolay gelsin....

CaFFeiNe

programı buraya bırakırsan elbet zamanı olup ilgilenen biri çıkacaktır

stlg

Sevgili solidus
Arkadasım problemin programda oldugunu soyluyorsun bir role yi otturecek kadar pıcın cıkısını acıp kapayan bir program hatası nasıl olabilir
porta cıkıs bilgisini gonderdigin zaman bu bilgi cıkısa mandallanır eger bu arada cıkısa baska birsey yollamıyorsan bu cıkıs surekli orada kalır picinde bozulmuş olabilirmi acaba arkadasların  dedigi gibi programının bir kısmını buraya koy bakalım birde isisde bu pıc cıkısına osilaskopu bagla bakalım neler oluyor kolay gelsin


            ALLAHA EMANET OLUNUZ
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

solidus

İlginize çok teşekkür ederim.Değişkenlerin içerisinde ARM olarak tanımlanan çıkışı röle ile sürmek istiyorum.Sayç kısmını TMZL değişkeni ile 000 yaptığımda rölede ötme oluyor. İşte programım:
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

Veli B.

Birden fazla hata var.Sanırım bir algoritma hazırlamamışsın.Olmaması gereken dallanmalar ve asla çalışmayacak dallanmalar mevcut programında.Sorun dallanmalarının düzensiz olmasında sanırım.Sanırım diyorum çünki baştan sona dallanmaları takip edemedim. :? Tavsiyem önce sağlam bir algoritma hazırla ve programını sadeleştir.

IF ARTI=1 THEN GOTO BASLA 

BASLA: 
....

mesela artı 0 da olsa başladan devam edecekti.

GOTO SET 
GOTO BASLA

Bu dallanma zincirinde basla ya asla dallanamayacaksın.

GOTO SET 
GOTO SORGU
burada da sorguya dallanamayacaksın.

Bunun gibi hatalar var.Algoritma çok önemli.İhmal etme bu noktayı...

Birde lütfen kodlarını benim verdiğim gibi tag içinde ver. Okuması çok daha kolay olur.

forsa1975

Bende kodu incelerken doğrusu çok zorlandım. Katananın tavsiyeeri dışında dikkatimi çeken goto komutu çok kullanılmış.

birkaç yerde then bekle2 gibi
goto yazılmamış
(ama yinede compiler hata vermiyor)


basla:
call sorgu
call bekle
call bekle2
....
...
goto basla



şeklinde bir iskelet yapsan

ve örneğin sorgu altrutinini de aşağıdaki gibi yazsan (ifin
if .... and....and...and ... then
gibi kullanılması hex kodunu şişiriyor)

aynı şeyi

if... then

if... then

if ... then


endif
endif
endif

ben yukarıdaki şeklde yazmayı tercih ediyorum






SORGU: 
IF LNL=0 THEN ARM=0 
low LNL 

IF LNL=1 then
if HYD=0 then
if TMZL=0 then 
if BAGL=000 OR BAGL>=641 THEN ARM=0 
if BAGL>=001 OR BAGL<=641 THEN ARM=1 
endif
endif
endif

if LNL=0 then
if HYD=1 then
if TMZL=0 then
if BAGL>=001 OR BAGL<=641 THEN ARM=1 
endif
endif


if HYD=0 then
if  TMZL=1 then
if BAGL>=001 OR BAGL<=641 THEN ARM=1 
endif
endif
endif


IF LNL=0 then
if  HYD=0 then
if TMZL=0 THEN Goto BEKLE2 
endif
if HYD=1 OR TMZL=1 THEN goto SON 
endif





IF LNL=1 AND HYD=0 AND TMZL=0 AND BAGL=000 OR BAGL>=641 THEN ARM=0


yukarıdaki satır dışında arm nin 0 olduğu satır yok.
Dolayısı ile birşekilde bu satır sürekli çalışıyor. Bunu sağlayabilecek değişkenlerin değerlerini kontrol etmelisin.


IF LNL=1 then
if HYD=0 then
if TMZL=0 then 
if BAGL=000 OR BAGL>=641 THEN ARM=0 
if BAGL>=001 OR BAGL<=641 THEN ARM=1 
endif
endif
endif


ben kendi yazma şeklime göre bu şekle getirdim yazılımı.
Buda gösteriyorki tmzl 0 olunca

if BAGL=000 OR BAGL>=641 THEN ARM=0 
if BAGL>=001 OR BAGL<=641 THEN ARM=1


yukarısı işliyor

burada dikkatimi çeken   (BAGL<=641 ve BAGL>=641  ) bagl 641 olduğunda röle önce bırakacak sonra hemen çekecektir.

Burada = in birini kaldırmanı tavsiye ederim satırın birinde sadece < yada > işareti olursa  ve başka sorun yoksa problemin çözülebilir.

Kolay gele

solidus

Hemen deniyorum sonucu yazacağım arkadaşlar ilginize tekrar teşekkür ederim.
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

solidus

Sevgili KATANA ve sevgili FORSA1975 sanırım problem çözüldü.ISIS de sorun yok.Devreyide yeniden kurup tekrar yazılımı yükleyeceğim. İlginize çok teşekkür ederim. PicProjeyi Seviyorum  :)
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

solidus

Oldu arkadaşlar çalışıyor artık. Tekrar teşekkür eder çalışmalarınızda başarılar dilerim.
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..