Note
Go to the end to download the full example code.
Nicholson and Carlisle’s electrolysis of water#
Days after learning of Volta’s newly announced pile, William Nicholson
and Anthony Carlisle connected one to a bowl of water in May 1800 and
watched gas bubble from each wire – the first electrolysis, and the
first new discovery the pile made possible. This example reconstructs
both halves of that observation from functions already in this package:
the theoretical minimum decomposition voltage of water
(minimum_applied_voltage_electrolytic(),
applied to the tabulated H+/H2 and O2/H2O standard potentials) comes out
at the textbook 1.23 V, and Faraday’s law
(moles_from_charge())
recovers the 2:1 hydrogen-to-oxygen ratio Nicholson and Carlisle actually
saw bubbling from the two wires, directly from electron-transfer
stoichiometry.
import matplotlib.pyplot as plt
import numpy as np
from chemistrykit.electrochem.systems.electrolysis import (
charge_from_current,
minimum_applied_voltage_electrolytic,
moles_from_charge,
)
from chemistrykit.electrochem.systems.standard_potentials import (
STANDARD_REDUCTION_POTENTIALS,
cell_potential,
is_spontaneous,
)
The overall water-splitting reaction, 2 H2O -> 2 H2 + O2, splits into a cathodic reduction (2 H+ + 2 e- -> H2) and an anodic oxidation (2 H2O -> O2 + 4 H+ + 4 e-, the reverse of the tabulated O2/H2O reduction) – both half-reactions are already in this package’s standard-potential table.
h2 = STANDARD_REDUCTION_POTENTIALS["H+/H2"]
o2 = STANDARD_REDUCTION_POTENTIALS["O2/H2O"]
E_water = cell_potential(cathode=h2, anode=o2)
V_min = minimum_applied_voltage_electrolytic(E_water)
print(f"Water-splitting cell potential (cathode H+/H2, anode O2/H2O): {E_water:.2f} V")
print(f"Spontaneous as written: {is_spontaneous(E_water)}")
print(f"Minimum applied voltage to force electrolysis: {V_min:.2f} V")
print("(the accepted standard decomposition voltage of water is 1.23 V)")
Water-splitting cell potential (cathode H+/H2, anode O2/H2O): -1.23 V
Spontaneous as written: False
Minimum applied voltage to force electrolysis: 1.23 V
(the accepted standard decomposition voltage of water is 1.23 V)
Faraday’s law applied to the two evolved gases: the same charge passed produces H2 (n=2 electrons per molecule) at twice the molar rate of O2 (n=4 electrons per molecule) – exactly the 2:1 volume ratio Nicholson and Carlisle observed bubbling from the two wires (equal moles of gas occupy equal volume, by Avogadro’s law).
current, time_s = 0.5, 600.0 # A, s
Q = charge_from_current(current, time_s)
moles_H2 = moles_from_charge(Q, n=2)
moles_O2 = moles_from_charge(Q, n=4)
print(f"\nCharge passed in {time_s:.0f} s at {current} A: {Q:.1f} C")
print(f"Moles H2 evolved: {moles_H2:.3e} mol")
print(f"Moles O2 evolved: {moles_O2:.3e} mol")
print(f"H2:O2 mole (and volume) ratio: {moles_H2 / moles_O2:.2f}")
Charge passed in 600 s at 0.5 A: 300.0 C
Moles H2 evolved: 1.555e-03 mol
Moles O2 evolved: 7.773e-04 mol
H2:O2 mole (and volume) ratio: 2.00
fig, ax = plt.subplots()
times = np.linspace(0.0, time_s, 100)
Q_t = charge_from_current(current, times)
ax.plot(times, moles_from_charge(Q_t, n=2) * 1e3, label="H2")
ax.plot(times, moles_from_charge(Q_t, n=4) * 1e3, label="O2")
ax.set_xlabel("Time (s)")
ax.set_ylabel("Gas evolved (mmol)")
ax.set_title("Faraday's law: gas evolution during water electrolysis")
ax.legend()
fig.tight_layout()
plt.show()

Total running time of the script: (0 minutes 0.038 seconds)