Back to Home
Research Open-source potentiostat for chronoamperometry


We have developed an open-source microcontroller unit (MCU)-based potentiostat with funds from:

Reduction of iron and humic substances as a dominant respiratory process in arctic peat soils; NSF; Lipson [SDSU], Angenent, and Raab [Stanford]



Here, we provide auxiliary information pertaining to the open-source microcontroller (MCU)-based potentiostat built in the Angenent Lab at Cornell University and described in Friedman et al. [Link to PDF]. All the information necessary to build your own MCU-based potentiostat is available here, including codes, board layouts, user manual, and part numbers (free of use).

This information is freely available for use and modification. When doing so, please retain all copyright information and reference the associated paper:

Friedman E. S., Rosenbaum M. A., Lee A. W., Lipson D. A., Land B. R. and Largus T. Angenent L. T. (2012). A cost-effective and field-ready potentiostat that poises subsurface electrodes to monitor bacterial respiration. Biosensors and Bioelectronics, Vol. 32, No. 1, pp. 309-313. [Link to PDF]

Important caveat: When used in the laboratory environment rather than in the field, it has become apparant that electronic noise from outside sources must be minimized. For example, we found that AC power sources (60 Hz; electromagnetic interferences) to power LED lights generated a rather large electronic noise with our potentiostat. Post-user data processing (30 datapoint moving average and substraction of electronic background noise) is needed when used in the laboratory. But, even then switching on/off power sources around the experiment may result in inability to use electronic current data. Using Faraday cages aound the potentiostat and experimental setup will remove some of these electric noise problems.


a complete three-channel MCU-based potentiostat housed in an environmentally-secured enclosure for field deployment.



A detailed breakdown of costs, including the part numbers for ordering, is available here. The cost of electronics for one (1) MCU potentiostat is $440.41; the costs of parts that can be used for multiple potentiostats (i.e., LCD board, solder, programming module) is $154.30; the additional cost to outfit one (1) MCU potentiostat for field use (i.e., housing, electrical connections) is $104.43.

Pdf file that shows the budget and ordering information in detail



For a complete three-channel potentiostat, seven circuit boards are required: one (1) MCU board, one (1) SD board, one (1) auxiliary board, one (1) LCD board, and three (3) electrode boards. The LCD board is detachable and, as such, one LCD board can be used with multiple MCU potentiostats. If less than three channels are desired, the number of electrode boards can be decreased accordingly. However, this will increase the price per channel, since the price of shared components (MCU, SD, auxiliary boards) is currently distributed across three channels. The boards are designed and ordered through ExpressPCB, which is freely available for download.


MCU board contains the MCU, power supply, and controls the other boards.


The electrode board contains the op amp circuitry that is the core of the potentiostat.


The SD board contains the data storage (holds SD card).


Links to downloadable files with circuit diagrams and board layouts:

Download the entire folder with the 10 PCB and SCH files as a zip file



The microcontroller code was written in C using AVR Studio (download for free but registration is necessary), and includes source files:

  • main.c – This runs the timers, recording of current measurements, and calls other functions. Written for this application.
  • sd.c – This is responsible for running the SD card and writing the data to the card. Written for this application.
  • LCD.c – This file runs the LCD card, displaying parameters and taking user input through the push buttons. Written for this application.
  • lcd_lib.c – Library of displays for the LCD screen. Open source.
  • mmc.c – This provides the library for the serial peripheral interface (SPI) operation. Open source.
  • ff.c – This is the FatFS file system used for the SD card. Open Source.

The sampling rate can be changed in main.c, under the #define record_trigger function. To record every second, the record trigger should be set to (msec==0). To record every minute, ((msec==0)&(sec==0)); to record every fifteen minutes, ((msec==0)&(sec==0)&((min==0)|(min==15)|(min==30)|(min==45))); to record every hour ((msec==0)&(sec==0)&(min==0)), and so forth.

NOTE: The first time the code is opened on a new computer, settings in AVR Studio must me adjusted to allow the program to write float numbers. To do this, go to Project>>Configuration Options and make sure that the device is “Atmega644” and the frequency is set to “16000000” Hz. Then save the project, and this option should be maintained during future uses.


Links to downloadable files in one downloadable folder:

Download the entire folder with the complete codes as a zip file

After unzipping the folder, open the file potentiostat.aps in AVR Studio to open the project (all files are linked together).


Utilized Codes:

  • Keypad Debouncing – Cornell ECE 4760 Course–Available Online
  • FatFS File System – ChaN – Open Source
  • LCD Library – – GNU Public License
  • MMC/SDSC/SDHC Control Module – ChaN – Open Source
  • Low Level Disk Interface Module Include File – ChaN – Open Source


User Manual

A user manual, outlining the use of the MCU potentiostat for chronoamperometry, was written and is available for download here. This includes instructions on: LCD operation, adjusting the clock, setting potentials, using the SD card, making proper electrical connections in the field, and programming the microcontroller.

Pdf file with the user manual