简介:围绕选择性激光熔化(SLM)技术的PPT课件,面向材料、机械、航空航天及增材制造方向的学习者,可用于课程汇报、技术入门与知识梳理。压缩包仅含1个pptx文件,约5.8MB,内容集中,便于通读和课堂展示;已有113人学习下载。课件系统梳理SLM原理、工作过程与发展历程,并展开工艺特点:高能光纤激光器逐层熔化金属粉末,成形件致密度接近100%,可直接制造高性能金属零件或模具;适合复杂异型结构及钛合金、高温合金等难加工材料;尺寸精度可达0.1mm,表面粗糙度优于SLS。同时提到零件内部应力、复杂结构支撑、粉末含氧量与粒径分布等控制难点,并收录GE LEAP发动机燃油喷嘴、空客A320钛合金铰链支架、GE发动机托架从2.033kg降至0.327kg等应用案例,兼顾基础原理与产业现状。
1. 同一个零件、同一台机器,SLM 参数动 5% 就换一种结果
在金属增材制造现场,最容易被低估的一件事是:选择性激光熔化 SLM 的工艺窗口,比大多数人以为的窄得多。同一个叶轮、同一台设备、同一批 316L 粉末,只把扫描速度从 800 mm/s 提到 1000 mm/s,取件后的致密度可能从 99.5% 掉到 97% 出头,拉伸试样在夹头附近就断。SLM 靠激光在几十微米厚的粉层上逐点熔化、逐层堆叠,熔池寿命只有几百微秒,任何一项参数偏离都会直接写进凝固组织里,而不是像切削那样只影响表面粗糙度。
这类问题常见的用户群有三类:刚接手 SLM 设备的工艺工程师、做金属打印服务的从业者、以及需要把 SLM 讲清楚的方案与采购人员。下面从能量密度这个入口指标开始,把参数怎么定、切片怎么落、缺陷怎么排、工艺窗口怎么固化,按能复现的顺序讲一遍。
2. 选择性激光熔化 SLM 的能量密度公式与五个必调参数
2.1 体能量密度:一个粗略但好用的入口指标
工艺参数不能一个一个孤立地试,通常先把它们压成一个标量,最常见的就是体能量密度 Ev:
Ev = P / (v × t × h)
P 是激光功率(W),v 是扫描速度(mm/s),t 是层厚(mm),h 是扫描间距(mm),算出来单位是 J/mm³。它的价值在于把四维的参数空间压到一维,让你在粗筛阶段有个统一的横轴;它的局限同样明显——光斑直径、材料吸收率、粉末粒径分布、保护气氛氧含量全都被丢掉了。所以 Ev 只能在同一台设备、同一种粉末内部做相对比较,跨材料直接套数值一定翻车。
我的习惯是:先用 Ev 划出一个大致的候选区间,再在区间内做正交实验,最后用金相和致密度数据把窗口收窄。不要指望一个 Ev 值能直接给出成品参数。
2.2 功率、速度、层厚、扫描间距、光斑:一张参数表
| 参数 | 符号 | 常用单位 | 常见区间(不锈钢/铝合金参考) | 主要影响 |
|---|---|---|---|---|
| 激光功率 | P | W | 200~400 | 决定熔池体积与穿透深度 |
| 扫描速度 | v | mm/s | 600~1400 | 影响熔池停留时间与球化倾向 |
| 层厚 | t | mm | 0.02~0.06 | 决定效率与层间结合 |
| 扫描间距 | h | mm | 0.06~0.12 | 决定道间搭接率 |
| 光斑直径 | d | μm | 50~100 | 影响单道宽度与能量集中度 |
这五个参数必须联动调。比如把层厚从 0.03 提到 0.05,同样的功率和速度下 Ev 会掉三分之一以上,此时如果不降速或加功率,层间未熔合几乎必然出现。反过来,光斑放大后单位面积能量下降,虽然 Ev 没变,实际熔深却变浅了。
# 体能量密度:Ev = P / (v * t * h),单位 J/mm^3 def volumetric_energy_density(power_w, speed_mm_s, layer_mm, hatch_mm): if min(speed_mm_s, layer_mm, hatch_mm) <= 0: raise ValueError("速度、层厚、扫描间距必须为正数") return power_w / (speed_mm_s * layer_mm * hatch_mm) # 基准组合 print(round(volumetric_energy_density(200, 800, 0.03, 0.09), 1)) # 92.6 # 只把扫描速度提高 25%,其余不动 print(round(volumetric_energy_density(200, 1000, 0.03, 0.09), 1)) # 74.1函数里做了除零保护,因为工艺试验表里经常有空格或 0 值。两次调用的差值说明:速度提升 25%,Ev 下降约 20%,这个幅度已经足以让部分区域从致密转向未熔合。实际使用中建议把这段代码封装成一个小工具,输入一行参数就出 Ev,避免手工算错。
提示:Ev 只用于同一材料、同一设备的横向对比。不同材料的吸收率差异可以达到 30% 以上,跨材料比较 Ev 数值没有意义。
2.3 扫描策略:条纹、棋盘与重熔对残余应力的影响
扫描策略决定激光在每一层里走的顺序,直接关系到热应力的分布。最常见的三种:长条纹(每层旋转 67° 或 90°)、棋盘分区、以及轮廓加填充的两步走。长条纹实现简单,但单条扫描线过长时,热应力沿扫描方向累积,零件边缘容易翘起;棋盘分区把每层切成若干小方块并打乱顺序,让热量分散,翘曲明显减轻,代价是分区边界处可能出现搭接不良。
重熔是另一种手段:每层主扫描完成后再用低功率、高速度扫一遍,表面粗糙度能改善,但会显著拉长成形时间,而且反复加热可能让某些铝合金的晶粒粗化。我的做法是先固定扫描策略,再调能量密度,最后才考虑要不要上重熔——把变量混在一起调,出了问题很难定位。
2.4 粉末与保护气氛:吸收率和氧含量
设备和参数都对了,粉末不对照样出废件。粒径分布通常要求 15~53 μm,分布过宽会让铺粉层厚不均,出现局部未熔合。粉末循环使用次数也要记录,多次循环后细粉比例、氧含量和卫星粉都会上升,同样参数下致密度会缓慢下滑。
保护气氛方面,常见做法是把成形仓氧含量压到 1000 ppm 以下,钛合金和铝合金最好控制在 100 ppm 量级。氧含量偏高时熔池表面张力变化,球化倾向加重,同时粉末吸氧会恶化后续力学性能。这一项在参数表里经常被漏掉,但排查缺陷时一定要把它纳入。
3. 从 STL 到可执行扫描路径:SLM 切片参数怎么落地
3.1 层厚与扫描间距的匹配关系
层厚和扫描间距不是独立选择的,它们共同决定道间和层间的搭接率。经验上单道熔池宽度大约是光斑直径的 1.2~1.6 倍,扫描间距取熔池宽度的 60%~75% 比较稳,太大会留下道间孔隙,太小则重熔比例过高、效率下降且容易过热。
层厚方面,20~30 μm 适合精细特征和薄壁,40~60 μm 适合大块实体追求效率。把层厚和扫描间距的比值控制在 1:3 附近,是一个不错的起点。真正决定成败的是拿这套参数去跑一组单道和块体试样,用金相截面量出实际熔池宽度,再反推合适的间距。
3.2 支撑与悬垂角阈值
悬垂面是 SLM 最脆弱的地方。常见做法是把悬垂角阈值设在 45° 左右:与竖直方向夹角超过 45° 的面视为需要支撑。低于这个角度,熔池下方没有足够粉末导热,热量散不出去,边缘容易下垂、挂渣。
支撑还承担两个额外作用:一是把零件热量导向基板,二是抑制翘曲。块状支撑导热好但难去除,网格支撑易去除但导热差,选哪一种取决于零件材质和后续加工余量。齿状支撑适合接触面要求低粗糙度的场合。
注意:支撑不是加得越多越好。支撑过密会在去除时撕掉零件表面,通常把支撑与零件接触面留 0.1~0.2 mm 的间隙,靠后续机加工保证尺寸。
3.3 用 Python 估算层数、扫描长度和成形时间
报价和排产都需要一个成形时间估计,不用等切片软件跑完,用层数和扫描长度就能粗算。
# 估算 SLM 单件成形时间 def estimate_build_time(layers, layer_area_mm2, hatch_mm, speed_mm_s, recoating_s=8.0, jump_factor=1.25): """ layers : 总层数 layer_area_mm2: 零件平均单层截面积 hatch_mm : 扫描间距 speed_mm_s : 扫描速度 recoating_s : 每层铺粉加平台下降的耗时 jump_factor : 空程跳转与开关光的经验放大系数 """ scan_len_per_layer = layer_area_mm2 / hatch_mm # 每层扫描总长度 mm scan_time = scan_len_per_layer / speed_mm_s * jump_factor return layers * (scan_time + recoating_s) / 3600.0 # 换算成小时 layers = int(100 / 0.03) # 100 mm 高、层厚 0.03 mm hours = estimate_build_time(layers, 400, 0.09, 800) print(f"{layers} 层,预估 {hours:.1f} 小时")代码里的 jump_factor 用来补偿轮廓扫描之外的跳转、开关光延迟,1.2~1.4 是比较常见的取值,具体和设备加减速性能有关。layer_area_mm2 用平均截面积即可,零件高度方向截面变化大时会带来偏差,可以分层累加提高精度。recoating_s 是最容易被忽略的一项,在 3000 层以上的高件里,光是铺粉时间就能占到总时间的 20% 到 30%。
3.4 切片参数文件的组织方式
不同设备的参数文件格式互不兼容,但结构大同小异:激光功率、扫描速度、扫描间距、层厚、轮廓参数、填充参数、支撑参数、跳转参数。规模一上来,靠人工在界面里点选很快就会失控。
我的做法是自建一份结构化参数库,用 YAML 或 JSON 保存,把每种材料和每套参数编成编号,切片时按编号调用,试验记录里也只写编号。这样出了问题时,能立刻回溯到当时用的是哪一版参数,而不是靠记忆去猜。
4. SLM 常见缺陷与参数排错:球化、未熔合、匙孔气孔
4.1 缺陷—参数对照表
排错的效率取决于能不能快速把现象映射回参数。
| 缺陷 | 典型形貌 | 主要参数原因 | 调整方向 |
|---|---|---|---|
| 球化 | 单道不连续、表面金属球 | 能量密度偏低、速度过高 | 降速或加功率,减小扫描间距 |
| 未熔合 | 边缘尖锐的层间孔隙 | 能量密度不足、层厚过大 | 提高 Ev,降低层厚 |
| 匙孔气孔 | 圆形气孔、底部集中 | 能量密度过高、速度过慢 | 降功率或提速 |
| 翘曲开裂 | 边缘翘起、层间裂纹 | 热应力大、扫描线过长 | 基板预热、棋盘扫描 |
| 挂渣 | 下表面粗糙、粘粉 | 悬垂面、支撑不足 | 加支撑、调整下表面参数 |
这张表只能用来缩小范围,最终确认一定要看金相截面。同样表现为"致密度不够",未熔合和匙孔气孔的孔隙形貌完全不同,前者是带棱角的不规则孔,后者接近圆形,误判方向会越调越偏。
4.2 用 Python 批量算能量密度并画工艺窗口
固定层厚和扫描间距,把速度和功率的变化画成一张图,可以直接看出候选区间在哪里。
import numpy as np import matplotlib.pyplot as plt power = 200.0 layer, hatch = 0.03, 0.09 speeds = np.linspace(400, 1600, 200) ev = power / (speeds * layer * hatch) plt.figure(figsize=(8, 4)) plt.plot(speeds, ev, label="Ev 曲线") plt.axhspan(60, 120, color="green", alpha=0.15, label="常见致密区间") plt.axhline(60, ls="--", c="gray") plt.axhline(120, ls="--", c="gray") plt.xlabel("扫描速度 mm/s") plt.ylabel("体能量密度 J/mm^3") plt.legend() plt.tight_layout() plt.savefig("slm_window.png", dpi=150)区间 60~120 J/mm³ 是 316L 一类不锈钢在常见设备上的经验范围,铝合金通常更低,钛合金居中,具体数值必须靠自家设备做实验确认。这张图的作用是给出配色区间的边界速度:功率 200 W 时,大约对应 550 mm/s 到 1100 mm/s 之间,超出这个范围再去试就是浪费粉末。
4.3 熔池监测数据与层间影像怎么回看
带过程监测的设备会在成形时记录熔池辐射强度、同轴相机图像或每层铺粉后的照片。这些数据不要只在报警时才看,试验阶段就要养成回看的习惯。辐射强度曲线的突然抬升往往对应局部过热或粉末层异常,层间影像则能提前发现翘曲和铺粉划痕。
回看时把时间轴和层号对齐,再叠加当时的参数编号,就能建立起"参数—信号—缺陷"的对应关系。这一条比单纯记录最终致密度有用得多,因为它能告诉你缺陷是从第几层开始出现的。
4.4 去应力退火与热等静压的参数区间
打印完成不等于工艺结束,残余应力不去掉,线切割一放开零件就可能变形甚至开裂。常见做法是先做去应力退火,温度按材料选择,不锈钢通常在 600~650 ℃ 区间保温数小时随炉冷却,钛合金则更低一些,目的是在不让晶粒明显长大的前提下释放应力。
对内部质量要求高的零件,还会加热等静压,靠高温高压把内部气孔压合。热等静压的温度和压力组合需要结合材料相变温度来定,且必须在去应力之后、精加工之前。铝合金做热等静压要特别小心,温度接近固相线时容易过烧。
5. 用阶梯实验把 SLM 工艺窗口固化下来
5.1 单道—单层—块体—零件四级验证
直接拿零件试参数是成本最高的做法。更稳的路径是四级递进:先跑单道,看熔池是否连续、有无球化,用几十克粉末就能筛掉大半参数;再跑单层,看道间搭接和表面质量;然后跑块体试样,测致密度和硬度,做金相截面确认孔隙类型;最后才上真实零件。
每一级都要有明确的通过标准,比如单道要求连续无断裂、块体要求致密度达到 99% 以上。标准不定清楚,实验数据就只是一堆数字。四级走完,一套参数才算真正被验证过。
5.2 参数与检测结果的归档脚本
试验做多了以后,真正的瓶颈不是调参,而是数据找不到。用一份 CSV 或数据库把参数、检测结果和缺陷描述绑在一起,是成本最低的改进。
import pandas as pd records = [ ("A01", 200, 700, 0.03, 0.09, 99.6, "基准"), ("A02", 200, 800, 0.03, 0.09, 99.4, "道间搭接正常"), ("A03", 200, 900, 0.03, 0.09, 98.9, "出现少量未熔合"), ] df = pd.DataFrame(records, columns=["id", "power", "speed", "layer", "hatch", "density", "note"]) df["ev"] = (df["power"] / (df["speed"] * df["layer"] * df["hatch"])).round(1) df.to_csv("slm_process_log.csv", index=False) print(df[["id", "ev", "density", "note"]])能量密度由脚本统一算出来,避免人工计算引入误差。density 一列填实测致密度,note 一列写现象,日后要复查"哪套参数出过未熔合",直接对 note 列做过滤就行。这份表积累到几十行以后,基本能圈出自家设备的稳定区间。
一个常被忽略的细节是:把设备编号也加进表里。同一型号的两台设备,光路状态和仓体气氛控制可能存在差异,参数往往不能直接互用。归档时多写一列 device_id,迁移参数时就能少走一次弯路。工艺固化到最后,靠的不是某个漂亮的 Ev 数值,而是一份能追溯到设备、粉末批次和检测结果的完整记录。
本文还有配套的精品资源,点击获取