{"id":567,"date":"2013-07-24T23:30:46","date_gmt":"2013-07-24T20:30:46","guid":{"rendered":"http:\/\/devrearsiv.com\/?p=567"},"modified":"2013-09-14T21:03:14","modified_gmt":"2013-09-14T18:03:14","slug":"pic16f886-ile-11bit-adc-okuma-ve-lcd-voltmetre","status":"publish","type":"post","link":"https:\/\/devrearsivi.com\/pic16f886-ile-11bit-adc-okuma-ve-lcd-voltmetre\/","title":{"rendered":"PIC16F886 ile 11Bit ADC Okuma Ve LCD Voltmetre"},"content":{"rendered":"

<\/h3>\n

\u00a0PIC16F886 ile 11Bit ADC Okuma Ve LCD Voltmetre<\/h1>\n

\u00a0<\/strong><\/em><\/p>\n

\"1\"<\/a><\/p>\n

PIC16F886\u00a0ile yap\u0131lm\u0131\u015f LCD ekranl\u0131 11 Bit ADC d\u00f6n\u00fc\u015f\u00fcml\u00fc voltmetre.<\/strong><\/em><\/p>\n

Bu uygulamay\u0131 internetteki bir \u00f6rnekten faydalanarak haz\u0131rlad\u0131m. Bilindi\u011fi gibi 16F serisi piclerde 8 bit ve 10 Bit ADC (Analog Digital Converter) bulunuyor. Daha y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte ADC gerekti\u011finde ya harici eleman, yada bu donan\u0131ma sahip daha geli\u015fmi\u015f PIC tercih etmek zorunda kal\u0131yoruz. \u00f6rnek ald\u0131\u011f\u0131m uygulamada ADC referans voltaj\u0131 diren\u00e7lerle kontroll\u00fc olarak de\u011fi\u015ftirilerek \u00e7\u00f6z\u00fcn\u00fcrl\u00fck artt\u0131r\u0131lm\u0131\u015ft\u0131. bende sistemi biraz hafifleterek hi\u00e7 diren\u00e7 kullanmadan, s\u0131n\u0131rlar\u0131 a\u015fmadan ve do\u011fru g\u00f6steren 11 bit d\u00f6n\u00fc\u015f\u00fcml\u00fc \u00f6rnek voltmetre projesi haz\u0131rlad\u0131m. Burada esasen voltmetre de\u011fil 11 bit ADC \u00f6rne\u011fi g\u00f6stermek istedim.<\/strong><\/em><\/p>\n

DEVREN\u0130N \u00c7ALI\u015eMASI.<\/strong><\/em><\/p>\n

Uygulaman\u0131n \u00e7al\u0131\u015fma mant\u0131\u011f\u0131 yukar\u0131da bahsetti\u011fim gibi ADC referans voltaj\u0131n\u0131 kontroll\u00fc de\u011fi\u015ftirmeye dayan\u0131yor. 10 Bit d\u00f6n\u00fc\u015f\u00fcmde referans\u0131 2,5v uygularsak 2,5\/1023=0,00244379~ v (yuvarlak 2,5 mv) hassasiyetli okuma yapabiliriz ancak bu durumda analog giri\u015ften en fazla 2,5v okunabilinir. 5v gerilimi ayn\u0131 hassasiyette d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in 2 ayr\u0131 10 bit okuma yapmal\u0131y\u0131z. o nedenle 5\/2=2,5v referans kulland\u0131k. zaten datasheete g\u00f6re bu gerilimin alt\u0131na d\u00fc\u015fmek sa\u011fl\u0131kl\u0131 sonu\u00e7lar vermez. 2,5v referans elde etmek i\u00e7in diren\u00e7 yada zener benzeri bir d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc kullanmad\u0131m. PIC16F886 donan\u0131m\u0131nda dahili, ayarlanabilir referans voltaj \u00e7\u0131k\u0131\u015f\u0131 bulunmaktad\u0131r.<\/strong><\/em><\/p>\n

\"2\"<\/a><\/p>\n

Referans voltaj \u00e7\u0131k\u0131\u015f\u0131n\u0131n ilgili ayarlar\u0131\u00a0VRCON\u00a0registeri ile yap\u0131l\u0131yor. dier piclerde bu isim farkl\u0131 olabilir. \u00f6rne\u011fin 16F88 de\u00a0CVRCON\u00a0diye yazar. \u015fimdilik bu a\u00e7\u0131klamalar\u0131 16F886 i\u00e7in yap\u0131yorum. VRCON registerini inceleyecek olursak \u00f6nce datasheetdeki \u015fu tabloya bakmal\u0131y\u0131z:<\/strong><\/em><\/p>\n

\"3\"<\/a><\/p>\n

 <\/p>\n

G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi registerin 0,1,2,3 ve 5. bitleri referans \u00e7\u0131k\u0131\u015f de\u011ferini belirliyor. Burada \u00f6nemli olan, VROE biti (6. bit) referans \u00e7\u0131k\u0131\u015f\u0131n\u0131 RA2 portuna veriyor ve VREN (7.bit) ise 1 olarak ayarland\u0131\u011f\u0131nda referans\u0131 aktif hale getiriyor. VRCON registerinin tamam\u0131na binary “11101100” de\u011feri y\u00fcklendi\u011fimizde RA2 den tam 2,5v referans voltaj\u0131 alm\u0131\u015f oluruz. Ayr\u0131ca ADC i\u00e7in gerekli olan vref- ile ayn\u0131 pini kullan\u0131yor. referans\u0131 aktif ett\u011fimizde vref- den bu voltaj\u0131 direk okuyabiliriz.<\/strong><\/em><\/p>\n

\"4\"<\/a><\/p>\n

 <\/p>\n

2,5v referans gerilimimizi elde etti\u011fimize g\u00f6re s\u0131ra geldi ADC okumaya. ADC nin referans giri\u015fi olan vref- ve vref + i\u00e7in ayn\u0131 2.5v de\u011feri kullanaca\u011f\u0131m\u0131zdan dolay\u0131 bu iki baca\u011f\u0131 birbirine birle\u015ftirip 100n kondansat\u00f6r ile flitreledim.<\/strong><\/em><\/p>\n

\"5\"<\/a><\/p>\n

 <\/p>\n

Not:\u00a0Burada bahsetti\u011fim referans gerilimini isterseniz harici olarak bu pinlere uygulayabilirsiniz. PIC referans\u0131 beslemeye g\u00f6re karars\u0131zl\u0131k g\u00f6sterebilir. piyasada, ayarlanabilir daha kararl\u0131 referans entegreleri mevcuttur.<\/strong><\/em><\/p>\n

PIC16F886 da ADC referans giri\u015flerimizi d\u0131\u015far\u0131dan okuyabildi\u011fimiz gibi\u00a0ADCON1\u00a0registeri ile\u00a0ba\u011f\u0131ms\u0131z\u00a0olarak VDD ve VSS beslemeye dahil edebiliyoruz. 11 Bit d\u00f6n\u00fc\u015f\u00fcm\u00fc i\u00e7in bu \u00f6zelli\u011fi kullanaca\u011f\u0131z.<\/strong><\/em><\/p>\n

Uyar\u0131:\u00a0Baz\u0131 PIC ler, \u00f6zellikle eski olanlar\u0131 bu referans giri\u015flerini ba\u011f\u0131ms\u0131z kontrol donan\u0131m\u0131na sahip de\u011fildir. b\u00f6yle durumlarda daha farkl\u0131 teknikler kullanman\u0131z gerekir.<\/strong><\/em><\/p>\n

\"6\"<\/a><\/p>\n

 <\/p>\n

\u00d6ncelikle \u015funu belirteyim ki, \u00d6rnek haz\u0131rlad\u0131\u011f\u0131m projenin yaz\u0131l\u0131m\u0131 i\u00e7in CCS nin PCWHD derleyicisini kulland\u0131m. Bu normal C dili olmas\u0131na kar\u015f\u0131n PIC programlarken register atamalar\u0131 yapm\u0131yoruz. yerine uygun fonksiyon komutlar\u0131 kullan\u0131l\u0131yor. dier dillerde yazmak isteyenler yukar\u0131daki bahsetti\u011fim registerleri ayarlamak zorunda. derleyiciye PIC16f886 k\u00fct\u00fcbhanesini eklerken yan\u0131nda RA2 referans \u00e7\u0131k\u0131\u015f ayar\u0131 i\u00e7in kullanaca\u011f\u0131m\u0131z VRCON registerinin 6. bitinide dahil etmemiz gerekiyor.<\/strong><\/em><\/p>\n

#include <16F886.h><\/strong><\/em><\/p>\n

#define VREF_A2 0x40<\/strong><\/em><\/p>\n

san\u0131r\u0131m derleyici buglar\u0131ndan biri bu olmal\u0131 \ud83d\ude42 16F88 i\u00e7in bunu yapmaya gerek yok.<\/strong><\/em><\/p>\n

Daha sonra main b\u00f6l\u00fcm\u00fcnde ilgili donan\u0131m ayarlar\u0131n\u0131 yap\u0131yoruz. burada referans voltaj\u0131n\u0131 2,5v olarak ayarlamak ve RA2 den \u00e7\u0131karmak i\u00e7in \u015fu fonksiyonu kulland\u0131m:<\/strong><\/em><\/p>\n

setup_vref(VREF_LOW|12|VREF_A2);<\/strong><\/em><\/p>\n

ve s\u0131ra geldik ana d\u00f6ng\u00fcm\u00fcze. ilk \u00f6nce ADC nin 0. kanal\u0131n\u0131 a\u00e7\u0131p vref- yi VSS beslemeye yani \u015faseye, vref+ y\u0131 ise 2,5v olarak ayarlad\u0131\u011f\u0131m\u0131z referans \u00e7\u0131k\u0131\u015f\u0131m\u0131za dahil ediyoruz ve ilgili ADC kanal\u0131n\u0131 okuyup “ADC0” isimli 16 Bitlik word de\u011fi\u015fkenimize kaydediyoruz.<\/strong><\/em><\/p>\n

setup_adc_ports(sAN0|VSS_VREF);<\/strong><\/em><\/p>\n

set_adc_channel(0); delay_ms(10);<\/strong><\/em><\/p>\n

ADC0=read_adc(ADC_START_AND_READ);<\/strong><\/em><\/p>\n

daha sonra, vref- yi 2,5v referans\u0131m\u0131za dahil edip vref+ y\u0131 ise VDD yani +5v beslememize uyguluyoruz ve ayn\u0131 kanaldan tekrar ADC d\u00fcn\u00fc\u015f\u00fcm\u00fc yap\u0131p dier “ADC1” isimli bir de\u011fi\u015fkene kaydediyoruz.<\/strong><\/em><\/p>\n

setup_adc_ports(sAN0|VREF_VDD);<\/strong><\/em><\/p>\n

set_adc_channel(0); delay_ms(10);<\/strong><\/em><\/p>\n

ADC1=read_adc(ADC_START_AND_READ);<\/strong><\/em><\/p>\n

Bunlar\u0131 yapt\u0131ktan sonra her 2 de\u011fi\u015fkenin de\u011ferlerini toplay\u0131p ayr\u0131yetten voltaj de\u011feri d\u00f6n\u00fc\u015f\u00fcm\u00fcde yap\u0131yoruz.<\/strong><\/em><\/p>\n

TOPLAM=ADC0+ADC1;<\/strong><\/em><\/p>\n

VOLT=TOPLAM;<\/strong><\/em><\/p>\n

VOLT=(VOLT * 5 )\/2046;<\/strong><\/em><\/p>\n

“TOPLAM” de\u011fikeni 16 bitlik word olup, “VOLT” ise 32 bitlik FLOAT yani ondal\u0131kl\u0131 say\u0131 de\u011fi\u015fkenidir. voltaj de\u011ferimiz ondal\u0131kl\u0131 oldu\u011fu i\u00e7in bunu kulland\u0131m. FLOAT de\u011ferleri haf\u0131zada \u00e7ok yer kaplamas\u0131na kar\u015f\u0131n kullan\u0131m\u0131 pratiktir ancak baz\u0131 derleyiciler bunu desteklemez. b\u00f6yle durumlarda farkl\u0131 i\u015flemler yap\u0131l\u0131r. neyse, esas konumuz 11 Bit ADC oldu\u011funa g\u00f6re, y\u00f6ntemini k\u0131saca a\u00e7\u0131klam\u0131\u015f oldum. C kullanmayanlar i\u00e7in elimde proton basic verisiyonuda mevcut. isteyenler email g\u00f6ndersin.<\/strong><\/em><\/p>\n

KAYNAK DOSYALAR.<\/strong><\/em><\/p>\n

Projenin CCS PCWHD 4.134 ile derlenmi\u015f C dosyas\u0131, \u00f6zel LCD k\u00fct\u00fcbhanesi, HEX dosyas\u0131 ve proteus DSN dosyas\u0131n\u0131 Buradan indirin:<\/strong><\/em><\/p>\n

\u0130ND\u0130R.16F886 LCD 11Bit ADC<\/a><\/strong><\/em><\/p>\n

DEVRE DENENM\u0130\u015eT\u0130R.<\/strong><\/em><\/p>\n

\"\"<\/strong><\/em><\/p>\n

Kolay Gelsin.<\/strong><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"

\u00a0PIC16F886 ile 11Bit ADC Okuma Ve LCD Voltmetre \u00a0 PIC16F886\u00a0ile yap\u0131lm\u0131\u015f LCD ekranl\u0131 11 Bit…<\/p>\n","protected":false},"author":1,"featured_media":571,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,12],"tags":[169,168,170],"aioseo_notices":[],"featured_image_urls":{"full":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",1365,1077,false],"thumbnail":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11-150x150.png",150,150,true],"medium":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11-300x236.png",300,236,true],"medium_large":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",640,505,false],"large":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11-1024x807.png",640,504,true],"1536x1536":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",1365,1077,false],"2048x2048":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",1365,1077,false],"covernews-slider-full":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",906,715,false],"covernews-slider-center":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",634,500,false],"covernews-featured":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",1024,808,false],"covernews-medium":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",431,340,false],"covernews-medium-square":["https:\/\/devrearsivi.com\/wp-content\/uploads\/2013\/07\/11.png",317,250,false]},"author_info":{"display_name":"Ferhat \u00c7elik","author_link":"https:\/\/devrearsivi.com\/author\/94ferhat\/"},"category_info":"Basit Elektronik Devreler<\/a> Elektronik Devreler<\/a>","tag_info":"Elektronik Devreler","comment_count":"0","_links":{"self":[{"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/posts\/567"}],"collection":[{"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/comments?post=567"}],"version-history":[{"count":4,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/posts\/567\/revisions"}],"predecessor-version":[{"id":1039,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/posts\/567\/revisions\/1039"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/media\/571"}],"wp:attachment":[{"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/media?parent=567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/categories?post=567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devrearsivi.com\/wp-json\/wp\/v2\/tags?post=567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}