Potentiostat circuit

Hello everyone! I am new to hardware/electronics and I would like to create a potentiostat circuit that reads data from a 3-electrode electrochemical sensor using Arduino Uno. Do you have any suggestions / valid references for me to begin with? Thanks in advance!

sensors-20-02407-s001.pdf (753.3 KB)

Thank you so much for your answer! unfortunately the LMP91000 from ti is not currently available for purchase, so I need to develop a custom potentiostat circuit. :confused:

Right, I forgot.
This is much simpler.
ed5b00961_si_001.pdf (457.4 KB)

I also found this example:

Which one would you advice me to begin with?

1 Like

The one you found

Thank you for sharing your opinion! I have assembled the circuit (see attached pictures) but I cannot perform chronoamperometry test using it yet. I am not sure if it is a connectivity issue, a sketch issue or both.

Example sketch:

const int CS_PIN = 9;

// define the analog input pins for the reference and working electrodes
const int REF_PIN = A0;
const int WORK_PIN = A1;

// set the voltage range for the reference electrode
const float REF_RANGE = 1.23; // change this to match your reference electrode voltage range

// set the voltage range for the working electrode
const float WORK_RANGE = 1.23; // change this to match your working electrode voltage range

// set the time duration for the chronoamperometry experiment in milliseconds
const unsigned long DURATION = 30000; //milliseconds

void setup() {
//    TCCR1B = TCCR1B & B11111000 | B00000001; //Set dividers to change PWM frequency

  TCCR1B = B00000001; // This will reset the frequency for Pin 9 of the Arduino board to 31 kHz.
  
  // initialize serial communication for debugging
  Serial.begin(9600);
}

void loop() {
  // set the counter electrode potential to 0 volts
  digitalWrite(CS_PIN, 0);

  // delay for a short period to allow the circuit to settle
  delay(100);

  // measure the open-circuit potential of the working electrode
  int open_circuit = analogRead(WORK_PIN);
  float open_circuit_voltage = (float) open_circuit * WORK_RANGE / 1023.0;

  // print the open-circuit potential for debugging
  Serial.print("Open-circuit potential: ");
  Serial.print(open_circuit_voltage);
  Serial.println(" V");

  // set the counter electrode potential to the desired potential
  digitalWrite(CS_PIN, 255); // change the analog value to set the counter electrode potential

  // delay for a short period to allow the circuit to settle
  delay(100);

  // measure the working electrode potential and current for the duration of the experiment
  unsigned long start_time = millis();
  while (millis() - start_time < DURATION) {
    int working_voltage = analogRead(WORK_PIN);
    float working_voltage_value = (float) working_voltage * WORK_RANGE / 1023.0;
    int current = analogRead(REF_PIN);
    float current_value = (float) current * REF_RANGE / 1023.0;
    Serial.print(working_voltage_value);
    Serial.print(" V, ");
    Serial.print(current_value);
    Serial.println(" A");
    delay(100); // change this value to adjust the data collection rate
  }
}
1 Like

Try using the code EXACTLY as it is in the write-up.

Unfortunately the code provided is for setting up the project using labVIEW.
My goal is to make it work to perform chronoamperometry using Arduino IDE only.

You can't mix and match.
You will need to build the circuit in the paper I sent you and use their code

Hi,
Do you have a DMM?

Thanks... Tom... :smiley: :+1: :coffee: :australia:

Hello,
Thank you for sharing the JUAMI. I wonder, would it be possible to use this setup to measure multiple experiments simultaneously?

I don't see why not but you would probably have to write some custom labview software in order to control multiple set-ups.

1 Like

I want to use JUAMI setup for my academic experiment. Should I reference your setup specifically? For some questions about cyclic voltammetry in my setup, can I have a short video/voice call with you, or someone who's also experienced with JUAMI (I'm by education biologist and hence the questions)?

I've never used the JUAMI set-up

If you are looking for a multi-channel set-up have a look at this.
journal.pone.0257167.pdf (2.1 MB)

hello, i'm using JUAMI to build a potentiostat too. I'm kind newbie in eletrochemistry and was struggling to get the current value, thank you for sharing code. I will try this, can you explain me why can't you measure chronoamperometry?

sir you used the screen priented electrode how get the connecter ,to the wire and screen preintd electrode ,i from india is posible prechace in india

Is it possible to use the same circuit and a similar code to build a potentiostat with an ESP32?

I'd say yes, the suggested opamp works at 3.3V too, so power the circuit at 3.3V
The software need some 'tuning'.
You may also take a look at this thread.