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
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
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
Hello,
we would like to use the ADC5940 respectively the ADUCM355 for voltage measurements (OCP, open circuit voltage) on an electrochemical sensor. Concerning this issue, two questions occurred. I guess ADC5940 and ADUCM355 are somehow similar.
1)We want to make a shortcut between the pins CE0 and RE0 and then measuring the voltage between CE0/RE0 and WE0 (OCP). Is it possible to measure that voltage by setting the MUXSELP-bits of the ADCCON-register to 01110 (page 70, ADuCM355 Hardware Reference Manual, https://www.analog.com/media/en/technical-documentation/user-guides/ADuCM355-Hardware-Reference-Manual-UG-1262.pdf respectivley page 61, AD5940 datasheet, https://www.analog.com/media/en/technical-documentation/data-sheets/AD5940-5941.pdf)
2) Which magnitude would be the referring input impedance?
Kind regards
Hi,
AD5940 is similar with ADuCM355, the difference is ADuCM355 has a cortex-m3 MCU inside.
1. You need to set MUXP and MUXN to the differential voltage you want to measure. For example, set MUXP to pin CE0 and MUXN to SE0 to measure the voltage between CE0 and SE0.
2. There is no input impedance parameter in datasheet, but has a input current. Please check Table 1, ADC INPUT section.
Regards,
Neo
Hello,
I am also interested to perform an OCP with the AD5940. In the documentation, there is no SE0 available from MUXN. According to the documentation, MUXN can be configured through the register ADCCON, bits [12:8] (MUXSELN). Here is an extract of page 61 / 134 (Rev C).
The MUXSELP can be connected to any of pins RE0, CE0, SE0, DE0 though.
Is there any way to measure potential between SE0 end RE0?
Thank you.
Best regards,
Hello,
I am also interested to perform an OCP with the AD5940. In the documentation, there is no SE0 available from MUXN. According to the documentation, MUXN can be configured through the register ADCCON, bits [12:8] (MUXSELN). Here is an extract of page 61 / 134 (Rev C).
The MUXSELP can be connected to any of pins RE0, CE0, SE0, DE0 though.
Is there any way to measure potential between SE0 end RE0?
Thank you.
Best regards,
Hi,
There are many ways to measure voltage across SE0 and RE0.
One way:-
1) Connect the two terminals of your load to AIN2 and IN3 respectively and measure the voltage across them,
AD5940_ADCMuxCfgS(ADCMUXP_AIN3, ADCMUXN_AIN2);
AD5940_AFECtrlS(AFECTRL_ADCPWR|AFECTRL_SINC2NOTCH, bTRUE);
AD5940_Delay10us(16*25);
AD5940_AFECtrlS(AFECTRL_ADCCNV, bTRUE); /* Start ADC convert*/
AD5940_Delay10us(WaitClks);
while (!(AD5940_INTCTestFlag(AFEINTC_1, AFEINTSRC_SINC2RDY)));
AD5940_INTCClrFlag(AFEINTSRC_SINC2RDY);
afeResult = AD5940_ReadAfeResult(AFERESULT_SINC2);
AD5940_AFECtrlS(AFECTRL_ADCPWR|AFECTRL_ADCCNV|AFECTRL_SINC2NOTCH, bFALSE); /* Stop ADC */
measured_voltage = AD5940_ADCCode2Volt(afeResult&0xffff, ADCPGA_1, 1.82);
another way:
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).
Hi Akila,
I used the method you described above where I shorted SE0 and RE0 to AIN0 and AIN2 Respectively and then took those inputs to ADCMUXP and ADCMUXN the result looked as if the voltage was floating and I could not get a stable reading or anything close to what reading the physical pins with a multimeter would show.
Do you perhaps know what could be causing this and how I might be able to proceed?
Hi,
For quickly resolving this issue, kindly use the code available here:
In this code.
switch configuration is:
LpAmpCfg.LpTiaSW = LPTIASW(8) | LPTIASW(4);
which 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,
- By the transfer function of a -ve feedback amplifier:
Here, the amplifier is LPTIA,
Rf = RTIA (feeback resistor of LPTIA whose value can be set in code)
Rg = Rload
+IN - -IN in the above diagram = VRE0 -VSE0
Hence open circuit potential across RE0 and SE0 = Vin = Vout * (-Rload/Rtia)
For you reference: (1) AD5941 Potentiometry Basic Example and OCP Basic Example - Q&A - Precision ADCs - EngineerZone (analog.com)
Hi Akila ,
I am afraid that the code you provided is not working, I'm always getting an ADC Code equal to 65272. I've checking the code for a while now and I cannot find the issue... They have this OCP measurement option kind of "disabled" in their framework. Not sure if it's because they know it's not working.
They have a previous version for running potentiometry measurements:
https://github.com/IMTEK-FreiStat/FreiStat-IoT/blob/master/Firmware/Voltammetry/RampTest.c#L1428
But here I'm not sure if they're actually making use of the LPTIA as a voltage follower/amplifier or just getting the inputs directly to the ADC MUX without considering the op-amp output as they do:
dsp_cfg.ADCBaseCfg.ADCMuxN = ADCMUXN_LPTIA0_N; //LPTIA0 negative input node --> routes to SE0 (see Fig 23 in datasheet) dsp_cfg.ADCBaseCfg.ADCMuxP = ADCMUXP_VRE0; //Pin RE0
Thanks again for your kind and useful responses!
Hi,
LPTIA is typically not used in OCP measurements. Inputs are directly read by ADC MUX and OCP is measured.
LPTIA is used mainly for current measurements, not voltage measurement.
In the above example. LPTIA is used only to make use of RTIA and Rload for gain purpose.
I am not sure where you saw the "OCP disabled" comment in the previous code shared.
Hi Akila ,
Let me expose the several issues here in some sort of order:
After all this background work, my final query would be:
I need a high input impedance (such as the one you would need for reading a pH level), but I would need no gain when measuring OCP in my case. Therefore, may I use the LPTIA as a voltage follower with the `ADCMUXN_LPTIA0_N` and `ADCMUXP_LPTIA0_P` ADC MUX inputs as they seem to make sense? How could I implement it using the SE0 and RE0 pins as the ones connected to my sensor (as the solution provided by this second version of the Framework does seem to fail)?
I'm sorry for all the plethora of text, but I really appreciate your comments and suggestions Akila , they're extremely useful and really help us to understand the chip in depth.
Hi,
1)I would like to have information about front-end buffer before the ADC.
The ADC pre-stage channel has input mux, front-end buffers, offset cancellation buffers (aux-buffers), a single end to differential conversion stage, passive 3rd order AAF filter, and adc buffers. ADCBUFCON register controls enabling/disabling of these blocks.
The input buffers have very high input impedance with typical leakage current within +/- 0.5nA (max and min values of leakage current are given in datasheet.
2) Wouldn't it be far easier to use the PGA in the ADC instead? Rload and RTIA offer more flexible gain options compared to the fixed number of PGA gain options.
3) If you are using LPTIA as a voltage follower, then voltage at `ADCMUXP_LPTIA0_P` is equal to voltage at `ADCMUXN_LPTIA0_N`.
If LPTIA is to be used with -ve feedback, Rload and RTIA come into picture.
If no Vout/Vin ratio is required, you may just connect SE0 and RE0 as ADC mux inputs and read the output.
Hi Akila ,
Again, thank you very much for your time and valuable replies.
I see... Then the input front-end buffers should be enough for my purposes (200 kOhm), right (each one of the ADC MUX inputs is going through one of the two buffers)?
Moreover (sorry), could you also address the following issues as well, please?
In their first version of the Framework they use `ADCMUXN_LPTIA0_N` and `ADCMUXP_VRE0`. Therefore, they use the negative input node to the LPTIA and the voltage in RE0 pin, respectively, as the ADC MUX inputs. With this configuration, I understand they're not using the LPTIA as a voltage follower/amplifier, and inputs are read by ADC MUX directly to measure OCP. Then, I guess the only op-amps involved in the process are the ones in the front-end buffer before the ADC itself.
I am afraid that the code you provided is not working, I'm always getting an ADC Code equal to 65272
Thanks a lot for all the help you provide, it's really useful.
Hi ,
- Yes. They are not using LPTIA as voltage follower. But they are using PA (Potentiostat amplifier) as the voltage follower.
One simple option is to connect AGND via a third electrode to the electrolyte of the electrochemical cell.
In this way, AD5940 and electrolyte have common ground reference.
SE and RE can now be directly connected to ADC MUX for measuring OCP across them.
You may refer to
which is also one way to measure open circuit potential, achieved by user.