Hello Analog Team,
I’m trying to acquire an ECG signal from EVAL-ADPD4100Z-PPG with a microcontroller RP2040 based (Raspberry Pi Pico), however I am receiving a very noisy signal which does not look like a ECG signal. The figure below shows the received ECG data:
The register configuration used was as suggested by the datasheet for small DC offset, with changes to use IN7/IN8 inputs.
#ADPD4100 ECG Measurement with small DC offset
0009 0080 # 32MHz oscillator trim
000B 02B2 # 1MHz oscillator trim
000D 0D05 # Sampling rate 300 Hz
000F 0006 # 1MHz low frequency oscillator
0010 0000 # Timeslot A enabled
0020 0202 # Float inputs 3&4 and 7&8 during sleep
0021 0008 # IN7/IN8 configured as a differential pair
# Timeslot configuration #
### Timeslot A - Sleep float mode ECG with multiple charge transfers
0100 0000 # Input resistor 500 Ω
0101 00E6 # skip preconditioning, bandpass filter bypassed
0102 7000 # IN7&IN8 differential pair to channel 1
0103 0000 # float during preconditioning
0104 02C1 # TIA gain 100k, Vref = 0.88V
0105 0000 # LEDs off
0106 0000 # LEDs off
0107 0102 # 2 pulses
0108 1000 # float mode, minimum period
010A 0203 # Integrator pulse width, bandpass filter powered down
010B 01A0 # Integrator pulse timing offset
010C 0210 # Modulation pulse width and offset
010D 0000 # Chopping mode disabled
010E 0000 # no ADC offset
010F 0000 # no ADC offset
0110 0003 # Configure number of bytes written to the registers
We also tested the setting for high DC offset, but no improvement in signal quality was observed.
Another test was performed utilizing the Microcontroller board EVAL-ADPDUCZ and Wavetool Evaluation Software, with the same configuration, but the problem persists. Below is a print of the signal obtained from the wavetool.
About the Hardware setup:
In the first test we had soldered two jumpers directly in IN7/IN8 ports pins of EVAL-ADPD4100Z-PPG.
However, the ADPD4100/ADPD4101 datasheet recommends a 500 k resistor in series with each input, but the Evaluation board uses a 25 K resistor. So, we soldered 470 K resistors and electrodes taken from an AD8232 ECG Sensor Module Kit:
Even so, we did not have significant changes in the ECG signal.
Reading mode:
Initially, we tested the direct reading of the output registers associated with team slotA (SIGNAL1_L_A and SIGNAL1_H_A). On this occasion, the interruption of slot A was configured for GPIO2 of the ADPD. Secondly, we use the FIFO, directing the INT_FIFO_TH status bit to the interrupt. Both configurations presented the same noisy behavior for the signal.
Lastly, I tested the configuration mentioned in the topic ez.analog.com/.../eval-adpd4100z-ppg-3-3v-operation-noisy-signal from the ADI Engineer Zone. Also, unsuccessful. Below is the most recent verified configuration:
#ADPD4100 ECG Measurement with small DC offset
0009 0072
000B 02CA
000D 0D05 # Sampling rate 300 Hz
000F 0006 # 1MHz low frequency oscillator
0010 0000 # Timeslot A enabled
0014 8000 # FIFO int x
0020 0202 # Float inputs 3&4 and 7&8 during sleep
0021 0008 # IN7/IN8 configured as a differential pair
# Timeslot configuration #
### Timeslot A - Sleep float mode ECG with multiple charge transfers
0100 0000 # Input resistor 500 Ω
0101 00E6 # skip preconditioning, bandpass filter bypassed
0102 7000 # IN7&IN8 differential pair to channel 1
0103 0000 # float during preconditioning
0104 02C1 # TIA gain 100k, Vref = 0.88V
0105 0000 # LEDs off
0106 0000 # LEDs off
0107 0102 # 2 pulses
0108 1000 # float mode, minimum period
010A 0003
010B 01A0 # Integrator pulse timing offset
010C 0210 # Modulation pulse width and offset
010D 0000 # Chopping mode disabled
010E 0000 # no ADC offset
010F 0000 # no ADC offset
0110 0002 # Configure number of bytes written to the registers
# Interrupt Configuration #
0006 0002 # 2 bytes FIFO interrupt generation threshold
0022 0083 # gpio3 disabled, gpio2 = out normal, gpio0 = out invert
0024 0002 # Interrupt X on GPIO2
And the ECG signal obtained.
Note: we are using the same board to obtain a PPG signal and it is much better. Below is the PPG print:
My question is: am I making some configuration or hardware error that could be generating the noisy ECG signal?
I would appreciate any help from. Best Regards!