How does it work?
The Heart Rate 9 Click board™ utilizes a Phase Division Multiplexing technique to simultaneously measure multiple signals with zero cross talk. This technique is implemented using the PIC16F1779 MCU’s integrated Core Independent Peripherals (CIPs) from Microchip. Using the CIPs allows you to achieve a low-noise reflective heart rate monitor design with significantly lower BOM costs than conventional designs.
This Heart Rate 9 Click board™ introduces Microchip’s proprietary method (hereafter “proprietary method”) of measuring multiple signals in a body using pseudorandom binary sequence generation and phase division multiplexing. This proprietary method uses a special encoding/decoding scheme to allow multiple light-emitting diodes (LED) transmitting light simultaneously with a single photodiode to condition each light from the combined lights at the receiving side.
While the blood passes through the capillary blood vessels, they expand and dilate. Their light reflectance index changes accordingly. This is the basis of the photo-plethysmogram (PPM), a method used for the volumetric measurement of an organ, or in this case – blood vessels. The heart rate signal is calculated according to the changes of the reflected green light, sensed by the PD element. The Heart Rate 6 click can provide the HRM readings by simply placing the index finger over the optical sensor.
Oxygen saturation in the blood can be determined by measuring the light absorption in the red/IR part of the spectrum. The oxygen saturated blood absorbs more red light and less infrared than the unsaturated blood. This fact can be used to determine the oxygen saturation of the blood. For a healthy adult person, the peripheral capillary oxygen saturation (SpO2) percentage ranges from 95% to 100%.
The challenge in a multiple signal sources system (for example, the LEDs in the case of a pulse oximeter) is that each LED must share the same photodiode. A classic solution is to turn on each light source in sequence and then take each measurement in turn. Each light source gets its own slice of time in which the photodiode can get its measurement. This method is called Time-Division Multiplexing (TDM). The same principle is also applied to the TDMA-based cellular system. The drawback of the TDM approach is that adding more light sources, while keeping the data processing routine the same, results in more time to get a measurement from every source.
Microchip’s proprietary method uses a known concept called Maximal Length (ML) sequence, a type of pseudorandom binary sequence, to generate a gold code or a reference sequence. This reference sequence is then phase shifted using PhaseDivision Multiplexing (PDM) to drive multiple LEDs. The light amplitudes from these LEDs, after passing through a part of a body, are detected by a phototransistor or photodiode and digitized with an Analog-to-Digital Converter (ADC). The digitized ADC light amplitude values are re-correlated with each LED’s driving sequence. Spread spectrum techniques are known for their noise mitigation properties and ability to pass multiple signals through the same medium without interference. Thus, these measurements of each light absorption of the body can be performed substantially simultaneously with minimal interference from each other.
The SFH7060 made by OSRAM integrates three green, one red, one infrared emitter and one photodiode that are all placed in a reflective type of package. The reflective photosensing method has become increasingly popular in developing small, wearable biometric sensors, such as those green light sensors seen in the back of smart watches or activity tracker wristbands.
Specifications
Type
Biometrics,Heart Rate
Applications
It can be used to develop applications based on the heart rate monitoring, pulse oximetry measurements, calorie expenditure, and similar health-related applications.
On-board modules
PIC16F1779 MCU and SFH 7060 sensor
Key Features
Single-chip implementation using an eXtreme Low Power (XLP) PIC16F1779 8-bit MCU, Integrated features of the 8-bit MCU use a Phase Division Multiplexing technique to simultaneously measure multiple signals with zero cross talk, Low overall BOM cost due to integrated Core Independent Peripherals ( CIPs) and Analog features, Core Independent Peripherals reduce software overheard.
Interface
GPIO,UART
Feature
No ClickID
Compatibility
mikroBUS™
Click board size
M (42.9 x 25.4 mm)
Input Voltage
3.3V
Pinout diagram
This table shows how the pinout on Heart Rate 9 click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | – | Power LED Indicator |
LD2 | RED | – | Pulse Detection Indicator |
Software Support
We provide a library for the Heart Rate 9 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
Initializes and defines UART bus driver, and defines driver’s functions for reading Heart Rate data uses Heart Rate 9 clicks.
Key functions:
uint8_t heartrate9_read_byte()
– Read Single Byteuint8_t heartrate9_byte_ready()
– Check for new byte received/li>
Examples description
The application is composed of three sections :
- System Initialization – Initializes UART module
- Application Initialization – Initializes Driver init and logs instructions on commands and format of response data
- Application Task – Waits for valid user input and executes functions based on set of valid commands
void applicationTask() { char hr9_rx_data; char console_rx_data; uint8_t hr9_drdy_flag; uint8_t console_drdy; console_drdy = UART_Rdy_Ptr( ); if ( console_drdy != 0 ) { console_rx_data = UART_Rd_Ptr( ); if ( ( console_rx_data == 's' ) || ( console_rx_data == 'S' ) ) { mikrobus_logWrite( " >> [s or S] - START << ", _LOG_LINE ); start_app_flag = 1; } if ( ( console_rx_data == 'b' ) || ( console_rx_data == 'B' ) ) { mikrobus_logWrite( " >> [b or B] - BREAK << ", _LOG_LINE ); start_app_flag = 0; } if ( ( console_rx_data == 'h' ) || ( console_rx_data == 'H' ) ) { mikrobus_logWrite( " >> [h or H] - HELP << ", _LOG_LINE ); heartrate9_help( ); } } if ( start_app_flag == 1 ) { hr9_drdy_flag = heartrate9_byte_ready( ); if ( 1 == hr9_drdy_flag ) { hr9_rx_data = heartrate9_read_byte( ); mikrobus_logWrite( &hr9_rx_data, _LOG_BYTE ); } } }
Commands : ‘S or s’ – Start logging ‘B or s’ – Break logging ‘H or h’ – Help
Additional Functions :
- void heartrate9_help() – commands and response data help
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- UART
Additional notes and informations
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
mikroSDK
This Click board™ is supported with mikroSDK – MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.