X 射线衍射原理:从布拉格方程到晶体结构测定

引言:为什么看晶体要换成 X 射线

拍牙片时,X 射线穿过牙齿留下清晰的阴影,表现得更像一束”射线”而不是波。可当它遇到晶体——原子规则排列、像把橙子一层层码进箱子那样的固体——行为就完全不同了:散射的 X 射线会在底片上形成一组组明暗斑点或同心环。把这种图样和晶体结构联系起来,靠的是一条以布拉格(Bragg)家族命名的方程,它也是 X 射线晶体学的起点。

为什么偏偏要用 X 射线?因为任何”看”都需要波长与细节尺度相称。晶体里原子的尺寸只有约 0.1 nm,相邻原子的间距也在同一量级;而可见光波长在几百纳米附近,比原子间距大上千倍,照在晶体上根本无法分辨单个原子。X 射线光子能量高,波长约为 10⁻⁸–10⁻¹² m,恰好与原子、分子尺度相当:它能”探测”到原子的位置、形状与大小。这种用 X 射线的散射干涉图样反推结构的过程,就叫 X 射线衍射(X-ray diffraction)。

这篇文章要讲清楚两件事:一是衍射峰的位置由什么决定,二是怎样把峰位换算成晶面间距。前者是布拉格方程 mλ=2d sinθ 的几何推导,后者是它的数值代入——两条路都不需要超出高中几何的工具。

晶体:一台上好的三维”衍射光栅”

衍射的先决条件是周期结构。一维光栅把许多条等间距的缝排成一行,光通过后在不同角度出现亮纹;晶体则把”周期”铺满了整个三维空间——原子在三个方向上都按固定规律重复排列。凡周期尺寸与波长可比的结构都能当衍射光栅用,晶体原子间距约 0.1 nm,正好对上 X 射线的波长。

但与一维光栅不同,晶体里的”光栅周期”不止一种取法。原子点阵的几何中,可以取出许多组方向不同、间距不同的平行平面族,它们常被称为布拉格平面(Bragg planes):水平方向有一组,斜着 45° 又有另一组,每一组都由点阵自身的规则性生成,如下图所示。

图1 同一正方点阵中的两组晶面族

图 1:(a) 正方点阵中一组水平晶面族,间距 d₁=a;(b) 同一组点阵里与水平方向成 45° 的斜晶面族,间距 d₂=a/√2。取向不同,面间距就不同,每组晶面都可能产生自己的衍射。

图 1 只是二维示意;真实晶体是三维结构,平面族数量更多、取向更丰富。X 射线可以同时被多组晶面散射,各自满足条件的散射波叠加在一起,最终图样是许多”子衍射”的合成,这也是单晶衍射图样看起来相当复杂的原因。下一节的布拉格方程,就是描述其中任意一组晶面怎样产生一个衍射峰。

布拉格方程:2d sinθ 从哪里来

把问题简化到一组相邻晶面:两束来自同一平面波的平行 X 射线,一束被上面那层晶面里的原子 A 散射,另一束平行前进,被下面那层晶面里的原子 B 散射,如图 2 所示。晶面间距记为 d;入射方向与晶面之间的夹角记为 θ——注意这里是与晶面本身(而不是法线)的夹角,习惯上叫掠射角。

图2 布拉格几何

图 2:两束平行 X 射线分别被相邻两个晶面上的原子 A、B 散射。d 为相邻晶面间距,θ 为入射方向与晶面的掠角;红线段标出的两段各长 d sinθ,合起来就是两束光的光程差 2d sinθ。

图 2 里两段红色线段长度都是 d sinθ,一束光比另一束光多走的路程(光程差)就是 2d sinθ。这个几何与薄膜干涉里讨论上下表面反射时的光程差是同一套路。当光程差恰好等于波长的整数倍时,两列散射波同位相叠加,产生相长干涉:

$$m\lambda = 2d\sin\theta, \qquad m=1,2,3,\dots$$

m 称为衍射级次,d 是参与干涉的那组晶面的间距。原子里的电子都会散射 X 射线,但绝大多数方向的散射波彼此相位杂乱、叠加后没有明显的峰;只有在掠射角满足上式时,来自同一组晶面的散射才整齐地相干增强,形成探测器或底片上能看到的一个峰。

两点提醒对实际读图很重要。第一,方程里的 θ 始终是入射方向与晶面的夹角,而不是与法线的夹角;第二,实验上容易直接测到的是透射束与衍射束的夹角 2θ,因此 X 射线衍射结果常以 2θ 为横坐标给出,换算回方程时要记得除以 2。另外,实际样品里衍射晶面不一定平行于样品表面,这时需要倾斜样品才能让某一组晶面满足条件——这就是实验操作里”找峰”要做的事。

数值代入:0.157 nm 的波长是怎样算出来的

光说不算,代入一组真实教材算例看看方程怎么用。OpenStax 大学物理教材的算例 4.7 取自食盐:食盐主要是 NaCl 晶体,假设其中一组晶面间距 d=0.252 nm,实验在一阶极大(m=1)处测得入射角 θ=18.1°,问 X 射线的波长是多少。直接解布拉格方程:

$$\lambda=\frac{2d\sin\theta}{m}=\frac{2\times 0.252\times 10^{-9}\ \mathrm{m}\times \sin 18.1^\circ}{1}\approx 1.57\times 10^{-10}\ \mathrm{m}=0.157\ \mathrm{nm}.$$

先做量纲检查:d 的单位是米,sin 18.1°≈0.311 无量纲,乘积仍为米,结果 0.157 nm 落在 X 射线波段(10⁻⁸–10⁻¹² m),与”食盐晶面衍射用的是 X 射线”的设定自洽。再看波长与晶面间距之比:0.157 nm 对 0.252 nm,两者同一量级——当波长与它所作用的周期结构尺寸相当时,衍射峰才会出现在便于测量的角度,波动性也由此显现。

同一组数据还能回答”会看到几个峰”。把方程改写成 sinθ=mλ/(2d),代入 λ=0.157 nm、d=0.252 nm,得到 sinθ=0.3115m:m=1、2、3 分别对应 θ≈18.1°、38.5°、69.2°(换算成实验坐标即 2θ≈36.2°、77.1°、138.4°);而 m=4 时 sinθ≈1.25,大于 1,正弦没有定义,物理上不可能出现。级次数目正是被 sinθ≤1 这一几何约束限制的,下图把这组允许的级次画了出来。

图3 允许的衍射级次

图 3:按 mλ=2d sinθ 计算的 sinθ 随级次 m 的变化(λ=0.157 nm,d=0.252 nm)。m=1、2、3 对应 θ≈18.1°、38.5°、69.2°,落在 sinθ≤1 的物理范围内;m=4 时 sinθ>1,无解。

反过来,如果 X 射线波长已知,测出峰位 θ 就能解出 d=mλ/(2 sinθ)。晶体里不同晶面族各有各的间距,教学材料常把方程写成 λ=2d_hkl sinθ_hkl 来强调这一点:一组峰的位置对应一族晶面,整套峰位就是晶体内部”尺子”的读数。粉末衍射(powder diffraction)让大量微小晶粒以各种取向同时参与衍射,得到的峰位表像指纹一样可用于物相鉴定(phase identification)。

从 1912 年的那张照片到晶体结构测定

X 射线 1895 年被发现后,它究竟是不是电磁波一度只是猜测。1912 年,冯·劳厄(Max von Laue)说服两位同事用晶体散射 X 射线,底片上出现的规则图样在一张照片里同时证明了 X 射线的波动性和晶体的点阵结构——X 射线因此获得 1914 年诺贝尔物理学奖。随后,年轻的威廉·劳伦斯·布拉格(William Lawrence Bragg)提出把波长、晶面间距与衍射角联系起来的方程,即后来的布拉格定律;他与父亲威廉·亨利·布拉格(William Henry Bragg)共同获得 1915 年诺贝尔物理学奖,表彰他们借助 X 射线分析晶体结构的工作。获奖那年,W. L. Bragg 只有 25 岁。

方程把”衍射方向”变成了”间距读数”,X 射线晶体学由此成为一门能测定结构的新科学。最著名的例子是生物学里的 DNA:1953 年沃森(Watson)、克里克(Crick)与威尔金斯(Wilkins)正是利用罗莎琳德·富兰克林(Rosalind Franklin)提供的 X 射线衍射数据,首次建立脱氧核糖核酸(DNA)的双螺旋模型,并于 1962 年获得诺贝尔生理学或医学奖;富兰克林本人未列入该奖,这段历史至今存在争议。在材料一侧,高温超导体等复杂化合物的晶格排列对性能至关重要,同样靠 X 射线晶体学研究;工程上更常见的是粉末衍射物相鉴定——拿到一组峰位,对照数据库就知道样品里有哪些物相。

“布拉格”这个名字后来还被借到一维周期结构:把许多光学薄膜按厚度堆叠起来,让每个界面的反射同位相叠加,就会在特定频率附近形成高反射带,这样的分布式布拉格反射器(DBR)是半导体激光器腔镜的常用方案。多层膜靠周期反射”选波长”,与晶体靠周期散射”选方向”用的是同一种相干叠加思想。

回到开头的问题:X 射线衍射图样里的每一个峰,都是某一组晶面在满足布拉格方程的角度上给出的回答。把峰位代入 mλ=2d sinθ,读出的是晶面间距;把许多组间距拼起来,读出的就是原子在三维空间里的排布方式——这正是”用光看晶体内部”的全部秘密。

参考资料

  1. OpenStax University Physics Volume 3,4.6 X-Ray Diffraction
  2. NobelPrize.org:Nobel Prize in Physics 1915(Summary)
  3. NobelPrize.org:Nobel Prize in Physics 1915(Speed read)
  4. DoITPoMS(University of Cambridge):X-ray Diffraction Techniques —— Bragg’s law
  5. Lippitz Lab《Optics》讲义——Interference 章(DBR 节,CC BY-SA 4.0)

X 射线衍射原理:从布拉格方程到晶体结构测定
https://time-frame.cloud/2026/09/09/2026-09-09-x-ray-diffraction-principle/
作者
Time Frame
发布于
2026年9月9日
许可协议