4. 确定性抛光技术:抛光原理与 Preston 方程、抛光模设计与材料选择、驻留时间算法与实现、抛光路径规划策略
确定性抛光,说白了就是把「磨」这件事从玄学变成科学。我早年刚入行时,老师傅们抛光全靠手感——「多磨两下」、「这里再蹭蹭」。结果呢?同一批镜片,十片十个样。后来接触了确定性抛光,才明白核心就四个字:可控、可算。
这一章我们重点拆解四个环节:抛光原理与 Preston 方程、抛光模设计与材料选择、驻留时间算法与实现、抛光路径规划策略。每个环节都是坑,我一个个说。
4.1 抛光原理与 Preston 方程
抛光的本质是什么?是材料去除。你想想看,抛光模压在镜片上,带着磨料相对运动,表面材料一层层被带走。这个过程能不能定量描述?能。1927 年 Preston 给出了一个经验方程:
MRR = K · P · V
其中:
- MRR:材料去除率(单位时间去除深度)
- K:Preston 常数(与磨料、工件材料、环境有关)
- P:抛光压力(单位面积上的正压力)
- V:相对速度(抛光模与工件表面的瞬时相对速度)
这个方程简单到让人怀疑——真的就这么回事?我在项目中遇到过,刚开始用这个公式算去除量,结果实际抛光后偏差很大。后来发现,K 值不是常数,它受温度、磨料浓度、抛光垫状态影响很大。所以 Preston 方程只能作为基础框架,实际工程中必须做标定实验。
核心理解:Preston 方程告诉我们,要控制去除量,要么调压力,要么调速度。但两者都有物理极限——压力太大伤表面,速度太快温升失控。
还有一个容易忽略的点:Preston 方程是线性模型,它假设去除率与压力、速度成正比。但实际抛光中,当压力超过某个阈值,去除率会非线性增长。嗯,这里要注意,做高精度非球面时,压力最好控制在 0.1~0.5 kgf/cm² 范围内,超出这个区间,线性假设就靠不住了。
4.2 抛光模设计与材料选择
抛光模就是那个「磨头」。它的形状、硬度、材料,直接决定了抛光效果。我见过不少工程师,花大价钱买设备,却随便买个抛光模凑合——这是典型的「好马配破鞍」。
抛光模设计要考虑三个维度:
- 形状匹配度:抛光模工作面必须与非球面面形吻合。初始贴合度越高,抛光效率越高。
- 硬度与弹性:太硬容易产生高频误差,太软则去除效率低、边缘效应严重。
- 耐磨性:抛光模本身也会磨损,磨损后形状变化,去除函数就变了。
常用抛光模材料对比:
| 材料类型 | 硬度 | 弹性模量 | 耐磨性 | 适用场景 |
|---|---|---|---|---|
| 聚氨酯 | 中 | 中 | 好 | 粗抛、中抛 |
| 沥青 | 软 | 低 | 差 | 精抛、超光滑表面 |
| 聚四氟乙烯 | 软 | 低 | 中 | 特殊材料抛光 |
| 金属基复合 | 硬 | 高 | 好 | 高去除率、粗加工 |
我个人习惯,做非球面精抛时,首选沥青抛光模。虽然它耐磨性差,但流动性好,能自适应贴合非球面。我曾经用聚氨酯模抛一个陡峭的非球面,结果边缘始终抛不到——因为模子太硬,贴不上去。换成沥青模后,问题迎刃而解。
小技巧:沥青抛光模使用前,最好在 60~80°C 下预热 30 分钟,让它充分软化,再压合到镜片上成型。冷却后形状保持度会好很多。
4.3 驻留时间算法与实现
驻留时间算法,是确定性抛光的「大脑」。它的逻辑很简单:已知当前面形误差,已知抛光模的去除函数,求抛光模在每个位置需要停留多久。
数学上,这是一个卷积反问题:
E(x,y) = R(x,y) * T(x,y)
其中:
- E(x,y):面形误差分布(测量得到)
- R(x,y):去除函数(单位时间的材料去除分布)
- T(x,y):驻留时间分布(待求解)
- *:二维卷积运算
求解 T(x,y) 就是反卷积。常用的方法有三种:
- 傅里叶变换法:将卷积转换到频域,直接相除。速度快,但对噪声敏感。
- 迭代法:如 Richardson-Lucy 算法,逐步逼近最优解。鲁棒性好,但计算量大。
- 正则化法:在反卷积中加入平滑约束,抑制高频噪声。工程中最常用。
我给你们看一段我常用的迭代法核心代码(Python 伪代码):
def compute_dwell_time(error_map, removal_function, iterations=100):
# error_map: 面形误差矩阵
# removal_function: 去除函数矩阵
# 初始化驻留时间为均匀分布
dwell = np.ones_like(error_map)
for i in range(iterations):
# 正向计算:当前驻留时间产生的去除量
predicted = convolve2d(dwell, removal_function, mode='same')
# 计算残差
residual = error_map - predicted
# 更新驻留时间
dwell = dwell * (convolve2d(residual, removal_function[::-1, ::-1], mode='same') / predicted + 1)
# 限制驻留时间非负
dwell = np.maximum(dwell, 0)
return dwell
避坑指南:我曾经在迭代法中忘记加非负约束,结果算出来的驻留时间出现负值——这在物理上意味着「要往回长材料」,显然不可能。所以每次迭代后一定要做 clamp 操作。
实际工程中,驻留时间算法还要考虑机床的加减速特性。算出来的驻留时间如果变化太剧烈,机床跟不上,实际抛光效果会大打折扣。我一般会在算法输出后加一个低通滤波,平滑掉高频抖动。
4.4 抛光路径规划策略
路径规划,决定了抛光模怎么走。路径不同,去除效果、加工效率、表面质量都不同。常见的路径类型有:
- 光栅扫描:沿 X 或 Y 方向往复运动。简单、易实现,但会在路径转折处产生驻留误差。
- 螺旋扫描:从中心向外螺旋运动。适合圆形工件,但中心区域速度变化大。
- 伪随机路径:路径随机分布,避免周期性痕迹。适合超精密抛光。
- 自适应路径:根据面形误差分布动态调整路径密度。误差大的区域多走几遍。
我个人的经验是:粗抛用光栅,精抛用螺旋,超精抛用伪随机。为什么?光栅扫描效率高,但会留下明显的「栅格纹」;螺旋扫描能消除方向性痕迹,但中心区域容易过抛;伪随机路径最均匀,但编程复杂、加工时间长。
下面这张图展示了三种路径的对比: