AD5941
Recommended for New Designs
The AD5940 and AD5941 are high precision, low power analog front ends (AFEs) designed for portable applications that require high precision, electrochemical...
Datasheet
AD5941 on Analog.com
ADUCM355
Recommended for New Designs
The ADuCM355 is an on-chip system that controls and measures electrochemical sensors and biosensors. The ADuCM355 is an ultralow power, mixed-signal microcontroller...
Datasheet
ADUCM355 on Analog.com
AD5940
Recommended for New Designs
The AD5940 and AD5941 are high precision, low power analog front ends (AFEs) designed for portable applications that require high precision, electrochemical...
Datasheet
AD5940 on Analog.com
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,
Could you tell what clarification is required in ez.analog.com/.../ad5940-open-circuit-potentiometry
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)
Ok thank you for the answers.
Hi Laura, just following up on this discussion. Were you able to put together a script to measure OCP using the AD5940/ADUCM355? I'm trying to do the same thing with the eval board of the ADUCM355, it would be really helpful if you could share it.
Thank you!
Hi Akila,
Thank you very much for your helpful replies and your kind attention.
I have followed all your answers regarding this Potentiometry/OCP topic. However, If the normal configuration for the switches is as depicted in Figure 23 of Page 38, as Laura shown:
I don't really get why
- SW6 connects -ve input of PA to +ve input of LPTIA
as in the figure SW6 is shorting towards the LPDAC output rail instead, nor
- CE0 is shorted to RE0.
since neither SW2 nor SW10 are closed, for instance.
Thank you very much!
Hi Akila,
Thank you very much for your helpful replies and your kind attention.
I have followed all your answers regarding this Potentiometry/OCP topic. However, If the normal configuration for the switches is as depicted in Figure 23 of Page 38, as Laura shown:
I don't really get why
- SW6 connects -ve input of PA to +ve input of LPTIA
as in the figure SW6 is shorting towards the LPDAC output rail instead, nor
- CE0 is shorted to RE0.
since neither SW2 nor SW10 are closed, for instance.
Thank you very much!
Hi,
If SW6 is not closed in code (not mentioned in LpAmpCfg.LpTiaSW configuration setting), that means it connects -ve input of PA to +ve input of LPTIA.
Thank you for your observation.
Actually with the above configuration, OCP across RE0 and SE0 is measured.
Open circuit potential across RE0 and SE0 = Vin = Vout * (-Rload/Rtia)
As you have mentioned, if you want to measure OCP across CE0 and SE0, close SW2 also.