Post Go back to editing

AD5941 Potentiometry Basic Example and OCP Basic Example

Category: Software
Product Number: AD5940/41
Software Version: AD5940/41 API and Application Examples

Hello,

I had the following question.

In the Application Examples of AD5940/41 Git you can find a Basic Application Example for Amperometry, Cyclic Amperometry, Voltammetry and Cyclic Voltammetry.

But I couldn't find an Application Example for Potentiometry or/and Open Circuit Potential.

Is there any of the application examples of AD5940/41 or ADUCM355 which could be taken as a basis for a Pententiometric Measurement Application or/and an Open Circuit Potential measurement ?

The only thread which goes into the direction of this topic is this one:

https://ez.analog.com/data_converters/precision_adcs/f/q-a/542089/ad5940-open-circuit-potentiometry

But I dont fully get it.

Can anyone provide a guidance which one of the application examples would the best one to start to implement a Potentiometric or/and Open Circuit measurement ?

Many Greetings

  • Hi  

    We will look into this. I will contact the product owner and get back to you.

    Regards,

    JC

  • Hello Akila, sorry for my late reply, i had to do a bit of own research first to precise my question.

    I found this thread https://ez.analog.com/data_converters/precision_adcs/f/q-a/116440/voltage-measurement-ocp-open-circuit-potential-using-the-ad5940-resp-aducm355/483997 which already gives good information how to do Potentiometric Measurement, but there is still some questions.

    I want to implement the second method, mentioned in this thread:

    1) Measure voltage of SE0 w.r.t. VERO0, (AD5940_ADCMuxCfgS (ADCMUXP_VSE0 ,ADCMUXN_VZERO0);)

    2)Measure voltage of RE0 w.r.t. VZERO0, (AD5940_ADCMuxCfgS (ADCMUXP_VRE0 ,ADCMUXN_VZERO0);)

    3) Subtract (1) from (2). 

    This is my problem :

    In general if you want to configure a measurement with AD5940, three different kind of switch-configurations have to be done.

    1) The two inputs of ADC from the ADC switch matrix which are already clear (ADCMUXP_VSE0, ADCMUXP_VRE0 and ADCMUXN_VZERO0)

    2) The 15 switches of the Potentiostat circuit (in the code they adressed with SW(0) to SW(15)

    3) The four switches of the Low Power DAC (in the code they adressed with "LPDACSW_VBIAS2LPPA | LPDACSW_VBIAS2PIN | LPDACSW_VZERO2LPTIA | LPDACSW_VZERO2PIN")

    In the user Manual of AD5940 on page 38 (Figure 23), there is a picture where all this switches can be seen in.

    The user manual and the code examples give good explanation on which switches to close for amperometric and voltametric measurement but not for Potentiometry.

    Could you please give some clarification how to configure the switches mentioned in 2) and 3) for Potentiometric Measurements in reference to the Picture on Page 38 (Figure 23) of user manual ?

    Thx in Advance 

    Laura

  • Hello, I precised my question in my last message at the bottom of the thread.

  • As a last information, which could help: I use a standard electrochemical electrode configuration with an Working-Electrode attached to SE0, a Reference-Electrode attached to RE0 and a Counter-Electrode attached to CE0.

  • Hi,

    These switch configurations (2) and (3) are done for generating excitation output and doing current measurement. 

    2) SW switch configuration for excitation output at CE0, sensing at SE0 and reference feedback at RE0, is as below:

    If LPTIA is used for current measurement: 

    if(AppAMPCfg.ExtRtia == bTRUE)
    {
    lp_loop.LpAmpCfg.LpTiaRtia = LPTIARTIA_OPEN;
    lp_loop.LpAmpCfg.LpTiaSW = LPTIASW(9)|LPTIASW(2)|LPTIASW(4)|LPTIASW(5)|LPTIASW(12)|LPTIASW(13);
    }else
    {
    lp_loop.LpAmpCfg.LpTiaRtia = AppAMPCfg.LptiaRtiaSel;
    lp_loop.LpAmpCfg.LpTiaSW = LPTIASW(5)|LPTIASW(2)|LPTIASW(4)|LPTIASW(12)|LPTIASW(13);
    }

    If HSTIA is used for current measurement:

    if(AppSWVCfg.LPTIARtiaSel == LPTIARTIA_OPEN) /* User want to use external RTIA */
    lploop_cfg.LpAmpCfg.LpTiaSW = LPTIASW(13)|LPTIASW(2)|LPTIASW(4)|LPTIASW(5)|LPTIASW(9)/*|LPTIASW(10)*/; /* SW5/9 is closed to support external RTIA resistor */
    else
    lploop_cfg.LpAmpCfg.LpTiaSW = LPTIASW(13)|LPTIASW(2)|LPTIASW(4);

    HsLoopCfg.SWMatCfg.Dswitch = SWD_OPEN;
    HsLoopCfg.SWMatCfg.Pswitch = SWP_OPEN;
    HsLoopCfg.SWMatCfg.Nswitch = SWN_OPEN;
    HsLoopCfg.SWMatCfg.Tswitch = SWT_TRTIA|SWT_SE0LOAD;

    _________________________________________________________________________________________________________________________________________________

    3) LPDAC switch configuration :

    if LPTIA is used for current measurement:

    LpDacCfg.LpDacSW = LPDACSW_VBIAS2LPPA|LPDACSW_VBIAS2PIN|LPDACSW_VZERO2LPTIA|LPDACSW_VZERO2PIN;

    If HSTIA is used for current measurement:

    LpDacCfg.LpDacSW = LPDACSW_VBIAS2LPPA|LPDACSW_VBIAS2PIN|LPDACSW_VZERO2LPTIA|LPDACSW_VZERO2PIN|LPDACSW_VZERO2HSTIA;

    _________________________________________________________________________________________________________________________________________________

    ADC configuration for current measurement:-

    If LPTIA is used :

    - without low pass filtering:

        AD5940_ADCMuxCfgS(ADCMUXP_LPTIA0_P, ADCMUXN_LPTIA0_N);

    - with low pass filtering:

        AD5940_ADCMuxCfgS(ADCMUXP_AIN4, ADCMUXN_LPTIA0_N);

    If HSTIA is used:

       AD5940_ADCMuxCfgS(ADCMUXP_HSTIA_P, ADCMUXP_HSTIA_N);

    ADC configuration for OCP measurement:-

      AD5940_ADCMuxCfgS (ADCMUXP_VSE0 ,ADCMUXN_VZERO0); // for measurement of SE0 w.r.t. VZERO0

      AD5940_ADCMuxCfgS (ADCMUXP_VRE0 ,ADCMUXN_VZERO0); // for measurement of SE0 w.r.t. VZERO0

  • Hello Akila, thx for your detailed reply,

    If I'm getting things right, you the switch configurations you postesd are similar to the Configurations in the Code of the Amperometric and Chronoamperometric example.

    Im just a bit confused that your suggestion of ADCMUX-Switches config differs from that examples:

    Amperometric-Example on gitHub (with LP): 

    AD5940_ADCMuxCfgS (ADCMUXP_AIN4, ADCMUXN_VZERO0);

    Chrono-Amperometric-Example on gitHub (with LP): 

    AD5940_ADCMuxCfgS (ADCMUXP_LPTIA0_P, ADCMUXN_LPTIA0_N);

    The configuration in your post (with LP):

    AD5940_ADCMuxCfgS (ADCMUXP_AIN4, ADCMUXN_LPTIA0_N);

    Can you explain, what exactly is the difference between using ADCMUXN_VZERO0 and  ADCMUXN_LPTIA0_N for the ADCMUX_N_Input ?

    Also I'm wondering if it wouldn't be better to change the LPTIA-Switch configuration (LPTIASW(2) | LPTIASW(4) | LPTIASW(5) | LPTIASW(12) | LPTIASW(13)) of Amperometric Example, you suggested, slightly for Potentiometric measurement.

    For example wouldnt it be better to open LPTIASW(2) to prevent that a voltage output from the LPDAC (even if its output is 0) gets applied to the circuit while measuring OCP ?

    Many Greetings

    Laura

  • Hi,

     1)  ADCMUXN_LPTIA0_N refers to -ve input terminal of LPTIA. 

    As shown in above diagram, if LPTIA0 +VE input is connected to Vzero, 

    then,

    voltage at ADCMUXN_LPTIA0_N = voltage at ADCMUXN_VZERO0.

    Hence both can be used interchangeably here.

    2) Yes. Opening SW2 removes excitation output.

  • Hello Akila, thx for your reply.

    I've found one single example for OCP-Measurement with AD5940/41 on Github.

    (It's from a project called IMTEK-Freistat)

    In this project they choose the following configuration for measuring OCP:

    // They only close Switch 4 and 8 of the LPTIA-Circuit and leave all other switches open:
    LpAmpCfg.LpTiaSW = LPTIASW(8) | LPTIASW(4);
    
    // They set the Rtia and Rload value of the LPTIA-Circuit as follows and give the hint "Set Rtia and RtiaLoad to make inverting amplifier":
    LpAmpCfg.LpTiaRload = LPTIARLOAD_3K6;
    LpAmpCfg.LpTiaRtia = LPTIARTIA_8K;
    
    // They keep all switches from the LPDAC-Circuit open:
    LpDacCfg.LpDacSW= 0;
    
    // They set the two Inputs of the ADC to the positive and negative Input of the LPTIA simultaneously:
    ADCBaseCfg.ADCMuxN = ADCMUXN_LPTIA0_N;
    ADCBaseCfg.ADCMuxP = ADCMUXP_LPTIA0_P;

    Then they simply keep measuring the ADC-Output (without alternating between inputs) and take it as OCP-Value.

    If I'm getting things right, with the choosed values for the resistors, they create an inverting amplifier with a Gain of [ -(Rtia/Rload) = -(8k/3.6k) = 2.5 ] but i don't know in which way this is important because i thought you have to choose the Rtia-Value according to your desired current range and only choose a value for Rload-Value if the attached sensor does need this Rload and otherwise keep Rload at 0. Also I thought the Rtia is always an inverting amplifier independent of the attached resistor values. Also usually the positive Input of an Inverting ampliefier is tied to ground, but with this switch configuration its more like floating/undefined. So this is very confusing to me.

    This method seems very confusing to me, can it work ?

    If yes why ?

    Many Greetings

    Laura

  • Hi,

    LpAmpCfg.LpTiaSW = LPTIASW(8) | LPTIASW(4); 

    means,

    - SW6 connects -ve input of PA to +ve input of LPTIA

    - SW7 connects -ve input of LPTIA to SE0 via RLoad

    - All other switches are left open.

    Hence by this configuration,

    - CE0 is shorted to RE0.

    - By the transfer function of a -ve feedback amplifier:

            

    Rf = RTIA

    Rg = Rload

    Vin = VCE0 

    SE0 is assumed shorted to GND.

    Hence open circuit potential across CE0 and SE0  = VCE0 = Vin = Vout * (-Rload/Rtia)