Ana Sayfa Basit Elektronik Devreler PIC16F886 ile 11Bit ADC Okuma Ve LCD Voltmetre
Uygulamanın çalışma mantığı yukarıda bahsettiğim gibi ADC referans voltajını kontrollü değiştirmeye dayanıyor. 10 Bit dönüşümde referansı 2,5v uygularsak 2,5/1023=0,00244379~ v (yuvarlak 2,5 mv) hassasiyetli okuma yapabiliriz ancak bu durumda analog girişten en fazla 2,5v okunabilinir. 5v gerilimi aynı hassasiyette dönüştürmek için 2 ayrı 10 bit okuma yapmalıyız. o nedenle 5/2=2,5v referans kullandık. zaten datasheete göre bu gerilimin altına düşmek sağlıklı sonuçlar vermez. 2,5v referans elde etmek için direnç yada zener benzeri bir dönüştürücü kullanmadım. PIC16F886 donanımında dahili, ayarlanabilir referans voltaj çıkışı bulunmaktadır.
Referans voltaj çıkışının ilgili ayarları VRCON registeri ile yapılıyor. dier piclerde bu isim farklı olabilir. örneğin 16F88 de CVRCON diye yazar. şimdilik bu açıklamaları 16F886 için yapıyorum. VRCON registerini inceleyecek olursak önce datasheetdeki şu tabloya bakmalıyız:
Gördüğünüz gibi registerin 0,1,2,3 ve 5. bitleri referans çıkış değerini belirliyor. Burada önemli olan, VROE biti (6. bit) referans çıkışını RA2 portuna veriyor ve VREN (7.bit) ise 1 olarak ayarlandığında referansı aktif hale getiriyor. VRCON registerinin tamamına binary “11101100” değeri yüklendiğimizde RA2 den tam 2,5v referans voltajı almış oluruz. Ayrıca ADC için gerekli olan vref- ile aynı pini kullanıyor. referansı aktif ettğimizde vref- den bu voltajı direk okuyabiliriz.
Öncelikle şunu belirteyim ki, Örnek hazırladığım projenin yazılımı için CCS nin PCWHD derleyicisini kullandım. Bu normal C dili olmasına karşın PIC programlarken register atamaları yapmıyoruz. yerine uygun fonksiyon komutları kullanılıyor. dier dillerde yazmak isteyenler yukarıdaki bahsettiğim registerleri ayarlamak zorunda. derleyiciye PIC16f886 kütübhanesini eklerken yanında RA2 referans çıkış ayarı için kullanacağımız VRCON registerinin 6. bitinide dahil etmemiz gerekiyor.
sanırım derleyici buglarından biri bu olmalı 🙂 16F88 için bunu yapmaya gerek yok.
ve sıra geldik ana döngümüze. ilk önce ADC nin 0. kanalını açıp vref- yi VSS beslemeye yani şaseye, vref+ yı ise 2,5v olarak ayarladığımız referans çıkışımıza dahil ediyoruz ve ilgili ADC kanalını okuyup “ADC0” isimli 16 Bitlik word değişkenimize kaydediyoruz.
daha sonra, vref- yi 2,5v referansımıza dahil edip vref+ yı ise VDD yani +5v beslememize uyguluyoruz ve aynı kanaldan tekrar ADC dünüşümü yapıp dier “ADC1” isimli bir değişkene kaydediyoruz.
İNDİR.16F886 LCD 11Bit ADC
11Bit ADC Okuma
Önceki İçerikPreamplifikatör devresi
Sonraki İçerikPIC16F876 LCD Adım Ayarlı Step motor