Bu kapsamlı mühendislik rehberinde, analog sıcaklık ölçümlerinde bir endüstri standardı olan LM35 Sıcaklık Sensörü kullanımını inceleyeceğiz.
PIC16F877A (veya PIC16F877), mikrodenetleyici eğitiminde ve endüstriyel gömülü kontrol projelerinde uzun yıllardır kullanılan klasik ve oldukça kararlı bir donanımdır.
Mikrodenetleyicinin dahili 10-bitlik Analog Dijital Dönüştürücü (ADC) Çalışma Prensibi donanımını, doğrudan kaydedici (register) seviyesinde ADCON0 ve ADCON1 yazmaçlarını yapılandırarak yönetecek, hassas sıcaklık dönüşüm matematiksel modelini kuracak ve hatasız bir MPLAB XC8 C programı yazacağız.
LM35 sensörünün tüm elektriksel sınır değerleri ve pin şemasına Texas Instruments LM35 Teknik Veri Sayfası (Datasheet) üzerinden ulaşabilirsiniz.
PIC16F877A ADC Altyapısı ve Kaydedici Seviyesinde Kontrol
PIC16F877A üzerinde, PORTA ve PORTE pinlerine paylaştırılmış 8 adet bağımsız analog giriş kanalı (AN0 – AN7) bulunur. Donanımın ADC çözünürlüğü 10-bittir. Bu çözünürlük, analog giriş geriliminin
ayrık adıma (0 – 1023) bölüneceğini gösterir. ADC donanımını yapılandırmak için iki ana kontrol kaydedicisi kullanılır: ADCON0 ve ADCON1.
1. ADCON0 (ADC Kontrol Kaydedicisi 0) Yapısı
ADCON0, ADC’nin çalıştırılmasını, örnekleme saatinin (clock) seçilmesini ve aktif kanal atamasını kontrol eder:

- ADON (Bit 0): ADC Donanımını Etkinleştirme biti.
ADON = 1ise ADC birimi çalışır,ADON = 0ise güç tasarrufu için ADC tamamen kapatılır. - GO/DONE (Bit 2): Dönüşüm Durum biti. Yazılımsal olarak
GO/DONE = 1yapılarak ADC dönüşümü başlatılır. Dönüşüm bittiğinde donanım bu biti otomatik olarak0yapar. - CHS2:CHS0 (Bits 5-3): Analog Kanal Seçim bitleri:
000= Kanal 0 (AN0) – RA0001= Kanal 1 (AN1) – RA1010= Kanal 2 (AN2) – RA2011= Kanal 3 (AN3) – RA3100= Kanal 4 (AN4) – RA5101= Kanal 5 (AN5) – RE0110= Kanal 6 (AN6) – RE1111= Kanal 7 (AN7) – RE2
- ADCS1:ADCS0 (Bits 7-6): ADC Saat Frekansı Seçim bitleri. Örnekleme kapasitörünün kararlı dolabilmesi için saat hızı mikrodenetleyicinin çalışma frekansına (
) göre ayarlanır:00=
01=
10=
11=
(Dahili RC Osilatör Devresi Çalışma Prensipleri kaynağı)
2. ADCON1 (ADC Kontrol Kaydedicisi 1) Yapısı
ADCON1, pinlerin analog/dijital davranışlarını ve dönüşüm sonucunun hizalanmasını belirler:

- PCFG3:PCFG0 (Bits 3-0): Port Yapılandırma bitleri. Hangi pinlerin analog giriş, hangilerinin dijital G/Ç olarak çalışacağını ve voltaj referans pinlerini (
ve
) tayin eder.

- ADFM (Bit 7): ADC Sonuç Hizalama biti. ADC dönüşüm sonucu 10-bitliktir ancak mikrodenetleyici kaydedicileri 8-bitlik iki yazmaçtan (
ADRESHveADRESL) oluşur.ADFM = 1 (Sağa Hizalama):10-bitlik sonucun en anlamlı 2 bitiADRESHyazmacının son 2 bitine, geri kalan 8 biti iseADRESLyazmacına yazılır. C dilinde doğrudan 16-bitlik tam sayı okuması için bu mod tercih edilir.ADFM = 0 (Sola Hizalama):Sonucun en anlamlı 8 biti doğrudanADRESHyazmacına yazılır. 8-bit hassasiyetin yettiği hızlı okumalarda sadeceADRESHyazmacını okumak için kullanılır.

LM35 Sıcaklık Dönüşüm Matematiği
LM35 hassas bir analog sıcaklık sensörüdür ve her
sıcaklık artışı için çıkışında doğrusal olarak
gerilim üretir (
duyarlılık). Örneğin,
sıcaklıkta sensör çıkışı tam olarak
(
) olacaktır.
Eğer ADC referans voltajlarımızı standart
ve
(GND) olarak seçersek, 10-bitlik (1024 adım) ADC’mizin 1 adımlık voltaj çözünürlüğü (LSB) şu şekilde hesaplanır:
![]()
ADC kanalından okunan dijital değeri (
) voltaja dönüştürdükten sonra sıcaklık değerini bulmak için sensör duyarlılığına böleriz:
![]()
PIC16F877A ve LM35 Sıcaklık Ölçüm Kodu (MPLAB XC8)
Aşağıdaki C kodu, MPLAB XC8 derleyicisi ile doğrudan kaydedici seviyesinde yazılmıştır. ADCON0 ve ADCON1 yazmaçları AN0 (RA0) kanalını okuyacak ve sonucu sağa hizalayacak şekilde yapılandırılmıştır. Okunan sıcaklık değeri, çıkıştaki 16×2 LCD ekrana gecikmesiz olarak yazdırılır:
LM35 Sıcaklık Sensörü Kullanımı: Proteus Simülasyonu ve Devre Şeması
Proteus simülasyonunda, LM35 sıcaklık sensörünün Vout pini doğrudan PIC16F877A’nın AN0 (RA0) bacağına bağlıdır. LCD ekranın 4-bitlik veri hatları ise PORTD üzerinden sürülür. Simülasyon çalıştırıldığında, LM35 üzerindeki sıcaklık değeri değiştirildikçe LCD ekrandaki verinin de mikrosaniyeler mertebesinde kararlı şekilde güncellendiğini göreceksiniz:

PIC16F877A mikrodenetleyicilerinde harici voltaj referanslı yüksek hassasiyetli ADC okuma yöntemleri, çoklu sensör tarama algoritmaları veya kalibrasyon kodları hakkında sormak istediğiniz soruları alt kısımdaki yorum alanından bizimle paylaşabilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

