KiCad7のSpice機能で回路シミュレーションを行う
2023/02/12にKiCad7.0.0がリリースされました。
それに伴いspice機能も扱いやすくなっていますのでやり方などをメモがてら書こうと思います。
2024/8/15 KiCad8向けに書き直しましたので今後はこちらを参照願います
gsmcustomeffects.hatenablog.com
回路図の準備
シミュレーションを行う回路図を準備します。
前回同様にNPNトランジスタの増幅回路を例題として扱います。KiCad7.0の回路エディタを開いて同じように回路を作成してください。

この時NPNトランジスタはSimulation_SPICE内のシンボルを使用します。

次に信号源と電源を配置していきます。
この時SPICEの基準となる0シンボルを置くのを忘れないでください。

一通り配置し終わるとこのような形になります。

次に信号源、電源のパラメーター設定をしていきます。

次にトランジスタのモデルを設定します。
今回は例としてRohmさんのBC847を使用させていただきます。ダウンロードしたモデルは解凍して今使用しているKiCadプロジェクト直下に置いておくと扱いやすいです。

モデルの設定はトランジスタのプロパティを開き、シミュレーションモデルから詳細画面を開きます。初期状態ではGummel-Poonモデルの初期パラメータが入っているので先ほどダウンロードしたモデルを読み込みます。

最後にピン割り当てタブに切り替えてKiCad上のシンボル並びとシミュレーションモデルのピン順番が正しいことを確認します。*1

ここまでで回路上の設定は終了になります。
シミュレーション
次にシミュレーションを行うための設定をします。まず上部アイコンよりシミュレータを起動します。コマンドアイコンをクリックし行いたいシミュレーションの設定をします。今回は過渡応答をやってみることにします。

設定が終了したらOKをクリックし実行します。実行後信号を追加し見たい波形を確認します。うまくシミュレーションできていれば以下のような波形が表示されるはずです。

以上がKiCad7でSPICEシミュレーションを行う方法になります。
Tipsなど
以下本文に書ききれなかったTipsなどをまとめましたので参考にしてもらえればと思います。
書籍、ドキュメントなど
解析手法やモデルなどを知りたい場合は以下の2冊がおすすめです。
コマンドなど詳しい話はngspiceやKiCadのドキュメントを参考にするとよいと思います。
2点間の電圧測定
記事ではGND基準のシングルエンド信号を観測する方法を紹介しましたが、2点間の電圧を見たい場合もあると思います。
KiCad7のspiceにはVOLTMETER_DIFFという測定エレメントがあり、差電圧を出力することができます。
使い方としては以下のように回路をつなぎます。

次に少し修正が必要になります。
2022/03/04時点のStable Release KiCad7.0.0ではこの操作をしないとエラーが出ました。nightly buildでは必要ないかもしれません
VOLTMETER_DIFFは内部的に${KICAD7_SYMBOL_DIR}/Simulation_SPICE.spを使用しているがKiCad7.0.0の${KICAD7_SYMBOL_DIR}にはそのファイルが入っていません。
KiCadのGitlabから最新の該当ファイルを持ってくる必要があります。
KiCad / KiCad Libraries / KiCad Symbols · GitLab
- Simulation_SPICE.kicad_sym
- Simulation_SPICE.sp
上記2つのファイルをダウンロードし${KICAD7_SYMBOL_DIR}内のファイルと置き換えてください。
あとは通常通りシミュレーションを行うと波形が表示されると思います。

トランスを扱う方法
トランスはLTspiceなどと同様にK1 L1 L2 coeffで書くことができます。(coeffは結合係数のことであり0~1.0)

インダクタを二つ配置してそれぞれにインダクタンス値をセットします。トランスとして扱う場合極性があるのでピン番号表示のチェックしておいた方が良いです。

次にテキストでSpiceコマンドを直打ちします。

シミュレーション画面を開きカスタムタブで回路図から指令をロードします。

あとの操作は同様で通常通り波形表示できます。

メーカーが提供しているsubcktモデルを読み込む方法もあります。(ピン対応に注意)

JFETモデルを読み込む際の注意点
JFETモデルを読み込む際にこのようなエラーが出ることがあります。

これはngspice内でJFETモデルが2つ用意されているためでlevel指定をする必要があります。OnsemiのJ201を例に示しますが、NJFの後にlevel = 1という文字を追記する必要があります。
.MODEL J201 NJF level =1(Beta=1.621m Betatce=-500m Rd=1 Rs=1 Lambda=2.236m Vto=-600m Vtotc=-2.5m Is=114.5f Isr=1.091p N=1 Nr=2 Xti=3 Alpha=506.8u Vk=251.7 Cgd=4.667p M=227.1m Pb=500m Fc=500m Cgs=2.992p Kf=0.6042f Af=1)
より詳しい話はngspiceドキュメントの9章JFETsを参照ください。
外部SPICEモデルの管理方法
外部SPICEモデルメーカーのHPに別々に配布されていますが一つにまとめることもできます。私はJFETならmy_jfet.libというようにデバイスごとにまとめています。

KiCad上ではこのようにプルダウンで選ぶことができます。

*1:KiCad6では代替ノードシーケンスと呼ばれていたものになります。
FNIRSI HS-01のレビュー
FNIRSI HS-01
今回はFNIRSIのHS-01を購入しましたのでそれのレビューになります。

電子タバコのようなスタイリッシュな見た目をしていますが、USB PD給電のはんだごてになります。付属品は購入形態にもよりますが、小手先、簡易的なこて台、barrel jack - Type-C変換がついてきます。私は7000円ぐらいの小手先一式がついてくるものを購入しました。
詳しくは公式ストアの説明を見ていただけたらと思います。
HS-01 購入ページリンク
スペック、使用感など
スペックですが、9,12,15,20Vに対応しており最近の急速充電対応のアダプタであれば駆動できます。ただ初期設定が20Vをトリガするようにできており、対応していないアダプタの場合起動にコケる場合もあるようです。(設定でデフォルト電圧を変更可能)
アダプタとケーブル付きのモデルもありますが、海外コンセント仕様なので本体だけを購入しアダプタとケーブルはAmazonなどで買うのが良いと思います。
私は以下の環境で動作確認をしています。
- ANKER Nano2 65W (https://amzn.to/3EwHCZz)
- Cable Matters Thunderbolt3ケーブル(https://amzn.to/3Kt81LO)
説明が長くなってしまいましたが早速使っていきます。

電源を入れるとスタンバイモードになります。
UIに従ってボタンを押すと加温が開始されます。
尚この状態で両方のボタンを同時押しすると設定モードへいけます。ここで温度やスリープ遷移時間、利き腕などを設定しておくと後々楽です。

加温時は40W~60Wで急速に加温し通常使用時は7~15Wぐらいで保たれるようです。

実際の使用感はこのような感じです。
350℃設定で熱量も十分ですし結構ぬるぬる溶けます。使用した半田は弘輝のS3X-72M 0.8mmです。
www.youtube.com
その他の機能として一定時間使用がないとヒータを切るスリープモード(80℃)を装備しています。内部に加速度センサが内蔵されており手に取ると再び加温が始まります。

その他製品とオープンソースでの取り組み
これまでFNIRSI HS-01の紹介をしてきましたが、他のPDはんだごてについても触れておこうと思います。現在販売されているものでは、以下の3つが有名かと思います。
このような製品が多く出回っている背景にはオープンソースプロジェクトの発展があげられます。
PINE64のPinecilもオープンソースで開発されており、PINE64のWikiに回路図が公開されています。ファームウェアはRalim氏が開発されているIronOSというものが使用されています。Pinecil V2ではPD EPRに対応するなど精力的に開発が進められています。
まとめ
今回はFNIRSIのHS-01というUSB PD給電のはんだごてを紹介しました。耐久性はわかりませんが、デザイン、性能ともに素晴らしい製品だと思いました。こういった製品がものすごい速度で出てくるあたり中国の開発力は流石だなと思うばかりです。
現状FNIRSIのHS-01は公式ファームのみのサポートですが、IronOSに対応して新しい機能が追加されていくのに期待したいです。個人的にはホールセンサを搭載しこて台に置いた際にスリープする機能が欲しかったりします。
というわけでPD対応はんだごての紹介でした。
FNIRSI FNB-58のレビュー
FNIRSI FNB-58
今回はUSB PD3.1トリガ+アナライザーであるFNIRSI FNB-58を購入しましたのでそれのレビューになります。
購入はAliexpressのFNIRSI Official storeで6500円程度でした。




液晶もかなり解像度が高く良いものが使用されているようです。
その他の機能については公式ストアを確認してもらえればと思います。
Aliexpress FNB-58 Store page
PDトリガで電圧を取り出してみる
PD SourceとしてはANKERのNanoⅡ 65Wを使用します。PDOは5.0V=3.0A / 9.0V=3.0A / 15.0V=3.0A / 20.0V=3.25A (最大 65W)に対応しているみたいです。
実験構成は以下のものを使用しました。
| 名前 | メーカー | 値段 | 説明 | 販売リンク |
| Hantek 2D72 | Hantek | 25000円 | テスター | https://amzn.to/3k5zDvN |
| Treedix Type-C Breakout | Treedix | 1090円 | Type-C Breakoutボード | https://amzn.to/3XECcTi |
| NanoⅡ 65W | ANKER | 4490円 | アダプタ | https://amzn.to/3Shueyf |
| U2C-CCPE20NBK | ELECOM | 2655円 | PD EPRケーブル*1 | https://amzn.to/3IwLHzy |
ここでType-CのBreakoutボードに改造が必要なります。具体的にはCCピンに5.1kのついているのでこれをはがします。

5V,9V,15V,20Vを取り出した時の様子がこちらです。多少の電圧誤差はありますが正しくトリガできているようです。ここら辺はケーブルの電圧降下とテスターの誤差なんかもあるので細かく言及しないことにします。




PDトリガはアダプタを騙すような動作をするので負荷側を外しても電圧は出たままになります。このまま別のデバイスをつながないように注意してください

PD3.0 PPSトリガを使ってみる
FNB-58はPPSトリガにも対応しているのでそちらも利用してみます。アダプターはUGREENのNexode 45W(https://amzn.to/3EjJiFU)を使います。PPSで3.3-11Vに対応しているようです。

トリガのやり方としてはPDOの時と同様に一覧に出てくるので選択すればよいです。PPSの規格上20mV単位で設定できるようですが、FNB-58では100mV単位での設定しかできないようです。PPSトリガを行った際の様子を以下に示します。

見た感じ7.6Vをしっかりと出力できているようです。PPS規格はスマートフォンの充電を効率的に行うように策定されたものですが、ここまで細かく出せるとなると電子工作での応用も期待できます。
まとめ
今回はFNIRSIのFNB-58というPDトリガデバイスを使ってみました。PPSトリガに対応していたり、電流モニタ、E-marker検出機能もついているので6500円するのも頷けます。
ハードウエア、ソフトウエアも非常に良く作りこまれていますし電子工作をやる方は持っていてもよいと思う一品でした。
最後に記事で紹介している実験はある程度の電気知識を持ち合わせていることを前提としています。安全に留意し自己責任で行うようにしてください。
*1:EPRケーブルを使用していますがEPR対応である必要はないです。
おうちリフローの紹介
以前はホットプレートでのリフローが主流でしたが、基板上面の温度が上がりにくい、加熱のしすぎで基板が変色する等の問題があり、現在では両面加熱可能なトースターやオーブンでのリフローが主流になりました。
今回はオーブンを利用したリフローについて書こうと思います。
オーブン選定
一番重要なのが、実際に加熱を行うオーブンの選定になります。
まずは他の記事で使用されているものを列挙してみました。
| 型番 | メーカー | コンベクション機能 | 出力 | 値段 | リンク |
|---|---|---|---|---|---|
| NT-T501-H | Panasonic | なし | 1200W | 8000円 | https://amzn.to/3RWqRfa |
| TSF601K-C | TESCOM | あり | 1200W | 13000円 | https://amzn.to/3R0w98k |
| TSF61A-H | TESCOM | あり | 1200W | 16500円 | https://amzn.to/3WJDcVy |
| ST-2D251 | シロカ | あり | 1400W | 14080円 | https://amzn.to/3DmKFD5 |
| ST-2D451 | シロカ | あり | 1400W | 19,800円 | https://amzn.to/3kRezc9 |
数あるオーブンの中でどれを選べばよいのかということですが、コンベクション機能のあるものが人気のようです。
コンベクション機能は、内部にファンが搭載されており熱対流が可能になります。この機能があると大きめの基板をリフローしたときにも歩留まりがよくなるようです。
私は先人の教えに従いコンベクション機能のあるTSF61A-Hを使用しています。

ペーストはんだ選定
次にペーストはんだの選定になります。
おうちリフローは家庭で行う前提なので、鉛フリー品を用いることをお勧めします。
鉛フリー品を列挙すると以下のようなものがあります。*1
| 配合率 | 温度 | 備考 |
|---|---|---|
| Sn96.5/Ag3.0/Cu0.5 | 217 | 業界スタンダード |
| Sn96.5/Ag0.3/Cu0.7 | 217 | 多少安価 |
| Sn42/Bi58 | 138 | ビスマス含有のスタンダード |
| Sn64.0/Bi35.0/Ag1.0 | 183 | ビスマス+銀 |
数ある中で個人的におすすめなのが、ChipquickのTS391SNLというものです。
このペーストはNo Refrigeration Requiredとあるように冷蔵保存しなくてよく、12か月保管できるのでコスパが良いです。この商品はType4(20-38μm)のペーストなのでピッチが細かいものでも印刷が安定します。(シリンジ印刷でも詰まりにくい)
Sn/Biタイプ(TS391LT250)もあるので低温でやりたい方は、そちらを購入してください

リフロー手順の説明
オーブンのテスト(初回のみ)
温度制御があるとはいえ、オーブンの実力把握的な試験を行うことをお勧めします。
160℃、230℃各種設定でデータを計測した結果が以下になります。。

データから以下のことがわかります。
- 25℃~160℃程度までは昇温レートが同等。
- 多少のオーバーシュートがある
- 180℃~250℃で昇温レートが鈍る。
ペーストはんだの印刷
ステンシルにはんだを載せる前にスクレーパーナイフでよく撹拌し、印刷前の粘度を調整します。このひと手間で印刷品質がかなり向上します。

次にはんだをステンシルに盛ります。
この時取り出す量をケチらないのが印刷成功のコツになります。

次にペーストの印刷を行います。
印刷には金属スキージを使います。

印刷が終わるとこのような形になります。

QFNの部分もうまくいっています。

部品を載せる
次に部品を載せていきます。
ICなど狭ピッチのものは特に注意して載せてください。抵抗、コンデンサなどは多少ずれてもセルフアラインメントが効くので気にしないことにします。

リフローを行う
次にリフローを行います。
いろいろテスト感じSn96.5/Ag3.0/Cu0.5で行う場合、通常の制御では昇温が間に合わないので少し特殊なことをします。
- 160℃コンベクション設定で10分程度運転をする(庫内壁面、内部空気を加温)
- 温度が安定してきたら基板を投入し60秒プリヒート
- 230℃設定で最大温度まで上げる
- はんだが溶けることを確認し15秒保持(目視で焦げないことを確認)
- 全面を開けて急速に冷却する。
以上の設定を図で説明すると以下のようになります。

実測データとSAC305プロファイルを比較したのが以下のグラフです。

設定パラメータはあくまで目安なので目視ではんだが溶けていること、焦げていないことを確認するようにしてください。
洗浄
基板の汚れが気になるようであれば、基板の洗浄を行います。

完成
最後にスルーホール部品をなどをはんだ付けすると完成になります。

比較的難しいとされるQFNチップも問題なくリフローできています。

まとめ
今回はおうちリフローについて情報をまとめてみました。
現在は3~5万だせば専用のリフローオーブンを買えるようになっていますが、稼働率を考えたときに5万は厳しいと思うので、7000~14000円で買えるオーブンリフローはちょうど良い選択肢なのかもしれません。
消耗品の管理も意外と大変なので実装数が増えてきたらPCBAを利用するのが良いと思います。
というわけで私のリフロー環境の紹介でした。
何か質問などがあればコメントでお願いします。
その他Tips
記事中で紹介できなかった部分がいくつかあったので、Tipsとしてつらつら書こうと思います。
あったら便利なものまとめ
| 商品名 | メーカー | 金額 | 用途 | 商品リンク |
| スクレーパーナイフ | YIHUA | 100円 | ペースト攪拌用 | link |
| 金属スキージ | ?? | 1800円 | ペースト印刷用 | link |
| イソプロピルアルコール | ガレージ・ゼロ | 1400円 | 洗浄剤 | https://amzn.to/3xLzr8j |
| 洗浄ビン | アズワン | 1267円 | 器具洗浄 | https://amzn.to/3ROV1jI |
| ニトリル手袋 | 大晶株式会社 | 1380円 | 保護具 | https://amzn.to/3RT4KFr |
| アルミバット | パール金属 | 560円 | 器具洗浄、保管用 | https://amzn.to/3CiNMuI |
| 熱電対温度計 | uxcell | 3480円 | 温度確認用 | https://amzn.to/3ROhw8p |
| 耐熱熱電対プローブ | uxcell | 800円 | 温度確認用 | https://amzn.to/3fgKe4d |
サイドボールの発生について
リフローの条件が悪かったりマスクの設計が悪かったりするとサイドボールが多発します。ここでは、悪い例(左の画像)と比較的うまくいった例(右の画像)を紹介します。(クリックで拡大可能)


発生原因はまちまちですが、昇温がもたつくとと起こりやすいような気がします。
プロファイルとしては画像の部分になります。

勝手な憶測ですが、フラックスの粘度が低下しはんだがだれてしまう、フラックスが先に飛んでしまい粒子同士の保持力がなくなるということが考えられます。その他の原因としては、部品をマウントするときに強く載せてしまい印刷した半田が広がってしまうというのもありそうです。

実装道場さんでは、マスク開口について検討をされており非常に参考になります。
チップサイドボールについて - 実装道場
*1:一番スタンダードなのがSAC305(Sn96.5/Ag3.0/Cu0.5)と呼ばれているものになります。 Biタイプは138℃という低温でリフローできるので、炉の加温能力が低い場合には選択肢に入ると思います。 Sn96.5/Ag3.0/Cu0.5かBi/Snどちらを選ぶかは好みなので自分が動作条件に合うものを選べばいいと思います。
KiCad6のSpice機能で回路シミュレーションを行う方法
2021年12月にKiCad6 Stableが公開されてUI含め大きな変更がありました。
Spice機能についても見た目が変わったりしているので再度解説を書きます。
KiCad8向けに書き直しましたので今後はこちらを参照願います
gsmcustomeffects.hatenablog.com
シミュレーション回路の準備
KiCad6のngspiceを使うにあたり回路を準備します。
簡単なトランジスタ増幅回路を題材として扱います。

抵抗、コンデンサは通常通りのものを配置します。
信号源はSpiceシンボルを配置します。
Spice信号源シンボルですが、シンボル配置検索ウィンドウでspiceと打つと出てきます。
ここではVSINとVDCを使います。

Q1のトランジスタはBC550がKiCadの標準ライブラリに入っているのでそれを使います。
※オペアンプやトランジスタのようにspice外部モデルを使うようなシンボルはKiCad-ngspice間でピン配置を合わせないといけないのですが後述しますのでとりあえず変更しなくても済むBC550を使用してください。
次に各種シンボルに値を設定してきます。
ダブルクリックか選択+Eでプロパティに入ってもらって下部のSpiceモデル...というボタンをクリックします。
Spiceモデルエディターが開くので好みに設定します。*1
今回は過渡解析をやりたいので画像のように設定しました。

うまく設定ができるとシンボルフィールドにSpiceに関するパラメータが入ります。

DC信号源も同じように設定します。
抵抗コンデンサも同様に処理しますが、KiCadのValueフィールドとSpice_Modelフィールドが自動連動してないので注意してください。
あとは回路図上のすべての素子に対してSpice_Modelフィールドを設定していきます。

トランジスタモデルの読み込み
ONSEMIのサイトからBC550のspice modelをダウンロードします。
https://www.onsemi.com/products/discrete-power-modules/general-purpose-and-low-vcesat-transistors/bc550
先ほどと同様にプロパティからSpiceモデルエディタを開きます。
モデルタブからファイルを選択をクリックしてダウンロードしたモデルファイルを読み込みます。

ここで注欄にシンボルピンのナンバリングが要求されたSPICEのピン順と一致しませんという文字が出てきますが、修正の必要のないシンボルでも出てくるのでおそらくBugかと思います。BC550はピン順がコレクタ、ベース、エミッタの順なので修正の必要なし
シミュレーションの設定
ここではシミュレーションの設定を行います。
KiCad上部メニューよりシミュレータを起動します。

シミュレータウィンドウが起動するのでパラメータアイコンをクリックします。

各自シミュレーションの設定を行います。
今回は過渡応答を行うので以下のように設定しました。
互換モードは基本PspiceとLTspiceを選んでおくとエラーが起こりにくいです。

シミュレーションの実行
実行アイコンをクリックしてシミュレーションを実行します。
信号を追加 or プローブで見たい信号を選びます。
この時KiCad上でノードに名前を付けておくとシミュレーション画面が見やすくなります。

Tipsなど
SpiceとKiCadでシンボルピン番号が違う場合
SpiceのBJTのピンはコレクタ(1)、ベース(2)、エミッタ(3)の順なのでそれ以外のものは代替ノードシーケンスを使う必要があります。

オペアンプの場合
オペアンプの場合は多回路入りを使うとノードでバグるのでSPICE専用シンボルを使うことになります。
実際の回路を作るときは多回路入りに戻すことになるので多少めんどいです。

代替ノードシーケンスはトランジスタと同様でSPICE側のピンに合わせます。

シミュレーションに含めたくないシンボルの扱い
シミュレーションに含めたくないシンボルもあると思います。
その場合はシミュレーションでシンボルを無効化にチェックを入れることで回避できます。

シンボルフィールドテーブルの利用
一個一個設定するのがめんどくさい方はシンボルフィールドテーブルを使うとまとめて管理できる。

HAKKO FX-1003のレビュー
HAKKO FX-1003

今回購入したもの
HAKKO FX-100のオプション小手先FX-1003です。
特徴としては、ピンセット型のはんだごてでSMDパーツを外すのに便利です。
購入形態としてこて台付きのFX1003-82(¥27,500(税込))と本体のみのFX1003-81(¥17,600(税込))があります。
小手先は別売りですので別途購入が必要になります。
その他高さ調整と開き具合の調節機能があります。

HAKKOのWebショップ , モノタロウなどで購入できます。
FX-100本体はAmazonでも購入できます。
https://amzn.to/3iEbhox
使用感など
文章で書いてもわかりにくいと思うので動画を撮ってみました。
作業対象は0603(1608)抵抗
小手先はT38-03I / I型を使用
www.youtube.com
