第二章 探针与样品准备:打好AFM力学测量的地基
做AFM力学模式,说白了就是让一根微小的探针去“戳”样品表面。但你别小看这个“戳”字——探针选不对、样品没固定好、校准没做准,后面采集的数据全是废的。我刚开始带学生时,就见过有人花了一整天采了上百条力曲线,结果发现探针弹性常数标定错了,全部重来。嗯,这种教训一次就够了。
2.1 探针选择:针尖半径与弹性常数
探针是AFM的“手指”。你想想看,手指粗的人摸东西能感觉到细微纹理吗?肯定不行。AFM探针也一样,针尖半径直接决定了你的横向分辨率。
2.1.1 针尖半径
- 标准探针:半径约10-20 nm,适合大多数硬质样品(如薄膜、聚合物)
- 超尖探针:半径1-5 nm,适合高分辨率成像或软样品(如生物分子、凝胶)
- 胶体探针:半径1-50 μm,专门用于测量颗粒间相互作用力
我的经验:做细胞力学测量时,我习惯用半径5-10 nm的探针。太尖了容易扎破细胞膜,太钝了又测不到局部力学性质。这个平衡点,你得根据样品来调。
2.1.2 弹性常数
探针的弹性常数k,单位是N/m。它决定了探针的“软硬程度”。选错了会怎样?
- 探针太硬(k太大):压不动软样品,力曲线几乎没有形变区
- 探针太软(k太小):压硬样品时探针自己先弯了,数据失真
| 样品类型 | 推荐弹性常数 | 典型应用 |
|---|---|---|
| 软样品(细胞、水凝胶) | 0.01 - 0.1 N/m | 细胞力学、生物材料 |
| 中等硬度(聚合物、橡胶) | 0.1 - 5 N/m | 薄膜力学、涂层 |
| 硬样品(金属、陶瓷) | 5 - 50 N/m | 表面硬度、磨损测试 |
避坑指南:我曾经遇到过一位同事,用0.03 N/m的探针去测硅片表面。结果力曲线完全看不出接触点,因为探针还没压到样品,自己就先弯了。记住:探针的弹性常数应该与样品模量匹配,一般探针k ≈ 样品模量的1/10到1/100。
2.2 样品固定与表面处理
样品没固定好,测量时样品跟着探针跑,那数据就完全没意义了。我见过最夸张的一次,学生用双面胶粘细胞样品,结果探针一压,细胞直接滑走了。
2.2.1 样品固定方法
- 机械夹持:适合块状硬样品,用弹簧夹或螺丝固定
- 胶粘固定:用环氧树脂或双面胶,适合薄膜或小颗粒
- 磁力吸附:样品背贴磁性片,适合快速更换
- 真空吸附:用真空泵吸住样品,适合平整样品
2.2.2 表面处理要点
样品表面不干净,力曲线上会出现莫名其妙的“粘附峰”或“跳跃”。我个人习惯在测量前做以下处理:
- 清洗:用乙醇或去离子水超声清洗5-10分钟
- 干燥:氮气吹干,避免残留液滴
- 等离子处理:对于疏水样品,用氧等离子体处理30秒,增加表面亲水性
- 检查:用光学显微镜先看一眼,确认没有大颗粒污染
关键提醒:做液体环境下的力学测量时,样品必须牢固固定。我曾经在PBS缓冲液里测细胞,结果探针一靠近,细胞就漂走了。后来改用多聚赖氨酸包被的培养皿,才解决了问题。
2.3 探针校准:灵敏度与弹性常数
校准是AFM力学测量中最容易被忽视、但最关键的一步。不校准直接测,数据就是“玄学”。
2.3.1 灵敏度校准
灵敏度S,单位是nm/V或nm/V。它把光电探测器的电压信号转换成探针的实际位移。怎么校准?
- 方法:在硬样品(如蓝宝石、硅片)上做力曲线,接触区斜率就是灵敏度
- 为什么用硬样品?因为硬样品不会变形,探针位移完全等于压电陶瓷位移
# Python代码:从力曲线提取灵敏度
import numpy as np
def calc_sensitivity(force_curve, contact_idx, approach=True):
"""
从力曲线接触区计算灵敏度
force_curve: 二维数组 [位移, 电压]
contact_idx: 接触点索引
"""
# 取接触后20%的数据点做线性拟合
n_points = len(force_curve) - contact_idx
fit_range = int(n_points * 0.2)
x = force_curve[contact_idx:contact_idx+fit_range, 0]
y = force_curve[contact_idx:contact_idx+fit_range, 1]
# 线性回归
A = np.vstack([x, np.ones(len(x))]).T
slope, intercept = np.linalg.lstsq(A, y, rcond=None)[0]
return slope # 单位: V/nm 或 V/m
我的习惯:每次换探针或换样品后,我都会重新校准灵敏度。别偷懒,因为激光光路稍微一动,灵敏度就变了。我一般做3次重复,取平均值。
2.3.2 弹性常数校准
探针的弹性常数k,通常用热噪声法(Thermal Tune)来校准。原理很简单:探针在空气中受热振动,其振动频谱的均方根振幅与k成反比。
# Python代码:热噪声法计算弹性常数
def calc_spring_constant(thermal_spectrum, frequency, temperature=298):
"""
热噪声法计算弹性常数
thermal_spectrum: 功率谱密度 [V^2/Hz]
frequency: 频率数组 [Hz]
temperature: 温度 [K]
"""
kB = 1.380649e-23 # 玻尔兹曼常数
# 找到共振峰
peak_idx = np.argmax(thermal_spectrum)
f0 = frequency[peak_idx]
# 计算共振峰面积(均方位移)
df = frequency[1] - frequency[0]
area = np.trapz(thermal_spectrum, frequency)
# 弹性常数
k = kB * temperature / area
return k, f0
重要提醒:热噪声法要求探针在空气中自由振动,不能接触样品。我曾经遇到过探针上有灰尘,导致共振峰偏移,算出来的k值差了30%。所以校准前一定要检查探针是否干净。
2.4 知识体系总览
下面这张图,把探针与样品准备的核心逻辑串起来了。你照着这个流程走,基本不会出大问题。
总结一下:探针与样品准备,说白了就是三个字——配、固、校。配好探针参数,固定好样品位置,校准好探针灵敏度与弹性常数。这三步做好了,后面采集力曲线就是水到渠成的事。我见过太多人急着采集数据,结果前两步没做好,后面花几倍时间返工。记住:准备阶段多花10分钟,数据质量提升50%。
公众号:蓝海资料掘金营,微信deep3321