POT KOMUTU

Başlatan F®T, 14 Ocak 2012, 16:29:51

F®T

herkese iyi çalışmalar.rb.0 kesmesi kullandığımız bir programda pot okuma komutunu kullandığımızda pot okumasında kesmeden dolayı hata oluşurmu.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Pot komutu , şarj deşarj sistemine göre zaman tutma prensibine dayanır ve Pot okuma sonucu alınmadan program kesme oluşsa bile kesmeye gidemez.
Oluşabilecek tek hata bu olabilir.

Ete

F®T

ETE hocam sıfır geçiş noktası yakalamak için rb.0 kesmesi kullanıyorum.adc si olmayan bir pic ile kesmeye etki etmeyecek pot okuyacak en sağlıklı yöntem yada komut ne oabilir acaba.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

AKlıma çok fazla yöntem gelmedi doğrusu.
Sıfır geçiş yakalıyorsan ya 20ms de bir yada 10 ms de bir kesme oluşacak demektir. O halde yapacağın sistem ya işini 10ms den daha az zamanda yapacak yada en azından 1-2ms lik bir sistem yapman gerekecek. Birinci yol olarak pot altına bağlanan kondansatör değerini küçük tutup şarj deşarj süresini kısaltabilirsin. Böylece kesme pot komutundan etkilenmez.

Diğer bir yöntem ise PortB değişiklik kesmesi kullanmak olabilir. Ancak kesme yalnızca kondansatör şarj edildikten sonra açılmalıdır. AYnı zamanda TMR1 sıfırlanarak kesme oluştuğunda TMR1 değeri deşarj süresi olarak kullanılır.
Böylece deşarj olan kondansatör pini LOW'a çeker ve kesmeyi oluşturur diye düşünüyorum. Kesme kısmında değişiklik kesmesi bayrağına bakılarak değişiklik kesmesi yeniden kapatılır ve aynı zamanda TMR1 değeri okunarak deşarj süresi alınmış olur. Biraz karmaşık gibi gözüküyor ama çalışır gibi geliyor bana. Denemek lazım.

Ete

est32


F®T

anladım hocam teşekkür ediyorum.dediklerinizi deneme yapıcam.

est32 teşekkürler.pot komutu kullanımı ile ilgili sorunum yok.sadece sıfır geçişi algılayıp triac a ateşleme yapıyorum bu arada pot ölçümünde sürekli değişken değerler oluşuyor.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

F®T

16f628a pot komutu İstediğim gibi olmuyor.16f88 olarak işlemci değiştirmeye karar verdim.adc ile halletmeye çalışıcam.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

est32

aslında o kadar da değişken değerler oluşmadı bende,sanıyorum bunda potun ve kondansatörün de önemi büyük,her ikisinin de kararlı olması gerek,ısı değişiminden çok etkileniyorlar.Birden fazla tuş okumam gerekiyordu ve tek boş pin vardı, ben de bu yöntemle tek pinden çoklu tuş okuma yaptım,tek sorun malzmeelerin ısı değişiminden etkilnemmesi gerekiyor.
şebeke frekansı sorun olabilir,tuş okuma yönteminde tarama yöntemi ile 7 segment ekran kullanıyordum ve pot komutu ekranda titreşime neden oluyordu. En sağlıklı yöntem adc olabilir

F®T

10MS de bir kesme oluşuyor kesme içindede triac ateşleme açısı için bir zaman kaybı oluşuyor.7segmentler pot okuması gibi işlere pek zaman kalmıyor.en iyisi adc olur heralde.ETE hocam bilemiyorum adc okumasındada bu tip bir sorun oluşurmu acaba.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Evet en iyisi ADC gibi gözüküyor.

Ete

ELZEMEFE

kullanılan PIC içi kristal 20mhz  olmalıdır . şu en bende zero croos için uğraşıyorum 4mhz di sonra 10 taktım bi kaç sıkıntı daha çıktı  20 khz kristal taktım.. daha yüksekle çalışan olsa takıcam yani... yada 18f serisine gececem.. bakalım ...

fikret152

Merahaba est32 arkadaşımızın paylaştığı devre ilgimi çekti konuyla belki biraz ilgisiz ama o devreyi kullanarak potun hangi değerde olduğunu görsel olarak görme imkanımız olduğuna göre bir motor kontrol devresindeki 5k lık pot ile kontrol edilen bir motorun devrinide hesapalayabiliriz gibi geliyor bana.Maksimum daki motor devrini bilmemiz yetebilir ona göre ekranda yaklaşık hangi devirde döndüğünü görebiliriz.Bunu görebilmemiz için devrede herhangi bir değişiklik yapmaya gerek var mı yoksa sadece programsal olarak yapmamız yeterli olur mu.Teşekkürler

est32

COUNT komutu bu iş için.
100mS yani 0.1 saniye devir sayılır 10 ile çarpılarak saniyedeki,sonra 60 ile çarpılarak dakikadaki devir bulunabilir.
istenirse 1 saniye boyunca sayım yapılır ama işlemci 1 saniye meşgul edilmiş olur.

fikret152

hocam ufak bi program parçası ile örnek gösterirmisiniz

F®T

COUNT PORTA.2, 1000, W1 ' Count for 1000ms =1saniye

DEVIR=W1*60   DEVIR/DAKIKA

port a.2 den alınan devir puls bilgisi 1000ms yada 1 sn deki puls adeti, 60 la çarpılıp devir dakika olarak bulunmuş olur.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal