$99のオープンソースなロジック・アナライザ DSLogic Proを使ってみたところかなり良かった

2017年1月9日月曜日

前回: ハード開発で詰みが見えたので、やすうまロジック・アナライザを探した

TL; DR

  • $99のオープンソースなロジック・アナライザ DSLogic Proを購入し、使ってみた
  • 製品は注文から2週間ほどで届き、未署名ドライバの壁はあるもののトリガー込みできちんと動作した
  • 信号キャプチャ→デコード確認のためArduino Pro Miniに対するUSBシリアル書き込み(UART)をデコードしてみた
    • 調歩同期式のUARTでは正しいbaud rateを見つけるのが割と大変
  • 想定通りに動作したので満足しました。これから使っていけそう
図1 DSLogic Proで信号をキャプチャしているところ

発送から到着まで

12/13の晩に注文したところ、同深夜に「配送トラブル時のために電話番号を教えてほしい」というメールが届きました。電話番号を連絡するついでに、住所表記の一部が漢字だったのでアルファベット表記で発送してほしい旨を返信しました。
DreamSourceLabは決済だけではなくショッピング管理全体にPayPalを使っているようで、12/27にPayPalから荷物トラッキング番号の通知メールが届きました。
日本での配送は安定の郵便局で、トラッキング情報は次の通りでした。
  • 2016/12/15 19:55 引受 (CHINA)
  • 2016/12/16 14:59 国際交換局から発送 (GUANGZHOU, CHINA)
  • 2016/12/26 07:11 国際交換局に到着 (川崎東郵便局, 神奈川県)
  • 2016/12/27 09:00 通関手続中 (川崎東郵便局, 神奈川県)
  • 2016/12/27 09:56 国際交換局から発送 (川崎東郵便局, 神奈川県)
  • 2016/12/27 23:54 到着 (最寄り局)
2週間弱で最寄り局着ですね、China Post系としては一般的な日数です。以前Twitterに書いた時は3週間弱かかったと書きましたがこれは勘違いでした。12/27の晩に最寄り局へ到着、翌日配達(不在持ち戻り)となりましたが、結局コミケ(C91)の1日目が終わってから引き取りに行きました。

波形ビューア: DSViewのインストール

基本的にWindows用のセットアップ手順へ従います。
ダウンロードした0.96をインストールします。
特にドライバのインストールでハネられることもなく終わりました。そんなばかな。

DSLogic用ドライバのインストール

前述のインストール手順はWindows 8までをカバーしますが、手元環境はWindows 10なので少々手順にアレンジが必要です。
まずDSViewのインストール先を見たところ、ファイルはコピーされていました。
図2 DSLogic用のドライバディレクトリ
この状態なら、Windows 10でやたら強固になった未署名ドライバのインストール制限を回避すれば使えそうですね。当然、仕事用PCでやるべきことではないので注意してください。
手順はhttp://pasofami.game.coocan.jp/Win10_DrvIns.htmに従いました。
一通りの回避設定をして前述の場所にあるdpinst-amd64.exeを実行したところ、次の画面が表示されました。
図3 未署名ドライバの警告
ちなみに回避設定をしない状態だとインストールが強制中断されます(スクリーンショットを残していませんが)。ドライバをインストールしないと話が進まないので、今回は「このドライバー ソフトウェアをインストールします」を選択して続けます。
図4 ドライバのインストールが完了
さて、ドライバをインストールしたら諸々の回避設定を元に戻します。TESTSIGNINGをOFFにしてもきちんと動作するか否かはドライバ依存な気がしますが、DSLogicのドライバは問題なく動作し続けました。めでたしめでたし、です。
ドライバのインストール後にDSLogic ProをUSB接続すると、次のダイアログが出ます。よかったですね。
図5 ドライバがうまく入ってる雰囲気

DSViewの起動とDSLogic Proのセルフテスト

DSViewを起動したら、ひとまず簡単な動作確認をしてみます。
図6 DSViewの起動直後
DSLogic Pro側にセルフテスト用の仕組みが備わっているので、まずはそれを使います。
DSLogicのチュートリアルから多少画面が変わっていますがノリで。Optionsを開いてInternal Testを雰囲気で実行します。0番ピンから15番ピンにかけて信号間隔が広がっていく結果が出ればokです。
図7 DSLogic Proのセルフテスト結果

DSLogic ProでArduino書き込み時のシリアル通信をダンプする

内部信号を使うセルフテストは通ったので、次は外部信号を実際にキャプチャしたいところです。ロジアナを使うの自体が初めてなので、クリップ設置が難しくないターゲットでお手軽に動作確認したいという気持ちもあります。
そこで、ちょうど目の前にあったArduino Pro Mini互換機へUSBシリアル変換モジュール経由でファームウェアを書き込む通信をダンプしてみることにしました。
秋月のFT232RL USBシリアル変換モジュールにつないだPro Mini互換機です。かわいいですね。
気持ちでプローブをつなぎ、気持ちでUARTのデコードまで試してみました。
図8 気持ちの結果(うまく動作していない)
サンプリングレートとサンプル数の設定をいくつか変更してみたところ、いずれもきちんと動作していそうでした(RLE付きの圧縮保存系は未確認)。
一見きちんと動作していますが、ここでのデコード結果はデタラメです。バイナリエディタで書き込み対象のArduinoスケッチを開いてバイト列の一致を探したところ、一切見つかりませんでした。
しばらく試行錯誤した後に、もしや通信速度(baud rate)が合っていないのではないかと考えました。Arduinoの書き込みに内部で利用されているavrdudeはbaud rateを割と好きに変更できます。
Arduino IDEの書き込みログを詳細表示へ切り替えて確認したところ、案の定57600指定になっていました。
図9 baud rate = 57600
そういうわけで1MHz-16Mサンプル取得を指定してデコーダのオプションを次のように設定しました。
図10 UARTデコーダの設定
baud rate以外は、Data formatをasciiからhexへ変更しただけで他はデフォルト値のままです。
デコード設定の変更はダイアログを閉じるとすぐに反映されるので、データの再取得は必要ありません。baud rate指定に対して取得済みデータのレートが低すぎる場合には警告が表示されます。最低でもbaud rateの4倍は必要なようで(サンプリング定理の都合というよりは、信号立ち上がり位置の正確な検出にはよく4倍と言われるあれでしょうか)、今回のbaud rate = 57600では200kHzまで怒られて500kHzから通りました。
今回はDSLogic Pro上のDRAMにキャプチャ済みデータを一旦全て溜め込んでキャプチャ終了後にホストPCへ転送するBuffer Modeを利用しました。さきのレート計算によると115,200bpsの通信も500kHzで収まるので、よくあるシリアル通信であれば64Mサンプルめいっぱい使って131秒間キャプチャできる計算です。優秀ですね。
逐次ホストへキャプチャデータをストリーム転送するStream Modeでは(16ch時10MHz、8ch時25MHzの制約はあるものの)データ量制限がある程度緩和されます。しかしディスク容量の限りキャプチャできるかというとそういうわけではなく、DSView側の制限で512Mサンプルまでしか指定できません。更に、512Mサンプル取得を指定してキャプチャを実行するとメモリ確保エラーが発生します。32bitアプリ・・・。このあたりは必要と思う人がいじって拡張すればよいという感じでしょうか。
本題に戻ります。正しいbaud rateを指定してデコードしたところ図11のとおり、キャプチャした信号をデコードした結果と書き込み対象ファームウェアのバイナリの一部が一致することを確認できました。キャプチャ成功です。
図11 ファームウェア書き込みのキャプチャ結果
調歩同期式のUARTでは設定baud rateが合っていなくてもそれなりに正しそうな誤ったデータへとデコードできてしまうので、baud rateをなんとか調べて合わせるのが重要という教訓を得ました。
I2Cのように常時クロック信号が出ているものなら高レートでクロック信号をキャプチャするだけで実レートの推測が可能なはずですが、UARTだと微妙に面倒ですね。ソフトとデコーダによっては高レートキャプチャしたデータからbaud rateをそれなりの精度で推測してくれそうですが、どうなんでしょう(その後にGuess bitrateというデコーダがDSView内にあるのを見つけたので、今度使ってみます)。それとも信号線のstart bitを見つけた時点で信号サイクルの逆数から通信レートを察するのが基礎技能なんでしょうか。
さて、その後にDTR信号線の立ち上がり/立ち下がりにトリガーを仕込んでのデータキャプチャも試してみました。Arduino IDEの場合、画面上の書き込みボタンを叩くと再度コンパイルから走るためキャプチャタイミングを図りづらいのですが、トリガーがあると無駄に巨大データをキャプチャせずに済みますね。DSViewのUI上で信号線にトリガーオプションを付けるだけで、期待通り必要な部分のサンプリングをおこなえました。

今後

DSView(というか元のPulseView+プラグイン群)ではSPI通信のデコーダ(図12)など、プロトコル解析機能が割と充実しているので開発の中で順次試していこうと思っています。
図12 SPIのデコードオプション

まとめ

$99のオープンソースなロジック・アナライザ DSLogic Proを購入し、使ってみました。
製品は2週間ほどで届き、未署名ドライバの壁はあるもののトリガー込みできちんと動作しました。
手軽なキャプチャ→デコード確認用にArduino Pro Miniに対するUSBシリアル書き込み(UART)をデコードしてみました。
調歩同期式のUARTでは設定baud rateが合っていなくてもそれなりに正しそうな誤ったデータへとデコードできてしまうので、baud rateをなんとか調べて合わせるのが重要です。
想定通りに動作したので満足しました。これから使っていけそうです。

ハード開発で詰みが見えたので、やすうまロジック・アナライザを探した

2017年1月6日金曜日

基板上の信号が見えない

昨年末に同人ハードウェア製作をしていたのですが、自前設計の基板に正しく信号が流れているのか確認するのに苦労することが何度かありました。
これまでは安いテスター1本でやってきたのですが、さすがに限界かなということでオシロスコープ(オシロ)やロジック・アナライザ(ロジアナ)の導入を検討しました。

オシロを買うかロジアナを買うか

信号がきっちり出ていることを確認したいという意味では、オシロの範疇に思えます。回路や基板の設計をやっていると、たとえばI2Cでのプルアップ抵抗値と信号波形の関係を把握しつつ試行錯誤するケースがあります。そのような場合にロジアナではどうにもなりません(ロジアナのA/D変換部分で4-8bit程度の出力をするMSO風オプションがあっても良い気はしますが)。
しかし、私が扱うのは基本的にデジタル信号です。迷ったら両方買えという格言がありますが、このあたりの高額機材をポンポン買っていては身が持ちません。扱っている信号種別はSPIやI2Cのようにスタンダードなものが多く、それらをいかにサクッと検証できるかを重視すべきと考えました。
ということで今回はロジアナを買うことにしました。格好良くいえばデジタル側に軸足を置くみたいな話ですが、アナログ側で本格的に詰まったら結局半泣きで秋月へ駆け込んでオシロも買うと思います。

安価で機能の充実したロジアナ探し

1万円~2万円あたりの(製品ドメインとしては)手頃なロジアナを求める人は昔から居て、一定は先人のレールがあるようでした。検討の過程で上がってきたものをいくつか書き残しておきます。
AliExpressもざっと見てみましたが、ライセンス的に危うそうなSaleae製品のコピー商品が多いと感じたのでやめました。

ZEROPLUS 64kb 16ch 100MHz

秋月で売っているZEROPLUSロジックアナライザ64kビット16ch100M LAP−C(16064)は割と良さそうでした。2万円は予算オーバーですが、調べた限りハード・ソフト共に評判が結構良い製品です。しかし発売から6年経っていることから、もう少し新しいアーキテクチャで確保可能なデータ量も多い製品があるのではないかと考えました。

1万円ロジアナ自作キット

一部界隈で有名なカメレオンUSBの方のロジックアナライザキットもあります(ました)。あまりこの方面の手組みはしたくないなと思って見送りました。

Sigrok: オープンソースの信号分析ソフト

ここで少々目をソフトに転じました。信号をキャプチャするハードを安価に揃えられても、信号を解釈してデータダンプするにはソフトが必須です。
いくらか探してみて見つかったのがSigrokというオシロとロジアナの両方の機能を持つオープンソースの信号分析ソフト(というか信号分析基盤)です。幅広いロジアナをサポートし、それなりに幅広い信号種をサポートするという素晴らしさです。

Sigrokと組み合わせる前提の廉価ロジアナ

Sigrok wikiのCategory:Open source hardwareでいくつかの製品が紹介されています。
20MHz駆動のPICに32KBのSRAMを4つ組み合わせるというゴリ押しみの高いLogic Shrimpが割とツボでした(実用性はさておき)。
AndroidとがっちゃんこしたOsciPrimeも面白そうでしたがオシロはひとまず買わないことにしたのと、値が張るので回避しました。
この界隈ではFPGAをベースとするロジアナの老舗SUMP.ORGがあり、これに基づいたボードが数種類存在するようでした。たとえば$50のOpen Workbench Logic Snifferです。割と良さそうですね。
秋月ではXilinxのSpartan系開発ボードであるPapilioシリーズに対するロジアナ拡張であるPapilio FPGA Logic Analyzer Tools Kitも扱っています。

DSLogic Pro

そんな中で見つけたのがDreamSourceLabのDSLogic Proです。元々は2013年末頃のKickstarter案件だったようです。
製品ポイントをまとめると:
  • 最大サンプリングレート: 4チャネル400MHz
    • 16チャネル時は100MHz
  • 内蔵バッファメモリサイズ: 256Mbit
  • ソフト: Sigrokのカスタム版+自前ビューア
    • Windows/Mac OS X/Linux用ドライバ提供
    • ビューアはSigrokのPulseViewベース
  • 直販で買えばクリップ10個付き送料込み$99
ということで、きちんと動いてくれればかなりお買い得な製品だと感じました。似た価格帯でオープンソースなものとそうでないものがある場合、オープンソースなものを選んだほうが何かと嬉しいですし。
ビューアのGitHubリポジトリ: DSViewを見た感じ、最近メンテスピードが落ちているようですがそれなりの品質には到達していそうです。
そういうわけでサイト直販のPayPal払いで2016年12月13日の晩に注文しました。
次回は製品が無事に届いて実際に動作を確認した話です。

よなよなリフロー: レギュレータMIC5524-3.3V その2

2016年11月30日水曜日

よなよなリフロー: 極小レギュレータ MIC5524-3.3Vと同じパーツ・基板です。
この寸法のパーツもなるべく扱いたいので、手慣らしがてらやりました。
今回はパーツ配置上の工夫と、問題が顕在化した「ステンシルの保存」について概要を書きます。リフローと動作確認は前回と同じなので省略します。

配置上の工夫

前回のリフロー作業時にはパーツ中央をピンセットでつまんでターゲットの真上から降ろしていくスタイルで配置しました。
今回は他の方法を試してみたかったので、まずパーツをつまむ位置を中央から片端へと変えました。そして、基板に対して平行にパーツを降ろしていく方法ではなく、先に片端をソルダーペーストに接触させた後でパーツを離してトンッと置いてみました。
パーツ中央をつまんで平行に降ろす方法だとピンセットを開いてもなかなかパーツが離れずにパーツ位置がズレてしまうケースがあるため試してみた策で、これは位置の目算を誤らなければ割といい精度で置けそうです。パーツ配置作業の後半まで基板面が見えるというメリットもあるので、これで安定すると嬉しいところですが、目算を誤るとソルダーペーストを拭き取って塗り直しなので大変です。

ステンシルのメンテと保存状態の重要性

ステンシルは構造上ソルダーペーストが穴に残りがちです。今回は食品用の消毒アルコールとティッシュペーパーを使って拭き取っていました。
しかしこれだけでは不十分でした。1週間ほど経ってまた同じ基板をリフローしようという段になって、今回の拭き漏らしソルダーペーストが0.25x0.32mmのステンシル穴に詰まっていると気付きました。その時には既にかなり硬くなっており、ソルダーペーストで上面から押し込むようにしてもなかなかうまく抜けてくれませんでした。
この話はだいぶ長くなるので回を改めて書きますが、ステンシル利用直後にマメなクリーニングをすべきというのが今のところの結論です。手間はかかりますが、ソルダーペーストが詰まって固まると本当に厄介でボードの出来に大きく響いてくるため重要ポイントです。
事前に自宅リフローについて調べた際にあまりこの方面の情報は見つかりませんでした。
理由を推察するに
  • 自宅リフローで主流の紙系(ユポ紙系)ステンシルは原則的に使い捨て用
  • 詰まりが問題になるような0.3mm平方前後の小さな穴をカッティングシートで実現するのが困難
  • そもそもステンシルを中途半端なクリーニング状態で1週間以上放置して再度利用することがまれ(?)
このあたりでしょうか。

手作業リフロー向きの部品形状・寸法について考えた

紆余曲折あって結論は「MIC5524-x.xYMTの寸法のパーツ(TIのX2SON-4なども同様)を多用するとソルダーペースト塗り・リフローの両面で歩留まりを悪化させるので当面は避ける」と落ち着きました。今回の試作品についてはステンシル用に書いたパターンが今ひとつ良くないのも原因のひとつですが、それを差し引いても結構難易度の高いパッケージという印象です。
何よりもこの寸法・パッド形状のパーツはリフロー工程で失敗した際にリワークするのが困難です。リワークの難しさはボード全体の歩留まり悪化に直結します。手作業リフローではなるべくミスを起こしづらく、リワークが可能なパーツを選定すべきだと考えています。
とりわけ、部品点数が10以上あって部分的な失敗が全体に響く構造のボードであれば、以下のポリシーで運用すると安定しそうです。
  • 抵抗・コンデンサは0603(1608; 1.6x0.8mm)品で問題ない
    • 配置を詰めすぎるとピンセット実装が大変なので、その点には注意
  • IC/LSIはなるべく0.5mm以上ピッチ・角丸0.25x0.8mm以上パッドのパーツを選ぶ
    • なるべく、側面にランドの露出しているQFNパッケージ(および類似品)を選ぶ
    • まだBGAはスキル的に無理。特に、リフロー機材選択時に両面部品実装の筋は捨てているので当面考えない
  • レギュレータはTLV713のSOT-23(5)パッケージ品(0.95mmピッチ・0.55x1mmパッド)などを利用する
    • TLV713シリーズは入出力コンデンサ不要ながらも安価なのがとても良い
    • 出力が150mAで不足する場合は400mA出力のTPS736シリーズなどを検討する(しかし内蔵コンデンサの大容量化によるものか、値段が250円程度まで上がるので可能なら避けたい)
    • 諦めて入出力コンデンサを配置する場合はRohmのDUxxSD5シリーズが手頃(50円程度)でよさそうだが未検証
ボードの極端な小型化は製造難易度を上げて歩留まりを悪化させるので、ほどほどで諦めるのも重要だと実感しました。どういうことをすれば費用的・時間的に「高くつく」かが見えてきたのは自宅リフロー1ヶ月目の大きな収穫です。

よなよなリフロー: PIC16F753-I/ML(その2)

2016年11月29日火曜日

前回のよなよなリフロー: PIC16F753-I/MLでうまくいったものと同じ構成です。このチップはリフローの練習用と割り切って安価なものを入手しているので、色々な方法を試しつつスライムを安定して殴れるような水準まで早く行きたいところです。
が、今回は残念ながらパッド間でブリッジしてしまいました。

ピン間でブリッジしてしまった悲しさと対策検討


図1 ピン間でブリッジしてしまった
実はこの2ピンはNCなので外部的な問題はありません。内部でもおそらく結線されていないので問題ないと思いますが、やはり気持ちの良いものではありません。
失敗原因として、パーツを置いてから多少ピンセットで触って位置合わせをしたことが挙げられます。前回ピンセットでのパーツ位置の調整が割とうまくいったため、そのノリでやりすぎたかもしれません。当初のペースト乗りがきちんとしていても、あまり横移動させると当然ブリッジしやすくなりますからね…。
他の原因も検討してみます。写真で仕上がりを見比べると、前回のものよりも今回のほうがピン全体的にハンダの乗りが多いためペースト分量が多かったと考えられます。これに作業プロセスによる影響が大きそうです。
今のところ基板上へ載せるペースト量を抑え気味にし、プラスチックのカードで何度もステンシル面をゴリゴリと往復して各パッドへペーストを詰めるようにしています。これは少々やり過ぎで、ステンシルと基板の間の微妙な隙間へペーストがにじみ出る格好になっているかもしれません。ある程度多めにペーストを置き、プラ片でサッと全体へ塗ったほうがうまくいく可能性が高い気がしてきました。
もう一つ有力な原因として、基板面がステンシル面から浮きやすいというのがあります。この基板は複数の基板を面付けしてミシン目カット用に仕上げたものなので、当然ペーストを塗ったそばから基板を切り離していきます。
今回の作業時点で、本基板からレギュレータ1/2とPIC16Fその1を切り離した後で、基板面が割と空いていました。基板を固定用の基板で囲んだ上にステンシルを載せるというフローを採っていますが、基板面がスカスカだとステンシルが面として安定せず湾曲してしまいます。
こう考えると、ステンシル自体をサブ基板用に切り分けたほうが安定するのかなーという気もしました。しかし0.12mm厚とはいえステンレスの加工は割と鬼門で、たわませずに切り分けるのは結構難しいと思います。最初から切り分け前提でミシン目状に穴あけをしておき、ニッパー/ニブラーで簡単に切り離せるような形状もアリかもしれません。しかしElecrow側で製造上の負荷が大きなものは断られる可能性が高いのに加え、デザインルールに準拠した設計が可能か要確認です。
短期的な方法としては、他のサブ基板を取り外して空いたエリアを適当な基板片で埋める策が考えられます。大体Elecrowで注文すると1-2枚余分に納品されてくるので、それぞれ見比べてシルク印刷がズレているものやスルーホール位置が怪しいものを穴埋め専用基板として使うとよさそうです。

リワーク…

この時は残念ながら手動でリワークのための機材が不足していました。具体的には、致命的なことにハンダ吸い取り線の手持ちを切らしていました。
物は試しとデザインナイフで端子間をブリッジしているハンダをなるべく削り取って再リフローしてみました。あまりハンダ形状は変わっていませんでした。一度目でフラックスが揮発しているのでこのような振る舞いなのかな、と少々興味は湧きましたが。

動作確認

その後、PICkit3互換機を入手してMPLAB IPEを利用したところ、問題なくチップ情報を読み取って書き込みも確認できました。

よなよなリフロー: PIC16F753-I/ML

2016年11月17日木曜日

よなよなリフロー: 極小レギュレータ MIC5524-3.3Vと同じタイミングでリフローしました。
リフローの練習用と割り切れる価格帯のチップを探していて見つけたものです。Mouserで1つ127円でした。100円前後で16ピン程度の小規模QFNパッケージ品を探していてぴったりとマッチしたので購入しました。
基板は図1のとおりで、16/14ピンの電源部分にパスコンを入れたのがほのかな進化ポイントです。本当は300mil幅に仕上げたかったのですが、端子・配線・電源用コンデンサの都合上難しかったため400mil幅にしました。
図1 基板設計

前略リフロー

図2 リフロー結果(+ピンヘッダのハンダ付け)
よなよなリフロー: 極小レギュレータ MIC5524-3.3Vの回に書いた、ステンシル上の位置合わせ用コンデンサ穴が役に立ちました。想像以上にうまくいっています。
可能な限りの接点テストをおこなったところ、電気的にも問題なさそうです。テスターを順に当てていったところ14/15ピンが通電しておらず焦ったのですが、そもそも共にNCなのでピンヘッダ側へ配線を出しておらず問題ないというオチでした。
しかし、基板表面の写真を無理やり撮っていると、だんだんとマイクロスコープが欲しくなってきますね。

動作確認はまだ

さすがにPICライターなしでは手軽に確認できないので、確認は別のタイミングでおこないます。

よなよなリフロー: Lattice iCE40LP384(失敗)

2016年11月16日水曜日

最近中国資本が13億ドルで米Lattice Semiconductorの買収を計画の記事で話題になった、LatticeのFPGAです。
32ピンとFPGAにしては少ないピン数で5mm角というほどほどの扱いやすさを感じたので入手してみました(図1)。Mouserで1つ190円ぐらいです。
図1 iCE40LP384チップの外観

基板

0.5mmピッチQFNパッケージなので手ハンダが厳しく、ステンシルを作ってソルダーペースト塗布→リフローの流れで作ろうと考えました。チップを45度回して四方へいい感じに信号線が伸びる基板に多少のあこがれがあったので、今回はブレッドボード用のブレークアウトボードを作ってみました。
Elecrowで通常注文し、8日ほどで到着しました。
図2 届いたブレークアウトボード

初ステンシル

実は今回のものは私が最初に作ったステンシルです。実際に使う順序はよなよなリフロー: 極小レギュレータ MIC5524-3.3Vのほうが先になりましたが、基板アートワーク作業/発注/到着すべてこちらのほうが早く、しばし寝かせていました。
前回の記事で書いたようにユポ紙ステンシルを使わないと決めています。このため、とにかくKiCad→ステンシル→ソルダーペースト塗り→リフローの流れの不明点を早く潰していかないと先々が不安でした。
多くのPCB製造会社ではステンシル作成費用がかさむようですが、Elecrowは$16.00で15x15cmまでのステンシルを作成してくれます。この値ごろ感もあり、初回注文分は最悪使えなくても勉強になればよし(当然、事前に可能な限りの確認作業はする)という気持ちで注文しました。

パーツ実装

最終的なパーツ配置イメージは図3です。
図3 ソルダーペーストなしで仮位置合わせをした
前回のリフローで多少は経験値がたまったので挑戦してみましたが、難しかったです。前回は基板の端に位置合わせ用の無駄チップコンデンサ(C0603)を配置していましたが、今回使ったステンシルはそのような知恵を見出す前の世代のものです。
5mm角チップとそのパッド位置のみを頼りにしてステンシルの位置を合わせるのはとても難しいと感じました。
図4 1度目
隣同士でベタッとくっついてしまっている場所があります。ペーストを拭ってやり直し。
図5 2度目
やはりくっついてしまっている箇所があるのと、斜めにズレたためやり直し。
図6 3度目
ペーストの量はほどほど良さそうですが、塗れていない(抜けていない)パッドがあったのと斜めになっているのでやり直し。
図7 4度目
完全にズレた。
と、4回失敗しました。このままリフローまで強引に進めても成功する可能性が見えなかったため、撤退しました。
ミシン目カット基板ではなくとも、基板の端っこにある空きスペースへC0603を配置してステンシルを位置合わせできるようにしておくのが良いと感じました。
あと、ステンシルに残ったソルダーペーストをうまく拭き取らないと穴に詰まってしまうので、どうしたものかなと考え中です。ステンシルは0.1mm厚あるので、普通にキッチンペーパーへアルコールを染み込ませて拭うだけでは一部落ちきってくれません…。商用のリフロー環境では溶剤に浸してメンテなどするのかもしれませんが、家庭用の良い方法を探したいところです。

撤退戦

悔しいのは、今回のソルダーペースト塗布直前に一度iCE40LPのパッケージを開封してしまったことです。
多くのLSIパーツにおいて、ハンダ付け前の湿度管理は重要です。今回使ったのはMSL 3のパーツで、基本的に開封後は一定の時間内に実装を終えることが求められます。さもなくばモールド部分にたまった水分によってリフロー時に内部へクラックが入ったり断線したりとややこしい問題が起こり得ます。一旦開封したパーツを規定時間を過ぎて利用する場合は90度あたりでしばらく焼く(ベイクする)ことで水分を抜く必要があり、厄介です。
このあたりはIPC/JEDECによるICパッケージ(MSL)の防湿管理というページがとても参考になります。
このため、撤退を決めてすぐにガムテープで仮の封をしました(図8)。残念な感じになっています。
図8 パッケージをガムテープで再封
パッケージに入っていた乾燥剤の交換もしていないのでダメ感がかなり強いのですが、今回購入したものはあくまでも試作用なので再度開封後にもベイクはしないつもりです。再封に食品パック用のニクロム線シーラーを使えば多少はマシだったかもしれません。

そういうわけで

iCE40LPは位置合わせ用のガイドをつけた基板とステンシルが届くまで一旦保留ということになりました。

よなよなリフロー: 極小レギュレータ MIC5524-3.3V

2016年11月14日月曜日

いまさらながら自宅でリフローできる環境を整えたで書いたとおり自宅に基板のリフロー環境をつくったので、早速ひとつ焼いてみました。

極小?レギュレータ?

レギュレータは指定範囲の入力電圧からビシッと指定電圧を生成してくれるパーツです。内部に昇圧機能を持たないものは出力よりも高い電圧を入力として動作します。製品特徴としてLDO(Low DropOut)を謳うものは、入出力電圧差が小さくても動作します(特性は通常データシートへ記載されます)。
今回リフローに利用したのは8pino設計者の方がQiitaに書いていたArduinoを自作して量産して販売する(超小型Arduino互換機 8pinoを例に)内で紹介されていた1mm角のレギュレータ、MIC5524シリーズの3.3V出力版(Micrel社)です。
Mouserで購入しました。データシートはhttp://www.mouser.com/ds/2/268/MIC5524_2pg-778803.pdfです。

1mm角??

1mm角というのは相当小さくて、表面実装向けパーツの寸法でいうと0404にあたります。これぐらいの寸法のパーツは普通抵抗やセラミックコンデンサなど2接点なのですが、このレギュレータは四隅に小さな接点を持ちます(図1)。中央はヒートシンク用のエリアが大きめに取られています。
図1 MIC5524のピンレイアウト(前述のデータシートより引用)

フットプリント作成

当然KiCadの標準ライブラリに含まれないパーツなので、ライブラリとあわせてフットプリントを自作します。
しかしこのレギュレータは変則的な形状のパッドを要求します。
KiCadではそもそも自由形状のパッドを作れません。パッド形状にポリゴンを当てる機能が内部的にでも存在すればデータファイルを手動生成して切り抜けられるところですが、残念ながら内部実装もないためカスタム形状の作成は困難です。
それでも台形のパッドは作成できるので、複数のパッドを組み合わせてひとつのパッドへと仕上げるゴリ押しはできそうです。実際、手元で台形パッドを組み合わせて推奨パターンに近いフットプリントを作成してみました。しかしpcbnewでの配線工程時に配線が全然くっついてくれません。どうも内部で合成したパッド同士が干渉して整合性エラーになっているような挙動でした。
パッドの合成方法が間違っているのかもしれません(くっついているパッド同士に同じ番号を振る必要があるかも)が、設計時は急いでいたため諦めて最低限のパッドのみを配置しました(結果: 図2)。
図2 MIC5524のフットプリント(試作)

基板設計

推奨パターンのフットプリントを作れなかったのがイマイチですが、基板設計はシンプルです。基本的に入出力端子の至近へ小容量のセラミックコンデンサを置くだけです。データシートに明記されている通り、タンタルコンデンサなどが不要でセラミックコンデンサを使えるのは嬉しいです(結果: 図3)。
図3 基板設計結果

発注から到着まで

リフロー用のステンシル作成の都合もあり、基板はElecrowで注文しました。他の基板と一緒にミシン目切り取り用の面付けをおこない、注文から8日程度で到着しました。
図4 完成した基板
外形の四隅にはステンシルの位置合わせ用にPCB設計上で0603のコンデンサをぽちぽちと配置してありますが、これらは実際には配線すらしておらず、実装しません。位置合わせは通常のリフロー手順でも何かしら必要なはずなので、定番の手法があるのかもしれません(どなたかご存知でしたら教えてください)。

ソルダーペースト塗りとパーツ配置

フットプリントデータの作成時から分かっていたことですが、レギュレータ本体のハンダ用パッドが本当に小さいです。
図5がステンシルの拡大写真です。上下に4つ大きな穴のように見えるのが0603のセラミックコンデンサ用の穴です。
図5 ステンシル
内側の四隅にあるパッドは0.25x0.32mmで、油断するとソルダーペーストがうまく抜けきらずステンシル側へくっついてきました。
都合、2回ソルダーペーストを拭ってやり直しました。
1mm角パーツは初めて扱ったため、ピンセットとルーペを利用してもなかなか思うように移動できませんでした。特に、「どこへ配置するのが正しいのか」が分かりづらく、最終的にえいやっと載せました。
後から考えると今回は完全にシルクの作り方をミスっていました。自宅リフロー向けのシルク印刷は「どう描けばパーツを載せるための最良のガイドとなるか」を考えて作り込むべきですね。
ルーペを覗き込みつつパーツを載せていく段階では、真上からパーツを降ろしていく形を取ります。遠近感がうまく掴めずに「あれ、まだ基板面じゃないんだっけ?」と混乱することが何度かありました。一度ターゲット領域の近くの非ソルダーペースト領域へパーツを置いてみて遠近感を補正するのが良いと思います。
図6 ソルダーペーストを塗った状態
図6は2回失敗した後の最終版の写真で、中心の極小パッド5点へ確実にペーストを載せるべく少々力押しをしていました。このとき力の掛け方を失敗したためか、周辺のセラミックコンデンサ用パッドでペーストが染み出したように溢れています。ステンシルへ均一に力をかけつつ塗布するのにもいくらか経験が必要そうです。

リフロー

例のグリル鍋ベースのリフロー機へ投入し、様子を見つつ15分ほど(冷却込み)で完成しました。今回、特殊な手順はありませんでした。

リフロー結果

図7 できあがった基板の拡大写真
パーツ配置時の終盤に諦めながら置いたため、正直なところ失敗したと思っていました。しかし想像以上にきちんとはんだ付けされており(図7)、動作も確認できました(図8)。
図8 動作テスト結果
ここでは、microUSBコネクタを基板上に形成する実験で作ったmicroUSBコネクタから5.18Vの電源を拾ってレギュレータで3.3Vを生成してみました。やはりあのmicroUSBコネクタはプロトタイプ向きだな、と感じました。
ステンシルの都合上、載ったハンダ量もギリギリの少なさのはずです。うまくいったのはおそらく、ソルダーペーストの品質が良いためだと思います。

松尾ハンダのソルダーペースト

自宅リフロー環境を整える際に結構困ったのが、ソルダーペースト(クリームハンダ)の入手です。Amazonのマーケットプレイスに少量品があるものの評判悪いです。aitendoでも同品を扱っていたようですが、欠品していました(廃盤?)。当然ながら秋月や千石でも入手できず、サンハヤトの品はあくまでも手ハンダ用のペーストです。
経験値が低い中でいきなり極小レギュレータという高難易度パーツを利用しているので、ソルダーペーストには良い品を使いたいという考えもありました。そんな中、松尾ハンダではソルダーペーストを個人にも販売してくださるという噂を聞きつけて早速見積もり依頼を出し、FLF01-BZ(L)を購入しました。
ソルダーペーストの相場を考えるとおそらく若干高めの価格なのですが、国内の評判良いメーカーさんで鉛フリーかつ高品質仕上がり、そして品質保持のためにクール便で配送してもらえるというのを考えるとものすごく安いと思います。出荷パッケージとしては250gと500gのボトルがあり、500gを有効期限(製造から半年間)内に使い切れる気がしないので今回は250gボトルをお願いしました。先方でかかる見積もり/発送/経理系の手間を考えると明らかにほとんど利益が出ない価格です。少量注文で申し訳ないなぁという気持ちと共に、しっかり対応頂けたことにひたすら感謝しました。
図9 松尾ハンダのソルダーペースト(鉛フリー)
ソルダーペーストは冷蔵保存して硬くなったものを利用前に数時間室温で置くのが定石のようです。液体と固体を何度も行き来させると、フラックスがどんどん揮発していってしまいそうなので、到着後なるべく急いで手持ちのビンへ小分けしました。
図10 手持ちビンへの小分け
きちんと計っていませんが、160g/60g/30g程度に分けてIKEAの保存バッグへ入れました。冷蔵庫内の低温でもフラックスが揮発していくようなら容器内の空き体積が増えた分だけ逆効果(ソルダーペーストの寿命を縮める)な可能性もありますが、このあたりはやってみないとなんとも、です。
ハンダ面が分かりやすい写真は図11です。
図11 ハンダ面の拡大写真
想像以上にきれいに付きました。