Sensörler (Algılayıcılar) ve Mikroişlemciler – 2
Sensörler ve Mikroişlemciler yazı dizimizde bu ay anlatımı bir adım daha ileri götürerek LCD ekranlı bir voltmetre gerçekleştireceğiz Picbasic Pro kullanılarak geliştirilen programın kaynak kodlarını bu yazıda bulacasınız.
Sevgili okurlar size geçen ay Analog Dijital Dönüştürücü kullanarak üç dirençle nasıl voltaj sensörü oluşturur ve nasıl PIC ile birleştirerek batarya voltajı gibi +5V üzeri voltajları okuruz, picbasic pro programlama örnekleriyle anlatmaya çalışmıştım.
Bu ay ise bu anlatımı bir adım daha ileri götürerek LCD ekranlı bir voltmetre gerçekleştireceğiz.
Voltmetremizin şeması aşagıda görüldüğü gibi oldukça basit. Gene voltaj bölücü olarak üç adet 10K'lık direnç kullanıyoruz.
PIC olarak gene PIC 16F877 kullanıyoruz. LCD olarak harcıalem herhangibir 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 Besleme Voltajini Okumak
' ANTRAK
' BARBAROS ASUROGLU (TA2CBA)
' 27/04/2010
' PIC16F877-20 Mhz
' Mikroislemciler ve Sensorler – 2
'——————————————————————————-
'———————-[ 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," LCD VOLTMETRE "
Pause 2000
Loop: Gosub Batt
IF V4 = 0 then
Lcdout $fe, 1, "Besleme Voltaji "
'Bu satir besleme voltaji 10 volt ve altinda oldugunda devreye girer
' ve bastaki 0 degerini maskeler
Lcdout $fe, $C0," ",#V3,".",#V2,#V1," Volt"
Endif
IF V4 > 0 then
Lcdout $fe, 1, "Besleme Voltaji "
'Bu satir besleme voltaji 10 volt ve uzeri ise tum digitleri gosterir.
Lcdout $fe, $C0," ",#V4,#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
Volt = Volt * 3
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 baglantı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.
Bu voltmetre ile 0.5 volt ile 15 Volt arasındaki voltajlar okunur.
Programın tum dosyalarını voltmetre.zip dosyasında 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ısmasını gösteren birkaç resim,
Başarılar,
Barbaros Aşuroğlu