Post Go back to editing

GSR / EDA measurement using EVAL-ADPD4000

Hello, I am trying to measure bioimpedance using EVAL-ADPD4000 but I keep failing.

If you look at the datasheet of EVAL-ADPD4000, there are IN5 and IN6 as impedance measurements.

I would like to use this to measure GSR or EDA, but there are no examples anywhere.

Please give me the example code or register value related to the above. I would very much like to solve this problem. Please help!

  • Hi Jiwon,

    For GSR/EDA measurement, you would need to have a low frequency excitation source. What type of eval board do you have? You would need to connect one electrode to the excitation source as transmitter and another electrode to an input pin as receiver. The bioimpedance measurement circuit on the eval board uses VC2 as excitation. It is good for bioimpedance measurement; however, the excitation frequency is too high for EDA/GSR measurement.

    You could use the config example below to config your eval board:

    #ADPD4000 Impedance measuremen
    0009 0094 # 32MHz trim
    000B 02EA # 1MHz trim
    000D 0D05 # Sampling rate, 0D05 for 300 Hz, 2710 for 100Hz, 09C4 for 400 Hz
    000F 0006 # 1MHz osc
    0010 0000 # Timeslot, 0100 Timeslots AB, 0000 Timeslots A
    0020 0002 # Float input 3&4, 5&6, 7&8 during sleep
    0022 0403 # gpio0 out invert, gpio3 output normal
    0023 0002 # gpio0 int x
    0014 8000 # fifo to int x
    0021 0008 # IN7/IN8 configured as a differential pair

    # Slots config

    ###Timeslot A Impedance measurement on IN5 ###
    ### IN5 as single-ended input ###
    0100 0000 # CH2 disabled, input resistor 500 ohms
    0101 41DA # Full AFE, TIA+BPF+INT+ADC
    0102 0100 # IN5 to CH1
    0103 5A45 # PRECON TO Vref, pulse VC2 vref to vdel (TIA_Vref+250mV)
    0104 E209 # 100K GAIN both channels, vref=.9
    0105 0000 # LEDs off
    0106 0000 # LEDs off
    0107 0110 # 16 PULSE 1 INT
    0108 0014 # 50 kHz pulse train, continuous TIA connection
    010A 0003 # INT Width
    010B 180F # INT timing offset, 15.75us
    010C 0210 # MOD pulse width and offset
    010D 0099 # CHOP
    010E 0000 # OFFSET
    010F 0000 # OFFSET
    0110 0003 # 3 BYTES SIG

    Again, the example above uses VC2 to generate excitation signal and the frequency is too high for EDA/GSR measurement, which requires dc or low frequency excitation.


    Glen B.

  • Sincerely thank you for your help!
    I have a few more questions, can you help?
    The eval board I use is EVAL-ADPD4000Z-PPG

    If you look at the circuit diagram of the above EVAL board, IN5 and IN6 are written as IMPEDANCE, and VC2 is connected to IN5 with a resistance of 100k ohm.
    So, I thought I could measure GSR with IN5 and IN6 because of this.
    Does the example you gave me fit this?

    Thank you for your help

  • Hi Jiwon,

    In the diagram, the R11 100k resistor between the test point VC2 and test point IN5 serves as a reference for impedance measurement. If you plan to use the config file I provided previously, you need to remove the R11 resistor. If you don't want to change the hardware, you can change the register 0x0102 setting from 0100 to 0300 in the config file. In this case, you connect one electrode to the VC2 test point and another electrode to test point IN6. 


    Glen B.

  • Thank you so much for your kind response, 
    but unfortunately I haven't been able to measure EDA yet.
    You told me "Again, the example above uses VC2 to generate excitation signal and the frequency is too high for EDA/GSR measurement, which requires dc or low frequency excitation."
    How can I adjust the excitation signal period generated in VC2 to a low frequency?
    Or can you convert VC2 to DC? I really ask for help.
    I haven't been able to measure EDA for a few days,
    so I'll wait for your kind reply. Thank you so much.
  • Hi Jiwon,

    A quick solution is to connect one electrode to the 1.8V as excitation and another electrode to IN3 (or IN4 in the schematic, with 100k resistor) as receiver. This will form an EDA measurement with 0.9V DC excitation. The EDA value can be calculated from the current measured at IN3. 

    Below is an example config file you can start with:

    #ADPD4000 EDA Measurement (1.8V DC excitation, 100k current limit resistor in the path)
    0009 0094 # 32MHz trim
    000B 02EA # 1MHz trim
    000D 0D05 # Sampling rate
    000F 0006 # 1MHz osc
    0010 0000 # Timeslot A (only)
    0020 0202 # Float input 3&4 and 7&8 during sleep
    0022 0403 # gpio3 output, gpio0 out invert
    0023 0002 # gpio1 int x
    0014 8000 # fifo to int x
    0021 0000 #
    0024 0000 # any led to gpio3
    # Slots config

    ### Timeslot A - Current Measurement at IN3
    ### eg. 100k ohms resistor at IN3 
    ### Timeslot B control: PULSE CON
    0100 0000 # Input resistor 500 ohms 0000
    0101 41DA # 8us precon, TIA-BPF-INT-ADC
    0102 0010 # IN7 to CH 1
    0103 5000 # precon to TIA_VREF, VCx state d/
    0104 E281 # TIA gain, E280 200k, E281 100k
    0105 0000
    0106 0000
    0107 0101 # 1 pulse 1 int
    0108 2000 # Pulse connect, auto period
    010A 0004 # Int width 4us
    010B 0D0F # integrator timing offset, AFE offset 15us, AFE fine offset 406.25ns
    010C 0310 # Mod pulse width 3us, mod offset 16us
    010D 0000 # Pattern
    010E 0000
    010F 0000
    0110 0004 # 4 bytes sig

    The current can be calculated from the measured ADC codes using the formula below:

    fC: femtocoulomb 

    In the example config, the Rf=100k, tpw=3us.

    The resistance is the path is calculated as R = (1.8 - Vref)/I,  where Vref=0.9V.

    EDA = 1/(R-Rlimit), where Rlimit=100k is the current limit resistor.





  • Hi GlenBu, 

    I follow your previous configuration file, but when I try to read the fifo buffer, I read only zeros or big values without sense. I use the oscilloscope to verify VC2, but I do not see any wave. Also if I change the register 0x0103 in order to have Vc2 no pulsing, it is always at ground voltage. Could you tell me anything? 


  • Hi Gloi,

    Which configuration did you use? If you used the one posted on Jan. 11, you need to remove the R11 from the board for IN5 as the receiving input. Please refer the directions posted on Jan. 14 for IN6 as the receiving if you don't want to remove R11.

    When you pulse VC2, you can see the bursts of 16 pulses on the oscilloscope. If you set VC2 to a DC value, the DC voltage will be blocked by the capacitor C9. 

    I cannot comment your FIFO readout as I don't know how you ran your test. If you are using the EVAL-ADPD4000Z-PPG with the Applications Wavetool software, you can log and check your data.


    Glen B. 

  • Thanks GlenBu for the answer,

    now it is ok. Another question, for the impedance measurements can i refer to the formula that you provided?(Changing the value in accord to the registers values). Where can I find that?  Because on the datasheet I found only the formula about TIA_ADC_Mode.

  • Hi Gloi,

    It is good to know you solved the problem. What was the cause of the issue?

    For calculating the current, please refer to the formula posted on Jan. 18 for TIA-BPF-INT-ADC mode. If you don't have the BPF in your signal path, you can remove the 0.81 factor, which is the BPF gain. You can then calculate your impedance using the excitation voltage (typically 250mV for ADPD4000).


    Glen B.

  • Hi GlenBu, 

    It was an hardware problem, but now  it is ok. Anyway, I still have the problem about the fifo buffer. I don't know it does not fill up. Do you know any idea about that? I used the example code I used the example code on the repository  on github. I created a new question about it, could you help me?