MikroC ile Pic Programlama ; Pic ile ADC kullanımı

     Bu yazımda pic ile adc kullanımını anlatacağım.Entes Elektronik’de staj yaparken bu konuyla alakalı yaptığım uygulamayı paylaşacağım.Yaptığım uygulama 0-12 v gerilimi okuyup lcd display’de gösterme üzerinedir.Doğadaki fiziksel büyüklükler analog işarettir.Bu fiziksel büyüklükleri ölçen sensörler ise analogdur.Bu sensörlerden alınan bilginin işlenmesi için analog işaretin digital sinyale dönmesi gerekmektedir.Mikrodenetleyicilerde bu işlemi yapan birime Analog to Digital  Converter(ADC) denir.Bu yazımda kullandığım pic 16f877a’dır.Önceki yazılarımda 16f628a kullanmıştım.Ama onla birlikteliğimiz buraya kadardı.Pic 16f877a’da 8 kanallı ADC modülü bulunmaktadır.10 bit çözünürlüğe sahiptir.

2^10=1024

Vref+=5v,Vref-=0v

5/1024=0.00482812

Her 0.00482812 volt değişiminde 10 bit’in dijitinde değişim olur.

Bizim için ADCON0 VE ADCON1 kaydedicileri önemlidir.

ADCON0 Kaydedicisi

adcon0

GO/DONE,U-0,R/W-0  “000”  olarak seçtim.

ADCS1 VE ADCS0 biti 

ADSC1-2

   ADCS1 VE ADCS0 saat dönüşüm(clock conversion) bitleridir.Kullanıcı doğru biti seçmelidir.Kişi doğru dönüşümü elde etmek için periyot en az  1.6 us büyük olmalıdır.Örneğin ben 16f877a ‘da 4Mhz kristal osilatör kullandığım zaman.Biz Fosc/2 seçtiğimizde 4Mhz/2=2Mhz olur.Periyodumuz 1/2Mhz=500ns olur.Periyodumuz,1.6us’den küçük olur o zaman bu doğru seçim değildir.Eğer Fosc/8 olursa,4Mhz/8=0.5Mhz’den periyodumuz 2us olur.Periyodumuz,1.6us’den büyük olduğundan bu doğru seçimdir.

CHS2,CHS1,CHS0 Bitleri

     Analog kanal seçimi,kişi hangi kanalı kullanmak istiyorsa onu seçebilir.Misal AN0 kullanmak istiyorsanız chs2,chs1,chs0 “000” olmalıdır.

chs2-0

ADCON1 Kaydedicisi

Adcon1

ADFM

ADFM 1  olduğunda Sonuç Sağa yaslanır.ADFM 0 olduğunda  Sonuç Sola yaslanır.Biz ADFM=1 olarak ayarlıyoruz.

ADFM

Bit-5 ve Bit-4’ü  sıfır olarak seçeriz.

PCFG3,PCFG2,PCFG1,PCFG0 bitleri

Analog/Dijital port konfigürasyon kontrol bitleridir.Misal “0001” olarak ayarlarsak 7 tane analog ucumuz olur.Vref+ ise AN3 ucuna verilen gerilimdir.Eğer “0100” seçersek 3 analog,5 dijital ucumuz olur. Vref+;VDD ve Vref-;VSS olarak ayarlanır.İstediğiniz gibi ayarlamabilirsiniz.

PCFG3-0

Pic ile Voltmetre

Bu yazımızda ADC ile alakalı uygulama olarak.12-0 v arası voltaj gerilimi okuyup  bunu ekrana yazdıran bir uygulama yaptım.Uygulamanın isis’de çizilmiş devresi;

Pic ile Pil voltajı ölçümü-2

Pic ile Pil voltajı ölçümü

Eğer pic’in ucuna 12 volt gerilimi direk bağlarsak pic’imizin portu yanar.Bunu önlemek için gerilim bölücü kullandık.1K ve 10K dirençlerini kullanarak. 1/11 oranında dönüşümü olur.Gerilim bölücüye 12 volt uyguladığımız zaman picin bacağına 1.09 volt uygulanmış olur.Bu 1.09 gerilim seviyesini okuduktan sonra kodumuzda 11 ile çarpım işlemi yaparız.

MikroC’de yazılmış olan kodumuz

Devremizin Bread-Board üzerinde kurulmuş durumu

Devremizin Bread-Board üzerinde kurulmuş durumu

 

Bu yazı hakkında ne düşünüyorsun ?
  • Faydalı 
  • Müthiş 
  • Gereksiz 
  • Normal 
The following two tabs change content below.
Sidar ATABEY

Sidar ATABEY

Elektrik-Elektronik Mühendisi. Makine Mühendisliğinde yan dal programını tamamladı. 1 sene boyunca Erasmus Programı kapsamında Polonya Silesian University of Technology'de eğitim gördü.

7 Comments

  1. latif yakan

    Çalışmalarınızda başarılar dilerim. PICKIT 3 cihazım var. devrede monte edilmiş PIC18F4550 entegresindeki yazılımı alıp ileride tekrar aynı entegreye yüklemek istiyorum. Bunun için hangi programları kullanmalıyım. Bilgisayarımda MPLAB IDE V8.91 ve WINPIC 800 V3.64H programları yüklü. Bilgi verirseniz memnun olurum.

    Saygılar.

    1. Sidar ATABEYSidar ATABEY (Post author)

      Latif Bey Pickit3’ü PIC18F4550’e bağlayın.Pickit3 Programmer programını açtıkdan sonra Pic’iniz ile haberleşmeyi kurduktandan sonra Read Device +Export Hex File’a tıklayın program size pic’in içindeki Hex dosyasını nereye kaydedeceğini soracaktır.Hex file kaydedin.Tüm işlemler bu kadardır.İyi çalışmalar.

  2. latif yakan

    Entegre PIC18F4550 44 pinli TQFP kılıf, SMD tipi. Bağlantıları buna göre yazabilirmisiniz.

    1. Sidar ATABEYSidar ATABEY (Post author)

      Latif Bey,PIC 18F4450 44 pinli TQFP Kılıf SMD’nin.Datasheetine bakarak.
      14->RA2(ANALOG)
      30-31->Kristal osilatör
      18->MCLR
      8,9,10,11->RB0,RB1,RB2,RB3 (LCD)
      14,15->RB4,RB5 (LCD) bağlamanız yeterli olacaktır.İyi çalışmalar.

  3. latif yakan

    Sidar Bey Merhaba,
    Desteğiniz için çok teşekkür ederim. Entegre 44 pinli PIC18F4550 QFN kılıf. devre üzerinde bir soket var. yazılımla ilgili entegrenin ayaklarına direk bağlı. yazılım yüklemek ve almak için MPLAB IPE V2,20 yi yükledim. Family: all families Device: PIC18F4550 yi seçtim. tool: bu alana PICKIT3 S.no: BUR124173593 kendiliğinden yazıldı. connect aktif geldi ve tıkladım. alt alana şu satırlar yazıldı
    connecting the MPLAB PICkit3…
    Firmware süite version……01.33.20
    Firmware type……..PIC18F

    Target device was not found. You must connect to target device to usb PICkit 3.

    alındı File kısmında Export kısmı pasif geldi. kart üzerindeki yazılım yükleme alma soketinin pinlerini entegreyle ölçtüm. PICkit3’ün 1 nolu pini entegrenin 18 nolu pinine diğerleri ise 2 nolu pin 7,8,28 ve 29 a, 3 nolu pin 6 ve 30,31 e, 4 nolu pin 17 nolu pine, 5 nolu pin ise 16 nolu pine direk bağlı. soldaki rakamlar PICkit3 sağdakiler ise kart üzerindeki PIC18F4550 entegresine bağlı pinlerdir.

    Entegreyle haberleşme olmuyor. Ne yapabilirim. Yazılım yüklemek için hangi programı kullanabilirim.

    İyi çalışmalar.

    1. Sidar ATABEYSidar ATABEY (Post author)

      Pickit3 Programmer Application indirmel için link; http://pickit.software.informer.com/
      Bu programla istediğin gibi hex dosyanı pic’ine atabilirsin.İyi çalışmalar.

  4. latif yakan

    Sidar Bey Merhaba,

    Bilgisayarıma PICKIT3 Programer’ün beta release sürümünü yükledim. Programı çalıştırınca PIC18F4550 yi seçince read device’ı tıklayınca entegreyi okuyor checksum boş geldi. program memory alanı ve eeprom data kısmı tamamı FF yazdı. Sağ alttaki auto import hex ve onun altındaki read device +export hex pasif geldi. read’i tıklayınca Program memory alanının tamamı 00 yazdı. eeprom data kısmı ise normal değerlerden oluştu. Sağ alt kısım yine pasif geldi. File altındaki emport hex her iki durumda da pasif geldi. Yardımlarınızı bekliyorum.

    İyi çalışmalar.

Comments are closed.