おうちリフローの紹介

以前はホットプレートでのリフローが主流でしたが、基板上面の温度が上がりにくい、加熱のしすぎで基板が変色する等の問題があり、現在では両面加熱可能なトースターやオーブンでのリフローが主流になりました。
今回はオーブンを利用したリフローについて書こうと思います。

オーブン選定

一番重要なのが、実際に加熱を行うオーブンの選定になります。
まずは他の記事で使用されているものを列挙してみました。

型番 メーカー コンベクション機能 出力 値段 リンク
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で行う場合、通常の制御では昇温が間に合わないので少し特殊なことをします。

  1. 160℃コンベクション設定で10分程度運転をする(庫内壁面、内部空気を加温)
  2. 温度が安定してきたら基板を投入し60秒プリヒート
  3. 230℃設定で最大温度まで上げる
  4. はんだが溶けることを確認し15秒保持(目視で焦げないことを確認)
  5. 全面を開けて急速に冷却する。

以上の設定を図で説明すると以下のようになります。

実測データと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機能についても見た目が変わったりしているので再度解説を書きます。

シミュレーション回路の準備

KiCad6のngspiceを使うにあたり回路を準備します。
簡単なトランジスタ増幅回路を題材として扱います。
f:id:gsmcustomeffects:20220116043210p:plain

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

Q1のトランジスタはBC550がKiCadの標準ライブラリに入っているのでそれを使います。

オペアンプトランジスタのようにspice外部モデルを使うようなシンボルはKiCad-ngspice間でピン配置を合わせないといけないのですが後述しますのでとりあえず変更しなくても済むBC550を使用してください。

次に各種シンボルに値を設定してきます。
ダブルクリックか選択+Eでプロパティに入ってもらって下部のSpiceモデル...というボタンをクリックします。
Spiceモデルエディターが開くので好みに設定します。*1
今回は過渡解析をやりたいので画像のように設定しました。
f:id:gsmcustomeffects:20220116045023p:plain



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


f:id:gsmcustomeffects:20220116045450p:plain


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

トランジスタモデルの読み込み

ONSEMIのサイトからBC550のspice modelをダウンロードします。
https://www.onsemi.com/products/discrete-power-modules/general-purpose-and-low-vcesat-transistors/bc550

先ほどと同様にプロパティからSpiceモデルエディタを開きます。
モデルタブからファイルを選択をクリックしてダウンロードしたモデルファイルを読み込みます。

f:id:gsmcustomeffects:20220116053322p:plain

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

シミュレーションの設定

ここではシミュレーションの設定を行います。
KiCad上部メニューよりシミュレータを起動します。
f:id:gsmcustomeffects:20220116054726p:plain

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

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

シミュレーションの実行

実行アイコンをクリックしてシミュレーションを実行します。
信号を追加 or プローブで見たい信号を選びます。

この時KiCad上でノードに名前を付けておくとシミュレーション画面が見やすくなります。
f:id:gsmcustomeffects:20220116055226p:plain

Tipsなど

SpiceとKiCadでシンボルピン番号が違う場合

SpiceのBJTのピンはコレクタ(1)、ベース(2)、エミッタ(3)の順なのでそれ以外のものは代替ノードシーケンスを使う必要があります。
f:id:gsmcustomeffects:20220116070406p:plain

オペアンプの場合

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

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

シミュレーションに含めたくないシンボルの扱い

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

シンボルフィールドテーブルの利用

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

*1:この辺は一般的なSpice(PSpice,LTspice,ngspice)と何ら変わりないので好みの値でやってもらって構いません

HAKKO FX-1003のレビュー

HAKKO FX-1003

f:id:gsmcustomeffects:20211218224125j:plain

今回購入したもの

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

その他高さ調整と開き具合の調節機能があります。
f:id:gsmcustomeffects:20211219000805p:plain

HAKKOのWebショップ , モノタロウなどで購入できます。
FX-100本体はAmazonでも購入できます。
https://amzn.to/3iEbhox

使用感など

文章で書いてもわかりにくいと思うので動画を撮ってみました。
作業対象は0603(1608)抵抗
小手先はT38-03I / I型を使用
www.youtube.com

PyLTSpiceを使用した自動シミュレーション

PyLTspiceについて

nunobrum氏が開発されているLTspiceが出力するファイルを解釈しPython上で扱えるようにするライブラリです。
ネットリスト(.net)の編集、結果ファイル(.raw)の取得、シミュレーションの自動実行などを行うことができます。

内包されているモジュールを以下に示します。

使用準備

PyLTspiceを使用するにあたってシミュレーションする回路が必要になります。
簡単なオペアンプの回路を用意して実行できることを確認しておきます。

Python環境に関しては以下の通りです。

  • python3.8.10
    • matplotlib
    • numpy
    • PyLTspicev 1.6(頻繁にアップデートが入るのでVer間の互換性に注意)

PyLTspiceはpip install PyLTSpiceで導入可能です。

RawRead

まずはLTSpiceが出力する.rawファイルを読み込むのをやってみようと思います。
先ほど用意したオペアンプ回路のin,outを拾ってきてmatplotlibで出力するというものです。

import matplotlib.pyplot as plt
from PyLTSpice.LTSpice_RawRead import LTSpiceRawRead

#.rawファイルを読み込む。
LTR = LTSpiceRawRead(r'D:\LTspice\opamp\opamp.raw')

#LTspiceで使っているラベル類を抜きだす。
print(LTR.get_trace_names())

#.rawファイルの上のほうの情報を抜き出す。
print(LTR.get_raw_property())

#ラベル値を指定してrawファイルからデータを抜き出す。
V001    = LTR.get_trace("V(n001)")
V002    = LTR.get_trace("V(n002)")
x       = LTR.get_trace('time')

#step実行命令がある場合step番号を取得する。
steps   = LTR.get_steps()

fig = plt.figure()

#グラフのプロット
for step in range(len(steps)):
    plt.plot(x.get_time_axis(step), V001.get_wave(step), label="Vin",color="blue")
    plt.plot(x.get_time_axis(step), V002.get_wave(step), label="Vout",color="red")

plt.legend(fontsize=9)
plt.xlabel("time[s]")
plt.ylabel("voltage[V]")
plt.show()

コードを実行すると以下のような波形がプロットされると思います。

LTSpiceBatch使用例

先ほどのシミュレーションでは.rawファイルを読みだすことができたので少し応用的なことをやってみます。
LTSpiceBatchというモジュールを使用してnetlistファイルを編集しバッチコマンドを実行します。

具体的には、R1を10k,20k,30kと変えたときのVoutの値をプロットするというものです。
LTspiceの.stepコマンドで実行できますが、PyLTspiceの使い方を学ぶ例題としてはとらえてもらえたらと思います。

import matplotlib.pyplot as plt
from PyLTSpice.LTSpiceBatch import SimCommander
from PyLTSpice.LTSpice_RawRead import LTSpiceRawRead

# LTspiceの回路ファイルを読み込む
LTC = SimCommander(r'D:\LTspice\opamp\opamp.asc')
fig = plt.figure()
R1list = ['10k','20k','35k','45k','55k']

for i in R1list:
    #netlistの中身を編集する
    LTC.set_component_value('R1', i) 
    LTC.set_component_value('V1','SINE(0 0.1 1000 0)')
    
    #現在のnetlistの情報でバッチ処理を実行する
    a = LTC.circuit_radic
    run_netlist_file = "{}_{}.net".format(LTC.circuit_radic,i)
    LTC.run(run_filename=run_netlist_file)
    LTC.wait_completion()
    LTR = LTSpiceRawRead(LTC.circuit_radic + '_' +str(i) + '.raw')

    #rawファイルよりプロットに必要な情報を取得する
    V001    = LTR.get_trace("V(n001)")
    V002    = LTR.get_trace("V(n002)")
    x       = LTR.get_trace('time')

    #step実行がある場合回数を取得する
    steps   = LTR.get_steps()
    plt.plot(x.get_time_axis(0), V002.get_wave(0), label="Vout , R2 = "+i,color="red")

#netlistを元に戻す
LTC.reset_netlist() 
plt.plot(x.get_time_axis(0), V001.get_wave(0), label="Vin",color="blue")   
plt.legend(fontsize=9)
plt.xlabel("time[s]")
plt.ylabel("voltage[V]")
plt.show()    


このコードではV(n001)のようにデフォルトネットを参照していますが
ltspice上でネットにラベルを付けておくとプログラム上で参照する際にわかりやすいです。

まとめ

PyLTspiceを触ってみましたが、比較的短いコードで設計の効率化ができると感じました。今回の例では込み入ったことをしていませんが、モデルの切り替えなんかもできます。自分の思いつく限りですが実務だと以下の作業でしょうか?

  • 時間のかかるシミュレーションをレシピ化して自動実行させる
  • 回路のオープンショート解析
  • モデルを切り替えてそれぞれのふるまいを確認する

PyLTspice自体は製作者の方が尽力的にコミットメントされ、機能拡充が進んでいくと思われますので今後とも注目してみていきたいと思います。

HAKKO FT-720のレビュー

今回はHAKKO社から新発売となった*1小手先クリーナーFT-720を購入したのでそれのレビューです。
商品の詳細は公式ページを見たほうがわかりやすいと思います。
f:id:gsmcustomeffects:20211007031858j:plain

HAKKO商品ぺージ
https://www.hakko.com/japan/products/hakko_ft720.html

Amazon商品リンク
https://amzn.to/2Yr1POw

使用感など

試しに小手先にはんだがのった状態からクリーナーを使ってみると画像のようにかなりきれいになります。
動作音は思ったより静かです。

f:id:gsmcustomeffects:20211007195615j:plainf:id:gsmcustomeffects:20211007195631j:plain

除去されたはんだは内部にたまるようになっている。
f:id:gsmcustomeffects:20211008013824j:plain

内部は思ったより単純ですね。
IRセンサとドライブ用のTrとDCモータが入っているだけです。

消耗品は内部ブラシでHAKKOオンラインショップで購入できます。
f:id:gsmcustomeffects:20211008014423p:plain

*1:正確にはFT-710のリニューアル

GOKKO MANTRA ISOLATED POWER SUPPLY GK-54

購入したもの

今回紹介するのはGOKKOのMANTRA ISOLATED POWER SUPPLY GK-54です。
商品リンク(https://amzn.to/39wopYj)
f:id:gsmcustomeffects:20210924121331j:plain

説明

特徴としては最近流行りの各出力が独立しているフルアイソレートタイプになります。
仕様は以下の通りです。

  • 入力36W:18V 2A
  • 可変出力1 : 9-12-18V/500mA
  • 可変出力2 : 9-12-15V/500mA
  • 通常出力 : 9V/300mA x 6

こうやって見ると現行風スペックのパワーサプライですが、特筆すべきは値段です。
この記事を書いている2021/09/24現在ではAmazonで3780円でした。

f:id:gsmcustomeffects:20210924124053p:plain

同じようなスペックを持つ機種にVITAL AUDIOのPOWER CARRIER VA-08 MKIIがありますが、それの価格が9280円であることからかなりお買い得であることがわかります。
値段は二倍以上の差がありますが見た目が安っぽいということもなく付属品もしっかりしています。

アダプター、ケーブルはもちろんついているのですが極性反転ケーブルと旧RATに採用されている特殊変換ケーブルもついています。

f:id:gsmcustomeffects:20210924171229j:plainf:id:gsmcustomeffects:20210924171207j:plainf:id:gsmcustomeffects:20210924171218j:plain

内部解析

商品紹介だけではこのブログ読者には申し訳ないので内部も見ていくことにします。
f:id:gsmcustomeffects:20210924171707j:plain

まずは基板全体を眺めてみます。

f:id:gsmcustomeffects:20210924193817j:plainf:id:gsmcustomeffects:20210924193804j:plain

スカスカな中身を予想したのですが、しっかりと回路が組まれていそうです。
トランスが2つあり1つ当たり4出力(可変出力 x 1 + 9V x 3)を作っているみたいです。
もう少し詳しく見ていきます。

トランス一時側の回路

まずトランス1次側の回路ですがXKT-801という制御ICとXKT-1511というドライバ素子で構成されています。

f:id:gsmcustomeffects:20210925083055j:plainf:id:gsmcustomeffects:20210925083058j:plain

データシートは見つけられなかったのですがググるとAliexpressで販売されているワイヤレス給電モジュールが出てきます。
f:id:gsmcustomeffects:20210925083429p:plain

ワイヤレス給電も一般に使用されているものでは磁界結合方式です。
トランスを使った絶縁コンバータも同じような仕組みで動いているので組めなくはないと思いますが、コイルの結合係数が違うので同様の使い方していいのかなと気になりました。

トランス二次側の回路

次にトランス二次側を見ていきます。
トランス一次側から送られてきた電力をブリッジダイオード(MB2S)で整流し可変レギュレータ(LM317G)でドロップし9Vを作っています。
f:id:gsmcustomeffects:20210925084603j:plain

可変出力側は、XLSEMIのXL4001というBuckコンバータICが使用されています。
このICはAliexpressとかで売っているDCDCモジュールに載ってる定番ICなので聞いたことがあるかもしれません。
f:id:gsmcustomeffects:20210925084608j:plain

まとめ

ワイヤレス給電系の回路が使われてたり一部??な部分もありましたが値段にしてはすごくよくできているなと感じました。
オールアイソレート出力にもなっているのでどうやってこの価格叩き出してるんだ?と思うばかりです。
以前MXRのiso-brickを解析した記事を出しましたが、ほとんどが中華ICになっていたころを考えると、最先端プロセスを使わないようなICは置き換わっていくのでしょう。

GK-54に似たような製品としてVITAL AUDIOのVA-08 MKⅡ、FIREGLOW PPS-1がありますが、出力数・可変出力の操作部も同じことからOEMということなんでしょう。

f:id:gsmcustomeffects:20210925092952p:plainf:id:gsmcustomeffects:20210925092936p:plain

巷ではこれらはすべてVitoosという深センの楽器メーカーOEMであると噂がされていますが中身を全て確認したわけではないので真偽は定かはないです。

おまけ

おまけ程度にこういうこともできますというのを紹介して終わろうと思います。
USBPDという規格が登場してからUSB端子から5~20Vの電圧を出せるようになったのですがそれを使った使用例みたいな感じです。
EUのほうではType-C標準過激派が話題ですが楽器界隈でもこういうのが広がるとよりスマートになるのかなと思います。

f:id:gsmcustomeffects:20210925094630p:plain

USB PD充電器によって取り出せる電圧が決まっておりどれでもつなげるわけじゃないということに注意して下さい(どうしてもやりたいという方はUSB PDについて学習することを勧めます。)
GK-54は18V/2Aが要求されているので画像のような使用方法は使用範囲外です。
またZOOMのMS50gも500mA定格なので仕様上で言えばオーバーです。
筆者は実験前提で購入しているのでくれぐれも真似をしないようにお願いします。
くどいですがメーカー仕様範囲外での事故や故障などには一切の責任を負いませんのでご留意ください