top of page
Writer's pictureSanskruti Ashtikar

Introduction to Heart Rate Monitor with 8051 Microcontroller

Monitoring heart rate is crucial in various fields such as healthcare, sports, and fitness. A heart rate monitor (HRM) helps in measuring and displaying the heart rate in beats per minute (BPM). Integrating a heart rate monitor with an 8051 microcontroller allows for real-time heart rate tracking and can be used in portable health devices. This article explains the working of a heart rate monitor, the components required, and how to interface it with the 8051 microcontroller.


Components Required


  1. 8051 Microcontroller Development Board

  2. Heart Rate Sensor (e.g., Pulse Sensor)

  3. LCD Display (16x2)

  4. Resistors and Capacitors (if necessary)

  5. Connecting Wires

  6. Power Supply


Understanding the Heart Rate Sensor


A typical heart rate sensor used in microcontroller projects is a pulse sensor. It usually consists of an LED and a photodetector. The LED illuminates the skin, and the photodetector measures the amount of light reflected back. Variations in the reflected light correspond to blood flow, which changes with each heartbeat. These changes are then converted into electrical signals that can be processed to calculate the heart rate.


Working Principle


The pulse sensor detects the blood flow changes and generates an analog signal. This analog signal is proportional to the heartbeats. The 8051 microcontroller reads this analog signal, processes it to detect peaks corresponding to heartbeats, and calculates the heart rate in BPM.


Interfacing Heart Rate Monitor with 8051 Microcontroller


Circuit Diagram



Connections


  1. VCC and GND of the Heart Rate Sensor are connected to the 5V and GND pins of the 8051 microcontroller, respectively.

  2. Analog Output of the Heart Rate Sensor is connected to one of the analog input pins of the 8051 microcontroller (e.g., P1.0 through an ADC).

  3. LCD Display is connected to the appropriate pins of the 8051 microcontroller to display the heart rate.


Code Implementation


Here is an example code to read the heart rate sensor output, process the signal to detect heartbeats, and display the heart rate on an LCD.


#include <reg51.h>
#include "lcd.h"
sbit HeartRateSensor = P1^0; // Heart rate sensor input
sbit LED = P2^0;             // LED indicator
void delay(unsigned int time) {
    unsigned int i, j;
    for(i = 0; i < time; i++)
        for(j = 0; j < 1275; j++);
}
unsigned int readHeartRateSensor() {
    // Dummy function to simulate reading from an ADC
    // Replace with actual ADC read code
    return P1 & 0x01;
}
void main(void) {
    unsigned int beatCount = 0;
    unsigned long duration = 0;
    unsigned int heartRate = 0;
    unsigned int lastBeat = 0;
    unsigned int currentBeat = 0;
    // Initialize LCD
    lcd_init();
    lcd_clear();
    lcd_gotoxy(1, 1);
    lcd_puts("Heart Rate:");
    while(1) {
        currentBeat = readHeartRateSensor();
        
        if (currentBeat != lastBeat) {
            if (currentBeat == 1) { // Rising edge detected
                beatCount++;
                LED = !LED; // Toggle LED on each beat
            }
            lastBeat = currentBeat;
        }
        
        delay(100); // Sample every 100ms
        
        duration += 100;
        
        if (duration >= 60000) { // Calculate heart rate every 60 seconds
            heartRate = (beatCount * 60000) / duration;
            lcd_gotoxy(1, 2);
            lcd_puts("BPM: ");
            lcd_putnum(heartRate);
            beatCount = 0;
            duration = 0;
        }
    }
}

Explanation of the Code


  1. Header File Inclusion: The reg51.h header file includes the necessary definitions for working with the 8051 microcontroller. The lcd.h header file includes functions to control the LCD.

  2. Pin Definitions: The heart rate sensor and LED indicator are defined as bit-addressable variables.

  3. Delay Function: A simple delay function is implemented to provide a delay in milliseconds.

  4. Reading Heart Rate Sensor: A dummy function readHeartRateSensor simulates reading the heart rate sensor. In practice, this should be replaced with actual ADC read code.

  5. Main Function:

  6. The LCD is initialized to display the heart rate.

  7. In the infinite loop (while(1)), the code reads the heart rate sensor and detects the rising edge of the signal to count heartbeats.

  8. The LED toggles with each detected heartbeat for visual indication.

  9. The duration is tracked, and the heart rate is calculated every 60 seconds (or another suitable interval).

  10. The heart rate is displayed on the LCD.


Conclusion


Interfacing a heart rate sensor with an 8051 microcontroller enables real-time heart rate monitoring, making it a valuable tool in health and fitness applications. This project demonstrates the basic setup and code required to build a heart rate monitor. Further enhancements can include data logging, wireless transmission of heart rate data, and integration with other health monitoring systems.


Additional Tips


  • Sensor Placement: Ensure proper placement of the sensor for accurate readings. It is usually placed on the fingertip or earlobe.

  • Signal Processing: Implement filtering techniques to reduce noise in the sensor signal for more accurate heart rate detection.

  • Power Supply: Use a stable power supply to avoid erratic behavior of the sensor and microcontroller.

This project provides a solid foundation for developing more advanced health monitoring systems using the 8051 microcontroller.


Want us to guide you through your project or make the project for you ?






Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 


0 views0 comments

Related Posts

See All

Comments


bottom of page