Krupa J Thomas
Newbie level 2
- Joined
- Feb 1, 2014
- Messages
- 2
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 26
Hi, Has anyone got any idea about the heart beat sensor module from NSK working. There is no datasheet available on this. I've seen posts here telling that Heart beat sensor from NSK dont give proper output .
Also I will attach my code I tried to debug this but I'm getting pulse count unstable and 40000 and 50000 range values for 10sec viz correct.
My CODE is attached
Connexons :sensor vcc-->5v, gnd--->gnd, O/p --P3.5 of AT89S52
- - - Updated - - -
I meant viz absolutely wrong. that was a typo sorry!!
Also I will attach my code I tried to debug this but I'm getting pulse count unstable and 40000 and 50000 range values for 10sec viz correct.
My CODE is attached
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 #include <reg51.h> #include <stdio.h> void UART_Init(); void UART_sendchar(unsigned char ); void UART_Tx(unsigned char* ); void delay_ms(int ); sbit HBout=P3^5; //sensor output unsigned int beats=0; int i; unsigned char BPM[10]; void main() { P3|=0x20; //0010 0000 TMOD =0x01; //16 bit timer UART_Init(); while(1) { TH0=0x3C ;//65536-50000=15536=3CB0H generates a delay for 50ms TL0=0xB0; beats=0; TR0=1; for(i=0; i<200;i++) //delay of 10sec 20x60 { TH0=0x3C ;//generates a delay for 50ms TL0=0xB0; do{ while(HBout==0); beats++; }while(!TF0); TF0=0; } TR0=0; TF0=0; TI=1; printf("beats after while: %u", beats); beats = beats*6; UART_Tx("Pulse rate per min:\n"); if(beats/100 == 0) { BPM[0] =(beats/10) + 0x30; BPM[1] =(beats%10) + 0x30; BPM[2] ='\0'; TI=1; printf("\n*********1**********\n"); } else if (beats/1000 ==0) { BPM[0] =(beats/100) + 0x30; BPM[1] =(beats%100)/10 + 0x30; BPM[2] =(beats%100)%10 + 0x30; BPM[3]='\0'; TI=1; printf("\n*********2**********\n"); } else if(beats/1000) { BPM[0] =(beats/1000) + 0x30; BPM[1] =((beats%1000)/100) + 0x30; BPM[2] =((beats%1000)%100)/10 + 0x30; BPM[3]=((beats%1000)%100)%10 + 0x30; TI=1; printf("\n*********3**********\n"); } else { TI=1; printf("Dead beats\n"); } TI=1; printf("beats :%d\nBPM: %s\n", beats, BPM); beats=0; } } void UART_Init() { TMOD|=0x20; SCON=0x50; TH1=0xFD; TR1=1; } void UART_sendchar(unsigned char c) { SBUF = c; while (!TI); TI=0; } void UART_Tx(unsigned char* str) { while(*str) UART_sendchar(*str++); } /*void delay_ms(int ms) { int i,j; for(i=0;i<ms;i++) for(j=0;j<1275;j++); } */
Connexons :sensor vcc-->5v, gnd--->gnd, O/p --P3.5 of AT89S52
- - - Updated - - -
I meant viz absolutely wrong. that was a typo sorry!!
Last edited by a moderator: