EDA專業(yè)版實(shí)操與避坑)
1. 為什么要在PCB上放二維碼1.1 二維碼在PCB上的實(shí)際價(jià)值先聊一個(gè)很現(xiàn)實(shí)的問題為什么要在電路板上放二維碼我剛開始畫板子那幾年覺得絲印層上放二維碼純屬花活板子能跑就行搞這些虛的干嘛。后來做了一批小批量的產(chǎn)品客戶反饋說想掃碼看使用說明每次都要翻包裝盒里那張紙紙丟了就找不到了。從那以后我就養(yǎng)成了習(xí)慣在板子空白區(qū)域放一個(gè)二維碼鏈接到產(chǎn)品說明頁(yè)面或者直接放一段文本信息。二維碼在PCB上的用途其實(shí)比想象中多。最常見的是放產(chǎn)品序列號(hào)或者批次信息產(chǎn)線工人掃一下就能錄入系統(tǒng)比手動(dòng)輸入快得多也不容易出錯(cuò)。其次是放使用說明或者文檔鏈接用戶拿到板子掃碼就能看到接線圖、注意事項(xiàng)省去了印說明書的成本。還有一些場(chǎng)景是放公司網(wǎng)址或者聯(lián)系方式算是一種低成本的品牌曝光。對(duì)于維修人員來說掃二維碼直接跳到維修手冊(cè)或者原理圖頁(yè)面效率提升非常明顯。從技術(shù)實(shí)現(xiàn)角度看PCB上的二維碼本質(zhì)上就是絲印層上的一堆圖形。立創(chuàng)EDA專業(yè)版支持在絲印層放置圖片而二維碼本身就是一張圖片所以理論上把二維碼圖片導(dǎo)入到絲印層就完事了。但實(shí)際操作中坑非常多我見過太多人導(dǎo)入的二維碼掃不出來或者打樣回來發(fā)現(xiàn)二維碼糊成一團(tuán)。這里面涉及到分辨率、尺寸、對(duì)比度、絲印工藝等多個(gè)因素每一個(gè)環(huán)節(jié)沒處理好最終的二維碼就是廢的。1.2 適合哪些人參考這篇內(nèi)容這篇內(nèi)容主要面向已經(jīng)會(huì)用立創(chuàng)EDA專業(yè)版畫板子、但還沒嘗試過在絲印層放二維碼的朋友。如果你連立創(chuàng)EDA專業(yè)版的基本操作都不熟建議先把布線、鋪銅、DRC檢查這些基礎(chǔ)流程走一遍再來看這個(gè)。另外如果你用的是Altium Designer或者其他EDA工具思路是相通的但具體操作步驟會(huì)有差異我會(huì)在關(guān)鍵地方提一下AD里的做法作為對(duì)照。還有一類朋友是已經(jīng)在板子上放過二維碼但掃不出來或者效果不理想的。這種情況多半是尺寸太小、分辨率不夠、或者絲印工藝限制導(dǎo)致的。我會(huì)在后面的章節(jié)里詳細(xì)分析各種失敗原因和對(duì)應(yīng)的解決方案你可以對(duì)照自己的情況排查。2. 立創(chuàng)EDA專業(yè)版添加二維碼的完整思路2.1 核心原理二維碼就是絲印層上的一張圖片立創(chuàng)EDA專業(yè)版里添加二維碼本質(zhì)上就是往絲印層放一張圖片。這個(gè)邏輯很簡(jiǎn)單但很多人卡在第一步不知道怎么把二維碼圖片搞進(jìn)來。立創(chuàng)EDA專業(yè)版支持導(dǎo)入圖片到絲印層格式支持PNG、JPG、BMP等常見圖片格式。所以整個(gè)流程可以拆成三步先生成二維碼圖片再把圖片導(dǎo)入到絲印層最后調(diào)整尺寸和位置。聽起來很簡(jiǎn)單對(duì)吧但每一步都有坑。生成二維碼的時(shí)候如果內(nèi)容太長(zhǎng)二維碼的密度就會(huì)很高每個(gè)模塊就是二維碼里那些小黑方塊的尺寸就會(huì)很小。絲印工藝的分辨率是有限的模塊太小了印出來就糊了掃不出來。導(dǎo)入圖片的時(shí)候如果圖片分辨率不夠立創(chuàng)EDA會(huì)把它拉伸邊緣會(huì)模糊同樣影響掃描。調(diào)整尺寸的時(shí)候如果放得太小模塊尺寸不夠也是白搭。所以核心思路就是控制二維碼的內(nèi)容長(zhǎng)度保證生成的圖片有足夠的分辨率導(dǎo)入后設(shè)置合理的物理尺寸確保每個(gè)模塊的尺寸在絲印工藝能清晰分辨的范圍內(nèi)。這四個(gè)環(huán)節(jié)環(huán)環(huán)相扣任何一個(gè)環(huán)節(jié)出問題最終的二維碼都掃不出來。2.2 工具選型用什么生成二維碼生成二維碼的工具很多在線的、離線的、命令行的都有。我試過不少最后固定在用兩種方式。一種是在線生成工具隨便搜一個(gè)二維碼生成器就行輸入內(nèi)容、選擇糾錯(cuò)等級(jí)、設(shè)置尺寸下載PNG圖片。另一種是用Python的qrcode庫(kù)自己生成適合需要批量處理或者對(duì)參數(shù)有精細(xì)控制的情況。在線工具的好處是方便快捷不用裝任何東西打開網(wǎng)頁(yè)就能用。但缺點(diǎn)是很多在線工具默認(rèn)生成的圖片尺寸偏小或者糾錯(cuò)等級(jí)設(shè)置得不合理。我一般會(huì)選糾錯(cuò)等級(jí)為M或者QM級(jí)別大約能容忍15%的損壞Q級(jí)別能容忍25%的損壞。PCB絲印可能會(huì)有輕微的斷線或者糊版所以糾錯(cuò)等級(jí)高一點(diǎn)更保險(xiǎn)。但糾錯(cuò)等級(jí)越高二維碼的模塊數(shù)量就越多同樣尺寸下每個(gè)模塊就越小這是一個(gè)權(quán)衡。用Python生成的話可以精確控制每個(gè)模塊的像素?cái)?shù)。比如設(shè)置box_size10意思就是每個(gè)模塊占10個(gè)像素。這樣生成的圖片分辨率足夠高導(dǎo)入立創(chuàng)EDA后縮放也不會(huì)模糊。我一般會(huì)用box_size10到20之間的值具體看二維碼的內(nèi)容長(zhǎng)度。內(nèi)容越長(zhǎng)模塊越多就需要更大的box_size來保證圖片分辨率。注意不要用那種帶Logo或者美化過的二維碼絲印層是單色的彩色二維碼導(dǎo)入后會(huì)變成黑白中間的Logo會(huì)破壞二維碼的結(jié)構(gòu)導(dǎo)致掃不出來。2.3 尺寸計(jì)算多大才能掃得出來這是最關(guān)鍵的部分也是最多人翻車的地方。二維碼能不能掃出來取決于每個(gè)模塊的物理尺寸。絲印工藝的分辨率一般在0.1mm到0.15mm之間也就是說絲印能清晰印出的最小線寬大約是0.1mm到0.15mm。如果二維碼的每個(gè)模塊小于這個(gè)尺寸印出來就會(huì)糊在一起掃描器無法分辨。所以計(jì)算邏輯是這樣的先確定二維碼的版本也就是模塊數(shù)量然后根據(jù)絲印工藝的最小線寬反推二維碼的最小物理尺寸。舉個(gè)例子一個(gè)版本3的二維碼是29x29個(gè)模塊如果每個(gè)模塊需要0.15mm那么二維碼的物理尺寸至少是29乘以0.15等于4.35mm。這還沒算靜區(qū)二維碼四周的空白區(qū)域靜區(qū)一般需要4個(gè)模塊的寬度所以總尺寸還要加上8個(gè)模塊也就是37個(gè)模塊乘以0.15等于5.55mm。實(shí)際經(jīng)驗(yàn)告訴我二維碼的物理尺寸最好不要小于8mm x 8mm否則掃描成功率會(huì)明顯下降。如果內(nèi)容比較長(zhǎng)模塊數(shù)量多尺寸還要相應(yīng)加大。我一般會(huì)把二維碼控制在10mm x 10mm到15mm x 15mm之間這個(gè)尺寸在大多數(shù)PCB上都能找到地方放掃描成功率也很高。二維碼版本模塊數(shù)量最小物理尺寸0.15mm/模塊建議物理尺寸版本225x254.95mm8mm版本329x295.55mm10mm版本433x336.15mm12mm版本537x376.75mm14mm版本641x417.35mm16mm這個(gè)表格里的建議物理尺寸是我實(shí)際打樣驗(yàn)證過的掃描成功率很高。如果你板子空間緊張可以適當(dāng)縮小但不建議低于最小物理尺寸的1.5倍。3. 實(shí)操步驟從生成二維碼到導(dǎo)入立創(chuàng)EDA3.1 第一步生成高分辨率二維碼圖片我以Python的qrcode庫(kù)為例講一下怎么生成一張適合PCB絲印的二維碼圖片。先安裝庫(kù)pip install qrcode[pil]然后寫一段簡(jiǎn)單的生成代碼import qrcode # 要編碼的內(nèi)容盡量簡(jiǎn)短 content https://example.com/pcb-guide # 創(chuàng)建二維碼對(duì)象 qr qrcode.QRCode( versionNone, # 自動(dòng)選擇版本 error_correctionqrcode.constants.ERROR_CORRECT_Q, # 糾錯(cuò)等級(jí)Q box_size15, # 每個(gè)模塊15像素 border4, # 靜區(qū)4個(gè)模塊 ) qr.add_data(content) qr.make(fitTrue) # 生成圖片 img qr.make_image(fill_colorblack, back_colorwhite) img.save(qrcode_pcb.png)這段代碼生成的圖片每個(gè)模塊是15個(gè)像素靜區(qū)是4個(gè)模塊。你可以根據(jù)內(nèi)容長(zhǎng)度調(diào)整box_size內(nèi)容越長(zhǎng)box_size可以適當(dāng)加大保證圖片分辨率足夠。如果你不想寫代碼用在線工具也行。搜索“二維碼生成器”找一個(gè)支持自定義尺寸和糾錯(cuò)等級(jí)的。關(guān)鍵參數(shù)是糾錯(cuò)等級(jí)選Q或者H尺寸選最大格式選PNG。下載后檢查一下圖片分辨率寬度最好在500像素以上。提示二維碼的內(nèi)容越短越好。如果只是放一個(gè)序列號(hào)直接編碼文本就行不要加多余的URL前綴。內(nèi)容越短模塊越少同樣尺寸下每個(gè)模塊就越大掃描成功率越高。3.2 第二步導(dǎo)入圖片到絲印層打開立創(chuàng)EDA專業(yè)版進(jìn)入你的PCB工程。在頂部菜單欄找到“放置”然后選擇“圖片”。在彈出的文件選擇對(duì)話框里選中你剛才生成的二維碼圖片。導(dǎo)入后圖片會(huì)出現(xiàn)在PCB畫布上默認(rèn)可能在頂層。你需要把它切換到絲印層一般是頂層絲印層Top Silk Layer或者底層絲印層Bottom Silk Layer。切換層的方法很簡(jiǎn)單選中圖片在右側(cè)屬性面板里找到“層”選項(xiàng)下拉選擇頂層絲印層。如果你想讓二維碼在板子背面就選底層絲印層。注意底層絲印層的文字和圖形是鏡像的但二維碼是圖形鏡像后掃描器可能識(shí)別不了。所以如果放在底層需要確認(rèn)二維碼是否被鏡像了。立創(chuàng)EDA專業(yè)版在底層放置圖片時(shí)默認(rèn)會(huì)鏡像顯示你需要手動(dòng)取消鏡像或者生成二維碼時(shí)就生成鏡像版本。導(dǎo)入后圖片可能會(huì)很大或者很小需要調(diào)整尺寸。在屬性面板里可以設(shè)置圖片的寬度和高度單位是毫米。我一般會(huì)鎖定寬高比只改寬度高度自動(dòng)跟著變。把寬度設(shè)置成你計(jì)算好的物理尺寸比如10mm。設(shè)置完后用測(cè)量工具量一下實(shí)際尺寸確保和預(yù)期一致。3.3 第三步調(diào)整位置和檢查DRC把二維碼拖到你想要的位置。一般放在板子的空白區(qū)域避開元器件、走線和過孔。如果板子空間緊張可以放在絲印層的空白處但要注意不要覆蓋焊盤或者測(cè)試點(diǎn)。放好后運(yùn)行DRC檢查看看有沒有絲印重疊或者間距違規(guī)的報(bào)錯(cuò)。立創(chuàng)EDA專業(yè)版的DRC會(huì)檢查絲印到焊盤的距離如果二維碼離焊盤太近可能會(huì)報(bào)錯(cuò)。這時(shí)候需要調(diào)整位置或者修改DRC規(guī)則里的絲印間距設(shè)置。我一般會(huì)把絲印到焊盤的距離設(shè)置為0.15mm以上避免印刷時(shí)絲印沾到焊盤上影響焊接。還有一點(diǎn)要注意二維碼不要放在板邊太近的地方。板邊在銑邊的時(shí)候可能會(huì)有毛刺或者偏差如果二維碼離板邊太近可能會(huì)被切掉一部分。我一般會(huì)留至少1mm的邊距。3.4 第四步導(dǎo)出Gerber并檢查絲印層完成以上步驟后導(dǎo)出Gerber文件。在立創(chuàng)EDA專業(yè)版里點(diǎn)擊“導(dǎo)出”選擇“Gerber”。導(dǎo)出后用Gerber查看器打開檢查絲印層里的二維碼是否清晰。重點(diǎn)看每個(gè)模塊是否分明有沒有粘連或者缺失。如果發(fā)現(xiàn)模塊糊在一起說明尺寸太小了需要回到上一步加大尺寸。我習(xí)慣用免費(fèi)的Gerber查看工具比如KiCad自帶的Gerber查看器或者在線的Gerber查看網(wǎng)站。打開后找到頂層絲印層放大看二維碼區(qū)域。如果每個(gè)模塊都是獨(dú)立清晰的那就沒問題了。如果模塊邊緣模糊或者粘連打樣出來大概率掃不出來。注意有些Gerber查看器渲染絲印層時(shí)會(huì)有抗鋸齒效果看起來模糊不一定是真的模糊。最好用實(shí)際尺寸查看或者導(dǎo)出PDF對(duì)比。我一般會(huì)同時(shí)導(dǎo)出PDF用PDF查看器放大到實(shí)際尺寸看這樣更接近打樣效果。4. 避坑指南二維碼掃不出來的常見原因4.1 尺寸太小導(dǎo)致模塊粘連這是最常見的問題沒有之一。很多人覺得二維碼放小一點(diǎn)省空間結(jié)果打樣回來發(fā)現(xiàn)掃不出來。絲印工藝的分辨率是硬限制模塊太小了就是印不出來。我見過有人把二維碼放到5mm x 5mm內(nèi)容還是一個(gè)長(zhǎng)URL模塊數(shù)量多到每個(gè)模塊只有0.05mm這怎么可能印得出來。判斷方法很簡(jiǎn)單用二維碼的物理尺寸除以模塊數(shù)量得到每個(gè)模塊的物理尺寸。如果小于0.15mm就有風(fēng)險(xiǎn)。小于0.1mm基本沒戲。這時(shí)候要么加大二維碼尺寸要么縮短二維碼內(nèi)容減少模塊數(shù)量。4.2 圖片分辨率不夠?qū)е逻吘壞:龑?dǎo)入的圖片分辨率太低立創(chuàng)EDA在縮放時(shí)會(huì)進(jìn)行插值導(dǎo)致模塊邊緣模糊。掃描器對(duì)邊緣模糊的容忍度很低尤其是模塊尺寸本來就小的情況下。解決方法就是生成二維碼時(shí)用更大的box_size保證圖片分辨率足夠。我一般要求圖片寬度至少500像素最好1000像素以上。4.3 糾錯(cuò)等級(jí)選擇不當(dāng)糾錯(cuò)等級(jí)太低絲印稍微有點(diǎn)斷線或者糊版就掃不出來。糾錯(cuò)等級(jí)太高模塊數(shù)量增加同樣尺寸下每個(gè)模塊更小。這是一個(gè)權(quán)衡。我的經(jīng)驗(yàn)是選Q級(jí)別兼顧糾錯(cuò)能力和模塊數(shù)量。如果板子空間充足可以選H級(jí)別糾錯(cuò)能力更強(qiáng)。如果空間緊張選M級(jí)別但尺寸要相應(yīng)加大。4.4 靜區(qū)被裁掉二維碼四周需要留出靜區(qū)一般是4個(gè)模塊的寬度。靜區(qū)的作用是讓掃描器區(qū)分二維碼和背景。如果靜區(qū)被裁掉或者被其他絲印覆蓋掃描器可能無法識(shí)別。導(dǎo)入圖片時(shí)確保靜區(qū)完整。放置時(shí)確保靜區(qū)范圍內(nèi)沒有其他絲印或者走線。4.5 底層絲印鏡像問題放在底層絲印層的二維碼如果被鏡像了掃描器可能識(shí)別不了。立創(chuàng)EDA專業(yè)版在底層放置圖片時(shí)默認(rèn)會(huì)鏡像。你需要手動(dòng)取消鏡像或者在生成二維碼時(shí)就生成鏡像版本。我一般建議把二維碼放在頂層絲印層避免鏡像問題。4.6 絲印顏色與背景對(duì)比度不足如果板子用的是黑色阻焊白色絲印對(duì)比度很好沒問題。但如果用的是白色阻焊白色絲印那就完全看不見了。絲印顏色要和阻焊顏色有足夠的對(duì)比度。常見的組合是綠色阻焊加白色絲印黑色阻焊加白色絲印藍(lán)色阻焊加白色絲印。如果你選了白色阻焊絲印要選黑色或者其他深色。問題現(xiàn)象可能原因排查方法解決方案二維碼完全掃不出來尺寸太小計(jì)算模塊物理尺寸加大尺寸或縮短內(nèi)容掃描時(shí)好時(shí)壞邊緣模糊檢查圖片分辨率重新生成高分辨率圖片部分模塊粘連絲印分辨率不足放大Gerber查看加大模塊尺寸掃描器無法識(shí)別靜區(qū)被裁檢查靜區(qū)是否完整保留4個(gè)模塊靜區(qū)底層二維碼掃不出來鏡像問題檢查是否鏡像取消鏡像或放頂層二維碼看不見對(duì)比度不足檢查絲印和阻焊顏色更換絲印顏色5. 進(jìn)階技巧與實(shí)戰(zhàn)經(jīng)驗(yàn)5.1 二維碼內(nèi)容怎么選二維碼的內(nèi)容直接決定了模塊數(shù)量進(jìn)而影響尺寸。我的原則是能短則短。如果只是放一個(gè)序列號(hào)直接編碼文本比如“SN:12345678”不要加“https://”之類的前綴。如果必須放URL用短鏈接服務(wù)縮短。如果放的是文本信息盡量精簡(jiǎn)去掉不必要的空格和換行。有些場(chǎng)景下二維碼需要包含較多信息比如產(chǎn)品型號(hào)、批次號(hào)、生產(chǎn)日期等。這時(shí)候可以考慮用JSON格式壓縮或者用分隔符拼接。但要注意內(nèi)容越長(zhǎng)模塊越多尺寸就要越大。如果板子空間實(shí)在不夠可以考慮把二維碼分成兩個(gè)或者用Data Matrix碼代替。Data Matrix碼在同樣內(nèi)容下模塊數(shù)量更少但立創(chuàng)EDA專業(yè)版對(duì)Data Matrix的支持不如QR碼方便。5.2 批量生成二維碼的腳本如果你需要為不同板子生成不同的二維碼手動(dòng)一個(gè)個(gè)生成太慢了。我寫了一個(gè)Python腳本讀取CSV文件里的序列號(hào)批量生成二維碼圖片并自動(dòng)命名。這樣產(chǎn)線用起來很方便每個(gè)板子對(duì)應(yīng)一個(gè)二維碼。import qrcode import csv import os # 讀取CSV文件假設(shè)第一列是序列號(hào) 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)這個(gè)腳本會(huì)為每個(gè)序列號(hào)生成一張二維碼圖片保存在qrcodes文件夾里。然后你可以在立創(chuàng)EDA專業(yè)版里逐個(gè)導(dǎo)入或者用腳本批量導(dǎo)入。立創(chuàng)EDA專業(yè)版支持腳本擴(kuò)展但批量導(dǎo)入圖片的功能需要自己寫腳本調(diào)用API稍微復(fù)雜一些。如果數(shù)量不多手動(dòng)導(dǎo)入也能接受。5.3 用Altium Designer怎么操作雖然這篇主要講立創(chuàng)EDA專業(yè)版但很多朋友也用Altium Designer。AD里添加二維碼的思路類似但操作步驟不同。AD里可以通過“Place”菜單下的“Image”選項(xiàng)導(dǎo)入圖片然后放到Silk Layer。AD的圖片導(dǎo)入功能支持設(shè)置DPI你可以設(shè)置成和PCB一致的DPI保證尺寸準(zhǔn)確。AD里有一個(gè)好處是可以直接用腳本生成二維碼并放置到絲印層。網(wǎng)上有現(xiàn)成的AD腳本用DelphiScript或者VBScript寫調(diào)用二維碼生成庫(kù)直接在PCB里生成二維碼。這種方式適合批量處理但腳本調(diào)試比較麻煩。如果你只是偶爾放一兩個(gè)二維碼手動(dòng)導(dǎo)入圖片就夠了。5.4 打樣前的最終檢查清單在提交打樣之前我一般會(huì)做以下幾項(xiàng)檢查確保二維碼沒問題用Gerber查看器打開絲印層放大到實(shí)際尺寸確認(rèn)每個(gè)模塊清晰分明用手機(jī)掃描Gerber查看器里的二維碼截圖確認(rèn)能掃出來檢查二維碼的物理尺寸確保每個(gè)模塊不小于0.15mm檢查靜區(qū)是否完整沒有被其他絲印覆蓋檢查二維碼是否離板邊太近至少留1mm邊距檢查絲印顏色和阻焊顏色的對(duì)比度如果是底層絲印確認(rèn)沒有鏡像問題這幾項(xiàng)檢查做完基本就不會(huì)翻車了。我按照這個(gè)流程做了幾十批板子二維碼掃描成功率很高偶爾有掃不出來的都是因?yàn)槌叽缣』蛘邇?nèi)容太長(zhǎng)調(diào)整后就沒問題了。5.5 一個(gè)實(shí)際案例的完整復(fù)盤去年做一個(gè)工業(yè)控制板板子尺寸是50mm x 40mm空間比較緊張??蛻粢笤诎遄由戏乓粋€(gè)二維碼鏈接到產(chǎn)品說明書。說明書URL很長(zhǎng)有80多個(gè)字符。我一開始把二維碼尺寸設(shè)成8mm x 8mm打樣回來發(fā)現(xiàn)掃不出來。用Gerber查看器放大看模塊已經(jīng)糊在一起了。后來我做了兩件事一是用短鏈接服務(wù)把URL縮短到20個(gè)字符以內(nèi)二是把二維碼尺寸加大到12mm x 12mm。重新打樣后掃描成功率100%。這個(gè)案例告訴我內(nèi)容長(zhǎng)度和物理尺寸是兩個(gè)最關(guān)鍵的因素任何一個(gè)沒控制好都會(huì)導(dǎo)致失敗。還有一次客戶要求在底層絲印放二維碼。我導(dǎo)入圖片后忘了取消鏡像打樣回來發(fā)現(xiàn)二維碼是反的怎么都掃不出來。后來在立創(chuàng)EDA專業(yè)版的屬性面板里找到鏡像選項(xiàng)取消后重新導(dǎo)出Gerber問題解決。所以底層絲印的鏡像問題一定要檢查。5.6 絲印工藝參數(shù)的深入理解絲印工藝的分辨率不是一個(gè)固定值它和PCB廠家的設(shè)備、工藝能力有關(guān)。一般來說國(guó)內(nèi)主流PCB廠家的絲印最小線寬是0.15mm有些廠家能做到0.1mm但良率會(huì)下降。如果你對(duì)二維碼的掃描成功率要求很高建議按0.15mm來設(shè)計(jì)留足余量。另外絲印的厚度也會(huì)影響掃描。絲印太厚模塊邊緣會(huì)溢出導(dǎo)致粘連。絲印太薄對(duì)比度不夠掃描器可能識(shí)別不了。這個(gè)參數(shù)一般由PCB廠家控制你可以在下單時(shí)備注“絲印清晰二維碼需可掃描”廠家會(huì)注意的。還有一點(diǎn)阻焊層的顏色也會(huì)影響對(duì)比度。白色絲印在綠色阻焊上對(duì)比度很好但在白色阻焊上就完全看不見。如果你選了白色阻焊絲印要選黑色。但黑色絲印在白色阻焊上的對(duì)比度也不如白色絲印在綠色阻焊上。所以如果二維碼很重要建議選綠色阻焊加白色絲印這是最成熟的組合。6. 常見問題速查與排查技巧6.1 二維碼掃描失敗的快速排查流程當(dāng)你發(fā)現(xiàn)二維碼掃不出來時(shí)不要慌按以下流程排查第一步用Gerber查看器打開絲印層放大到實(shí)際尺寸看模塊是否清晰。如果模塊粘連說明尺寸太小加大尺寸或者縮短內(nèi)容。第二步用手機(jī)掃描Gerber查看器里的二維碼截圖。如果能掃出來說明設(shè)計(jì)沒問題可能是打樣工藝問題。如果掃不出來說明設(shè)計(jì)有問題繼續(xù)排查。第三步檢查二維碼的物理尺寸和模塊數(shù)量計(jì)算每個(gè)模塊的物理尺寸。如果小于0.15mm加大尺寸。第四步檢查靜區(qū)是否完整有沒有被其他絲印覆蓋。第五步檢查絲印顏色和阻焊顏色的對(duì)比度。第六步如果是底層絲印檢查是否鏡像。這個(gè)流程基本能覆蓋90%以上的問題。剩下的10%可能是PCB廠家的工藝問題比如絲印偏移、糊版等。這種情況只能換廠家或者調(diào)整設(shè)計(jì)。6.2 立創(chuàng)EDA專業(yè)版導(dǎo)入圖片的常見報(bào)錯(cuò)立創(chuàng)EDA專業(yè)版導(dǎo)入圖片時(shí)可能會(huì)遇到一些報(bào)錯(cuò)。最常見的是“圖片格式不支持”這時(shí)候檢查圖片格式確保是PNG、JPG或者BMP。如果圖片太大可能會(huì)提示“圖片尺寸過大”這時(shí)候用圖片編輯工具縮小尺寸再導(dǎo)入。還有一個(gè)報(bào)錯(cuò)是“圖片分辨率過低”立創(chuàng)EDA會(huì)提示圖片分辨率不足導(dǎo)入后可能模糊。這時(shí)候重新生成更高分辨率的圖片。我一般會(huì)用1000像素以上的寬度基本不會(huì)報(bào)這個(gè)錯(cuò)。如果導(dǎo)入后圖片顯示不出來檢查是不是被其他元素遮擋了或者層設(shè)置錯(cuò)了。在屬性面板里確認(rèn)層是絲印層并且可見性打開了。6.3 二維碼內(nèi)容編碼的注意事項(xiàng)二維碼支持多種編碼模式包括數(shù)字、字母數(shù)字、字節(jié)和漢字。不同編碼模式下同樣內(nèi)容的模塊數(shù)量不同。數(shù)字模式最緊湊漢字模式最占空間。如果你的內(nèi)容主要是數(shù)字用數(shù)字模式可以顯著減少模塊數(shù)量。如果內(nèi)容包含漢字模塊數(shù)量會(huì)比較多尺寸要相應(yīng)加大。在Python的qrcode庫(kù)中可以指定編碼模式qr.add_data(content, optimize0) # optimize0表示不自動(dòng)優(yōu)化但一般情況下qrcode庫(kù)會(huì)自動(dòng)選擇最優(yōu)編碼模式不用手動(dòng)指定。如果你發(fā)現(xiàn)生成的二維碼模塊數(shù)量比預(yù)期多可以檢查一下內(nèi)容里有沒有特殊字符特殊字符會(huì)強(qiáng)制使用字節(jié)模式增加模塊數(shù)量。6.4 二維碼尺寸與板子空間的平衡板子空間緊張是常態(tài)尤其是小尺寸的板子。如果實(shí)在放不下足夠大的二維碼可以考慮以下方案一是縮短內(nèi)容用短鏈接或者純序列號(hào)。二是把二維碼放在板子背面利用背面的空白區(qū)域。三是把二維碼分成兩個(gè)分別放在不同位置掃描時(shí)分別掃。四是改用Data Matrix碼同樣內(nèi)容下模塊數(shù)量更少。五是如果板子有外殼可以把二維碼印在外殼上不占PCB空間。我一般優(yōu)先考慮縮短內(nèi)容這是最直接有效的方法。一個(gè)20個(gè)字符以內(nèi)的二維碼版本2就夠了25x25個(gè)模塊8mm x 8mm的尺寸就能清晰印出來。如果內(nèi)容超過50個(gè)字符版本至少是4尺寸要12mm以上。6.5 打樣后的驗(yàn)證方法板子打樣回來不要急著焊接先驗(yàn)證二維碼。用手機(jī)掃描一下看能不能掃出來。如果掃不出來用放大鏡或者顯微鏡看絲印檢查模塊是否清晰。如果模塊清晰但掃不出來可能是對(duì)比度問題或者靜區(qū)問題。如果模塊粘連說明尺寸太小。我一般會(huì)準(zhǔn)備一個(gè)備用方案如果二維碼掃不出來就在板子上貼一張打印的二維碼貼紙。雖然丑一點(diǎn)但至少能用。所以設(shè)計(jì)時(shí)可以在二維碼旁邊留一點(diǎn)空白區(qū)域方便貼貼紙。提示打樣時(shí)可以讓廠家提供絲印層的實(shí)際照片提前確認(rèn)二維碼效果。有些廠家支持在線查看絲印效果下單前可以預(yù)覽。7. 個(gè)人經(jīng)驗(yàn)總結(jié)與實(shí)用建議7.1 我踩過的那些坑做了這么多年板子二維碼這個(gè)事我踩過的坑真不少。最早的時(shí)候我把二維碼尺寸設(shè)成6mm x 6mm內(nèi)容是一個(gè)長(zhǎng)URL打樣回來完全掃不出來。后來才知道6mm的二維碼模塊數(shù)量是41x41每個(gè)模塊只有0.146mm已經(jīng)接近絲印工藝的極限了稍微有點(diǎn)偏差就糊了。還有一次我用了一個(gè)在線工具生成二維碼下載的圖片只有200像素寬導(dǎo)入立創(chuàng)EDA后放大到10mm邊緣模糊得一塌糊涂。后來改用Python生成box_size設(shè)成15圖片寬度超過1000像素導(dǎo)入后縮放很清晰掃描成功率大幅提升。底層絲印鏡像的問題我也遇到過。當(dāng)時(shí)客戶要求二維碼放在背面我導(dǎo)入圖片后沒注意鏡像選項(xiàng)打樣回來發(fā)現(xiàn)二維碼是反的。后來在立創(chuàng)EDA專業(yè)版的屬性面板里找到“鏡像”選項(xiàng)取消后重新導(dǎo)出Gerber問題解決。所以底層絲印一定要檢查鏡像。7.2 給新手的三個(gè)建議第一個(gè)建議二維碼尺寸不要小于10mm x 10mm。這是我最保守的建議10mm的二維碼即使內(nèi)容稍長(zhǎng)模塊尺寸也在安全范圍內(nèi)。如果你板子空間實(shí)在不夠可以縮小到8mm但內(nèi)容要控制在20個(gè)字符以內(nèi)。第二個(gè)建議用Python或者可靠的在線工具生成二維碼確保圖片分辨率足夠。不要用手機(jī)截圖或者低分辨率圖片導(dǎo)入后縮放會(huì)模糊。第三個(gè)建議打樣前一定要用Gerber查看器檢查絲印層放大到實(shí)際尺寸看模塊是否清晰。這一步花不了幾分鐘但能避免一批板子報(bào)廢。7.3 后續(xù)可以擴(kuò)展的方向二維碼放好了后續(xù)還可以考慮一些擴(kuò)展玩法。比如在二維碼旁邊加一行文字說明告訴用戶掃碼能獲取什么信息?;蛘哂貌煌伾慕z印區(qū)分不同批次的二維碼。還可以把二維碼和板子的序列號(hào)綁定產(chǎn)線掃碼自動(dòng)錄入系統(tǒng)。如果你做的是開源硬件二維碼可以鏈接到GitHub倉(cāng)庫(kù)或者文檔頁(yè)面方便用戶獲取資料。如果是商業(yè)產(chǎn)品二維碼可以鏈接到售后支持頁(yè)面提升用戶體驗(yàn)。這些擴(kuò)展不需要額外的硬件成本只需要在設(shè)計(jì)階段多花一點(diǎn)心思。我個(gè)人在實(shí)際操作中的體會(huì)是二維碼這個(gè)事看起來簡(jiǎn)單但細(xì)節(jié)很多。尺寸、分辨率、糾錯(cuò)等級(jí)、靜區(qū)、對(duì)比度、鏡像每一個(gè)環(huán)節(jié)都要考慮到。按照我上面說的流程走一遍基本不會(huì)翻車。如果你第一次做建議先打樣一批小批量驗(yàn)證確認(rèn)沒問題再批量生產(chǎn)。