Bölüm-7 Analog İşlemler | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Analog Dijital Dönüştürme ModülüMikrodenetleyicilerin en önemli özelliklerinden birisi, zamana göre sürekli olarak değişim gösteren ve analog diye ifade edilen dış ortam sinyallerini işleyebilme yeteneğidir. MCU’ların kullanıldığı pek çok durumda Analog/Dijital (A/D) dönüştürme işleminin gerçekleştirilmesi gerekir. Orta ölçekli 8-bit PIC mikrodenetleyicilerinin pek çoğunda Analog/Dijital (A/D) dönüştürme özelliği bulunur. Bu sınıfta yer alan mikrodenetleyicilerde sayısı değişmekle birlikte birden fazla 10-bit çözünürlüğe sahip A/D kanalı yer alır. Şekil 7.1’de 8 kanallı 10-bit çözünürlüklü ADC modülüne sahip bir MCU’nun A/D blok diyagramı gösterilmiştir. Bu bölümde yer alan bilgiler genel olarak 10-bit A/D çözünürlüğüne sahip MCU’lar için verilecektir.
Şekil-7.1 10-bit A/D blok diyagramı
A/D dönüştürücü, MCU uyku modundayken de çalışabilme gibi önemli bir özelliğe sahiptir. A/D işleminin yapılabilmesi için ilgili analog kanal girişindeki voltaj seviyesinin pozitif ve negatif bir referans voltaj değerine göre ölçeklenmesi gerekir. Bunun için MCU’nun kaynak voltajları olan VDD ve Vss ya da AN3/VREF+ ve AN2/VREF- pinlerindeki voltaj seviyesi referans gerilimi olarak kullanılır. PIC12F675 mikrodenetleyicisinde yalnızca AN1 kanalında VREF adıyla tek bir ek referans girişi vardır. Şekil 7.2’de ayarlanan alt ve üst voltaj referansı seviyesine göre 10-bitlik bir ADC sisteminin ölçeği gösterilmiştir. Görüldüğü üzere analog girişten ölçülen voltaj seviyesi 000h-3FFh aralığında 10-bitlik çözünürlük değerinde ölçeklenmektedir.
Şekil 7.2 Voltaj referansı aralığına göre analog sinyalin 10-bitlik ölçeği
A/D Modülü İçin Kullanılan KaydedicilerMikrodenetleyicilere bağlı olarak değişmekle birlikte, Microchip® PIC ailesi 10-bit A/D dönüştürme özellikli 8-bit MCU’larda genel olarak aşağıdaki SFR kaydedicileri A/D işlemleri için kullanılır:
Bu kaydediciler A/D modülüne sahip mikrodenetleyicilerin sınıf ve türüne bağlı olarak bazı değişiklikler göstermektedir. ADCON0 modülü genel olarak A/D modülünün çalışmasını kontrol eder. ADCON1 kaydedicisi ise port pinlerinin davranışını ayarlamak için kullanılır. ANSEL kaydedicisi ise genellikle ADCON1 kaydedicisinin olmadığı MCU’larda ya da ADCON1’in başka işlevlere sahip olduğu durumlarda ayrıca kullanılmaktadır. Kitapta kullanılan MCU’lardan PIC12F675 ADCON1 kaydedicisine sahip değildir ve genel olarak bu kaydedicinin yaptığı işlemler ANSEL kaydedicisiyle yapılmaktadır. Ancak PIC16F887 mikrodenetleyicisinde hem ADCON1 hem de ANSEL kaydedicisinin ikisi de yer almaktadır. Ayrıca PIC16F887’de çok sayıda analog giriş olduğundan ANSEL kaydedicisinin yanında ANSELH kaydedicisi de bulunmaktadır. PIC18F2550’de ise ADCON kaydedicisinden 0, 1 ve 2 olmak üzere üç adet bulunmaktadır. ADRESH ve ADRESL kaydedicileri ise dijitale çevrilen bilginin tutulduğu üst ve alt hafıza alanlarıdır. 10 bitlik A/D modüllerinde bilginin 8 bitlik MSB kısmı ADRESH alanında, geriye kalan 2 bitlik LSB kısmı ise ADRESL alanında tutulur. Görüldüğü üzere MCU modeline bağlı olarak değişen bir durum söz konusudur. Bu nedenle A/D modülüyle ilgili kaydediciler, MCU modelinden bağımsız olarak anlatılacaktır. Genel olarak temel mantık anlaşıldıktan sonra farklı model MCU’lara uyum sağlamanız kolaylaşacaktır. Projelerinizi rahatlıkla farklı tür ve modellere göre dönüştürebilir ve uyarlama yapabilirsiniz.
ADCON0: A/D KONTROL KAYDEDİCİSİ 0 (ADRES: 1Fh – PIC16F887)
bit 7-6 ADCS1:ADCS0: A/D dönüşümü için çalışma hızı tercih bitleri 1 = A/D dönüştürme işlemi yürütülmekte (bu bit kurulduğunda A/D dönüştürme işlemi başlar. Dönüştürme işlemi bittiğinde otomatik olarak temizlenir) ÖNEMLİ: GO/ (DONE) biti ‘1’ yapılmadan önce, bir diğer ifadeyle A/D modülünün Analog Dijital dönüştürme işlemine başlamasından önce program içinde çok kısa süreli bir bekleme (birkaç µs dolaylarında) yapılmalıdır. Bu bekleme A/D modülünün çalışmaya hazır hale gelmesi için gerekmektedir. Bu nedenle A/D modülünü etkinleştiren aynı komut içinde, ADON bitiyle birlikte aynı anda kurulmamalıdır. bit 0 ADON: A/D on biti1 = A/D dönüştürücü modülü çalıştırıldı 0 = A/D dönüştürücü modülü kapatıldı, modülün güç tüketimi yok Kısaltmaların Anlamları R = Okunabilir bitU = Kullanılmayan bit, ‘0’ olarak okunur W = Yazılabilir bit-n = POR reseti gerçekleştiğinde aldığı değer
ADCON1: A/D KONTROL KAYDEDİCİSİ 1 (ADRES: 9Fh – PIC16F887)
bit 7 ADFM: A/D sonuç formatını belirleme biti Şekil 7.3 ADFM bitinin bilgiyi hizalamada kullanımı
bit 6 Kullanılmıyor: '0' olarak okunur. ADRESH:ADRESL kaydedicileri A/D dönüşümünün 10 bitlik sonucunun kaydedildiği bir SFR kaydedicisidir. A/D dönüştürme işi bittiğinde sonuç bu kaydedicilere yüklenir. ADCON0 kaydedicisinin ADFM bitinin durumuna göre 10 bitlik sonucun ADRESH:ADRESL kaydedicilerindeki dizilimi değişir. A/D dönüştürme işi bittiğinde GO/ (DONE) biti biti temizlenir ve AD kesme bayrağı ADIF biti lojik-1 olur (set edilir). A/D dönüştürme işleminin sağlıklı şekilde yapılabilmesi için sırasıyla aşağıdaki adımlar izlenmelidir:
Bazı MCU modellerinde ANSEL kaydedicisi bulunmaktadır. PIC12F675 mikrodenetleyicisinin ANSEL kaydedicisi şu şekilde açıklanabilir:
ANSEL: ANALOG SEÇİM (SELECT) KAYDEDİCİSİ (ADRES: 9Fh – PIC12F675)
bit 7 Kullanılmıyor: '0' olarak okunur. PIC16F887 mikrodenetleyicisinde de ANSEL kaydedicisi vardır ve yalnızca ilgili analog kanalı analog ya da dijital olarak ayarlamak için kullanılır. Her bite bir kanal karşılık gelir. Bu mikrodenetleyicide toplamda 13 analog kanal olduğundan ek olarak ANSELH kaydedicisi de bulunur. Aşağıda bu kaydedicilerin bit dağılımları gösterilmiştir. Kanalların ayarlanması ve davranışı PIC12F675 mikrodenetleyicisinin ANS3:ANS0 bitleri gibidir.
ANSEL: ANALOG SEÇİM KAYDEDİCİSİ (ADRES: 188h – PIC16F887)
ANSELH: ANALOG SEÇİM KAYDEDİCİSİ (ADRES: 189h – PIC16F887) A/D İşlemi İçin Gerekli Çevrim Saati (PIC16F887 referans alınmıştır)ADCON0 kaydedicisinin (PIC12F675 için ANSEL kaydedicisi) ADCS bitleri yardımıyla gerekli çevrim saati kaynağı yazılımsal olarak seçilebilir. Analog dönüştürme işleminin yapılabilmesi için belli bir saat sinyaline ihtiyaç vardır. PIC16F887 için bu saat değerleri aşağıdaki gibidir:
ÖNEMLİ NOT: FRC kullanılmadığında, sistem saat frekansındaki değişim ADC saat frekansının değişmesine neden olur ve ADC sonucu olumsuz yönde etkilenir. Çevrim saati tercihleri mikrodenetleyiciye göre değişiklik göstermektedir. Burada dikkat edilmesi gereken husus FRC’nin dâhili osilatör özelliğine sahip MCU’ların osilatörüyle karıştırılmamasıdır. A/D modülüne sahip tüm MCU’larda, gerekli çevrim saatinin işlemci osilatöründen bağımsız olarak üretilebilmesi için dâhili bir RC osilatörü vardır. Bir bitlik A/D dönüştürme işlemi için geçen süre TAD olarak ifade edilir. 10-bitlik bir ADC sisteminde tam dönüştürme için minimum 11TAD’lik bir süre geçer. Şekil 7.4’te analog-dijital dönüştürme TAD çevrimi gösterilmiştir. Sağlıklı dönüştürme işlemi için, uygun TAD şartları sağlanmalıdır. Mikrodenetleyicinin ortam sıcaklığı, çalışma voltajı gibi çeşitli fiziksel ve elektriksel koşullar bu şartları etkiler. Bunun için ilgili MCU’nun veri kılavuzlarında (datasheet) “Electrical Specifications – Elektriksel Nitelikler” başlığı incelenmelidir.
Şekil 7.4 Analog Dijital Dönüştürme işleminde TAD çevrimi
Doğru dönüştürme işlemi için minimum ihtiyaç duyulan bir TAD süresi vardır. Bu genellikle 1,6 us kadardır. Dolayısıyla ADC işlemi için ayarlanan çevrim saati bu süre dikkate alınarak ayarlanmalıdır. Tablo 7.2’de PIC16F887 için bazı çalışma frekanslarına bağlı olarak çevrim saati süresinin hesaplaması gösterilmiştir. Tablo 7.1 Seçilen çalışma frekansına bağlı olarak TAD süresi hesabı
A/D Kazanç İçin GerekenlerA/D dönüştürücülerin çalışma mantığında ilgili kanal girişindeki analog sinyale kondasatör ile şarj olunması ilkesi vardır. Kondansatörün şarj süresi A/D dönüştürücünün kararlı çalışmasını etkileyen önemli bir unsurdur. Şekil 7.5’te A/D dönüştürme işleminin işlem sırası gösterilmiştir.
Şekil 7.5 A/D Dönüştürme işleminin işlem sırası
Kazanç süresi (acquisition time) A/D modülünün tutma kondansatörünün harici voltaj kaynağına bağlanma süresini ifade eder. Ardından, GO bitinin kurulmasıyla birlikte bu sürenin 12 TAD değeri kadar dönüştürme süresi geçer. Bu iki sürenin toplamı “örnekleme zamanı” olur. A/D dönüşümünden arzu edilen kazancın elde edilmesi için, tutma kondansatörünün şarj olması gereken seviyeyi temin eden minimum bir kazanç süresi vardır. Şekil 7.6’da ilgili analog girişin voltaj seviyesine şarj olan ve örnekleme işlemini yapan elektronik devre katının ilkesel şeması gösterilmiştir.
Şekil 7.6 Analog giriş modeli
Analog giriş modelinde yer alan kısaltmalar şu şekildedir: Uyku Modunda ADC İşlemi ve Analog Kesmenin EtkinleştirilmesiADC modülü uyku modunda çalışabilir. Bu işlem ADC çevrim saati kaynağı olarak FRC’nin seçimini gerektirir. FRC saat kaynağı olarak seçildiğinde, dönüştürme işlemi başlamadan önce ADC bir ilave komut süresi kadar bekler. Bu bekleme prosedürü, SLEEP komutunun işletilmesine fırsat tanır ve böylece dönüştürme sırasında sistem gürültüsü azaltılır. Eğer ADC kesmesi etkinleştirilirse, cihaz dönüştürme işlemi bitince uyku modundan uyanır. Eğer ADC kesmesi devre dışı bırakılırsa, ADC modülü, ADON biti kurulu kalmasına rağmen, dönüştürme işlemi bittikten sonra kapatılır. ADC çevrim saati kaynağı FRC’den farklı seçildiğinde, bir uyku modu komutu (SLEEP), ADON biti kurulu bile olsa, mevcut dönüştürme prosesinin yarıda kesilmesine ve ADC modülünün kapatılmasına neden olur. Analog kesme işlemi mikrodenetleyicinin uyku modunda çalıştığı durumlarda oldukça kullanışlı bir kesme prosesidir. A/D dönüştürme işleminin bitmesi genellikle iki yolla kontrol edilir. Bunlardan biri GO/ (DONE) bitinin temizlenmesini beklemek ya da ADIF (A/D dönüştürme kesme bayrağı) bayrağının kurulma durumunu izlemektir. Analog kesme işleminin etkinleştirilmesi kitapta kullanılan A/D özellikli üç mikrodenetleyici için de (PIC12F675, PIC16F887, PIC18F2550) PIE1 kaydedicisinin 6.biti ADIE bitinin etkinleştirilmesiyle olur. Bunun için “PIE1.ADIE=1” yapılır. Kesme bayrağının izlenmesi ise PIR1 kaydedicisinin 6.biti olan ADIF bayrağının kesme rutini içinde denetlenmesiyle olur. Bunun için “if(PIR1.ADIF)” komutuyla kesme işleminin olup olmadığı kontrol edilir. Kesme bayrağı otomatik olarak temizlenmez. Bu nedenle yazılım içinde temizlenmelidir. A/D Dönüştürücü İle Işık İzleyen Oyuncak YapımıServo motorların dış ortamdan gelen analog sinyallere bağlı olarak kumanda edilmesi robotik sistemlerde yaygın olarak kullanılan bir uygulamadır. Şekil 7.7’de 8 bacaklı PIC12F675 mikrodenetleyicisi kullanılarak gerçekleştirilmiş bir ışık izleme devresi gösterilmiştir. MCU’nun 4 analog kanalından AN0 ve AN1 kanalları giriş olarak tanımlanmıştır. Işığa duyarlı devre elemanı LDR’nin, ışık şiddetine bağlı olarak değişen direnç değerine göre analog kanalların girişine uygulanan voltaj değeri değişmektedir. Her bir LDR’ye seri bağlı trimpotlar ile gerilim bölücü yapılmış ve şase ile LDR arası yalıtılarak direnç değişimine bağlı olarak değişen gerilim düşümü sağlanmıştır. Trimpotlar ile analog girişlerin tepki vereceği eşik değeri ayarlanmaktadır.
Şekil 7.7 A/D dönüştürücü ile çalışan servo motor devresi
Tablo 7.2 A/D dönüştürücü ile çalışan servo motor devresi mikroC kodu
Şekil 7.8 Işık izleyen oyuncak
PIC12F675 10-bit çözünürlüğünde 4 kanal A/D işlemi yapabilir. Uygun TAD süresinin elde edilmesi için ANSEL kaydedicisi FOSC/8 değerine ayarlanmıştır. Böylece TAD değeri 2us olarak ayarlanmıştır. ADC işleminin yapılması için kısaca bir özet yapmak gerekirse aşağıdaki adımlar izlenmelidir:
NOT: PROTEUS-ISIS® gibi canlandırma programlarıyla devrenin tasarımı gerçekleştirilirken, LDR devre elemanının varsayılan direnç değerine dikkat edilmelidir. Piyasada farklı direnç değerinde LDR’ler olduğundan İlgili canlandırma programında da kullanıcıya değer seçme alternatifi sunulmaktadır. Sonuç olarak LDR’nin ortalama aydınlık koşullarındaki direnç değeri ADC dönüştürme sürecinde etkili olacaktır. Bu durum dikkate alınmalı ve LDR’ye seri bağlanacak direnç ya da trimpot ona göre seçilmelidir. Ayrıca kullandığınız LDR’ye göre yazılım içinde kalibrasyon yapmanız gerekebilir. MikroC’de Analog-Dijital Dönüştürücü Kütüphanesinin KullanımıA/D işlemi ile ilgili buraya kadar anlatılan kısımda kütüphane kullanmadan, ilgili mikrodenetleyicinin kaydedicileri kullanılarak; dönüştürme işleminin nasıl yapıldığı, kaydedici ayarları, gerekli koşullar ve örnek bir uygulama gösterilmiştir. Bu ayarların sıkıntılı ve zahmetli geldiği durumlarda, mikrodenetleyicinin kaydedici ayarlarıyla uğraşmadan mikroC’nin ADC kütüphanesinden yararlanılabilir. MikroC’nin ADC kütüphanesinde üç temel fonksiyon bulunur. Bunlar:
Şekil 7.9’da PIC16F887 kullanılarak yapılmış bir A/D dönüştürme devresi gösterilmiştir. MCU’nun 2 numaralı analog girişi olan RA2 (AN2) pinine 10kΩ’luk bir potansiyometre bağlanmıştır. Potansiyometrenin orta noktası maksimum ve minimum değer aralığında değiştirildiğinde 10-bitlik çıkış hattında potansiyometrenin % değerine karşılık gelen dijital değerin çıktısı LED’ler yardımıyla gösterilir. Örnek bir hesap yapacak olursak; Devrede dikkat edileceği üzere potansiyometrenin iki yan ucu voltaj referansı olarak kullanılmıştır. Dolayısıyla GND-VDD arası 5V yapmaktadır. 10-bitlik ADC dönüşüm 210-1 = 1023 adımlık bir hassasiyete sahip olduğundan sistemin tepki verebileceği minimum voltaj adımı = 5V/1023 = 4,88mV olur. Ancak PROTEUS simülasyonunda potansiyometre %1’lik adımlarla değiştirilebilmektedir. Bu nedenle %50, yani orta noktada, 2,5V’luk bir gerilim ölçümü sağlanır. Bu gerilimin 10 bitlik dijital değer karşılığı, Dijital değer = 2,5/0,00488 = 511 olarak hesaplanır. Elde edilen dijital değer sağa yaslı olduğunda ilk 8-bit ADRESL kaydedicisinde ve 2 MSB biti de ADRESH kaydedicisinde yer alır.
Şekil 7.9 ADC kütüphanesiyle 10-bitlik analog-dijital dönüştürme
Tablo 7.3 Bitlere göre ağırlık değerleri
Tablo 7.4 ADC kütüphanesiyle 10-bitlik analog-dijital dönüştürme mikroC kodu
Harici Voltaj Referanslı ADC UygulamasıBu uygulamada voltaj referans girişi olarak VDD ve VSS besleme girişleri alınmıştır. Voltaj aralığı farklı olan sinyallerin doğru şekilde dijitale çevrilmesi için 0-5V dönüşümünün yapılması gerekir. Bu işlem için genellikle OPAMP (İşlemsel Kuvvetlendirici) devreleri kullanılır. PIC mikrodenetleyicileri voltaj referans girişi ayarlanabilir denetleyicilerdir. Böylece analog voltaj aralığı daha farklı kaynaklar için 0-5V dönüşümü yapmak zorunda kalmadan dijitale dönüştürme işlemi kolayca gerçekleştirilebilir. Şekil 7.10’da PIC16F877A kullanılarak gerçekleştirilmiş bir uygulama devresi gösterilmiştir. Devrede voltaj referans girişi olarak AN3 ve AN2 analog girişleri kullanılmıştır. AN2 analog girişi şaselenmiş ve AN3 girişine 5V’luk DC kaynak bağlanmıştır. Böylece maksimum 5-0 = 5V aralığında ADC dönüşümü yapılmaktadır. Dönüştürülen değerin LCD ekrana yaklaşık değerde verilebilmesi için bir ölçek ayarlaması yapılmalıdır. ADC sistemi 10bit olduğundan ölçülen maksimum voltaj aralığı 210 – 1 = 1023 adıma oranlanır. Böylece her bir dijital adıma karşılık gelecek voltaj değeri tespit edilmiş olur. En yüksek voltaj adımı = (Vref+ - Vref-)/(2ADC bit-1) = 5/(210-1) = 5/1023 = 0,00489V AN3 ve AN2 analog girişlerini voltaj referansı olarak ayarlamak için PIC16F877A’nın ADCON1 kaydedicisi kullanılır. ADCON1 kaydedicisinin ilk dört biti lojik-1 yapıldığında AN3 pini Vref+, AN2 pini Vref- ve AN0 pini analog kanal olarak ayarlanır. Diğer analog kanallar dijital I/O olarak ayarlanmış olur.
Şekil 7.10 PIC16F877A ile harici voltaj referanslı ADC dönüşümü
Tablo 7.5 PIC16F877A ile harici voltaj referanslı ADC dönüşümü mikroC kodu
Yeni nesil yüksek performanslı 8-bit mikrodenetleyicilerinden 16(L)F18424—44 mikrodenetleyicisiyle birlikte, Microchip firması 12-bitlik ADC2 (Analog Digital Converter with Computation) teknolojisini sunmuştur. Bu hesaplamalı ADC modülünde ayarlanabilir tut ve örnekle kapasitör dizisi bulunur. Böylece örnekleme süresi olan TAD değeri de ayarlanabilmektedir. Bu özellik değişen hızlarda örnekleme yapılabilmesini sağlar. Karşılaştırıcı (Comparator) ModülüKarşılaştırıcılar iki analog girişi karşılaştırıp sonucunda aradaki fark nispetinde değişen genişlikte ve sabit genlikli dijital çıkış üreten devrelerdir. Çoğu mikrodenetleyicide bu işlemi gerçekleştiren “Comparator-Karşılaştırıcı” modülü bulunur. Karşılaştırıcı modülü OPAMP (İşlemsel Yükselteç-Operational Amplifier) elektronik devre bileşenlerinin yapmış olduğu karşılaştırma işlemine ilkesel olarak benzerlik gösterir. Analog karşılaştırma işleminin ilkesel davranışı Şekil 7.11’de gösterilmiştir. Şekilde yer alan siyah alanlar giriş ofset değeri ve tepki süresinden kaynaklı belirsizlikleri ifade etmektedir. Karşılaştırıcının OPAMP’larda olduğu gibi evirmeyen (+) ve eviren (-) olmak üzere iki girişi vardır. Şekilde görüldüğü üzere Vin+ ve Vin- olarak isimlendirilen sinyaller bu girişlere uygulanmıştır. Vin+ girişi değişen genlikli analog işaretin verildiği giriş olarak gösterilmiştir. Vin- girişi ise kesikli çizgiyle gösterilmiştir. Çıkış polaritesinde evirme (tersleme) işlemi yapılmıyorsa, evirmeyen girişe uygulanan sinyal genliği eviren girişe uygulanan sinyal genliğinden yüksek olduğunda lojik-1 seviyesinde çıkış alınır. Aksi durumda çıkıştan lojik-0 alınır.
Şekil 7.11 Karşılaştırıcının çalışma ilkesi
Karşılaştırıcılar özellikle farklı noktalardan alınan algılayıcı bilgilerine bağlı olarak tepkisel çıkış üretmesi istenen ve bu çıkışa göre davranış gösteren otomatik kontrol sistemlerinde (sıcaklık kontrolü, su seviye kontrolü, vb.) tercih edilirler. Bu başlık altında PIC16F887 mikrodenetleyicisinin karşılaştırıcı modülü açıklanacaktır. PIC16F887’nin karşılaştırıcı modülü bağımsız olarak kontrol edilebilen iki adet karşılaştırıcıya sahiptir. Kendi sınıfı içinde çok güçlü ve çok yönlü bir modüle sahip olması nedeniyle bu mikrodenetleyici tercih edilmiştir. Mikrodenetleyicilerin karşılaştırıcı modülleri karmaşık bir dizi analog elektronik devre bloklarından oluşur. Bu sayede fazla kod yazmadan işletilebilen ve ana programdan bağımsız analog sinyal kontrolü uygulamaları yapılabilir. Karşılaştırıcı modülü aşağıdaki özelliklere sahiptir:
Karşılaştırıcı KontrolüHer karşılaştırıcı ayrı bir kontrol ve konfigürasyon kaydedicisine sahiptir. Bu kaydedicilerin işlevi kısaca listelendiği gibidir:
CM1CON0 ve CM2CON0 kaydedicileri ortak olarak aşağıdaki kontrol ve durum bitlerine sahiptir:
CM1CON0: C1 KARŞILAŞTIRICISI KONTROL KAYDEDİCİSİ (ADRES: 107h – PIC16F887)
bit 7 C1ON: C1 karşılaştırıcısı etkinleştirme biti C1 karşılaştırıcısının basitleştirilmiş blok diyagramı Şekil 7.12’de gösterilmiştir. C1ON biti lojik-0 yapıldığında XOR kapısına lojik-0 çıkışı gönderilir. Q1 ve Q3 saat çevrimleri dört fazlı sistem saati çevriminin adımlarını ifade etmektedir. Q1 sinyali uyku modunda lojik-1 seviyesinde tutulmak suretiyle sistemin uyku modunda da çalışmaya hazır halde tutulması sağlanır.
Şekil 7.12 C1 karşılaştırıcısının basitleştirilmiş diyagramı
CM2CON0: C2 KARŞILAŞTIRICISI 0 NUMARALI KONTROL KAYDEDİCİSİ (ADRES: 108h – PIC16F887)
bit 7 C2ON: C2 karşılaştırıcısı etkinleştirme biti C2 karşılaştırıcısının basitleştirilmiş blok diyagramı Şekil 7.13’te gösterilmiştir. Görüleceği üzere C2’nin Timer1 modülü ile olan ilişkisi dışında diğer tüm özellikler C1 karşılaştırıcısıyla aynıdır. C2ON biti lojik 0 yapıldığında XOR kapısına lojik-0 çıkışı gönderilir. Q1 ve Q3 saat çevrimleri dört fazlı sistem saati çevriminin adımlarını ifade etmektedir. Q1 sinyali uyku modunda lojik-1 seviyesinde tutulmak suretiyle sistemin uyku modunda da çalışmaya hazır halde tutulması sağlanır.
Şekil 7.13 C2 karşılaştırıcısının basitleştirilmiş diyagramı
Şekil 7.14’te C1 karşılaştırıcısını ve eviren giriş olarak 4 analog kanalı kullanan bir uygulama devresi gösterilmiştir. Devrede RB7 pinine bağlı buton yardımıyla sırasıyla 4 analog kanaldan biri seçilmektedir. Karşılaştırıcının eviren girişi olarak kullanılan her bir analog kanal girişine ışığa duyarlı eleman olan LDR bağlanmıştır. Seçilen analog kanaldaki bilgi, evirmeyen giriş kanalı RA3/C1IN+ pinine bağlı potansiyometre ile ayarlanmış olan voltaj seviyesiyle karşılaştırılmaktadır. Karşılaştırma sonucu RA4/C1OUT pinine bağlı LED yardımıyla dijital olarak alınmaktadır. O an için hangi kanalın aktif olduğunu görebilmek için sırasıyla ilgili kanalı simgeleyen ve D portuna bağlanmış olan LED’ler aktif olmaktadır. RB7 pinine bağlı buton mikrodenetleyicinin port durum değişim kesmesini kullanarak çalışmaktadır. PIC16F887, B portunun her bir pini bağımsız olarak ayarlanabilme özelliğine sahiptir. Dahili zayıf çekme direncinin (weak pull-up) aktif kılınması için OPTION_REG kaydedicisinin (RBPU) ̅ bitine ek olarak WPUB (Weak Pull-Up port B) kaydedicisinin de ayarlanması gerekir. Benzer şekilde, port durum değişim kesmesi için INTCON kaydedicisinin RBIE bitine ek olarak IOCB (Interrupt On-Change port B) kaydedicisinin de ayarlanması gerekir.
Şekil 7.14 C1 karşılaştırıcısı ile 4 kanal analog giriş uygulaması
Tablo 7.6 C1 karşılaştırıcısı ile 4 kanal analog giriş uygulaması mikroC kodu
CM2CON1: C2 KARŞILAŞTIRICISI 1 NUMARALI KONTROL KAYDEDİCİSİ (ADRES: 109h – PIC16F887)
bit 7 MC1OUT: C1OUT bitinin aynalanmış bir kopyası alınır. Bu bit belleği C1OUT karşılaştırıcı çıkışının mevcut değerinin bir kopyasını tutar. Böylece C1 karşılaştırıcısının fiziki çıkış pinini (RA4/T0CKI/C1OUT) kullanmak zorunda kalmadan, karşılaştırıcının mevcut değerini MCU’nun boşta olan başka bir pinine yönlendirebilirsiniz. PIC16F887’de görüldüğü üzere fiziki C1 çıkış pini aynı zamanda harici Timer0 saat darbesi girişidir. Bu hattı T0CKI özelliğiyle kullanmak istediğiniz bir karşılaştırıcı uygulamasında, örnek olarak aşağıdaki gibi bir kodlamayla C1 karşılaştırıcı sonucunu D portunun RD0 pininden alabilirsiniz: Şekil 7.15’deki devrede C1 ve C2 karşılaştırıcılarının her ikisini de ve CM2CON1 kaydedicisinin ayna çıkışlarını kullanan bir uygulama devresi gösterilmiştir. Devrede görüleceği üzere harici Timer0 girişi (T0CKI) kullanılmıştır. Harici zaman darbesi girişinden gelen darbelere göre zaman kesmesi üretilmekte ve belli aralıklarla (uygulamaya göre 10sn’lik aralıklarla) karşılaştırıcı girişleri kontrol edilmektedir. Karşılaştırıcı çıkışları CM2CON1 kaydedicisinin MC1OUT ve MC2OUT bitleri yardımıyla MCU’nun RD0 ve RD1 pinlerinden alınmaktadır. Böylece fiziki C1 çıkış pini (C1OUT), harici Timer0 saat darbesi girişi olarak tahsis edilmiştir. Aynı şekilde haberleşme bölümünde göreceğimiz SPI iletişim modunda köle seçimi (SS - Slave Select) olarak da kullanılan C2 çıkı pini (C2OUT) muhtemel bir SPI iletişimi uygulaması için boşa çıkartılmıştır.
Şekil 7.15 C1 ve C2 karşılaştırıcılarının ayna çıkışlarının kullanılması örneği
Uygulamada görüleceği üzere, karşılaştırıcıların eviren analog girişleri için pozitif sıcaklık katsayılı termistörler (PTC) kullanılmıştır. Program kodunda karşılaştırıcıların çıkış polariteleri terslenmektedir. Böylece, sıcaklık arttığında PTC dirençleri yükselmekte ve negatif giriş (eviren), pozitif girişten (evirmeyen) yüksek voltaj seviyesine ulaşınca polarite terslemesinden dolayı karşılaştırıcı çıkışları lojik-1 seviyesine ulaşmaktadır. Elde edilen karşılaştırıcı çıkış değerlerinin ayna değeri RD0 ve RD1 pinlerine yönlendirilmektedir. Her iki karşılaştırıcı çıkışı da lojik-1 olduğunda RC2/CCP1 pinine bağlı mosfet kontrollü 12V DC motor çalıştırılmaktadır. Tablo 7.7 C1 ve C2 karşılaştırıcılarının ayna çıkışlarının kullanılması örneği mikroC kodu
Karşılaştırıcı Kesmesi ve Uyku ModuKarşılaştırıcı çıkış değerinde bir değişim meydana geldiğinde kesme bayrağının kurulması sağlanabilir. Karşılaştırıcı kesmesinin doğru kullanılabilmesi için bazı teknik ayrıntılara dikkat edilmelidir. Özellikle endüstriyel uygulamalarda yanlış kullanımdan kaynaklı istenmeyen kesme aktiviteleri oluşabilir. Her bir karşılaştırıcı modülü içinde eşleşmeme durumunu izleme devresi vardır. Karşılaştırıcı çıkışı Şekil 7.12 ve Şekil 7.13’te görüldüğü üzere D (Data) tipi flip-flop devresine aktarılmaktadır. Bu flip-flop türü EN (ENable) girişinden gelen darbelerin her yükselen kenarında D girişinde gözüken değeri çıkışa aktarma özelliğine sahiptir. EN girişinde darbe olmadığı durumda flip flop devresinin çıkış değeri sabit kalmaya devam eder. Bu nedenle bu tür devrelere tutma devresi (latch) denir. Kısacası bir sonraki darbeye kadar çıkış hattı bir önceki değerini korumaya devam eder. Şekillerde görüldüğü üzere CMxCON0 kaydedicisi okunduğunda (Q3*RD_CMxCON0), tutma devrelerinden biri, değerini karşılaştırıcı çıkışı değeriyle günceller. Bu tutma devresi, bir sonraki okuma komutuna kadar ya da bir Reset işlemi gerçekleşene kadar değerini korur. Eşleşmeme durumunu izleyen devrenin diğer tutma devresi her Q1 darbesinde değerini güncellemektedir. Dolayısıyla Q1 darbesini izleyen tutma devresinin değişen karşılaştırıcı çıkışına kilitlenmesi durumunda, her iki tutma devresinin de çıkışlarının alındığı EX-OR (Exclusive-OR gate) kapısının girişinde farklılık olacağından çıkışta lojik-1 değeri üretilir ve bu değer PIR2 kaydedicisinin CxIF kesme kontrol bitine gönderilir. Eşleşmeme durumu, ilgili karşılaştırıcı kaydedicisi okunana kadar ya da karşılaştırıcı çıkışı bir önceki durumuna gelene kadar devam eder.
NOT1: CMxCON0 kaydedicisine yazma komutu (kaydedicinin tamamına ya da herhangi bir bitine) gerçekleştiğinde de eşleşmeme durumu ortadan kalkar. Çünkü her yazma komutu aynı zamanda yazma çevriminin başında okuma işlemi de içerir. Karşılaştırıcı kesmesi eşleşmeme seviyesiyle değil eşleşmeme kenar tetiklemesiyle gerçekleşir. Bu, CMxCON0 kaydedicisiyle okuma/yazma işlemi yapmadan kesme bayrağının resetlenebileceği anlamına gelir. Eşleşmeme durumunu izleyen kaydediciler temizlendiğinde, karşılaştırıcının önceki durumuna dönmesine bağlı olarak bir kesme üretilecektir. Aksi takdirde, kesme üretilmeyecektir. Bu durumlar Şekil 7.16’da gösterilmiştir.
Şekil 7.16 Karşılaştırıcı modülünde kesmenin üretilmesi
Yazılım, CMxCON0 ya da CM2CON1 kaydedicilerinden okuma işlemi yapıldığı gibi, değişim olup olmadığını belirlemek için karşılaştırıcı çıkışının durumu hakkında bilgi alma ihtiyacı duyacaktır. PIR2 kaydedicisinin CxIF biti karşılaştırıcı kesme bayrağıdır. Bu bit yazılım içinde kendisine ‘0’ yazılarak temizlenmelidir. Ayrıca bu kaydediciye ‘1’ değeri de yazılabileceğinden kesme üretilebilir. Karşılaştırıcı kesmelerini etkinleştirmek için PIE2 kaydedicisinin CxIE biti ve INTCON kaydedicisinin PEIE ve GIE bitleri de kurulmalıdır. Her ne kadar PIR2 kaydedicisinin CxIF biti hala kurulu kalacak olsa da, bu bitlerden herhangi birinin kurulmaması durumunda kesme etkinleşmeyecektir.
NOT1: Bir okuma işlemi gerçekleştirilirken (Q3 çevriminin başlaması sırasında) CMxCON0 (CxOUT) değerinde bir değişim meydana geldiğinde PIR2 kaydedicisinin CxIF kesme bayrağı kurulmayabilir. Uyku moduna girmeden önce karşılaştırıcı etkinleştirilirse, Uyku (Sleep) sırasında aktif kalır. Karşılaştırıcının tükettiği ilave akım değeri Ek-E4’te PIC16F887’nin Elektriksel Özellikleri başlığında anlatılmıştır. Eğer karşılaştırıcı mikrodenetleyiciyi uyku modundan çıkartmada kullanılmayacaksa, uyku moduna girmeden önce kapatılabilir. Böylece ek bir akım tasarrufu sağlanmış olur. Karşılaştırıcı çıkışındaki bir değişim mikrodenetleyiciyi uyku modundan çıkartmaya yeter. Karşılaştırıcının, MCU’yu uyku modundan çıkartacak şekilde ayarlanması için INTCON kaydedicisinin PEIE ve GIE bitlerinin ve PIE2 kaydedicisinin CxIE bitinin kurulması gerektiği unutulmamalıdır. MCU’yu reset ettiren bir olay CMxCON0 ve CM2CON1 kaydedicilerini de reset durumuna sokar. Bu durum her iki karşılaştırıcının ve voltaj referanslarının kapalı durumuna girmesine yol açar. Şekil 7.17’de her iki karşılaştırıcıyı da kullanan ve mikrodenetleyiciyi uyku modundan çıkartarak 12V DC motoru süren bir uygulama devresi gösterilmiştir. Karşılaştırıcı çıkışlarının her durum değişiminde kesme oluştuğundan (karşılaştırıcı kaydedicileri okuma işlemine tutulduğunda), karşılaştırıcı çıkışları kaydedicilerin okunması suretiyle kontrol edilmektedir. Eğer karşılaştırıcı çıkışları lojik-1 ise motor sürülmektedir. Aksi taktirde motor durdurulmaktadır. Analog karşılaştırıcıların eviren girişlerinin voltaj kontrolü 50 k’luk potansiyometreler ile yapılmaktadır. İsteğinize ve devreyi kullanım amacınıza göre, fiziksel değişime bağlı olarak direnç değişimi ilkesiyle çalışan herhangi bir algılayıcı da (termistör, LDR, yük sensörü, vb.) bağlayabilirsiniz.
Şekil 7.17 Uyku modunda C1 ve C2 karşılaştırıcıları kesme uygulaması
Tablo 7.8 Uyku modunda C1 ve C2 karşılaştırıcıları kesme uygulaması mikroC kodu
Ek Karşılaştırıcı ÖzellikleriKarşılaştırıcının bu anlatılanlar dışında iki tane daha ek özelliği vardır:
PIC16F887 mikrodenetleyicisinde Timer1 modülünün kapı etkinleştirme özelliği vardır. Timer1 modülünün T1CON kaydedicisinin TMR1GE biti lojik-1 yapıldığında bu özellik etkinleştirilmiş olur. Kapı etkinleştirildiğinde Timer1 modülünün TMR1H-TMR1L kaydedicileri CM2CON1 kaydedicisinin T1GSS bitine göre artış gösterir. CM2CON1 kaydedicisinin T1GSS biti temizlendiğinde (lojik-0) Timer1 kaydedicisi C2 karşılaştırıcısının çıkışına göre artar. Bu özellik yardımıyla analog olayların oluş aralığı ya da süresi zamanlanabilir. T1GSS biti kurulduğunda (lojik-1) RB5/AN13/(T1G) ̅ pininden gelen sinyalin durumuna göre artış sağlar. Karşılaştırıcı Timer1 kapı kaynağı olarak kullanılacağı zaman, karşılaştırıcının Timer1 ile senkronize edilmesi tavsiye edilir. CM2CON1 kaydedicisinin C2SYNC bitini kurmak suretiyle, C2 karşılaştırıcısının çıkışı Timer1 ile senkronize edilir. C2’nin çıkışı Timer1 saat kaynağının düşen kenarında tutulur (latched). Eğer Timer1 önölçekleyicisi kullanılıyorsa, karşılaştırıcı çıkıcı ön ölçekleme değeri nispetinde tutulur. Daha ayrıntılı bilgi için Şekil 7.13’e ve Şekil 7.18’e bakabilirsiniz.
Şekil 7.18 PIC16F887’nin Timer1 blok yapısı
Karşılaştırıcı SR (Set-Reset) Tutma ÖzelliğiSR (Set-Reset) tutma özelliği karşılaştırıcı çıkışlarına ek bir kontrol özelliği kazandırır. Modül tek bir SR tutma devresi ve çıkışta çoktan seçicilerden (multiplexer-MUX) oluşur. SR tutma devresi set edilebilir, resetlenebilir ya da geçişli (toggle) ayarlanabilir. SR tutma devresi ayrıca, SRCON kontrol kaydedicisinin ilgili bitleri yardımıyla karşılaştırıcı çıkışından bağımsız olarak set ya da reset edilebilir. SR tutma devresinin çıkış MUX’ları, karşılaştırıcı çıkışını ya da tutma devresi çıkışını I/O portuna yönlendirmeyi sağlar.
Şekil 7.19 SR tutma devresi basitleştirilmiş blok diyagramı
SRCON: SR TUTMA DEVRESİ KONTROL KAYDEDİCİSİ (ADRES: 185h – PIC16F887)
bit 7: SR1: SR tutma devresi konfigürasyon bitidir. SR tutma devresi çıkışının I/O pinine aktarılabilmesi için öncesinde ilgili CxOE bitinin kurulması ve TRIS komutuyla da çıkış ayarının yapılması gerekir. Tutma devresi, bir saat kaynağına bağlı olmayan (bu yönüyle flip-flop devrelerinden ayrılır) Set-Reset özellikli bir devredir. Set-Reset girişlerinin her biri aktif yüksek (lojik-1) seviyelidir. SR tutma devresinin her iki girişi de bir karşılaştırıcı çıkışına ve yazılım kontrollü darbe üretecine bağlıdır. Tutma devresi C1OUT ile ya da SRCON kaydedicisinin PULSS bitiyle set edilebilir. Benzer şekilde, C2OUT ile ya da SRCON kaydedicisinin PULSR bitiyle resetlenebilir. Tutma devresi baskın olarak reset özelliklidir. Çünkü her iki girişi de aktif yüksek seviyede olduğunda tutma devresi reset durumuna geçer. NOT: Tutma devresinin S ve R olarak iki girişi olduğu gibi Q ve Q olarak iki çıkışı vardır. Tutma devresinin S girişi lojik-1 ve R girişi lojik-0 olduğunda Q çıkışı lojik-1 olur. R girişi lojik-1 yapıldığında ise Q çıkışı lojik-0 olur. Q çıkışı Q çıkışının tersi olarak işlem görür. Diğer bir ifadeyle Q’nun lojik değeri neyse, Q tersi lojik değere sahiptir. Karşılaştırıcı Voltaj ReferansıKarşılaştırıcı voltaj referansı modülü karşılaştırıcılar için programlanabilir voltaj referansı üretmeyi sağlayan bir modüldür. Karşılaştırıcılarla yapılan uygulamalarda son derece kullanışlı bir modüldür. Daha önceki uygulamalarda (Şekil 7.14, 7.15 ve 7.17) voltaj referansı olarak, C1IN+ ve C2IN+ girişlerine bağlanan potansiyometrelerle ayarlanan VSS-VDD kaynak gerilimi kullanılmıştı. Bu modül yardımıyla, mikrodenetleyiciyi besleyen VDD gerilim kaynağının ya da harici bir kaynağın programlanarak ayarlanan bir değeri referans olarak kullanılır. Voltaj referans modülü aşağıdaki özelliklere sahiptir:
Aşağıda açıklandığı üzere VRCON kaydedicisi voltaj referans modülünü ayarlamak için kullanılır. VRCON: VOLTAJ REFERANSI KONTROL KAYDEDİCİSİ (ADRES: 97h – PIC16F887, CVRCON: FB5h – PIC18F2550)
bit 7: VREN: Karşılaştırıcı voltaj referansı etkinleştirme bitidir. Voltaj referans modülünün çalışma ilkesi Şekil 7.20’de gösterilmiştir. Referans seviyesi olarak kullanılacak analog voltaj değeri, 16 dirençli R-2R modeli merdiven tipi dijital-analog dönüştürücü (DAC) devresi üzerinden seçilir. VRCON kaydedicisinin VRSS bitiyle referans kaynağı dâhili ya da harici olarak seçilebilir. Karşılaştırıcının voltaj referansı karşılaştırıcının konfigürasyonundan ayrıdır. VREN biti kurulduğunda voltaj referansı etkinleşir. VR bitleriyle çıkış referans voltajı olan CVREF voltajı 16 kademeli olarak aşağıdaki formüle göre belirlenir:
DİKKAT: Mikrodenetleyicilerde ADC ya da karşılaştırıcı gibi analog işlemler yaparken mikrodenetleyicinin elektriksel limitleri dikkate alınmalıdır. VDD-VSS kaynağının dışında bir kaynak kullanılacağı takdirde mikrodenetleyicinin sınırları dışında voltaj yüklemesi yapılmamalıdır. Normal şartlarda çoğu PIC mikrodenetlyicisi 2,0 – 5,5V aralığında çalışmaya uygundur. Her bir pinden en fazla ne kadar akım çekilebileceği, en yüksek güç tüketimi, ideal çalışma sıcaklıkları altında ve diğer aralıklarda elde edilen tepki değerleri, vb. ilgili mikrodenetleyicinin elektriksel nitelikleri başlığı (Electrical Specifications) altında açıklanmaktadır. Bu kitapta da PIC16F887’nin önemli başlıca elektriksel nitelikleri Ek-E4’te açıklanmıştır.
Voltaj referansı olarak besleme kaynağından farklı harici kaynak kullanılmasının sebebi kısaca iki nedenle açıklanabilir:
Şekil 7.20 Karşılaştırıcı voltaj referansı blok diyagramı
CVREF çıkış voltajı ek bir güç tüketimi olmadan VSS’ye kenetlenebilir. Bu işlem VRCON kaydedicisinin bitleri aşağıdaki gibi ayarlandığında gerçekleşir:
CMxCON0 kaydedicilerinin CxR bitleri ve CM2CON1 kaydedicisinin CxRSEL bitleri lojik-1 yapıldığında ilgili karşılaştırıcının CxIN+ girişine CVREF bağlanır. VRCON kaydedicisi yukarıdaki gibi ayarlandığında ilgili karşılatırıcının evirmeyen girişine VSS şase hattı yönlendirilmiş olur. Bu ayarlamalar karşılaştırıcının, ilave CVREF modülü akımı tüketmeden sıfır kesimi algılaması (zero-crossing detection, ayrıntılı bilgi için bkz. 4.10) gerçekleştirmesini sağlar. Sabit voltaj referansı (SabitRef) VDD kaynağından bağımsızdır. Nominal çıkış voltajı 0,6V’tur. Bu referans SRCON kaydedicisinin FVREN biti kurularak etkinleştirilebilir. Bu referans, HFINTOSC (dâhili yüksek frekans osilatör) osilatör modu aktif olduğunda her zaman etkindir. ÖNEMLİ: Sabit voltaj referansı modülü etkinleştirildiğinde, kuvvetlendirici devresinin çıkışının dengeye gelmesi bir miktar süreye ihtiyaç duyacaktır. Bu nedenle kullanıcının yazılım içinde yapay bir geciktirme yapması faydalı olacaktır. Mikrodenetleyicinin bu işlem için ihtiyaç duyduğu minimum gecikme Ek-E4’te Elektriksel Özellikler başlığı altında açıklanmıştır. Tablo 7.9’da ADCON1 kaydedicisinin CFG1 ve CFG0 bitleriyle, VRCON kaydedicisinin VRSS ve VROE bitlerine göre RA3 ve RA2 pinlerinin almış olduğu görevler ve voltaj referans tercihleri gösterilmiştir. Tablo 7.9 Karşılaştırıcı ve ADC Voltaj Referans Önceliği
Şekil 7.21’de karşılaştırıcı voltaj referansını kullanarak gerçekleştirilmiş bir batarya şarj voltajı izleme uygulaması gerçekleştirilmiştir. Devrede DC 12V’luk akülerin şarj durumunun izlenebilmesi için bir dizi düzenleme yapılmıştır. DC 12V, mikrodenetleyicinin girişlerinde referans seviyesi olarak kullanılmaya uygun bir voltaj seviyesi değildir. Bu nedenle UA741 OPAMP entegresi gerilim izleyici (voltage follower) gibi kullanılarak MCU için uygun voltaj aralığı elde edilmiştir. CVREF seviyesi için MCU’nun VDD – VSS beslemesi seçilmiş ve dolayısıyla DC 5V ile çalıştırılan bir MCU için VRCON kaydedicisinin VR<3:0> bitleri ‘1011’ şeklinde ayarlanarak 2,97V’luk CVREF değeri elde edilmiştir. Burada amaç 12V’luk bataryanın gerilim değeri 11V seviyelerine düştüğünde devrenin ikaz vermesini sağlamaktır. Bu nedenle OPAMP’ın evirmeyen girişine bağlanan direnç grubu, OPAMP çıkışında 2,97V seviyesine uygun olacak şekilde seçilmiştir. UA741 OPAMP entegresi gerilim izleyici olarak kullanılırken yalnızca pozitif kaynak ile beslenmiştir. R3 direnci üzerinden verilen akü ya da batarya grubunun gerilim değeri 12V olduğunda OPAMP çıkışında, dolayısıyla C1 karşılaştırıcısının C12IN0- eviren girişinde 3,20V değeri elde edilir. Bu değer hesaplanan CVREF değerinden büyük olduğu için sistem ikaz vermez. Ancak akü ya da batarya grubunun voltaj seviyesi 11V dolaylarına indiğinde, OPAMP çıkışı 2,93V seviyesine iner ve bu durumda sistem fasılalı olarak ikaz verir.
Şekil 7.21 Voltaj referans modülüyle batarya şarj izleme devresi
Uygulamada dâhili 8 MHz (HFINTOSC) osilatörü kullanılmıştır. Gerçek uygulamada, derleme öncesinde Project→Edit Project pencersinden INTOSCIO ya da INTOSC osilatör tercihlerinin yapılması unutulmamalıdır. Voltaj şarj değeri izlenen akü ya da batarya grubundan ciddi derecede akım geçişini önlemek için gerilim bölücü olarak davranan R3 ve R4 dirençlerinin değeri büyük seçilmiştir. Bilindiği üzere OPAMP’lar yüksek giriş direncine sahip olduklarından giriş akımları 0’a yakındır. Tüm akım dirençler üzerinden akar. Bu akımı daha fazla düşürmek için R3 ve R4 dirençlerinin değeri oransal olarak 100kΩ’lar mertebesinde seçilebilir. OPAMP’lar ile yapılan gerilim izleyicilerde, gerilim bölücü üzerinden elde ettiğiniz gerilim kayba uğramadan mikrodenetleyicinin ilgili girişinde gözükür. Tablo 7.10 Voltaj referans modülüyle batarya şarj izleme devresi mikroC kodu
Dijital Analog Dönüştürme (DAC) ModülüBilindiği üzere mikrodenetleyiciler belirli bir voltaj aralığında lojik-1 ve lojik-0 ikilik değerleriyle çalışan sistemlerdir. Ara voltaj değerleri elde etmemiz için kısaca DAC (Digital Analog Converter) diye bilinen dijital analog dönüştürücülerden yararlanmamız gerekir. Bazı PIC mikrodenetleyicilerinde dâhili dijital analog dönüştürücü modülü bulunmaktadır. Ancak mikrodenetleyicilerde dijital analog dönüştürme işlemi için genellikle harici entegre devre sistemleri kullanılmaktadır. Çoğunlukla bu sistemler SPI iletişim protokolü ile haberleşir. Bölüm 9.2.2.’de SPI iletişim protokolünü kullanan MCP4921 DAC entegresiyle dijital analog dönüştürme uygulaması anlatılmıştır. Bu bölümde dâhili DAC modülüne sahip ve son derece zengin özellikleri olan PIC12F1840 mikrodenetleyicisi anlatılacaktır. Bu mikrodenetleyicinin, ekstra düşük voltaj teknolojisine sahip (XLP) LF serisi modeli de bulunmaktadır. Bu mikrodenetleyici dâhili DAC modülü sayesinde harici bir dönüştürücü gerektirmeden dijital analog dönüşümü gerçekleştirebilir. DAC modülü; 32 seçilebilir seviyeli ve girişle rasyometrik olan değişken bir voltaj referansı sunar. DAC modülünün girişi:
DAC’ın çıkışı:
DAC, DACCON0 kaydedicisinin DACEN biti ayarlanarak etkinleştirilebilir. DAC çıkış geriliminin nasıl elde edildiği Tablo 7.12’de gösterilmiştir. Tablodan görüleceği üzere analog çıkış gerilimi (VOUT) hiçbir zaman tam olarak kaynak gerilimine (VSOURCE+) eşit olmamaktadır. DAC modülünü etkinleştiren DACEN pini kurulduğunda ve kaynak gerilimi VDD olarak ayarlandığında, en yüksek çıkış gerilimi DACR pinlerinin ‘11111’ olarak ayarlanması durumunda elde edilir. Bu durumda VDD gerilimi 5V olarak düşünülürse; VOUT = 5x(31/32)=4,84V olarak elde edilir. Tablo 7.12 DAC çıkış voltajının hesaplanması
Şekil 7.22’de Dijital Analog Dönüştürücü modülünün blok diyagramı gösterilmiştir.
Şekil 7.22 DAC modülü blok diyagramı
FVRCON: SABİT VOLTAJ REFERANSI KONTROL KAYDEDİCİSİ (ADRES: 197h – PIC12F1840)
bit 7: FVREN: Sabit voltaj referansı etkinleştirme bitidir. DACCON0: DİJİTAL ANALOG DÖNÜŞTÜRÜCÜ KONTROL KAYDEDİCİSİ 0 (ADRES: 198h – PIC12F1840)
bit 7: DACEN: DAC etkinleştirme bitidir.
Şekil 7.23 DACOUT pinine tampon devresinin bağlanması
0 = DAC voltaj seviyesi DACOUT pininden yalıtılır. DACCON1: DİJİTAL ANALOG DÖNÜŞTÜRÜCÜ KONTROL KAYDEDİCİSİ 1 (ADRES: 199h – PIC12F1840)
bit 7-5 Kullanılmıyor: Lojik-0 olarak okunur. Şekil 7.24’te gösterilen uygulama ile 5V DC kaynaktan yaklaşık 50Hz frekanslı testere dişi gerilimin elde edilmesi gösterilmiştir. 0-5V arası yükselip alçalan analog gerilim, işlenmek üzere OPAMP ile gerçekleştirilmiş gerilim izleyicili tampon devresine uygulanmıştır. Tampon devresi çıkışındaki gerilim güvenli şekilde uygun referans düzenleyici ve filtre devreleriyle -2,5V – 2,5V arasında ya da daha yüksek genlikle salınım yapan sinüsoidal gerilime dönüştürülebilir.
Şekil 7.24 PIC12F1840 ile DAC uygulaması
OPAMP devresinin çıkışına basit bir RC devresi ile alçak geçiren filtre devresi bağlanarak testere dişi sinyalin sinüs dalgasına dönüşümü sağlanmıştır. Yüksek frekanslı sinyaller kondansatör üzerinden şaselenmektedir. Kondansatör ve direnç değerleri geçmesi istenen üst frekans değerine göre hesaplanır. Kondansatör değerinin çok küçük seçilmesi durumunda sinyal değişime uğramadan olduğu gibi alınır. Bu nedenle uygun değer seçiminde Denklem 7.1’den yararlanılır ve kesim frekansı hesabı yapılır. Kesim frekansı, güç kaybının yarı yarıya gerçekleştiği ya da sinyal genliğinin √2/2 katı kadar zayıfladığı frekanstır (cut-off frequency - fc). fc=1/2πRCDenklem 7.1
Şekil 7.25 Alçak geçiren filtrede frekans tepkisi
Kesim frekansında genlik olarak desibel cinsinden oluşan kayıp Denklem 7.2 ile hesaplanır. Denklem 7.2 Kesim frekansını yaklaşık olarak 100 Hz dolaylarında belirlersek R = 1,5 kΩ ve C = 1 uF değerlerinin ideal sonucu vereceği görülecektir. Böylece 50 Hz’lik testere dişi sinyalimiz güç kaybına uğramadan sinüs dalga formu elde edilecek şekilde filtrelenmiş olur. Şekil 7.26’da testere dişi sinyalin ve sinüs dalgasının gösterildiği osiloskop ekranı yer almaktadır.
Şekil 7.26 DAC çıkışı ve filtrelenmiş durumu
Tablo 7.13’te gösterilen uygulamanın gerçek fiziki devrede de çalışması için konfigürasyon sözcüklerinin ayarlanmasını sağlayan proje düzenleyicisi (Project Edit) penceresinin Şekil 7.27’de gösterildiği gibi ayarlanması yerinde olacaktır. Uygulama devresi 8 MHz dâhili osilatör ile gerçekleştirilmiştir. Uygun frekansın elde edilmesi Timer0 kesmesi kullanılarak gerçekleştirilmiştir. Söz konusu uygulamada yakşalık 20 msn’lik (50Hz) bir periyot elde edilmiştir. ‘while()’ döngüsü içindeki ‘sure’ değişkeni değerini ayarlamak suretiyle belli bir aralıkta farklı frekans değerleri elde edebilirsiniz
Şekil 7.27 PIC12F1840 ile DAC uygulaması için konfigürasyon sözcüklerinin ayarlanması
Kapasitif Algılama Modülü (Capasitive Sensing Module – mTouch™)Kapasitif algılama modülü PIC12F1840 ile dâhili olarak sunulmuş ve harici bir elektronik donanıma gerek duymadan yakın mesafeden algılama gerçekleştiren bir çevresel aygıt donanımıdır. Bu tür donanımlar membran panel gibi dokunmatik olarak çalışan tuşların ve butonların yerine kullanılabilir. Yeni nesil ev elektroniği aletlerinde, LCD ekranların kontrolünde, otomobillerde vb. alanlarda günlük yaşamda karşımıza çıkan bir teknolojidir. PIC12F1840 mikrodenetleyicisinin 4 adet kapasitif algılama özellikli pini vardır. PCB olarak hazırlayacağınız bir pedi bu girişlerden birine bağladığınızda ve gerekli kaydedici ayarlamalarını yaptığınızda basitçe çalışacak bir yakın mesafe algılayıcısı tasarlamış olursunuz. Pede parmağınızı yaklaştırdığınızda, ayarladığınız mesafeden algılama gerçekleşecektir. Temel çalışma ilkesi, bu girişlerin kapasitif yükleme etkisine karşı gösterdikleri hassasiyetle ilgilidir. Yaklaşım gerçekleştiğinde kapasitif yükleme etkisiyle birlikte frekans kayması meydana gelir. Timer modülleri kullanılarak frekansta gerçekleşen bu kayma tespit edilir. Şekil 7.28’de Timer0 ve Timer1 modüllerinin kapasitif algılama osilatörüyle birlikte kullanımı gösterilmiştir. Yapılacak uygulamada Timer0 frekans üreteci için zaman kaynağı, Timer1 ise R/C osilatörünü sayıcı olarak olarak kullanılır.
Şekil 7.28 Kapasitif algılama blok diyagramı
Bu modülün kullanımı oldukça kolaydır. Kapasitif algılama modülü analog kanal üzerinden çalışır. Kısaca ilgili kanaldan okuma yapmak için şu adımlar izlenir:
Kapasitif algılama osilatörü üçgen dalga üretecek sabit bir akım kaynağına sahiptir. CPSCON0 kaydedicisinin CPSOUT biti akımın kapasitif algılama osilatörüne girdiğini mi (sink) yoksa osilatörden çıktığını mı (source) göstermektedir. Osilatör bir PCB ped şeklinde tasarlanmış bir kapasitif yükü sürecek şekilde tasarlanmıştır ve aynı zamanda Timer0 ya da Timer1 için saat darbesi kaynağı olur. Osilatör, CPSCON0 kaydedicisinin CPSRNG<1:0> bitleriyle tanımlanan 3 farklı akım moduna sahiptir. Osilatör için farklı akım modlarının olması iki duruma hizmet eder:
Kapasitif algılama osilatörü, osilasyonun başlaması için iki voltaj eşiği sağlayan voltaj referansı tekniğini kullanır. Üst voltaj eşiği Ref+, alt voltaj eşiği Ref- olarak isimlendirilir. Kullanıcı, kapasitif algılama osilatörüne dâhil sabit voltaj referansından ya da FVR modülü ve DAC modülü tarafından sağlanan ayarlanabilir voltaj referansından ikisi arasında tercih yapabilir. Tercih işlemi CPSCON0 kaydedicisinin CPSRM bitiyle yapılır. Sabit voltaj referansları seçildiğinde, VSS alt voltaj eşiği Ref-‘i, VDD ise üst voltaj eşiği Ref+’yı belirler. Ayarlanabilir voltaj referansları kullanıldığında, DAC voltajı alt eşik değerini (Ref-), FVR ise üst voltaj eşiğini (Ref+) belirler. Bu ayarlanabilir referansları kullanmanın avantajı, VDD’deki değişimlerde frekansın sabit kalmasıdır. Ayarlanabilir voltaj referansları kullanılarak farklı osilasyon frekansları elde edilebilir. Üst voltaj referansı daha fazla düşürüldükçe ve alt voltaj referansı da daha fazla yükseltildikçe daha yüksek kapasitif algılama osilatörü frekansı elde edilir. Bu açıklanan çalışma modlarının kısa özeti Tablo 7.14’te sunulmuştur. Tablo 7.14 Voltaj referanslarına göre akım modları
Şekil 7.29’da PROTEUS programının TOUCHPAD aracı kullanılarak gerçekleştirilmiş uygulama devresi gösterilmiştir. Yapılan kaydedici ayarları ve mikrodenetleyicinin çalışma frekansına bağlı olarak, canlandırma devresinde kullanılan pedin değerleri ölçülmüştür. Başlangıçta yaklaşık 13500 dolaylarında bir algılama değeri elde edilmektedir. Canlandırmanın üstündeki el simgesi hareket ettirilip aktivasyon gerçekleştiğinde, algılama değeri keskin şekilde çift haneli sayılara düşmektedir. Proteus programının bu aracı güncelleme yapmamaktadır. Dolayısıyla doğru etki sonucunun izlenebilmesi için devreyi gerçek fiziki şartlarında kurmanız tavsiye edilir.
Şekil 7.29 PIC12F1840 ile kapasitif yakın mesafe algılama uygulaması
Devrenin kaynak kodu Tablo 7.15’te gösterilmiştir. Program kodundan görüleceği üzere, düzenli aralıklarla (dâhili işlemci osilatörünün frekansında) Timer0 kesmesi oluşmaktadır. Bu kesmenin süresi içinde Timer1 zamanlayıcısı sayıcı olarak çalıştırılmaktadır. OPTION kaydedicisinin TMR0CS biti lojik-0 olarak kurulduğundan Timer0 zamanlayıcısı FOSC/4 (bu uygulama için 1 MHz) frekansında çalışmaktadır. T1CON kaydedicisinin TMR1CS bitleri ‘11’ olarak ayarlandığından, kapasitif algılama osilatörü Timer1 modülünün saat darbesi kaynağı olarak işlemektedir. Kapasitif Pede yapılan etkiye bağlı olarak kapasitif algılama osilatörünün frekansı keskin şekilde düşer ve Timer1’in sayma değeri de buna bağlı olarak düşüş gösterir. Program içinde ‘referans’ isimli bir değişken vardır. Bu değişken ile Timer1’in sayma değeri karşılaştırılmaktadır. Yapacağınız devrenin hassasiyetine bağlı olarak bu değerler ve osilatör tercihleri, voltaj referansları tercihleri değişiklik gösterebilir. En ideal sonucu bu değerlerde yapacağınız değişiklikler ve devre tasarımınıza göre elde edebilirsiniz.
|