‘Microchip PIC Programlama…’ Kategorisi için Arşiv

Adsız  Merhabalar. Uzun zamandır kendime ve bloğuma zaman ayıramadım. Yılbaşı tatilini fırsat bilerek daha önce yapmış olduğum çalışmalardan birini paylaşmak  istedim.

Boyutunun küçük olması, nadir bulunuşu gibi sebeplerle sağda solda görmeme rağmen hiç uğraşmadığım fakat DIY projecilerinin de sıkılıkla kullandığı bir grafik lcd ekran olan Nokia 3310-5110 ekranı ile biraz ilgilendim ve PIC-MikroC  için bir kütüphane oluşturdum.  Kütüphane dosyalarını paylaşmadan önce isterseniz bu ekranın nasıl çalıştığına biraz göz atalım.

PCD8544 isimli sürücüye sahip bu ekranlar 84×48 piksel (enlemesine 84, boylamasına 48 piksel) boyutlarındadır .  SPI arayüzüne sahip PCD8544 sürücüsü sayesinde az sayıda pin kullanılarak mcu bağlantısı yapılabilir. (daha&helliip;)

29069a52-4230-4af6-a20b-d34740856334  Özellikle analog değerlerin dijital değerlere dönüştürülmesinde, + ve – referans voltajları önem kazanmaktadır. Referans voltajlarının değerleri bütün ölçümü etkilemektedir. Yandaki karikatürde de görüldüğü gibi, ölçme işlemi sırasında neyi referans aldığımız çok önemlidir. PIC16f628A mikrodenetleyicisi içerisinde çok hassas olmamakla birlikte dahili bir voltaj referans modülü bulunmaktadır. Bu modül pek bilinmez/kullanılmaz. Şimdi voltaj referans modülünün kullanımına bir göz atalım. İlk olarak VRCON isimli registera bir göz atmakla işe başlayalım. (daha&helliip;)

shutterstock_18511663-578x385 CCP birimine ait bir diğer mod olan Compare (karşılaştırma) modunda 16 bit değerindeki CCPR1 register çiftinin değeri TMR1 sayıcı register çiftinin içeriği ile  sürekli karşılaştırılır. Karşılaştırma sonucunda bir eşitlik var ise bir kesme oluşur ve RB3/CCP1 pini high seviyeye / low seviyeye çekilir veya durum değiştirmez.  Kesme oluştuğunda yapılacak işleme CCP1CON registerının CCP1M<3:0> bitleri ile karar verilir.  Kesme oluştuğunda CCP1IF bayrağı 1 değerini alır. Eğer RB3 pini çıkış olarak kullanılacaksa “TRISB” registerının 3. biti 0 yapılmalıdır.  Compare kesmesinin olulşabilmesi için Timer1, senkron sayıcı veya  zamanlayıcı modunda çalıştırılmalıdır.  Aşağıdaki blog diyagramda Compare modu anlatılmaktadır. (daha&helliip;)

Adsız  PIC  mikrodenetleyicilerin çoğunda bulunan CCP biriminin 3 görevi bulunmaktadır. Bunlar Capture/Compare/PWM görevleridir. PWM konusunu daha önce incelemiştik. Şimdi Capture üzerinde duracağız. Capture birimi girişten (PIC16f628a’da RB3) gelen sinyaller arasındaki süreyi ölçmemizi sağlar. RB3 pininden gelen sinyalin her düşen kenarında, her yükselen kenarında, her 4 yükselen kenarında veya her 16 yükselen kenarında bir kesme oluşturur.  Kesmenin hangi aralıkta oluşacağına biz karar veririz.  Yani aslında dışarıdan gelen sinyalleri yakalamış ve aralarında geçen süreyi ölçmüş oluruz. Capture pek çok yerde kullanılabilir ve çok yararlı bir özelliktir. PIC16F628A mikrodenetleyicisinin kataloğunda bulunan blog diyagramı inceleyelim. (daha&helliip;)

Adsız  Mikrodenetleyiciler ile dc motorların hız kontrolü, ledlerin parlaklığının değiştirilmesi gibi uygulamaların yanısıra, PWM elektrik ve elektronikte birçok alanda, farklı amaçlar için kullanılmaktadır. Telekomünikasyon, güç, voltaj düzenleyiciler, ses üreteçleri veya yükselteçler gibi çeşitli uygulama alanları ve farklı uygulamaları bulunmaktadır. PWM tekniğinin mantığı mikrodenetleyicinin pininden dışarıya çıkan 5V değerini sürekli olarak değilde kesik kesik çıkışa aktarmaktır. Diyelimki mikrodenetleyicimizin bir pininden bir saniye boyunca 5V, 1 saniye boyunca 0V alınmakta ve bu böyle devam etmektedir. Bu sinyalin ortalama voltajı 2,5V olur. Frekansı ise  f=1/T formülünden (1/2 saniye) 0.5Hz olarak bulunur. Bu pinden yarım saniye 5V, birbuçuk saniye 0V geliyorsa frekans yine 0.5Hz olmakla birlikte çıkış geriliminin ortalaması 1,25V olur. Yani frekans sabit tutularak sinyalin 5V değerinde kalma süresinin değiştirilmesi, böylelikle çıkıştaki ortalama voltajın ayarlnamasına darbe genişlik modülasyonu denilmektedir. Sinyalin 5V seviyesinde kaldığı saykıla görev saykılı (duty cycle) denilir. MikroC Pro derleyicisinde bulunan PWM kütüphanesi sayesinde işler oldukça kolaylaştırılmıştır.  (daha&helliip;)

Adsız Nümerik (rakamlardan oluşan) tuş takımları, güvenlik sistemlerinden cep telefonlarına kadar pek çok alanda kullanılmaktadırlar. Bu yazımızda MikroC Pro for PIC derleyicilerinde bulunan keypad kütüphanesinin nasıl kullanıldığını anlatmaya çalışacağız. Öncelikle keypad kütüphanesinde bulunan komutları inceleyelim. Bu komutlar :

  • Keypad_Init
  • Keypad_Key_Press
  • Keypad_Key_Click

komutlarıdır.  Keypad_init komutu tuş takımını kullanıma hazırlar, keypad_key_kepress komutu herhangi bir tuşa basıldığında tuşun değerini algılar, keypad_key_click komutu ise herhangi bir tuşa basılıp bırakıldığında basılan tuşun değerini algılar. Komutların işlevlerini açıkladık. Şimdi tuş takımlarının iç yapılarına göz atalım; (daha&helliip;)

1-wds18b20ire Dallas (Maxim) firmasının geliştirmiş olduğu datanın tek hat üzerinden gönderilip alındığı bir iletişim protokolüdür. Bu protokolde veri iletişimi sağlamak için tek kablo gerekmektedir.  DS18B20 sensörü  bu firmanın geliştirmiş olduğu tek hat üzerinden sıcaklık bilgisi gönderen bir sensördür. Bu sensörün datasheetine buradan ulaşabilirsiniz.

Tek hat iletişimin özelliklerinden birisi , tek hat üzerine birden fazla sensörün bağlanabilmesidir. Böylece birden fazla kabloya ve pine ihtiyaç duymadan bir çok sensörü okuyabiliriz. Bunu sağlamak için üretici firma her sensöre benzersiz 64 bitlik bir kimlik tanımlar. Biz ilk olarak okuyacağımız sensöre ait olan kimlik bilgisini gönderir ve diğer sensörlerin iletişime dahil olmasını engelleriz. Bir nevi telefon numarası çevirmeye benzeyen bir olaydır bu. (daha&helliip;)

Step motorlar robotikte ve endüstride çok kullanılan bir motor çeşitidir. Harddisklerde, disket sürücülerde kullanılırlar. Step motorlar isminden de anlaşılabileceği gibi normal dc motorlardan farklı olarak adım adım hareket eden motorlardır.  Motorun izin verdiği hassasiyette istenilen açıda ve yönde döndürülebilirler. Step motorlar piyasada adım sayısına, devir hızına, çalışma voltajına, çalışma akımına, çalışma şekline göre sınıflandırılırlar. Ayrıca step motorların bipolar ve unipolar olmak üzere iki çeşidi mevcuttur. (daha&helliip;)

  Timer 1’in en son işleyeceğimiz konusu olan asenkron sayıcı modu bu notumuzda derinlemesine inceleyeceğiz. Timer 1 bu modda çalışırken PIC’in dahili saat sinyalinden tamamen bağımsız olarak Timer1 registerının değerini arttırmaktadır. PIC uyku modunda bile olsa Timer1 bu modda saymaya devam eder. Tabiki bu modda harici bir saat kaynağı kullanılmak zorundadır. Harici saat kaynağı olarak bir osilatörden veya cihazdan gelen clock sinyali kullanılabileceği gibi, kristal osilatörlerde kullanılabilir.Timer1 modülünün içerisinde RB7 ve RB6 uçları arasına inşa edilmiş bir osilatör devresi mevcuttur ve dışarıdan bağlanacak kristal osilatör ile sayma yapabilir. Timer1 çok sık olarak bu uçlara bağlanacak 32.768 KHz değerinde bir kristal ile kullanılır. (daha&helliip;)

Bir önceki notumuzda Timer1’in zamanlayıcı olarak kullanılmasını incelemiştik. Bu yazımızda ise Timer1’in senkron sayıcı modda çalıştırılmasını inceleyeceğiz. Bir sonraki yazımızda ise asenkron modda bir osilatör ile kullanılmasına deyineceğiz. PIC16f628’in Timer1 modülünü kontrol eden T1CON registerının “TMR1CS: Timer1 Clock Source Select bit ” isimli bitini 1 yapar isek artık Timer1 için gerekli saat sinyalini PIC’in saat kaynağından ayırmış ve dışarıdan (RB6 veya RB7) almış oluruz. Artık timer1 mikrodenetleyicinin saat sinyalinden bağımsız fakat ona senkron bir şekilde çalışmaya başlar. Buradaki “senkron çalışma” ifadesi Timer1’deki artışların, kendi saat sinyalinden yeteri kadar pals almış olsa bile, PIC’in dahili sinyalini beklemesi gerektiği mânasındadır. T1OSCEN biti 0 iken eğer saat sinyalini RB6’dan uygular isek, saat sinyalinin her yükselen kenarında (eğer prescaler 1:1 ise tabiki) bir sayma işlemi yapılmış olur.  Eğer T1OSCEN biti 1 yapılırsa RB7 ucundan uygulanan saat sinyalinin de her bir yükselene kenarında bir sayma yapılır. (daha&helliip;)