PIC ile dijital girişten analog direnci ölçmek

Başlatan picker, 26 Aralık 2007, 23:28:07

picker

Konuya girmeden önce bir anektod aktarmak istiyorum.
Üniversiteye hazırlandığımız yıllarda dersanedeki kimya hocamız (Allah rahmet eylesin) bir hikaye anlatmıştı. Amerika'nın önde gelen üniversitelerinden birinde fizik dersinde 'Bir barometre ile bir binanın yüksekliğini nasıl hesaplarsınız?' diye bir soru sorulur. Hocanın beklediği cevap şudur aslında : "Barometrenin en alttaki gösterdiği basınç ile binanın tepesindeki basınç arasındaki farktan yüksekliğin hesaplanması".

Bir öğrenci bu sorunun cevabını şöyle verir :
"Binadan bacaklarınızın arasından binaya bakarak uzaklaşırsınız. Binanın tepesini gördüğünüz noktada binanın gölgesi ile kendi gölgenizi barometrenin boyu ile ölçersiniz. Benzer üçgenler kanunu ile kendi boyunuzu da bildiğinizden binanın yüksekliğini hesaplarsınız..."

Hoca bu cevaba kızar ve öğrenciye 'Sıfır' verir. Öğrenci sonuca itiraz eder ve fizik hocaları ile üniversite yönetiminden oluşan bir komisyon öğrenciyi tekrar sözlü sınav yapar. Tüm dersleri iyi olan parlak bir öğrencidir bu.

Öğrenci komisyona şunu söyler :

"Hocamız soruyu sorduğunda barometre yardımı ile yüksekliği ölçmemizi istedi. Ben de barometre kullanarak bu yüksekliği nasıl hesaplayabileceğimize dair sadece bir yöntem ile cevap verdim ve yöntemim doğrudur. Eğer bu yöntemi kabul etmez iseniz size şu yanıtları da önerebilirim :

1. Barometre ile binanın tepesine çıkılır. Barometre binanın tepesinden serbest düşmeye bırakılır ve o sırada kronometre ile barometrenin yere çarpma süresi ölçülür. h=1/2 x g x t^2 (yükseklik=yerçekimi ivmesi x zamanın kares / 2) formülü ile binanın yüksekliğini hesaplarım.
2. Binanın merdivenlerinin bir basamak boyunun yüksekliğinin barometrenin yüksekliğine oranını bulurum. Çatıya kadar kaç basamak olduğunu sayarım. Barometre boyu cinsinden binanın boyunu hesaplarım. Barometrenin boyunu ölçer oradan da binanın boyunu bulurum.
3. Barometreyi apartmanın kapıcısına hediye ederim ve o da bana bu hediye karşılığında binanın boyunu seve seve söyler.
4. Çok ısrar ederseniz de barometre ile tabandaki basınç ile çatıdaki basınç arasındaki farkı hesaplar, buradan da binanın boyunu çıkartırım.
Sanırım sizin de duymak istediğiniz bu. Ama ben size toplamda 5 yöntem öneriyorum barometre kullanarak".

Öğrenci dersten 100 alarak geçer...
******************************************

Bu anektod ile istediğimiz sonuçlara gidecek birden fazla yöntem olduğunu görüyoruz.

Normalde PIC ile bir direnci ölçmek istersek yapacağımız iş A/D çevirici kullanarak veya A/D çeviricisi olan bir pic ile direncin üzerindeki gerilimi bulup bununla hesap yapmak olacaktır.

Peki ya elimizde sadece 1684 veya 16628 gibi bunu yapamayacağımız bir işlemci varsa ve ille de bir direnci ölçmemiz gerekiyorsa? Örneğin iki tane fotosel yardımı ile çizgi izleyen veya ışık takip eden bir mekanizma yapmak istiyorsak? Ve elimizde transistör de yoksa... Malzemelerimiz sadece 1 adet 16F84, 2 adet fotosel ve 2 adet 0.1 mikrofarat kapasitör...

Seri bağlı RC devrelerinde devreye DC gerilim uyguladığımızda kondansatörün bir şarj ve deşarj süresi vardır.

Bu süreyi bulmak için önce zaman sabiti denilen değeri (To diye okunur ve yamuk bir büyük T harfi gibi yazılır) öncelikle hesaplamamız gerekmekte.

Bu değerin eşitliği de :
To=RxC formülü ile hesaplanır.

Yani elimizde 1 k bir direncimiz var ve 0.1 mikrofarat kondansatörümüz var. Bu devremizde zaman sabitimiz :

To=1000 x 0.1x10^(-6)
To=0,0001 olarak bulunur.

Gerilimdeki değişim yüzdesi ise şu şekilde hesaplanır :

1-1/e^(t/To)
e=2,72 olarak alınabilir.

Şimdi, PIC'imizin bir bacağı yaklaşık 2,73 volt üzerinde 1 görür ve bunun altında da 0 görür.

Picimizin PortB 0 nolu bacağına seri olarak direncimizi bağladık ve değerini bilmiyoruz.
Buna seri olarak 0.1 mikrofarat kondansatörümüzü bağladık. (Kondansatör değeri arttırılabilir. Bu da hesaplama süresini arttırır veya azaltır. Bu ölçüm süresini kısaltmak için düşük seçilmiş bir değerdir.)

Portb'nin 0 nolu bacağına bir süre 1 çıkış verdik.
Sonra Portb'nin 0 nolu bacağını okuma konumuna getirerek değerini sıfıra çektik.

Sonra da timer'imizi çalıştırdık.

Picimiz Port B bacağından kondansatör boşalıp da devre üzerindeki gerilim 2.73 Voltun altına inene kadar 1 okuyacak, sonrasında sıfır okuyacaktır. İşte biz 1 okuduğu süreyi hesaplayacağız. Diyelim ki Picimizin Port b nin 0 nolu bacağından 100 mikrosaniye kadar 1 okuduğumuz bulduk. Sonra bu bacakdaki değer sıfıra çekti.

Yani devremizin üzerindeki gerilim 5 volttan 2,73 Volta kadar düşme süresi 100 mikrosaniye oldu.

Bu da 2,37 voltluk bir düşüşdür ve 2,37 Volt değeri de 5 Volt'un %47,4'üne  denk gelir.

Şimdi neydi formülümüz?

1-1/e^(t/To)=% olarak değişim

e=2,72
t=100 mikrosaniye
% olarak değişim =%47,4

Buradan
1-1/e^(0,0001/To)=47,4/100=0,474

1/e^(0,0001/To)=0,526

e^(0,0001/To)=1,9

Buradaki 1,9 değeri tüm direnç değerleri için aynı olacaktır. t/To oranı sabittir bu durumda. Yani sadece To değeri değişir ki bunu da değiştiren direnç değeridir. Dolayısıyla bir excel tablosu yardımı ile e'nin yani 2,72'nin kaçıncı kuvvetinin 1,9 olduğunu hesaplarsak e^0,65'in 1,9 olduğunu görürüz. Bu durumda t/T=0,65 olmak durumundadır.

Yani 0,0001/To=0,65
Buradan To değerini çekersek To=0,000154 bulunur.

To=RxC formülünden de
0,000154=R x 0,000001
R=154 Ohm olarak bulunur.

Yani t'yi ölçtükten sonra t/To=0,65 ve To=RC formüllerini kullanarak bir bacaktaki direncin değerini ölçebiliriz.

Böylelikle Pic'imizin iki bacağına bağlı iki tane fotoselin direnç değerlerini karşılaştırarak mekanizmamıza yön verebiliriz.

Veya aynı yöntemle direnci sabit tutup kondansatör değeri ölçebiliriz.

Mikroişlemcimiz ne kadar hızlı olursa ölçüm hassasiyetimiz de o kadar artar. Fakat bizim amacımız fotosel karşılaştırmak gibi birşey ise (örneğin çizgi izleyen robot veya ışığı takip eden robot gibi) o zaman %10 gibi bir toleransa (ki Pic 1684 veya 628 bunu rahatlıkla sağlar) kabul edilebilir tolerans diyebiliriz ve işimizi rahatça görürüz.

Bu konuyu şundan dolayı anlattım :

1. PicbasicPro'da POT diye bir komut var. O komut bu şekilde işliyor.
2. C veya assembler gibi bir dil ile bu işi yaptırmak isterseniz izlenecek yöntem budur...
3. Bir sonuca ulaşmak için birden fazla yöntem mutlaka vardır. Biraz araştırma ve bilgi edinme bu konuda oldukça yardımcı olacaktır.

Kaynak : McGrawHill : Pic Robotics kitabı...

Herkese sevgilerimle...