Sensörler ve Mikroişlemciler – 8
Bu ay bir LDR (Light Dependent Resistor) Işığa Duyarlı Direnç kullanarak ışık şiddeti ile voltajin orantılı değişimini Analog Dijital Dönüştürücü kullanarak PIC ile birleştirerek PIC Basic Pro programlama örnekleri ile anlatıyoruz |
Sevgili okurlar yazılarıma iş sorunlarım dolayısıyla iki ay kadar ara vermek zorunda kaldım. İnşallah bundan sonra kaldığımız noktadan devam edeceğim. İki ay kadar önce ışık ve ışığı nasıl hissederiz konusuna başlamıştık. Bu ay bir LDR (Light Dependent Resistor) Işığa duyarlı direnç kullanarak ışık şiddeti ile voltajın orantılı değişimini Abnalıg Dijital Dönüştürücü kullanarak PIC ile birleştirerek PIC Basic Pro programlama örnekleriyle anlatmaya çalışacağım
Bu uygulamayı gerçekleştireceğimiz devre geçen uygulamalarda kullanılan devrenin hemen hemen aynısı. Bir PIC 16F877,bir 2×16 karakter LCD ve birkaç pasif yan elemandan oluşuyor..
Işık oltmetremizin şeması aşağıda görüldüğü gibi oldukça basit LDR bir ışıkla direnci değişen eleman olduğundan onu iki adet 10 K’lik dirençten oluşan bir voltaj bölücü içine dahil ettik
LDR karakteristiği için tıklayınız
PIC olarak gene PIC 16F877 kullanıyoruz. LCD olarak harcıalem herhangi bir 2 satır 16 karakter LCD kullanabilirsiniz. Kristalimiz 20 Mhz. Bunu 20 Mhz seçmemin sebebi bu devreyi diğer sensör denemelerimizde de rahatlıkla kullanabilmemiz için.
Pic basic Pro Programımız şöyle:
'——————————————————————————-
' Analog Dijital Degistirici yardimiyla LDR ile isik kaynagi algilama
' ANTRAK
' BARBAROS ASUROGLU (TA2CBA)
' 02/01/2011
' PIC16F877-20 Mhz
' Mikroislemciler ve Sensorler – 8
'——————————————————————————-
'———————-[ DEFINE'lar and Degiskenler ]—————————
' LCD Baglantilari
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 4 'pin 4
Define LCD_EREG PORTB
Define LCD_EBIT 5 'pin 6
Define LCD_DATAUS 100
Define LCD_COMMANDUS 4000
Define OSC 20
'———————–[ Degisken Tanimlamalari ]——————————
Battvolt VAR BYTE
Volt VAR WORD
V1 VAR BYTE
V2 VAR BYTE
V3 VAR Byte
V4 VAR BYTE
INCLUDE "modedefs.bas"
'——————[ Degiskenleri sifirla ]————————-
ADCON1 = %00001110 ' PORTA.0 analog
TRISA = %00000001
PORTA = 0
TRISB = 0
PORTB = 0
TRISC = 0
PORTC = 0
TRISD = 0
PORTD = 0
TRISE = 0
PORTE = 0
Clear
Pause 100
'——————————————————————————-
Main:
Lcdout $fe, 1, " ANTRAK TA2CBA "
Lcdout $fe, $C0,"LDR ISIK SENSORU"
Pause 2000
Loop: Gosub Batt
IF V4 = 0 then
Lcdout $fe, 1, "LDR Voltaji "
Lcdout $fe, $C0," ",#V3,".",#V2,#V1," Volt"
Endif
Pause 100
Goto Loop
'————————-[ Besleme Voltajini oku ]—————————-
Batt:
ADCON0 = %01000101
PauseUs 100
Battvolt = ADRESH ' RA0 ADC degerini oku ve Battvolt degerine ata.
Volt = 196 * Battvolt
Volt = Volt / 10
V1 = Volt DIG 1
V2 = Volt DIG 2
V3 = Volt DIG 3
V4 = Volt DIG 4
Return
Programda önce bir başlık koyarak programın ne amaçla ne iş yapmak için kim tarafından hangi tarihde yazıldığını belirtiyoruz. Bu bize ileride hatırlamak için kolaylık sağlar.
Daha sonra LCD bağlantılarını tanıtıyoruz. Bunlar pbpro için de define denen tanımlardır.
Define’ların ardından değişken deklarasyonu yapılır. Daha sonra LCD veri gösterim komutlarının olduğu ana program satırı bulunur.
Voltaj dönüşümleri Batt alt programı (subroutine) altında yer alır ve ana program her seferinde bu alt programı cağırır.
Işık kaynağının şiddeti değiştikçe LCD ekranında boltaşında göreceli olarak ışık liddetiyle orantılı olarak değiştiğini gözleyeceksiniz. Bu programda kullandıpımız teknikleri kullanarak ışık şiddetine göre bir kalibrasyon yapıp ışık şiddetini birebir gösteren bir ışık şiddeti ölçer yapabilirsiniz.
Programın tum dosyalarını burada bulabilirsiniz.
Programı denemek için Mikroleketronika firmasının EASYPIC 5 pic deneme/tasarım kartını kullandım. Bu deneme/tasarım kartı hakkında bilgi almak için : www.mikroe.com
Devrenin çalışmasını gösteren birkaç resim
Başarılar,
Barbaros