Square wave anodic stripping voltammetry and metal testing

Square wave anodic stripping voltammetry and metal testing

The Rodeostat python library has several electrochemistry programs currently implemented including cyclic voltammetry, constant voltage, linear sweep, chronoamperometry and more. We have recently added a square wave anodic stripping voltammetry (SWASV) program to the library. Stripping voltammetry is a powerful electroanalytical technique for the detection of trace metals in the ppb range (more about this below). In this blog post we use SWASV with the Rodeostat potentiostat to measure lead using a commercial bismuth screen printed electrode.

Bismuth has gained alot of attention as a suitable non-toxic replacement for mercury electrodes (hanging-drop or thin film electrodes). Bismuth can form alloys with many metals. Lead, zinc and cadmium are probably the most commonly measured metals with bismuth film electrodes, although other metals (e.g. copper) have also been reported.

In our test, we are using "bulk-modified" bismuth electrodes. Bulk-modified means that the bismuth precursor (e.g. bismuth oxide) is mixed into the working electrode carbon materials before it is printed. Bismuth precursor is reduced to bismuth metal during the pre-concentration step where it forms an alloy with the analyte.

There are several commercial bismuth screen printed electrodes available. For these experiments we used the metal detecting bismuth electrodes from the Gwent Group. The 3 mm diameter bismuth compound working electrode is in the center with the counter and silver/silver chloride reference electrodes on either side.


The individual electrode spacing is 3.8 mm which works with our screen printed electrode adapter Type C. A custom electrode holder was made in-house using laser cut acrylic parts as shown in the image below. The custom holder is designed to fit onto a 250 mL glass beaker and places the adapter/sensor in the middle of the beaker. The cables connecting adapter/sensor to the Rodeostat were matched so that the screen-printed electrodes connect to the right electrode pin on the Rodeostat.



  • Rodeostat with screen printed adapter type C
  • 250 mL beaker with custom electrode holder
  • Stir plate and stir bar - used our own DIY stir plate
  • 1,000 ppm Lead standard - Sigma Part # 16595-250ML
  • Sodium acetate - Sigma Part # S2889-250G
  • Glacial acetic acid - Sigma Part # 338826-25ML
  • Screen printed heavy metal detection electrodes - Gwent Group, Part # BE2140326P2


1) Preparing 0.1M acetate buffer, pH 4.5

Prepare 0.1M sodium acetate - 0.82 g in 100 mL deionized water
Prepare 0.1 M acetic acid - 0.57 mL glacial acetic acid in 100 mL deionized water
Mix the two solutions together. Check pH with a pH meter and adjust to pH 4.5.
(Method for making the buffer is based on this resource

2) Lead standard

A 10 ppm lead standard was prepared in 0.1M acetate buffer by diluting the 1,000 ppm standard (e.g. 10 uL in 1 mL acetate buffer).

3) SWASV python program and test parameters

As mentioned above, Stripping voltammetry is a powerful electroanalytical technique for the detection of trace metals in the ppb range. Its high sensitivity can be attributed to the pre-concentration step. During pre-concentration the metal analytes are accumulated onto the working electrode. After the pre-concentration step, the electrode is scanned linearly towards positive potentials so that their metals, one at a time, are stripped from the electrode and re-oxidized at a potential characteristic of each metal. Square wave voltammetry (SWV) is often used in this stripping analysis. A symmetrical square wave is superimposed on a staircase potential. The current is sampled twice during each square wave cycle: once at the end of the forward pulse and once at the end of the reverse pulse. The difference in current between the two points is plotted versus the applied base potential. The squarewave python program can be found in the Rodeostat repository on Bitbucket. This file is in the examples subdirectory "source/software/python/examples" and is called "run_squarewave.py". Some information about this test can also be found in our online documentation.

The following parameters were used for these tests:

  • Pre-concentration step: -1.4 V for 180 secs ('quietValue','quietTime')
  • potential = -1.4 V to -0.4 V ('startValue', 'finalValue')
  • square wave frequency = 25 Hz ('sample_rate')
  • square wave amplitude = 25 mV ('amplitude')
  • ΔE step = 5 mV ('stepValue')


80 mL of 0.1 M acetate buffer was transferred to a 250 mL glass beaker. This was placed on a stir-plate with moderate stirring. A bismuth strip was placed into the custom electrode holder as shown in the image below.


A measurement was taken in buffer alone (no lead) with the SWASV parameters described above. After taking a baseline reading, 20 ppb of lead was added to the solution (160 uL of the 10 ppm standard added to the buffer). A new strip was inserted into the adapter and the SWASV measurement was repeated. This procedure was repeated with 20 ppb increments up to a final concentration of 200 ppb.


Fig 1. Filtering data. To reduce noise, the data was filtered with a forward-backward lowpass filter using SciPy filtfilt function. Below is an example of data before (blue line) and after (red line) filtering.


Fig 2. SWASV results for 0 - 200 ppb lead in 0.1M acetate buffer. Data shown after filtering. Peak current is around - 0.83 V in lead concentrations of 60 ppm or higher.


Fig 3. Linear fit. Plot of lead concentration versus peak current.



Using the Rodeostat squarewave anodic stripping voltammetry (SWASV) program with metal detecting screen-printed electrodes, we were able to detect a lead peak current that occurred around -0.83 V. This -0.83 V peak is first detectable at levels of 60 ppm lead. Below 60 ppb, we were not able to detect any signal using these parameters and methods. A linear fit of peak current versus lead concentration (60 - 200 ppb) looks very promising.

Once we had the set-up designed and working, this method is actually very quick and easy to use. Each test takes approx. 5 mins so you can run alot of samples. Compared to the lead colorimetric test for example, the method is faster and no additional reagents other than the acetate buffer are required. Another advantage of this test is that additional metals such as zinc and cadmium can be measured simultaneously in the same sample.

Next steps: The detection level of 60 ppb is still probably not sensitive enough to measure low levels of lead contamination in drinking water. It would be interesting to try some other commercial or homemade bismuth electrodes to find a suitable method for measuring in the 15 ppb range.