4a412d24e4 - Elektronik Projem

advertisement
DEVRE SUNUMU
Giriş
Nabız kanın sol karıncıktan büyük atardamarlara pompalanması esnasında, uç
noktalardaki atardamarlarda oluşturduğu dalgalanmadır ve kardiyovasküler sistem sağlığının
bir göstergesidir. Kalbin 1 dakika içinde kaç kere kasıldığını yani kalbin hızını yansıtır. Kalp her
kasılmasıyla bir miktar kanı atardamarlara (aort ve daha sonra bundan ayrılan dallara) fırlatır
ve damarların esneyebilme özelliğinden dolayı atardamarlarda buna bağlı bir genişleme olur.
Damar duvarı bu genişlemenin ardından elastik olduğundan dolayı eski durumuna döner,
ardından bir sonraki atım ile yeni bir basınç dalgası ile tekrar genişler ve bu böyle devam eder
gider. İşte bu genişleme, damarların yüzeysel seyrettiği yerlerde (el bileği, dirsek içi, kasık,
şakak, ayak bileği gibi) nabız dalgası olarak hissedilir
Bu projede kalbin kan pompaladığı anda parmak atar damarlarındaki kan yoğunluğu
değişiminin ölçülmesi ve nabız olarak hesaplanması amaçlanmıştır. Bu amaçla; nabzı
ölçülecek bireyin parmak uçlarına gönderilen ve kan hücreleri tarafından geri yansıtılan kızıl
ötesi bir ışının oluşturulması için IR diyot kullanılmıştır. Yansıyan ışınlar foto diyot sensör
yardımıyla tespit edilmiştir. Her bir kalp atışı ile değişen kan yoğunluğu foto diyot’un
çıkışında, mikroişlemci tarafından tespit edilemeyecek kadar küçük bir sıra darbeye neden
olmaktadır. Bu sebeple devremizde; voltajın mikroişlemci tarafından tespit edilecek bir
seviyeye yükseltmek ve filtrelemek amacıyla çok yüksek kazanıma sahip iki aşamalı işlemsel
yükselteç (opamp) kullanılmıştır. Sinyallerin hesaplanması için 16F877A mikroişlemci,
hesaplanan kalp atış oranının gösterilmesi için de 2x16 lcd ekran kullanılmıştır.
Teori
Nabız, kalbimizin belli bir periyottaki atış sayısı olarak nitelendirilebilir ve genelde bir
dakikadaki atış baz alınır. İngilizce olarak Beats per minute (bpm) olarak ifade edilir. Normal
bir yetişkinde dinlenme esnasında 60 ile 100 arası değişir. Bu oran kişinin sağlık durumuna
göre değişiklik gösterir. Kişinin nabzını direkt olarak vücudundan, parmak uçlarınızla atışları
hissedebildiğiniz bir noktadan ölçülebilir. Genelde boyun ve bilekler tercih edilir. Belli bir
zaman aralığında atışları sayabilir(örneğin 15 saniye) ve bir dakikadaki atış sayısını
bulabilirsiniz.
Bu projede, her bir kalp atışı ile parmak uçlarında değişen kan hacmini optik sensörler
yardımıyla tespit eden, mikroişlemci temelli nabız ölçer sistemini tasarlamak hedeflenmiştir.
Bahsedilen sensörler, yan yana yerleştirilmiş kızılötesi ışık yayan diyot (IR LED) ve bu ışığı
toplayan foto diyottur. Kızıl ötesinden yayılan ışınların bir kısmı nabzı ölçülecek kişinin
parmak uçlarından yansır ve bu yansıyan ışınlar foto diyot tarafından tespit edilir. Yansıyan
ışınların yoğunluğu parmak uçlarındaki kan yoğunluğuna bağlıdır. Böylelikle her bir kalp
atışında parmak uçlarındaki kanın yoğunluğu foto diyot tarafından tespit edilebilecek bir
miktarda artışa sebep olur. Uygun sinyal işleme yöntemleri ile yansıyan ışındaki bu ufak
genlik farkı elektriksel darbelere çevrilebilir, daha sonra da darbeler mikroişlemci ile
sayılarak nabız tespit edilebilir.
Devre tasarımı
Sinyal işleme devresi, iki özdeş 2.5 hz frekansında alçak geçiren filtrede ve opamp’tan
oluşmaktadır. 2,5 Hz alçak geçiren filtre sebebiyle, dakika işlenebilecek nabız sayısı
maksimum 150’dir. Bu filtre sinyallere karışabilecek parazitlerin filtrelenmesi amacıyla
önemlidir. Devrede LM358 işlemsel yükselteç kullanılmıştır. Bu entegre iki adet opamp
içermektedir. Her bir opamp’taki kazanç ayrı ayrı 101, toplam kazanç 10201’dir. Her girişte
dc öğeleri engellemek için 1 uF kapsitörler kullanılmıştır. Devredeki kazanç ve alçak geçiren
filtre kesim frekansı hesapları şu şekilde yapılmıştır.
Kazanç 1 ve 2
=
1+
=
1+
𝑅1
𝑅2
680
6,8
= 101
Toplam Kazanç
= Kazanç1 x Kazanç2
= 101 x 101
= 10201
Kesim frekansı
=
=
1
2π Rf Cf
1
2π∗680∗100∗10−9
= 2.34 Hz
İki aşamalı yükselteç/filtre, sensörden gelen zayıf sinyali yükseltmek ve onu elektriksel
darbelere çevirmek için yeterli kazancı sağlamaktadır. Opamp çıkışa bağlı led her bir nabız
atışında yanıp sönmektedir. Sinyal işleme devresinin çıkışı 16F877A mikroişlemcisine
bağlanmıştır.
Devrenin, kontrol ve gösterge kısmında ise pic 16 serisi 16F877A mikro işlemci ve
2x16 lcd ekran kullanılmıştır. Nabzı ölçmek için parmak ledlerin üzerine koyulur ve başlama
düğmesine basılır. Düğmeye basıldıktan sonra mikro işlemci RA3 pinine bağlı transistör
yardımıyla IR led’i 15 saniye boyunca aktive eder. Bu süre boyunca işlemcinin T0CKI pinine
gelen sinyaller sayılır. Gerçek nabız bu darbe sayısının 4 katıdır. Bu sebeple nabız sayısı
çözünürlüğü 4’tür. Mikroişlemci 4 MHz harici kristal ile çalışmaktadır. Besleme kısmında
L7805 regülatör entegresi kullanılmıştır. Buraya 9-12 volt dc giriş yapılmakta ve çıkıştan dc 5
volt alınmaktadır. Devredeki bütün beslemelerde bu 5 volt kullanılmıştır.
Mikroişlemci ve yazılım
Hazırlanan devrede microchip firmasına ait 16F ailesinden 18F877A mikro
denetleyicisi kullanılmıştır. 16F877A; 8K flash, 256 Byte Eeprom, 8 kanal 10 bit çözünürlükte
ADC, Capture and compare, Pwm, Usart, 40 pin I/O gibi yüksek özelliklere sahip bir mikro
işlemcidir. İşlemcinin çalışma frekansı 13 ve 14 nolu pinine bağlı 4 MHz’lik harici kristal ile
sağlanmaktadır. Datasheet’inde önerildiği gibi kristal 22 pF’lık seri kapasitörlere bağlanmıştır.
Entegrenin besleme bacakları 11-12-31 ve 32. bacaklardan sağlanmıştır. Devre besleme
girişindeki 100uF ve 10uF kapasitörler ile parazitler filtrelenmiştir.
İşlemci yazılımı için micro C for pic derleyicisi kullanılmıştır. MikroC for pic derleyicisi
kullanılan kütüphaneleri otomatik olarak eklediği için program içinde herhangi bir kütüphane
eklenmesine gerek kalmamıştır. Öncelikle işlemci config ayarları düzenlenmiştir. Programın
özelliklerine bağlı olarak: HS Oscillator, Oscillator Frequency= 4 MHz, Fail-Safe Clock
Monitör=disabled, Brown Out Reset=disabled, Watchdog Timer=disabled, gibi sigorta
ayarları düzenlenmiştir.
Program akışında öncelikle lcd pin giriş çıkışları ve kullanılacak değişkenler tanımlanmıştır.
sbit LCD_RS at RC7_bit;
sbit LCD_EN at RC6_bit;
sbit LCD_D4 at RC5_bit;
sbit LCD_D5 at RC4_bit;
sbit LCD_D6 at RC3_bit;
sbit LCD_D7 at RC2_bit;
sbit LCD_RS_Direction at TRISC7_bit;
sbit LCD_EN_Direction at TRISC6_bit;
sbit LCD_D4_Direction at TRISC5_bit;
sbit LCD_D5_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISC3_bit;
sbit LCD_D7_Direction at TRISC2_bit;
sbit IR_Tx at RA3_bit;
sbit start at RA0_bit;
unsigned short pulse, pulsecount;
char *bpm ="000";
Kullanılan 2x16 Lcd 4 veri yolu üzerinden pic ile haberleşmektedir. Bu pinler D4,D5,D6
veD7 olarak tanımlanmışlardır. Ayrıca gerekli olan “En” ve “Rs” pin tanımlaması da
yapılmıştır. Ardından “Countpulse” adında bir alt program tanımlanmıştır.
void countpulse()
{
IR_Tx = 1;
Delay_ms(300);
TMR0 = 0x0;
Delay_ms(15000);
IR_Tx = 0;
pulsecount = TMR0;
pulse = pulsecount*4;
bpm[0] = (pulse/100)%10+ 48;
bpm[1] = (pulse/10)%10 + 48;
bpm[2] = pulse%10 + 48;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "NABIZ=");
Lcd_Out(1, 7, bpm);
}
Bu alt programda öncelikle IR_Tx = 1; komutuyla RA3 pinine bağlı transistör üzerinden
IR led aktive edilmiştir. Ardından timer0 sayacı sıfırlanmıştır. Bu sayaç, işlemci çalışmaya
başladığı anda saymaya başlayan ve taşma yaşadıktan sonra tekrar sıfıra dönen bir sayaçtır.
Timer o değişkeni dışarıdan bir clock puls’i ile veya içeriden çalışma frenkansına bağlı olarak
iki şekilde de arttırılabilir. Biz devremizi bir sayaç olarak kullanacağımız için Timer0 sayacını
T0CKI pini yardımıyla arttıracağız. Bu pin, yapılan ayara göre, düşen kenar veya yükselen
kenar yakaladığında timer0’ı bir sayı arttırır. Biz ayarlarımızda yükselen kenarı seçtik. Yani
pine gelen voltaj 0’dan 5’e her çıktığında timer0 bir artacaktır. 16f877A mikro
denetleyicisinde timer değeri TMRO adı altında 8 bitlik register’a kaydedilmektedir..
Ardından Delay_ms(15000); komutu ile program 15 saniyelik bir bekleme durumuna
sokulmuştur. Bu esnada T0CKI pini gelen darbeler saymakta ve TMR0 sayacına yazmaktadır.
ardından IR_Tx = 0; komutu ile IR Led kapatılmıştır. Buradaki amaç bu led’in sadece ölçüm
yapıldığı anda çalışmasını sağlayarak enerji tasarrufu sağlamaktır. pulsecount = TMR0; ile
TMR0 sayacındaki değer pulsecount değişkenine yazılmış ve pulse = pulsecount*4; komutu ile
de bulunan değer 4 ile çarpılarak dakikadaki kalp atış değeri bulunarak bu değer pulse
değişkenine yazılmıştır. Bir sonraki adımda da pulse değişkenini ekrana yazdırabilmek için
birler, onlar ve yüzler basamağı bulunmuş ve char formatında olan bpm değişkeni sayesinde
ekrana yazdırılmıştır.
bpm[0] = (pulse/100)%10+ 48;
bpm[1] = (pulse/10)%10 + 48;
bpm[2] = pulse%10 + 48;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "NABIZ=");
Lcd_Out(1, 7, bpm);
Programın main kısmı ise aşağıdaki gibidir:
void main()
{
ADCON1= 0x0F;
TRISA = 0b00010001;
PORTA = 0;
OPTION_REG.T0CS=1;
OPTION_REG.T0SE=1; // Set Clock source to external TOCKI
OPTION_REG.PSA=1; // No Pre-scalar
INTCON.GIE=1; // Enable Interrupts
INTCON.PEIE=1;
INTCON.T0IE=1; // Enable Interrupt
INTCON.T0IF=0; // Clear T0 Interrupt flag
pulse=0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"Cihaz Hazir");
Delay_ms(300);
do
{
if(start)
{Delay_ms(100);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Lutfen bekleyin");
countpulse();}
} while(1);
}
Main kısmında port giriş çıkışları tanımlanmış, timer0 kesmesi ayarları yapılmış ve lcd
aktif edilerek ekrana “Cihaz Hazır” yazdırılmıştır. Ardından program sonsuz döngüye girmiş
ve RA0 pinene bağlı butondan komut beklemektedir. Bu pine High sinyali geldiğinde program
ekrana “Lüften Bekleyiniz” yazıp countpulse alt programına dallanmaktadır.
Özetlemek gerekirse program düğmeye basıldıktan sonra IR Led’i aktif edip 15 saniye
boyunca beklemekte ve bu süreçte T0CKI pinine gelen darbeleri saymaktadır. Daha sonra bu
darbeleri 4 ile çarparak dakikadaki atış sayısını bularak bu değeri ekrana yazmaktadır.
Devrenin gerçekleştirilmesi
Devrenin prensip şeması İsis programı kullanılarak hazırlanmış ve bilgisayar
ortamında simüle edilerek kontrol edilmiştir Ardından devrenin baskı şeması Ares
programı ile hazırlanmıştır. Eleman yerleşimi ve baskı yolları aşağıdaki gibidir.
Devrede kullanılan malzeme listesi şu şekildedir:
Direnç
Adet
1
1
1
2
2
2
1
1
Kodu
R1
R2
R3
R4,R7
R5,R8
R6,R9
R10
R11
Değeri
1k
68R
33k
68k
680k
6k8
470R
10k
Kapasitör
2
2
2
1
1
C1,C3
C2,C4
C5,C6
C7
C8
1u
100n
22p
100u
10u
Adet
Kodu
Değeri
Entegre
1
1
1
U1
U2
U3
LM358
PIC16f877A
78L05
Transitör
1
Q1
BC546
1
1
1
1
D1
D2
D3
D4
INFRARED TX
INFRARED RX (SP 215)
LED
1N4148
1
1
2
1
1
BUTTON
LCD
RV1,RV2
VIN
X1
Buton
2x16 LCD
5k Trimpot
0 No Klemens
4 MHz Kristal
Diyot
Çeşitli
Baskı devre hazırlandıktan sonra devrenin gerçekleştirilmesi için transfer
yöntemi uygulanmıştır. Devre yolları lazer printer ile kuşe kağıda yazılmış ve kağıt
üzerindeki toner, ütü ile bakır plakete transfer edilmiştir. Ardından Hidrojen peroksit ve
Hidroklorik Asit çözeltisinde 1 dakika kadar eritilmiş, böylelikle toner kaplı olmayan
bakır erimiş ve geriye sadece baskı yollar kalmıştır. Devre su ile yıkandıktan sonra devre
yolları üzerinde kalan toner, aseton ile silinmiş, daha sonra da el matkabı ile delikler
açılarak elemanlar yerleştirilip lehimlenmiştir.
Download