跳轉到

1860 Cannizzaro 原子量重整#

案發現場#

1860 年,化學界已經混亂了半個世紀,而這場混亂的核心只有一件事:原子量到底該怎麼定?

自從道耳頓提出原子論以來,「原子量」一直是化學最基本卻最混亂的量。問題的根源在 Avogadro 假說被冷落(見 1811-Avogadro分子假說.md):沒有公認的方法測定「一個原子」的相對重量,各家化學家各行其是,各有一套標準:

  • 有的以氫為 1(H=1,則氧有 O=8 與 O=16 兩派爭執);
  • 有的以氧為 100;
  • 貝吉烏斯以氧為 100 的系統風行一時,卻與他人互不相容;
  • 更糟的是,「當量」(equivalent)與「原子量」(atomic weight)兩個概念混用——有人把化合時的「當量」直接當原子量,導致同一個元素在不同文獻中有不同的原子量。

例如碳,有的文獻寫 6、有的寫 12;氮,有的寫 7、有的寫 14。鐵有 27.5 與 55 兩種「原子量」並行流通。化學式也因此一團亂麻:水有人寫 HO、有人寫 \(\mathrm{H_2O}\) ;醋酸有四種不同的化學式同時流通於歐洲各國的教科書。

這不只是「名詞之爭」——沒有統一的原子量,就沒有統一的化學計量,就不可能找出元素性質與原子量之間的規律(那正是週期表的前提!)。化學的下一步發展,被這場度量衡混亂整整卡住了五十年。

誰能終結這場混亂?1860 年 9 月,一場史無前例的會議在德國卡爾斯魯厄(Karlsruhe)召開——這是化學史上第一次國際化學會議,140 餘位來自歐洲各國的化學家齊聚一堂,目標只有一個:統一原子量與化學式的標準。

偵查過程#

會議本身沒有達成決議——辯論激烈,各國代表各持己見,最後不歡而散。但破案的關鍵,卻在會議的尾聲悄然出現。

義大利化學家斯坦尼斯勞·坎尼扎羅(Stanislao Cannizzaro, 1826–1910)在會議上力陳 Avogadro 假說的正確,並未當場說服所有人。散會時,他的一位朋友把一本小冊子發給每位與會者——坎尼扎羅 1858 年用義大利文寫的《化學哲學教程概要》(Sunto di un corso di filosofia chimica)。這本沒有在會議上被充分討論的小冊子,卻在與會者回家後逐一征服了他們。

坎尼扎羅的推理,是把 Avogadro 假說變成一整套可操作的原子量測定程序:

第一步:由氣體密度測分子量。 同溫同壓同體積的氣體含同數分子,故

\[ \frac{M_1}{M_2} = \frac{\rho_1}{\rho_2} \]

任取一氣體的分子量為標準(坎尼扎羅取 \(\mathrm{H_2}=2\) ,即氫原子=1),其他氣體的分子量皆可由密度比直接得出。

第二步:由分子量反推原子量。 關鍵的洞見是:原子量必須是該元素在所有含它化合物之分子量中所佔份量的「最大公因數」。

具體地說:測量許多含碳氣體化合物(CO、 \(\mathrm{CO_2}\) 、 \(\mathrm{CH_4}\) 、 \(\mathrm{CS_2}\) 、乙醚、苯……)的分子量,以及各自含碳的質量分數,算出「每分子中碳的份量」:

\[ m_{\mathrm{C,每分子}} = M_{\text{化合物}} \times w_{\mathrm{C}} \]

坎尼扎羅發現,這些數值永遠是同一個基本數值的整數倍(12、24、36……),而那個基本數值——12——就是碳的原子量:

\[ A_{\mathrm{C}} = \gcd(\{M_i \times w_{\mathrm{C},i}\}) \]

為什麼?因為一個分子裡的碳原子數必然是整數(1、2、3……),故每分子碳的份量必然是原子量的整數倍。取所有化合物的「最大公因數」,就是原子量。這個推理乾淨俐落,無懈可擊。

第三步:驗證分子式。 有了原子量,化學式便可由組成直接確定。水的分子量為 18,含氫 11.1%、氧 88.9%,即每分子含氫 2 份、氧 16 份——故水是 \(\mathrm{H_2O}\) ,而非 HO。五十年的 HO 與 \(\mathrm{H_2O}\) 之爭,一錘定音。

更妙的是,這套方法還解決了「同素異形體」與「雙原子」的混亂:氧氣的分子量是 32、氧原子是 16,兩者分明;氫氣 \(\mathrm{H_2}\) 、氮氣 \(\mathrm{N_2}\) 、氯氣 \(\mathrm{Cl_2}\) 皆為雙原子——Avogadro 五十年前的假說,被坎尼扎羅用一整套數據徹底確證。

結案報告#

卡爾斯魯厄會議與坎尼扎羅的小冊子,被後世史家稱為化學史上最成功的「會後文件」。其遺產包括:

  1. 原子量混亂的終結——到 1860 年代末,統一的原子量表(H=1、C=12、O=16……)已成化學界共識。這是化學界的「統一度量衡」,堪比各國貨幣的統一。
  2. Avogadro 假說的正名——被冷落五十年的假說(1811-Avogadro分子假說.md)終於成為化學的支柱。「阿佛加德羅常數」之名,正是這場平反的紀念。
  3. 化學式的標準化—— \(\mathrm{H_2O}\) 、 \(\mathrm{NH_3}\) 、 \(\mathrm{CO_2}\) 等今日通用的化學式,從此定於一尊。
  4. 為週期表鋪路——這是最重要的遺產。有了可靠的原子量,門得列夫才能在 1869 年按原子量排列元素、發現週期律(1869-Mendeleev週期表.md)。門得列夫本人承認,他反覆研讀的正是卡爾斯魯厄會議帶回的那本坎尼扎羅小冊子。

門得列夫晚年在週期表的奠基論文中寫道:原子量的可靠數值,是「卡爾斯魯厄會議帶給化學的禮物」。沒有 1860 年的統一度量衡,就沒有 1869 年的週期表——化學史上,這是一場會議、一本小冊子,改變了一門學科的走向。

證據與工具#

# 用 Python 重演 Cannizzaro 的原子量測定法:
# A = gcd(每分子中該元素的份量)

from math import gcd
from functools import reduce

# --- 實驗數據:含碳化合物的分子量(M)與碳的質量分數(w_C)---
# (以 H2=2 為標準,即氫原子 = 1)
compounds = [
    ("CO",      28,    12.0/28),        # 一氧化碳
    ("CO2",     44,    12.0/44),        # 二氧化碳
    ("CH4",     16,    12.0/16),        # 甲烷
    ("CS2",     76,    12.0/76),        # 二硫化碳
    ("乙醚",    74,    48.0/74),        # C4H10O,含碳 48
    ("苯",      78,    72.0/78),        # C6H6,含碳 72
]

# --- 第一步:算出每分子中碳的份量 ---
print("--- 每分子中碳的份量 ---")
carbon_amounts = []
for name, M, w in compounds:
    m_c = M * w
    carbon_amounts.append(m_c)
    ratio = m_c / 12
    print(f"{name:5s}: M={M:3d}, w_C={w:.3f} → 碳份量 = {m_c:5.1f}(= 12 的 {ratio:.1f} 倍)")

# --- 第二步:取最大公因數 → 碳的原子量 ---
# 份量皆為原子量的整數倍(1、2、3、... 個碳原子)
ints = [round(x) for x in carbon_amounts]
A_C = reduce(gcd, ints)
print(f"\n所有份量的最大公因數 = {A_C}")
print(f"==> 碳的原子量 A(C) = {A_C}")

# --- 第三部分:水的化學式一錘定音 ---
print("\n--- 水:HO 還是 H2O?---")
M_water, w_H, w_O = 18.0, 2.0/18.0, 16.0/18.0
print(f"水分子量 = {M_water},含氫 {w_H:.1%}、氧 {w_O:.1%}")
print(f"每分子氫份量 = {M_water * w_H:.0f}(氫原子量 1 → 2 個氫原子)")
print(f"每分子氧份量 = {M_water * w_O:.0f}(氧原子量 16 → 1 個氧原子)")
print("==> 水是 H2O,不是 HO!五十年之爭一錘定音")

# --- 第四部分:分子量與原子量的區分 ---
print("\n--- 氣體分子 ≠ 單個原子 ---")
print("氧氣分子量 32(O2),氧原子量 16(O)→ 相差整整一倍")
print("氫氣分子量 2(H2),氫原子量 1(H)")
print("氮氣分子量 28(N2),氮原子量 14(N)")
print("Avogadro 的雙原子假說被數據徹底確證")