Skip to main content

Arduino Code for test Heart Rate 7 Click

Heart Rate 7 Click is the newest module from MikroE which uses VEM8080 photodetector has a wide range spectrum from 300nm - 1000nm.

To control and acquisition data, AFE4404 from TI inc. is adopted. This chip permits control 3 LED channels, and sample heart rate default 100 SPS.  A 22-bit ADC permit collecting very small changed voltage from a PD sensor.

In this example we config Arduino Mega  2650 as below:
Pin 4 for RST
PIN 5 CLK
PIN 6 INT

PIN 20 SDA
PIN 21 SCL

Config registers follow the default of AFE4404 datasheet Page 27 with some minor changes.

1. Config Internal Clock through  AFE_CONTROL2 register
addr.: 0x23
value: 0x104218  // setup all dynamic power to save energy

2. Control LED2 current through AFE_LEDCNTRL register
addr: 0x22
value: 0x000100

3. Read data using PROG_TG_EN signal through AFE_TIA_GAIN register
addr: 0x21
value: 0x000125

Time to start and end of PROG_TG setup through two registers:

AFE_PROG_TG_STC register (start time)
  addr = 0x34
  value = 0x001563;
 AFE_PROG_TG_ENDC register (end time)
  addr = 0x35
  val = 0x00991F;

The time default for pulse response frequency is 40000 pulse/4MHz. = 10 ms.

So our time for reading adc 10ms.

Full Program can download from Github link:

https://github.com/LongNguyen1984/AFE4404-arduino/blob/master/AFE4404_PPGexp.ino


Comments

Popular posts from this blog

Serial Port Profile with CC2650 and CC2640R2 (part 2) Modified to transfer ADC values up to PC Step 1:  Include ACD.h library #include <ti/drivers/ADC.h>  Step 2: Insert period event in order to update ADC read values from the potentiometer #define SSSS_ICALL_EVT                         ICALL_MSG_EVENT_ID // Event_Id_31 #define SSSS_QUEUE_EVT                         UTIL_QUEUE_EVENT_ID // Event_Id_30 #define SSSS_PERIODIC_EVT                      Event_Id_00 //SOLUTION // Bitwise OR of all events to pend on #define SSSS_ALL_EVENTS                        (SSSS_ICALL_EVT        | \                                ...
Serial Port Profile with CC2650 and CC2640R2 This test based on code from TI support under link: For CC2650: https://github.com/ti-simplelink/ble_examples/blob/ble_examples-2.2/docs/spp_ble.md For CC2640R2: https://github.com/ti-simplelink/ble_examples/blob/simplelink_cc2640r2_sdk-2.20/examples/rtos/CC2640R2_LAUNCHXL/bleapps/simple_serial_socket_client/readme.md In this experiment, I use CC2640R2 as Server (Peripheral) and CC2650 as Client (Central) as the image below: Step1: import project spp_ble_client_cc2650lp (app and stack) for CC2650 Step2: modify Code of Service in file serial_port_service:               C0E0 ==> C0C0               C0E1 ==> C0C1               C0E2 ==> C0C2 If you don't change, Two Blue Tooth Board cant know to service each other. Step 3: import project simple_serial_socket_client_CC2640r2 for CC2640R2 here we using RealTerm...