Post Go back to editing

Cyclo-Voltammetry example project not giving expected results

Category: Hardware
Product Number: ADUCM355


I'm trying to match the results of output of the ADuCM355- EVAL board, using the "M355_ECSns_CycloVoltammetry" example project, to that of a conventional potentiostat done over a 3 lead ECS in Ferro/Ferri Cyanide solution. I'm using a ramp voltage of -0.3-0.6 V, steps of 10 mV and scan rate of 100 mV/s. However, when trying to apply the same parameters to the example project it seemed to "trim" out a part of the complete graph. Achieving a somewhat similar graph structure is done by applying a greater voltage range (-1-1 V) and even then the graphs aren't identical and the max current significantly exceeds the one from the potentiostat.
I would appreciate assistance in the matter.

The desired output:

the received output for original parameters:

output for extended voltage range:


original parameters:

  • After playing with the parameters I managed to reach the following graph:

    This was done by raising the voltage by a constant 0.32 V and reducing the current by a constant of 5 uA.

    Here are the new parameters:

    My questions are:

    1) why aren't my parameters in line with the alleged parameters? 

    2) What may cause the constant bias (both in voltage and current measures)?

    3) How can I overcome the gaps before the peaks, i.e force the current values to overlap at the ends of the voltage sweep? I assume they have something to do with some sort of selective bias, but I'm having trouble putting my finger on it...

    Thanks a lot!   

  • Hi,

    Could you please increase the sample delay and ramp duration and check:

    pRampCfg->RampDuration = 10*1000; /* Total duration of ramp signal. unit is ms. */
    pRampCfg->SampleDelay = 2.0f; /* Time between update DAC and ADC sample. Unit is ms. */

  • Thanks for your response!

    I've tried multiple combinations of the specified parameters, all of which affect the shape of the graph but still no luck with matching the alleged stacture.

    basically I calculated the average of the distance between the edges of the shape, and then subtracted it from the increasing part of the ramp and added it to the decreasing part of the ramp (so I can "sew" the edges together). by this I got the following:

    Meaning, I'm still getting the skew in the X-axis and still unable to explain the bias added/subtracted to the current respectively...

  • Hi,

    May I know if you have checked by varying pRampCfg->SampleDelay because enough time must be give for ADC to sample and convert the settled current input at each sampling instant.

  • Hi again!

    Thanks for your patience! Increasing the sample delay did the trick.

    this is the output for 50 ms delay:

    I would like to further ask though - 

    1) Is the current skew between the graphs also configurable or is it, by this point, a matter of statistical  bias?

    2) Is there a way to smooth the graph?

    thank you!

  • Making progress!

    by increasing the RTIA to 1 KOhm I managed to smooth the graph. still working on the skew...

Reply Children
  • Hello,

    I want to know how to increase the value of RTIA.

  • Hi,

    RTIA is set in code here:

     pRampCfg->LPTIARtiaSel = LPTIARTIA_4K

  • Hello,

    How to modify its resistance value?

    For example, I want to add a resistance value of 1,000 ohms to it.

  • Hi,

     You can choose resistor value from the list defined in ad5940.h

    * @defgroup LPTIARTIA_Const
    * @brief LPTIA RTIA Selection
    * @note The real RTIA resistor value dependents on Rload settings.
    * @{
    #define LPTIARTIA_OPEN 0 /**< Disconnect LPTIA Internal RTIA */
    #define LPTIARTIA_200R 1 /**< 200Ohm Internal RTIA */
    #define LPTIARTIA_1K 2 /**< 1KOHM */
    #define LPTIARTIA_2K 3 /**< 2KOHM */
    #define LPTIARTIA_3K 4 /**< 3KOHM */
    #define LPTIARTIA_4K 5 /**< 4KOHM */
    #define LPTIARTIA_6K 6 /**< 6KOHM */
    #define LPTIARTIA_8K 7 /**< 8KOHM */
    #define LPTIARTIA_10K 8 /**< 10KOHM */
    #define LPTIARTIA_12K 9 /**< 12KOHM */
    #define LPTIARTIA_16K 10 /**< 16KOHM */
    #define LPTIARTIA_20K 11 /**< 20KOHM */
    #define LPTIARTIA_24K 12 /**< 24KOHM */
    #define LPTIARTIA_30K 13 /**< 30KOHM */
    #define LPTIARTIA_32K 14 /**< 32KOHM */
    #define LPTIARTIA_40K 15 /**< 40KOHM */
    #define LPTIARTIA_48K 16 /**< 48KOHM */
    #define LPTIARTIA_64K 17 /**< 64KOHM */
    #define LPTIARTIA_85K 18 /**< 85KOHM */
    #define LPTIARTIA_96K 19 /**< 96KOHM */
    #define LPTIARTIA_100K 20 /**< 100KOHM */
    #define LPTIARTIA_120K 21 /**< 120KOHM */
    #define LPTIARTIA_128K 22 /**< 128KOHM */
    #define LPTIARTIA_160K 23 /**< 160KOHM */
    #define LPTIARTIA_196K 24 /**< 196KOHM */
    #define LPTIARTIA_256K 25 /**< 256KOHM */
    #define LPTIARTIA_512K 26 /**< 512KOHM */
    /** @} */