12f675 kristal hassasiyeti

Başlatan unk4st, 19 Aralık 2022, 10:07:13

unk4st

Merhaba, burada ve elektronikte yeniyim.
Ucuz bir şekilde zamanla tetikleyici devre yapmaya çalışıyorum. Koşullara göre 7 günde 1, 5 günde 1 ve 3 günde 1 yine koşula bağlı 3 veya 7 dk çalışacak şekilde motor sürülecek. Bunu 3 veya 4 4017 ile yapmayı denedim ucuza gelsin diye ama pic ile daha ucuz olacağı tavsiyesi aldım. Asıl sorunlarım şunlar;

1- 12f675 bu sistemde dahili 4MHz kristali ile sorunsuz bir şekilde +-%10 sapmalı olsa da çalışır mı? yoksa RTC kullanmam şart mı? harici 20MHz kristal ile kurtarabilir miyim?

2- 12f675 de GPIO bacaklarını proton basic de nasıl kodlayabilirim? Alternatif olarak CCS C öğrenmeye çalışıyordum başka bir derleyici yani yazılım programı önerecek olsanız ne önerirdiniz?

ete

#1
Çok hassas bir zamanlama gerekiyor ise pek çok RTC bile bu konuda yetersiz kalabilir.
Pic işlemcilerdeki dahili osc fabrikasında kalibre edilerek satışa sunuluyor. Ancak bu osc ler sıcaklıkla değişkenlik gösterir. Ortam yada işlemci ısındıkça OSC hızlanır soğudukça yavaşlar.
Değişim +- %20 seviyelerine kadar bile çıkabilir.
Aynı durum RTC ler daha doğrusu dışarıdan kristal kullanan RTC ler içinde geçerlidir. Hemen hepsi sıcaklıkla hızlanır soğudukça yavaşlarlar.

Diğer bir sorunda saat saydırma için referans olacak 1sn (1000ms) lik süre sayımı için net bir değer alınamamasıdır. Diyelimki 12F675 kullanıyorsunuz. Bu saat palslerini alabilmeniz için elinizdeki alternatifler 8 bitlik TMR0 sayacı yada 16 bitlik TMR1 sayacıdır.
8 bitlik sayac ile bu kadar büyük bir zaman (işlemci için gerçekten büyük bir zaman dilimidir) dilimini elde edemezsiniz. O zaman elinizdeki alternatif zamanı dilimlere bölerek dilim saymanız şeklinde uygulamadır. Bunun için diyelimki 100ms lik dilimler elde ederek 10 dilim saydığınızda 1000 ms lik süreyi yakalamış olursunuz.OSC frekansı büyüdükçe (mesela 20 Mhz) bu süreleri yakalamak dahada zorlaşır. O nedenle siz yinede 4Mhz lik frekansı kullanın. Bu frekansta bile 100ms lik süre yakalamak zor TMR0 sayacı ile ozaman dilim düşüreceksiniz demektirki en uygun seviye 50ms dir ve bunu bile saydırırken süre 50,183ms olarak saydırabilirsiniz.
16 bitlik sayac ile yaparsanız iş biraz daha kolay. 100ms lik süre için bu sayacla 100,001 ms lik bir hassasiyet yakalarsınız. Sonuç olarak komut gecikmelerinide dikkate alırsanız direk işlemcinin saat saydırması pek hassas olmayacağı kesin. Bu söylediklerim üstelik OSC frekansının hiç değişmediği varsayılarak hesaplanmış değerler. OSC ninde sıcaklığa bağlı değişeceğini dikkate alırsak sapmaların daha fazla olacağı kesindir.
Bu sorunun çözümü TXO denilen sıcaklık kompanizasyonu yapılmış OSC ler kullanmaktır. DS3231 veya DS3232 isimli RTC de ise bu TXO osc kendi içinde yer alır ve bildiğim piyasadaki en kararlı çalışan RTC dir. Data sheet +-2 ppm olarak sapma miktarını vermiş ki bu yaklaşık bir milyon işlemde 2 birimlik sapmaya eşdeğerdir. Bu RTC ile yapmış olduğum saatleri neredeyse 5 yıldır hiç ayarlamadım. Bazılarında ufak tefek sapmalar var ama yıllık bazda dikkate alınacak sapmalardan bahsediyoruz.

Kimse pic işlemcinin dahili OSC sininin sapmasının %10 sapma sınırları içinde kalacağını garanti edemez. Ancak ortam sıcaklığını hep 25 derecede tutarsan ben garanti ederim.
12675 işlemcinin kötü bir özelliği var. Fabrikasyon kalibrasyon değerini flash (program) hafızasının son adresine yazmışlar ve işlemciyi durduk yere silersen bu değerde siliniyor ve tekrar aynı değerin bulunması için tekrardan kalibre edilmesi gerekiyor. O nedenle dikkat edilmesi gerekiyor.

Programlama meselesine gelince, işlemciyi nasıl kodlarım sorusu fazla genel bir soru olmuş. Cevabını sende biliyorsundur sanırım. Kodlamayı öğrenerek. Belirli bir tercih yapmışsın Proton yada C dili diye bunlara ait kitaplar var ve okuyup deneyler yaparak bu yeteneği kazanabilirsin.
Bulursan birde özel kurs veren birini bulup ücreti mukabili kurs alabilirsin.

Bu site genelde Pic Basic Pro kısaca PBP şeklinde isimlendirilen programlama dili üzerinde çalışıyor. Elbette başka derleyicilere de yer veriyoruz ama sitede ararsan BASIC DERSLERİ diye bir bölüm göreceksin. Bu bölümde başından başlayarak programlama dili öğretilmektedir. Bir çok örnekde verilerek bilginin deneyerek algılanması sağlanmıştır. Bu dersler yardımı ile yüzlerce kişi bu işi öğrendi sende başarabilirsin. Hiç bir şey bulamaz isen en azında bu şekilde başlarsın. Takıldığın yerde konu başlığı açıp sorunu sorabilirsin. Hem Proton hemde PBP bilen bir çok üyemiz var ve sana yardımcı olacaklardır. Ama unutma "nasıl programlarım" gibi genel soru yerine "şu komutu nasıl kullanırım" gibi daha spesifik sorular sormanda yarar var. Genelde çok geniş anlam taşıyan sorulara kimse cevap vermez zaten veremezde. Bunu unutma.

Ete

amatör

Slamlar bütün hocalarıma Sayın Ete hocam bana bi konuda yardım edebilirmisiniz. Lütfen kuluçka devresini sht10 ile çalıştırdım fakat yumurta viyolunu çevirirken sistem kendine reset atıyo kodda bir hata var sanırım işlemci kısır döngüye mi giriyo anlamadm koda bir göz atabilirseniz çok sevinirimBu eki görüntüleyemezsiniz.

Serk@n

#3
Alıntı yapılan: amatör - 19 Aralık 2022, 20:00:10Slamlar bütün hocalarıma Sayın Ete hocam bana bi konuda yardım edebilirmisiniz. Lütfen kuluçka devresini sht10 ile çalıştırdım fakat yumurta viyolunu çevirirken sistem kendine reset atıyo kodda bir hata var sanırım işlemci kısır döngüye mi giriyo anlamadm koda bir göz atabilirseniz çok sevinirimBu eki görüntüleyemezsiniz.


Sorunuzu "üye projeleri" kategorisinde yeni bir başlık altında ve devre şemasını ekleyerek sorarsanız, sorunuzu daha fazla kişinin görme ve cevaplama imkanı olur. Bu başlık altında başka bir üyenin sorusu bulunduğundan mesajınız fark edilmeyebilir. 
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

amatör

teşekkür ederim serkan hocam ben yeni sayılırımda saygılar

Serk@n

Alıntı yapılan: amatör - 19 Aralık 2022, 20:54:13teşekkür ederim serkan hocam ben yeni sayılırımda saygılar

Tamam onun için yazdım. Forumdan daha sağlıklı istifade edebilmen için.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Powered by EzPortal