Code for a very cheap, pretty darn good potentiostat/galvanostat
Eagle Other Python
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Example Control Code
Firmware
Schematics
.gitignore
.gitmodules
echem.md
license.txt
readme.mdown

readme.mdown

#Ardustat ###What?

The Ardustat is my (in progress) open source successor to Jonny Galvo. It uses a standard USB-Arduino unit with a custom designed daughterboard to provide:

  • A galvanostat with a current range from .1 microA to 10 mA
  • A potentiostat with a potential range from 0 to 5V with 5 mV resolution or -2.5 to 2.5 V Range

The Ardustat is a three electrode system, but can be used in two electrode mode as well.

These features are provided from a single USB port on a testing computer. A node.js program interaces the ardustat with the computer, but you can use anything that speaks serial.

Each Ardustat costs ~$60 in parts and involves minimal, simple soldering (no surface mount parts, etc). The software runs on just about any modern platform (tested on Windows XP, 2000, Mac OS X, Ubuntu Linux, Fedora Linux).

###Why?

Email any major manufacturer of battery testing equipment for a quote, wait three days, and see that a basic galvanostat/potentiostat costs at least $1,000 a channel, without software. The Ardustat does not replace these units (completely, at least). The Ardustat does enable easy, accurate and cheap long term cycling and pulse testing far more easily than most commercial solutions, and again, at a fraction of the price.

###Theory of Operation

The potentiostat / galvanostat takes advantage of the relatively slow electrode kinetics of most electrochemical energy cells, using a modified voltage divider and a digital to analog (DAC) / digitally variable resistor (DVR) / analog to digital (ADC) feedback loop (Figure 1). Through the use of a high speed microcontroller (Atmel168), the feedback loop polls at a rate over 1 kHz.

The potentiostatic feedback is triggered by a user's request for a given potential across the cell. The relay closes, and the ADC measures the actual potential across the cell, and the microcontroller increments the DAC in the direction that will adjust the cell to the desired potential. The DVR set between the ADC and DAC determines the current via Ohm's law:

Which relates to:

If the DAC is adjusted to its maximum or minimum, the microcontroller will reduce the resistance of the DVR to allow more current to pass according to Equation 2. Alternatively, if the difference between the DAC and the ADC is insubstantial the microcontroller will increment the DVR to increase the resistance, thereby reducing the current through the cell. The speed at which this feedback loop occurs is only limited by the microcontroller, and most modern microcontrollers can complete this loop in fewer than 500 microS. After each loop the microcontroller may report the setting of the DAC and the DVR, and the reading of the ADC from which a computer program can compute the current instantaneously via Equation 2.

In the case of the galvanostatic loop, the user enters a desired current, and the feedback loop optimizes around a difference between the ADC and the DAC rather than the ADC alone. To read an open circuit potential, the microcontroller opens the relay and the ADC measures the potential. ###Why should I build this?

  1. The Arduino board is a great way to learn about microcontroller programming and design
  2. The Ardustat daughterboard/software provides an excellent tutorial on how to create flexible, useful scientific testing and data-logging devices. ##Connect to your Ardustat

###Using it

  1. download this thing: https://github.com/dansteingart/nodeforwarder
  2. start a nodeforwarder to connect to your ardustat with the following command

node nodeforwader.js [HTTP PORT] [SERIAL PORT] 57600 1000

##Control your Ardustat

See the code in the examples directory.

Authors:

Past Contributors:

  • Eddie Nolan
  • Rigers Qeraj
  • Susan Tan