PIC|ULAK PIC|ULAK ile ADC Kontrolü By Sinan Sözügüzel Posted on 20 Şubat 2016 4 min read 0 0 3,891 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile analog to dijital converter(adc) uygulamasını gerçekleştirdik. ADC modülü Analog sinyali Dijital bilgiye dönüştüren donanımdır. ADC girişine uygulanan analog sinyal bir referans voltajı ile karşılaştırılarak ADC çözünürlüğüne uygun sayısal değere çevrilir. Uygulamamızda potansiyometreden alınan analog sinyali dijital sinyale dönüştürerek lcd ekranımıza dijital değeri yazdırdık. ADC çözünürlüğümüz 10 Bit olsun, 10 bit ile üretebileceğimiz en büyük sayı 1023 değeridir. ADC Referans voltajımız ise 5V olsun, bu durumda ADC girişine 2.5V luk bir sinyal uygularsak dönüştürme işlemi sonucunda 511 değeri okunacaktır. ADC modülümüz de referans 5V olduğuna göre 0-5v arası gerilim, 0-1023 arası bir değer üretecektir 5 / 1023 = 0.0048875 2.5 / 0.0048875 = 511 Malzemeler pic|ulak 4*20 lcd 10K potansiyometre 1K direnç Bağlantı şeması CCS C kodları [php] #include <18F2550.h> //kullanılan pic tanıtılıyor. #device adc=10 // 10 bitlik adc kullanılıyor. #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // sigortaayarları. #use delay (clock=4M) // osilatör frekansı #define use_portb_lcd TRUE // lcd i b portuna bağlı #include <lcd420.c> //4*20 lcd tanıtılıyor. unsigned long int bilgi; //bilgi adındaişaretsiz tamm sayı tanımlanıyor. void main() //ana program başlangıcı { setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32 setup_adc_ports(AN0); // A0 pini analog giriş olarak ayarlanıyor. set_adc_channel(0); // A0 pini adc işlemine tabi tutuluyor. delay_ms(20); // gecikme veriliyor. lcd_init(); // lcd hazırlanııyor. printf(lcd_putc,"\fMEKATRONIKLAB"); printf(lcd_putc,"\nROBOTURKA"); printf(lcd_putc,"\nSINAN SOZUGUZEL"); printf(lcd_putc,"\nGAZIOSMANPASA UNI"); delay_ms(1500); while(1) { bilgi=read_adc(); // okunan adc sonucu bilgi değişkenine aktarılıyor. printf(lcd_putc,"\fDIJITAL=%lu",bilgi); // adc sonucu lcd ye aktarılıyor. printf(lcd_putc,"\n"); printf(lcd_putc,"\n ADC UYGULAMASI"); printf(lcd_putc,"\nROBOTURKA / PIC|ULAK"); delay_ms(100); } } [/php] Devrenin çalışma videosu