این پروژه یک نبض شمار یا
ضربان سنج قلب است که براساس نور مادون قرمز انعکاس یافته از
گلبول های خون جاری در رگها کار میکند, در این پروژه از میکروکنترلر
PIC16F628A استفاده شده است و سنسور مورد استفاده از نوع مادون قرمز مجزا میباشد, البته میتوان این سنسور را با نوع پک شده تعویض نمود. برای تامین پالس ساعت زمان واقعی از کریستال ساعت استفاده شده و همچنین برنامه به زبان c نوشته شده است. نحوه کار مدار به این صورت است که پس از فشردن کلید فشاری, انگشت خود را بر روی سنسور قرار داده و مدار شروع به شمارش نبض شما میکند, از هر پنج انگشت میتوان برای تشخیص نبض استفاده نمود. بعد از شمارش برای توقف شمارنده و مشاهده زمان مجددا کلید را فشار داده تا میزان نبض شمارش شده در زمان را مشاهده کنید.
ضربان قلب تعداد ضربان قلب در هر واحد زمان است و معمولا در ضربه در دقیقه ( ضربان ) بیان شده است . در بزرگسالان ، ضربان قلب طبیعی حدود 60 تا 100 بار در دقیقه در شرایط استراحت میباشد.
این مدار شامل یک فیلتر پایین گذر با فرکانس قطع 2.5 هرتز است که به این معنی است که فرکانسهای بالاتر از این مقدار فیلتر میشود یعنی در کل مدار ضربان حدود 150 ضربه در دقیقه را میتواند بشمارد و بیش از آنرا حذف میکند.برای تقویت و ایجاد فیلتر از یم آپ امپ به شمارهMCP602 استفاده شده است که در دو مرحله با گین 101 سیگنال را تقویت میکند که در کل 10000بار سیگنال تقویت میگردد.وجود خازن 1uf برای جلو گیری از ورود مولفه های dc الزامی است.در شکل زیر محاسبات گین به طور کامل انجام شده است:
مدار شکل بالا یک تقویت کننده کامل است و مقدار تقویت شده در خروجی آن یک پالس است که ضربان قلب را نشان میدهد و کافی است که با یک فرکانس متر آنرا اندازه گرفت و مقدار فرکانس را روی نمایشگر نشان داد.
برای عملکرد بهتر مدار بهتر است که یک پتانسیو متر را برای بدست آوردن بهترین مقدار مقاومت برای سنسور فرستنده(شیشه ای) به شکل زیر استفاده کنید:
و تست کنید که آیا مدار تقویت کننده به درستی با قرار دادن انگشت روی فرستنده و گیرنده پلک میزند یا خیر یعنی برای تست مدار با قرار دادن چنین مداری و تغییر مقاومت 470 اهمی مقاومتی را بدست آورید که به بهترین شکل در خروجی پاس را ایجاد مینماید.
در زیر یک نمونه برنامه و شماتیک آورده شده است که میتوان مدار شمارش ضربان قلب را با میکرو PIC16F628A ساخت:
برای راه اندازی مدار بالا کافی است که مدار قبل را به آن متصل نمود.برای کامپایل کردن برنامه از کامپایلر MikroC استفاده کنید:
/*
Project: Measuring heart rate through fingertip
Copyright @ Rajendra Bhatt
January 18, 2011
PIC16F628A at 4.0 MHz external clock, MCLR enabled
*/
sbit IR_Tx at RA3_bit;
sbit DD0_Set at RA2_bit;
sbit DD1_Set at RA1_bit;
sbit DD2_Set at RA0_bit;
sbit start at RB7_bit;
unsigned short j, DD0, DD1, DD2, DD3;
unsigned short pulserate, pulsecount;
unsigned int i;
//-------------- Function to Return mask for common anode 7-seg. display
unsigned short mask(unsigned short num) {
switch (num) {
case 0 : return 0xC0;
case 1 : return 0xF9;
case 2 : return 0xA4;
case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
} //case end
}
void delay_debounce(){
Delay_ms(300);
}
void delay_refresh(){
Delay_ms(5);
}
void countpulse(){
IR_Tx = 1;
delay_debounce();
delay_debounce();
TMR0=0;
Delay_ms(15000); // Delay 1 Sec
IR_Tx = 0;
pulsecount = TMR0;
pulserate = pulsecount*4;
}
void display(){
DD0 = pulserate%10;
DD0 = mask(DD0);
DD1 = (pulserate/10)%10;
DD1 = mask(DD1);
DD2 = pulserate/100;
DD2 = mask(DD2);
for (i = 0; i<=180*j; i++) {
DD0_Set = 0;
DD1_Set = 1;
DD2_Set = 1;
PORTB = DD0;
delay_refresh();
DD0_Set = 1;
DD1_Set = 0;
DD2_Set = 1;
PORTB = DD1;
delay_refresh();
DD0_Set = 1;
DD1_Set = 1;
DD2_Set = 0;
PORTB = DD2;
delay_refresh();
}
DD2_Set = 1;
}
void main() {
CMCON = 0x07; // Disable Comparators
TRISA = 0b00110000; // RA4/T0CKI input, RA5 is I/P only
TRISB = 0b10000000; // RB7 input, rest output
OPTION_REG = 0b00101000; // Prescaler (1:1), TOCS =1 for counter mode
pulserate = 0;
j = 1;
display();
do {
if(!start){
delay_debounce();
countpulse();
j= 3;
display();
}
} while(1); // Infinite loop
}
عکسهای مدار ساخته شده: