PCB丝印层二维码添加指南:立创EDA专业版实操与避坑 1. 为什么要在PCB上放二维码1.1 二维码在PCB上的实际价值先聊一个很现实的问题为什么要在电路板上放二维码我刚开始画板子那几年觉得丝印层上放二维码纯属花活板子能跑就行搞这些虚的干嘛。后来做了一批小批量的产品客户反馈说想扫码看使用说明每次都要翻包装盒里那张纸纸丢了就找不到了。从那以后我就养成了习惯在板子空白区域放一个二维码链接到产品说明页面或者直接放一段文本信息。二维码在PCB上的用途其实比想象中多。最常见的是放产品序列号或者批次信息产线工人扫一下就能录入系统比手动输入快得多也不容易出错。其次是放使用说明或者文档链接用户拿到板子扫码就能看到接线图、注意事项省去了印说明书的成本。还有一些场景是放公司网址或者联系方式算是一种低成本的品牌曝光。对于维修人员来说扫二维码直接跳到维修手册或者原理图页面效率提升非常明显。从技术实现角度看PCB上的二维码本质上就是丝印层上的一堆图形。立创EDA专业版支持在丝印层放置图片而二维码本身就是一张图片所以理论上把二维码图片导入到丝印层就完事了。但实际操作中坑非常多我见过太多人导入的二维码扫不出来或者打样回来发现二维码糊成一团。这里面涉及到分辨率、尺寸、对比度、丝印工艺等多个因素每一个环节没处理好最终的二维码就是废的。1.2 适合哪些人参考这篇内容这篇内容主要面向已经会用立创EDA专业版画板子、但还没尝试过在丝印层放二维码的朋友。如果你连立创EDA专业版的基本操作都不熟建议先把布线、铺铜、DRC检查这些基础流程走一遍再来看这个。另外如果你用的是Altium Designer或者其他EDA工具思路是相通的但具体操作步骤会有差异我会在关键地方提一下AD里的做法作为对照。还有一类朋友是已经在板子上放过二维码但扫不出来或者效果不理想的。这种情况多半是尺寸太小、分辨率不够、或者丝印工艺限制导致的。我会在后面的章节里详细分析各种失败原因和对应的解决方案你可以对照自己的情况排查。2. 立创EDA专业版添加二维码的完整思路2.1 核心原理二维码就是丝印层上的一张图片立创EDA专业版里添加二维码本质上就是往丝印层放一张图片。这个逻辑很简单但很多人卡在第一步不知道怎么把二维码图片搞进来。立创EDA专业版支持导入图片到丝印层格式支持PNG、JPG、BMP等常见图片格式。所以整个流程可以拆成三步先生成二维码图片再把图片导入到丝印层最后调整尺寸和位置。听起来很简单对吧但每一步都有坑。生成二维码的时候如果内容太长二维码的密度就会很高每个模块就是二维码里那些小黑方块的尺寸就会很小。丝印工艺的分辨率是有限的模块太小了印出来就糊了扫不出来。导入图片的时候如果图片分辨率不够立创EDA会把它拉伸边缘会模糊同样影响扫描。调整尺寸的时候如果放得太小模块尺寸不够也是白搭。所以核心思路就是控制二维码的内容长度保证生成的图片有足够的分辨率导入后设置合理的物理尺寸确保每个模块的尺寸在丝印工艺能清晰分辨的范围内。这四个环节环环相扣任何一个环节出问题最终的二维码都扫不出来。2.2 工具选型用什么生成二维码生成二维码的工具很多在线的、离线的、命令行的都有。我试过不少最后固定在用两种方式。一种是在线生成工具随便搜一个二维码生成器就行输入内容、选择纠错等级、设置尺寸下载PNG图片。另一种是用Python的qrcode库自己生成适合需要批量处理或者对参数有精细控制的情况。在线工具的好处是方便快捷不用装任何东西打开网页就能用。但缺点是很多在线工具默认生成的图片尺寸偏小或者纠错等级设置得不合理。我一般会选纠错等级为M或者QM级别大约能容忍15%的损坏Q级别能容忍25%的损坏。PCB丝印可能会有轻微的断线或者糊版所以纠错等级高一点更保险。但纠错等级越高二维码的模块数量就越多同样尺寸下每个模块就越小这是一个权衡。用Python生成的话可以精确控制每个模块的像素数。比如设置box_size10意思就是每个模块占10个像素。这样生成的图片分辨率足够高导入立创EDA后缩放也不会模糊。我一般会用box_size10到20之间的值具体看二维码的内容长度。内容越长模块越多就需要更大的box_size来保证图片分辨率。注意不要用那种带Logo或者美化过的二维码丝印层是单色的彩色二维码导入后会变成黑白中间的Logo会破坏二维码的结构导致扫不出来。2.3 尺寸计算多大才能扫得出来这是最关键的部分也是最多人翻车的地方。二维码能不能扫出来取决于每个模块的物理尺寸。丝印工艺的分辨率一般在0.1mm到0.15mm之间也就是说丝印能清晰印出的最小线宽大约是0.1mm到0.15mm。如果二维码的每个模块小于这个尺寸印出来就会糊在一起扫描器无法分辨。所以计算逻辑是这样的先确定二维码的版本也就是模块数量然后根据丝印工艺的最小线宽反推二维码的最小物理尺寸。举个例子一个版本3的二维码是29x29个模块如果每个模块需要0.15mm那么二维码的物理尺寸至少是29乘以0.15等于4.35mm。这还没算静区二维码四周的空白区域静区一般需要4个模块的宽度所以总尺寸还要加上8个模块也就是37个模块乘以0.15等于5.55mm。实际经验告诉我二维码的物理尺寸最好不要小于8mm x 8mm否则扫描成功率会明显下降。如果内容比较长模块数量多尺寸还要相应加大。我一般会把二维码控制在10mm x 10mm到15mm x 15mm之间这个尺寸在大多数PCB上都能找到地方放扫描成功率也很高。二维码版本模块数量最小物理尺寸0.15mm/模块建议物理尺寸版本225x254.95mm8mm版本329x295.55mm10mm版本433x336.15mm12mm版本537x376.75mm14mm版本641x417.35mm16mm这个表格里的建议物理尺寸是我实际打样验证过的扫描成功率很高。如果你板子空间紧张可以适当缩小但不建议低于最小物理尺寸的1.5倍。3. 实操步骤从生成二维码到导入立创EDA3.1 第一步生成高分辨率二维码图片我以Python的qrcode库为例讲一下怎么生成一张适合PCB丝印的二维码图片。先安装库pip install qrcode[pil]然后写一段简单的生成代码import qrcode # 要编码的内容尽量简短 content https://example.com/pcb-guide # 创建二维码对象 qr qrcode.QRCode( versionNone, # 自动选择版本 error_correctionqrcode.constants.ERROR_CORRECT_Q, # 纠错等级Q box_size15, # 每个模块15像素 border4, # 静区4个模块 ) qr.add_data(content) qr.make(fitTrue) # 生成图片 img qr.make_image(fill_colorblack, back_colorwhite) img.save(qrcode_pcb.png)这段代码生成的图片每个模块是15个像素静区是4个模块。你可以根据内容长度调整box_size内容越长box_size可以适当加大保证图片分辨率足够。如果你不想写代码用在线工具也行。搜索“二维码生成器”找一个支持自定义尺寸和纠错等级的。关键参数是纠错等级选Q或者H尺寸选最大格式选PNG。下载后检查一下图片分辨率宽度最好在500像素以上。提示二维码的内容越短越好。如果只是放一个序列号直接编码文本就行不要加多余的URL前缀。内容越短模块越少同样尺寸下每个模块就越大扫描成功率越高。3.2 第二步导入图片到丝印层打开立创EDA专业版进入你的PCB工程。在顶部菜单栏找到“放置”然后选择“图片”。在弹出的文件选择对话框里选中你刚才生成的二维码图片。导入后图片会出现在PCB画布上默认可能在顶层。你需要把它切换到丝印层一般是顶层丝印层Top Silk Layer或者底层丝印层Bottom Silk Layer。切换层的方法很简单选中图片在右侧属性面板里找到“层”选项下拉选择顶层丝印层。如果你想让二维码在板子背面就选底层丝印层。注意底层丝印层的文字和图形是镜像的但二维码是图形镜像后扫描器可能识别不了。所以如果放在底层需要确认二维码是否被镜像了。立创EDA专业版在底层放置图片时默认会镜像显示你需要手动取消镜像或者生成二维码时就生成镜像版本。导入后图片可能会很大或者很小需要调整尺寸。在属性面板里可以设置图片的宽度和高度单位是毫米。我一般会锁定宽高比只改宽度高度自动跟着变。把宽度设置成你计算好的物理尺寸比如10mm。设置完后用测量工具量一下实际尺寸确保和预期一致。3.3 第三步调整位置和检查DRC把二维码拖到你想要的位置。一般放在板子的空白区域避开元器件、走线和过孔。如果板子空间紧张可以放在丝印层的空白处但要注意不要覆盖焊盘或者测试点。放好后运行DRC检查看看有没有丝印重叠或者间距违规的报错。立创EDA专业版的DRC会检查丝印到焊盘的距离如果二维码离焊盘太近可能会报错。这时候需要调整位置或者修改DRC规则里的丝印间距设置。我一般会把丝印到焊盘的距离设置为0.15mm以上避免印刷时丝印沾到焊盘上影响焊接。还有一点要注意二维码不要放在板边太近的地方。板边在铣边的时候可能会有毛刺或者偏差如果二维码离板边太近可能会被切掉一部分。我一般会留至少1mm的边距。3.4 第四步导出Gerber并检查丝印层完成以上步骤后导出Gerber文件。在立创EDA专业版里点击“导出”选择“Gerber”。导出后用Gerber查看器打开检查丝印层里的二维码是否清晰。重点看每个模块是否分明有没有粘连或者缺失。如果发现模块糊在一起说明尺寸太小了需要回到上一步加大尺寸。我习惯用免费的Gerber查看工具比如KiCad自带的Gerber查看器或者在线的Gerber查看网站。打开后找到顶层丝印层放大看二维码区域。如果每个模块都是独立清晰的那就没问题了。如果模块边缘模糊或者粘连打样出来大概率扫不出来。注意有些Gerber查看器渲染丝印层时会有抗锯齿效果看起来模糊不一定是真的模糊。最好用实际尺寸查看或者导出PDF对比。我一般会同时导出PDF用PDF查看器放大到实际尺寸看这样更接近打样效果。4. 避坑指南二维码扫不出来的常见原因4.1 尺寸太小导致模块粘连这是最常见的问题没有之一。很多人觉得二维码放小一点省空间结果打样回来发现扫不出来。丝印工艺的分辨率是硬限制模块太小了就是印不出来。我见过有人把二维码放到5mm x 5mm内容还是一个长URL模块数量多到每个模块只有0.05mm这怎么可能印得出来。判断方法很简单用二维码的物理尺寸除以模块数量得到每个模块的物理尺寸。如果小于0.15mm就有风险。小于0.1mm基本没戏。这时候要么加大二维码尺寸要么缩短二维码内容减少模块数量。4.2 图片分辨率不够导致边缘模糊导入的图片分辨率太低立创EDA在缩放时会进行插值导致模块边缘模糊。扫描器对边缘模糊的容忍度很低尤其是模块尺寸本来就小的情况下。解决方法就是生成二维码时用更大的box_size保证图片分辨率足够。我一般要求图片宽度至少500像素最好1000像素以上。4.3 纠错等级选择不当纠错等级太低丝印稍微有点断线或者糊版就扫不出来。纠错等级太高模块数量增加同样尺寸下每个模块更小。这是一个权衡。我的经验是选Q级别兼顾纠错能力和模块数量。如果板子空间充足可以选H级别纠错能力更强。如果空间紧张选M级别但尺寸要相应加大。4.4 静区被裁掉二维码四周需要留出静区一般是4个模块的宽度。静区的作用是让扫描器区分二维码和背景。如果静区被裁掉或者被其他丝印覆盖扫描器可能无法识别。导入图片时确保静区完整。放置时确保静区范围内没有其他丝印或者走线。4.5 底层丝印镜像问题放在底层丝印层的二维码如果被镜像了扫描器可能识别不了。立创EDA专业版在底层放置图片时默认会镜像。你需要手动取消镜像或者在生成二维码时就生成镜像版本。我一般建议把二维码放在顶层丝印层避免镜像问题。4.6 丝印颜色与背景对比度不足如果板子用的是黑色阻焊白色丝印对比度很好没问题。但如果用的是白色阻焊白色丝印那就完全看不见了。丝印颜色要和阻焊颜色有足够的对比度。常见的组合是绿色阻焊加白色丝印黑色阻焊加白色丝印蓝色阻焊加白色丝印。如果你选了白色阻焊丝印要选黑色或者其他深色。问题现象可能原因排查方法解决方案二维码完全扫不出来尺寸太小计算模块物理尺寸加大尺寸或缩短内容扫描时好时坏边缘模糊检查图片分辨率重新生成高分辨率图片部分模块粘连丝印分辨率不足放大Gerber查看加大模块尺寸扫描器无法识别静区被裁检查静区是否完整保留4个模块静区底层二维码扫不出来镜像问题检查是否镜像取消镜像或放顶层二维码看不见对比度不足检查丝印和阻焊颜色更换丝印颜色5. 进阶技巧与实战经验5.1 二维码内容怎么选二维码的内容直接决定了模块数量进而影响尺寸。我的原则是能短则短。如果只是放一个序列号直接编码文本比如“SN:12345678”不要加“https://”之类的前缀。如果必须放URL用短链接服务缩短。如果放的是文本信息尽量精简去掉不必要的空格和换行。有些场景下二维码需要包含较多信息比如产品型号、批次号、生产日期等。这时候可以考虑用JSON格式压缩或者用分隔符拼接。但要注意内容越长模块越多尺寸就要越大。如果板子空间实在不够可以考虑把二维码分成两个或者用Data Matrix码代替。Data Matrix码在同样内容下模块数量更少但立创EDA专业版对Data Matrix的支持不如QR码方便。5.2 批量生成二维码的脚本如果你需要为不同板子生成不同的二维码手动一个个生成太慢了。我写了一个Python脚本读取CSV文件里的序列号批量生成二维码图片并自动命名。这样产线用起来很方便每个板子对应一个二维码。import qrcode import csv import os # 读取CSV文件假设第一列是序列号 with open(serial_numbers.csv, r) as f: reader csv.reader(f) for row in reader: serial row[0] qr qrcode.QRCode( versionNone, error_correctionqrcode.constants.ERROR_CORRECT_Q, box_size15, border4, ) qr.add_data(fSN:{serial}) qr.make(fitTrue) img qr.make_image(fill_colorblack, back_colorwhite) img.save(fqrcodes/{serial}.png)这个脚本会为每个序列号生成一张二维码图片保存在qrcodes文件夹里。然后你可以在立创EDA专业版里逐个导入或者用脚本批量导入。立创EDA专业版支持脚本扩展但批量导入图片的功能需要自己写脚本调用API稍微复杂一些。如果数量不多手动导入也能接受。5.3 用Altium Designer怎么操作虽然这篇主要讲立创EDA专业版但很多朋友也用Altium Designer。AD里添加二维码的思路类似但操作步骤不同。AD里可以通过“Place”菜单下的“Image”选项导入图片然后放到Silk Layer。AD的图片导入功能支持设置DPI你可以设置成和PCB一致的DPI保证尺寸准确。AD里有一个好处是可以直接用脚本生成二维码并放置到丝印层。网上有现成的AD脚本用DelphiScript或者VBScript写调用二维码生成库直接在PCB里生成二维码。这种方式适合批量处理但脚本调试比较麻烦。如果你只是偶尔放一两个二维码手动导入图片就够了。5.4 打样前的最终检查清单在提交打样之前我一般会做以下几项检查确保二维码没问题用Gerber查看器打开丝印层放大到实际尺寸确认每个模块清晰分明用手机扫描Gerber查看器里的二维码截图确认能扫出来检查二维码的物理尺寸确保每个模块不小于0.15mm检查静区是否完整没有被其他丝印覆盖检查二维码是否离板边太近至少留1mm边距检查丝印颜色和阻焊颜色的对比度如果是底层丝印确认没有镜像问题这几项检查做完基本就不会翻车了。我按照这个流程做了几十批板子二维码扫描成功率很高偶尔有扫不出来的都是因为尺寸太小或者内容太长调整后就没问题了。5.5 一个实际案例的完整复盘去年做一个工业控制板板子尺寸是50mm x 40mm空间比较紧张。客户要求在板子上放一个二维码链接到产品说明书。说明书URL很长有80多个字符。我一开始把二维码尺寸设成8mm x 8mm打样回来发现扫不出来。用Gerber查看器放大看模块已经糊在一起了。后来我做了两件事一是用短链接服务把URL缩短到20个字符以内二是把二维码尺寸加大到12mm x 12mm。重新打样后扫描成功率100%。这个案例告诉我内容长度和物理尺寸是两个最关键的因素任何一个没控制好都会导致失败。还有一次客户要求在底层丝印放二维码。我导入图片后忘了取消镜像打样回来发现二维码是反的怎么都扫不出来。后来在立创EDA专业版的属性面板里找到镜像选项取消后重新导出Gerber问题解决。所以底层丝印的镜像问题一定要检查。5.6 丝印工艺参数的深入理解丝印工艺的分辨率不是一个固定值它和PCB厂家的设备、工艺能力有关。一般来说国内主流PCB厂家的丝印最小线宽是0.15mm有些厂家能做到0.1mm但良率会下降。如果你对二维码的扫描成功率要求很高建议按0.15mm来设计留足余量。另外丝印的厚度也会影响扫描。丝印太厚模块边缘会溢出导致粘连。丝印太薄对比度不够扫描器可能识别不了。这个参数一般由PCB厂家控制你可以在下单时备注“丝印清晰二维码需可扫描”厂家会注意的。还有一点阻焊层的颜色也会影响对比度。白色丝印在绿色阻焊上对比度很好但在白色阻焊上就完全看不见。如果你选了白色阻焊丝印要选黑色。但黑色丝印在白色阻焊上的对比度也不如白色丝印在绿色阻焊上。所以如果二维码很重要建议选绿色阻焊加白色丝印这是最成熟的组合。6. 常见问题速查与排查技巧6.1 二维码扫描失败的快速排查流程当你发现二维码扫不出来时不要慌按以下流程排查第一步用Gerber查看器打开丝印层放大到实际尺寸看模块是否清晰。如果模块粘连说明尺寸太小加大尺寸或者缩短内容。第二步用手机扫描Gerber查看器里的二维码截图。如果能扫出来说明设计没问题可能是打样工艺问题。如果扫不出来说明设计有问题继续排查。第三步检查二维码的物理尺寸和模块数量计算每个模块的物理尺寸。如果小于0.15mm加大尺寸。第四步检查静区是否完整有没有被其他丝印覆盖。第五步检查丝印颜色和阻焊颜色的对比度。第六步如果是底层丝印检查是否镜像。这个流程基本能覆盖90%以上的问题。剩下的10%可能是PCB厂家的工艺问题比如丝印偏移、糊版等。这种情况只能换厂家或者调整设计。6.2 立创EDA专业版导入图片的常见报错立创EDA专业版导入图片时可能会遇到一些报错。最常见的是“图片格式不支持”这时候检查图片格式确保是PNG、JPG或者BMP。如果图片太大可能会提示“图片尺寸过大”这时候用图片编辑工具缩小尺寸再导入。还有一个报错是“图片分辨率过低”立创EDA会提示图片分辨率不足导入后可能模糊。这时候重新生成更高分辨率的图片。我一般会用1000像素以上的宽度基本不会报这个错。如果导入后图片显示不出来检查是不是被其他元素遮挡了或者层设置错了。在属性面板里确认层是丝印层并且可见性打开了。6.3 二维码内容编码的注意事项二维码支持多种编码模式包括数字、字母数字、字节和汉字。不同编码模式下同样内容的模块数量不同。数字模式最紧凑汉字模式最占空间。如果你的内容主要是数字用数字模式可以显著减少模块数量。如果内容包含汉字模块数量会比较多尺寸要相应加大。在Python的qrcode库中可以指定编码模式qr.add_data(content, optimize0) # optimize0表示不自动优化但一般情况下qrcode库会自动选择最优编码模式不用手动指定。如果你发现生成的二维码模块数量比预期多可以检查一下内容里有没有特殊字符特殊字符会强制使用字节模式增加模块数量。6.4 二维码尺寸与板子空间的平衡板子空间紧张是常态尤其是小尺寸的板子。如果实在放不下足够大的二维码可以考虑以下方案一是缩短内容用短链接或者纯序列号。二是把二维码放在板子背面利用背面的空白区域。三是把二维码分成两个分别放在不同位置扫描时分别扫。四是改用Data Matrix码同样内容下模块数量更少。五是如果板子有外壳可以把二维码印在外壳上不占PCB空间。我一般优先考虑缩短内容这是最直接有效的方法。一个20个字符以内的二维码版本2就够了25x25个模块8mm x 8mm的尺寸就能清晰印出来。如果内容超过50个字符版本至少是4尺寸要12mm以上。6.5 打样后的验证方法板子打样回来不要急着焊接先验证二维码。用手机扫描一下看能不能扫出来。如果扫不出来用放大镜或者显微镜看丝印检查模块是否清晰。如果模块清晰但扫不出来可能是对比度问题或者静区问题。如果模块粘连说明尺寸太小。我一般会准备一个备用方案如果二维码扫不出来就在板子上贴一张打印的二维码贴纸。虽然丑一点但至少能用。所以设计时可以在二维码旁边留一点空白区域方便贴贴纸。提示打样时可以让厂家提供丝印层的实际照片提前确认二维码效果。有些厂家支持在线查看丝印效果下单前可以预览。7. 个人经验总结与实用建议7.1 我踩过的那些坑做了这么多年板子二维码这个事我踩过的坑真不少。最早的时候我把二维码尺寸设成6mm x 6mm内容是一个长URL打样回来完全扫不出来。后来才知道6mm的二维码模块数量是41x41每个模块只有0.146mm已经接近丝印工艺的极限了稍微有点偏差就糊了。还有一次我用了一个在线工具生成二维码下载的图片只有200像素宽导入立创EDA后放大到10mm边缘模糊得一塌糊涂。后来改用Python生成box_size设成15图片宽度超过1000像素导入后缩放很清晰扫描成功率大幅提升。底层丝印镜像的问题我也遇到过。当时客户要求二维码放在背面我导入图片后没注意镜像选项打样回来发现二维码是反的。后来在立创EDA专业版的属性面板里找到“镜像”选项取消后重新导出Gerber问题解决。所以底层丝印一定要检查镜像。7.2 给新手的三个建议第一个建议二维码尺寸不要小于10mm x 10mm。这是我最保守的建议10mm的二维码即使内容稍长模块尺寸也在安全范围内。如果你板子空间实在不够可以缩小到8mm但内容要控制在20个字符以内。第二个建议用Python或者可靠的在线工具生成二维码确保图片分辨率足够。不要用手机截图或者低分辨率图片导入后缩放会模糊。第三个建议打样前一定要用Gerber查看器检查丝印层放大到实际尺寸看模块是否清晰。这一步花不了几分钟但能避免一批板子报废。7.3 后续可以扩展的方向二维码放好了后续还可以考虑一些扩展玩法。比如在二维码旁边加一行文字说明告诉用户扫码能获取什么信息。或者用不同颜色的丝印区分不同批次的二维码。还可以把二维码和板子的序列号绑定产线扫码自动录入系统。如果你做的是开源硬件二维码可以链接到GitHub仓库或者文档页面方便用户获取资料。如果是商业产品二维码可以链接到售后支持页面提升用户体验。这些扩展不需要额外的硬件成本只需要在设计阶段多花一点心思。我个人在实际操作中的体会是二维码这个事看起来简单但细节很多。尺寸、分辨率、纠错等级、静区、对比度、镜像每一个环节都要考虑到。按照我上面说的流程走一遍基本不会翻车。如果你第一次做建议先打样一批小批量验证确认没问题再批量生产。