LoginSignup
15

KiCadのプラグインKiKitを使って面付けし、JLCPCBに発注する

Last updated at Posted at 2022-12-16

その後..

 KiCad 7においてもKikitは利用可能です。アップデートにより面付けのパラメータにも細かな変更がありますが、この記事はアップデートできておりません。その後、以下の経験をしました。

(1) Import JSON configuration

 パラメータ設定において、以前セーブしたJSONファイルを読み込むことが可能です。思わぬ設定ミスで悩むことになるので、別のプリント基板のJSONを読み込むことは避けた方がよいと思います。項目は多いですが設定が必要な項目は少ないので、新規設計のプリント基板には最初から設定した方が間違いが少ないと思います。

(2) Post - millradius

 Post - millradiusを例えば1mmと設定すると、プリント基板の外形の凹んだ部分(ポケット)のR=1mm以上に修正されます。JLCPCBのパネライズ仕様ではパネル間スペースは2mm以上必要とあります。製造上の都合からも、R=1mmで元のプリント基板の外形を設計すべきでした。

 元の基板
スクリーンショット 2023-10-20 120849.png

 millradius=1mmとして面付け
スクリーンショット 2023-10-20 115222.png

概要

  • JLCPCBのEconomic PCBAサービスの枚数制限緩和にはMouse bitesによる面付けが有効です。
  • KiCad 6のKiKitプラグインでMouse bitesによる面付けを自動化できます。
  • JLCPCBのPCBAオーダーのページで、BOMやPick&Placeを修正できます。

1. はじめに

 プリント基板(PCB) の量産では、コスト削減のため複数のPCBを集めて1枚にまとめる 面付け(Panelization) が一般的です。PCB製造業者は、枚数の少ない試作サービスなど、異なる依頼元の複数のPCBを1枚の大きな板に面付けし効率化している様です。依頼元レベルでは、面付け済の製造データを製造業者に渡すことによって、製造業者から見た実質的な製造枚数を減らすことができます。30枚以下など少量の場合は、基板の大きさによる価格上昇や格安サービスの適用可否などの条件が絡んで必ずしも価格的なメリットは得られない様です。
 PCB実装(PCBA)サービス では、PCBA作業が依頼元の製造データ単位になります。面付けにより製造業者の提供する格安サービスの枚数制限を緩和できます。
 面付けに限りませんが、PCBに 捨て基板(frame, edge rails) を設けることができます。PCBの端まで部品を実装できる様になり、製造業者が付与する識別記号や製造に必要な位置決め用の穴や基準マーク(fiducial)を捨て基板に追い出すことができます。

  • PCB(Printed Circuit Board)
  • PCBA(PCB Assembly)

2. JLCPCBで面付け

 JLCPCB1は中国のPCB製造業者です。Makersを対象としたPCB/PCBA試作サービスも充実していて、依頼元による面付けにも対応しています。個々のPCBを切り出すための形状としては、V-cut2Mouse bites3が規定されています。

V-cut

 PCBを折り取る溝(V-cut)を作り込みます。V-cut専用の機械へ投入するため、面付け済基板の最小サイズ(70×70mm)が規定されています。面付け済基板の水平または垂直方向で端から端までの直線の溝にする必要があります。折り取ったPCBの端面に毛羽立ちが残ります。
examplePanel2.png

 **PCBの角を丸くするなどV-cutを曲線の接線にするには工夫が必要です。**PCB間の外形加工に必要な隙間には最小値(2mm)があります。PCB間に捨て基板を設け、捨て基板との接線にV-cutを設けるなどの方策があります。これらは依頼元が製造データに作り込む必要があります。
examplePanel3.png

Mouse bites

 PCB間に隙間を設け、PCB間をtabで接続します。tabに切手の様な小さな穴(stamp-hole)で切り取り線を作り込みます。PCB間の隙間の最小値(2mm)、tabの長さの最小値(5mm)、stamp-holeの推奨値(大きさ0.5-0.8mm, 隙間0.2-0.3mm)が規定されています。tabを折り取った跡にギザギザが残ります。ギザギザを外形線内に収めるためにはstamp-holeをPCB内に引っ込める必要があります。外形を滑らかにする場合は、stamp-holeをPCBの外に出してギザギザをグラインダーなどで削ります。
examplePanel6.png

Frame, Edge rails

 PCBAで使用するチップマウンタやリフロー装置のガイドレールに載せるため、edge railsの幅の最小値(3mm)が規定されています。JLCPCBでedge railsを付加する場合は5mmとあります。
 面付け済基板の4辺をedge railsで囲む場合は、edge railsにも最初に折り取るためのstamp-holeが必要です。
examplePanel10.png

PCB製造での面付け指定

 依頼元が面付け済みの製造データを提供する方法(Panel by Customer)とJLCPCBに面付けを依頼する方法(Panel by JLCPCB)があります。"Panel by Customer"はそのまま製造されます。"Panel by JLCPCB"はV-cutのみであり、四角や丸などのシンプルな外形に限られます。PCBは隙間ゼロで並べられます。丸い形状もV-cutとの接する部分の滑らかさについては妥協が必要と思います。
スクリーンショット 2022-12-12 091111a.jpg

Economic PCBAサービスでの面付け条件

 Economic PCBA4は、実装は片面のみで50枚以下(条件に依っては30枚以下)などの制限付きの格安サービスです。面付けできるのはMouse bitesのみ です。したがって、"Panel by Customer"である必要があります。
 edge railsは必須ではありません。edge railsがない場合、JLCPCBが識別記号や位置決め用の穴をPCB上に追加します。edge railsがある場合、これらをedge rails上に追加します。
 面付け済基板はedge railsを含め最大250x250mmです。

JLCPCBでの面付けのまとめ

 Economic PCBAサービスの枚数制限(30-50枚)を超える場合、Mouse bitesによって250x250mm以下に面付けしたデータを依頼元が作成する必要があります。

3. KiCad 6

 KiCad EDA5は、無料で使用可能なPCB CADソフトウェアで、Makersにも広く普及しています。最新のKiCad 6に対応する説明書としては、公式ドキュメントのほかに「Kosaka.Lab.出版掛」提供の 『KiCad Basics for 6』6を利用しています。

  • CAD(Computer Aided Disign)
  • EDA(Electronic Design Automation)

4. KiKit

 KiKit7はKiCadのプラグインです。機能の1つが面付けです。examples.md8に具体的でわかりやすい説明があり、画像を引用しています。『KiCad Basics for 6』6にも説明があります。

インストール

 KiKitのInstallation9の説明に従い、Pythonパッケージをインストールします。以下はWindows11の例で、KiCad Command Promptでpip install kikitを実行します。
スクリーンショット 2022-12-14 112858.jpg
スクリーンショット 2022-12-14 112940.jpg

続いて、「プラグインとコンテンツマネージャーPCM(Plugin and Content Manager)」でダウンロード、インストールを行います。
スクリーンショット 2022-12-12 213216.jpg

Mouse bitesによる面付け

 面付けの設定をGUIで行う説明がpanelizeGui.md10にあります。個々の設定項目の説明は、panelizeCli.md11 にあります。

GUI(Graphical User Interface)
CLI(Command Line Interface)

5. Kikitによる面付けの例

(1)PCBの準備

 具体例として以下のPCBをKiKitのGUIで面付けしてみます。面付けに先立ち、PCBの外形線からはみ出しているシルクを、面付けしたPCBに被らない様に修正 しました。PCBエディタ上でのfootprint修正は、このPCBのみに反映されます。
スクリーンショット 2022-12-14 113714.jpg

(2)面付けプロジェクトの新規作成と面付けの開始

 面付け済の基板データは、新規プロジェクトとして作成します。新規プロジェクトでPCBエディターを起動し、"KiKit: Panelize PCB"アイコンをクリックします。
スクリーンショット 2022-12-15 194347a.jpg

(3)面付けの指定

 現れたPanelizeの設定メニューに入力していきます。

Input

 面付けの元となるPCBの設計データファイル名(xxx.kicad_pcb)を指定します。

Layout

 面付け数とPCB間の隙間の長さをJLCPCBにおける最小値2mmに指定します。元のPCBが50x50mmなのでJLCPCBにおける最大250x250mmに対して4x4まで面付けできそうです。今回は4行3列としています。PCB間に捨て基板(背骨)を設ける場合の設定項目が多いです。背骨を設けないので指定する項目は4項目のみです。

ID 意味 指定 備考
type 面付け形状 grid 格子状(default)
alternation 隣接するPCBの向き none 向きの変更なし(default)
hspace 横方向のPCB間隙 2mm JLCPCBにおける最小値(2mm)以上
vspace 縦方向のPCB間隙 2mm JLCPCBにおける最小値(2mm)以上
hbackbone 横方向の背骨の幅 0mm 背骨なし(default)
vbackbone 縦方向の背骨の幅 0mm 背骨なし(default)
hboneskip 横方向の背骨の間隔 0 背骨なし(default)
vboneskip 縦方向の背骨の間隔 0 背骨なし(default)
rotation PCBの回転 0deg 回転なし(default)
rows v方向の面付け数 4 JLCPCBにおける基板最大値(250mm)に収まる枚数
cols h方向の面付け数 3 JLCPCBにおける基板最大値(250mm)に収まる枚数
vbonecut 縦方向の背骨の切り込み True 背骨なし(default)
hbonecut 横方向の背骨の切り込み True 背骨なし(default)
renamenet netの付け替え Board_{n}-{orig} 付け替えあり(default)
renameref referenceの付け替え {orig} 付け替えなし(default)
baketext text変数への代入 True (default)

Source

 元PCBを取り込む際の設定です。デフォルトのままです。

ID 意味 指定 備考
type 面付け元PCBの外形 auto 自動検出(default)
tolerance 面付け元PCBの外形への周囲追加 1mm (default)
stack PCBの導体層数 inerit 面付け元PCBを継承(default)

スクリーンショット 2022-12-15 195159a.jpg

Tabs

 PCB間やframe(edge rails)との間をつなぐtabの形状としては、単純なFixedを使っています。tabの長さはJLCPCBにおけるMouse bites使用時の最小値5mmとします。PCBあたりのtabの数もデフォルトの1個としています。

ID 意味 指定 備考
type tabの形状 fixed 固定tab
vwidth 縦方向のtabの長さ 5mm JLCPCBにおける最小値(5mm)以上
hwidth 横方向のtabの長さ 5mm JLCPCBにおける最小値(5mm)以上
mindistance tabの最小間隔 0mm (default)
vcount 縦方向のtabの元PCBあたりの数 1 (default)
hcount 縦方向のtabの元PCBあたりの数 1 (default)
cutout PCB外形の切り欠きに対応するtab側の切り欠き 1mm (default)

Cuts

 切り離し方法としてMouse bitesを指定します。JLCPCBの推奨範囲に従いドリル0.5mmとし、間隔は0.2-0.3mmになるように試行した結果、spacingを0.74mmとしました。Mouse bitesをPCBの外側に出すことにし、offsetをドリル径の半分外側の-0.25mmとします。tabの形状を加工しやすい形状とするため、prolongを1mmとします。PCBの間隙が2mmなのでtabの外形は半円弧になります。

ID 意味 指定 備考
type 切り離し方法 mousebites Mouse bites
drill ドリル径 0.5mm JLCPCBの指定範囲0.5-0.8mm(default)
spacing ドリル間隔 0.74mm JLCPCBの指定範囲0.2-0.3mmに収まる値を試行
offset 穴あけ位置 -0.25mm PCB内側がプラス、外側がマイナス
prolong tabからPCB外形への接続距離 1mm PCB間隙の半分

Framing

 frame(edge rails)を設定します。強度確保のため4辺にframeを設けることとします。PCBとの間隙はPCB間と同じJLCPCBの最小値2mmとします。frameの幅は、JLCPCBの最小値3mmに対し、JLCPCBが付加する場合の5mmとします。面付け基板の大きさの最小値はクリアしています。4辺を囲むためframeにもMouse bitesが必要です。縦横いずれか一方でよいと思われます。frame外形の面取りまたはフィレット(丸み付け)は、チップマウンタやリフロー装置のレール上で引っかかることなくスムーズに流れるために推奨されています。frameの幅を考慮してフィレット5mmを指定します。

ID 意味 指定 備考
type frameの形状 frame 4辺
hspace 横方向のframeとの間隙 2mm JLCPCBにおける最小値(2mm)以上(default)
vspace 縦方向のframeとの間隙 2mm JLCPCBにおける最小値(2mm)以上(default)
width frameの幅 5mm JLCPCBにおける最小値(3mm)以上(default)
mintotalhight 面付け基板の高さの最小値 0mm 指定なし(default)
mintotalwidth 面付け基板の幅の最小値 0mm 指定なし(default)
cuts frameのMouse bites h 横方向に作成
chamfer frame外側の面取り 0mm 指定なし(default)
fillet frame外形のフィレット 5mm frameの幅以下

スクリーンショット 2022-12-15 195218a.jpg

Tooling, fiducials

 位置決め用の穴、基準マーク(fiducial)は製造上の仕様に合わせる必要があります。JLCPCBに追加を任せることにします。

Text, Text2, Text3, Text4

 frameにシルクの文字列を追加できます。特に使用していません。JLCPCBが整理記号を追加します。

Copperfill

 PCB外の領域を銅箔で覆う処理は、使用していません。frameやtabについては後のPostで処理できます。

スクリーンショット 2022-12-15 195232a.jpg

Page

 面取り基板生成後の、図面への反映方法を設定します。図面サイズtypeをA3とします。それ以外はデフォルトのままです。

Post

 最終処理の指定です。copperfillをTrueにします。frame(edge rails)やtabに銅箔を満たします。frameの強度を改善するとともにエッチング液の劣化を減らします。millradiusを1mmとします。ルーター加工のミル径が考慮されframeの内側にアールが形成されます。

Debug

 すべてデフォルトとします。
スクリーンショット 2022-12-15 195801a.jpg

(4)面付けの実行

 以上の設定でPanelizeボタンをクリックすると面付け済基板が生成されます。この状態で、DRCも実行することができます。ただし、回路図との整合性はチェックできません。面付け前のPCBの段階でDRCを確認しておく必要があります。

スクリーンショット 2022-12-15 203953.jpg
スクリーンショット 2022-12-15 204331.jpg

6. JLCPCBへのオーダーの例

 kikitにも製造データの出力機能がありますが、JLCPCBに関しては、JLCPCB Fabrication ToolKitを使うのが便利です。回路図がなくてもPCBAに必要なファイルを生成できます。製造データはproductionフォルダに出力されます。
スクリーンショット 2022-12-15 215014.jpg

gerber.zip

 JLCPCBのPCBオーダーのページでadd gerber fileとしてこのままアップロードできます。bom.csv, position.csvなども含まれますが問題なく無視される様です。
 データ量が大きくなると基板イメージが表示されない場合があります。この場合、Dimensionsに面付け後の基板の外形を正確に入力します。枚数も面付け後の基板単位です。面付けの情報(Different Design, Deliverly Format, Panel Format)も入力します。その他の項目も必要に応じて修正します。
スクリーンショット 2022-12-16 093923a.jpg

bom.csv, positions.csv

 JLCPCBのPCBAオーダーのページで部品表(BOM)やPick&Placeファイルをアップロードします。bom.csv、positions.csvは面付け済基板全体の情報を含むComplete Fileです。

  • BOM(Bill of Materials)

スクリーンショット 2022-12-16 094313a.jpg

部品選択の確認・修正

 Select Partsページで選択された部品を確認します。bom.csvのLCSC Part#(JLCPCB Part#)欄に指定がない場合は自動で選択されます。
スクリーンショット 2022-12-16 095211.jpg
スクリーンショット 2022-12-16 095225.jpg

 部品が自動選択不能、在庫不足、あるいは部品を変更したい場合、このページで修正できます。以下の例は選択された部品B5819W(C64885)を、Basic PartsであるB5819W SL(C8598)に選択しなおす様子です。Basic Partsは手数料が発生せず、一般に在庫が潤沢で安価です。
スクリーンショット 2022-12-16 100519.jpg

 PCBAを繰り返す場合、部品の確認作業と修正作業が毎回発生するのは煩雑ですので、bom.csvにおいてLCSC Part#欄で部品を指定します。

部品配置の確認・修正

 bom.csv、positions.csvの情報が基板の完成イメージでQuoteページに表示されます。
スクリーンショット 2022-12-16 105449.jpg

 3ピンおよび8ピンの部品の向きが基板のパッドと合っていません。
スクリーンショット 2022-12-16 110907.jpg

 Alignボタン[A]をクリックすると、パッドにピンを載せる様に部品を回転します。3ピンの部品はきれいにパッドに載りました。
スクリーンショット 2022-12-16 110928.jpg

 しかし、8ピンの部品はピン1の位置があっておらず180°回転させる必要があります。部品を複数選択するにはCTRLキーを押しながらクリックします。部品をその場で回転させるためRotate Left/Rightボタンを押します。ちなみにAll Rotate Left/Rightボタンは、選択した部品をグループ化して回転します。
スクリーンショット 2022-12-16 114159.jpg

 PCBAを繰り返す場合、修正作業が毎回発生するのは煩雑ですので、**positions.csvにおいてRotation欄の値を修正しておきます。

7. まとめ

 KiCadもプラグインもJLCPCBも日々改善され、便利な機能が新たに提供されています。現状、手作業が必要な個所も近い将来は自動化されることでしょう。これからも新たな機能を有効活用していきたいと思います。

  1. JLCPCB

  2. JLCPCB: FAQs > Capabilities & Technology > PCB Panelization

  3. JLCPCB: PCB Manufacturing & Assembly Capabilities > PCB > Panelization

  4. JLCPCB: PCB Manufacturing & Assembly Capabilities > PCB Assembly

  5. KiCad EDA

  6. KiCad 6 入門実習テキスト『KiCad Basics for 6』 2

  7. GitHub: yaqwsx/KiKit

  8. GitHub: KiKit examples.md

  9. GitHub: KiKit installation.md

  10. GitHub: KiKit panelizeGuia.md

  11. GitHub: KiKit panelizeCli.md

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15