2019年4月26日金曜日

中華製鉛フリークリームハンダ


リフローでの実装は現在は100%ステンシルを使っています。品質は向上したのですが、使用済ペーストの処理が厄介、という問題に遭遇しております。

糸ハンダではせいぜい「燃えるゴミに出したりしないように気をつけて自治体の指定通りに捨てる」だけでしたが、ハンダペーストは微粒子なので溶け出しやすく、もし間違って体内に入ったら大変なことになります。鉛ってわりと日常的な物質なのですが、調べてみると「鉛製のアクセサリーを飲み込んだ乳幼児が数日後に脳死」なんて事例があったりして、結構ヤバいす。

なので、作業後のステンシルやスキージーは
  • 広げた新聞紙の上でフラックスクリーナーを染み込ませたキムワイプで拭き取る。新聞紙の上で作業するとわかるけど、ハンダの粉が結構落ちます。
  • キレイに拭き取ったところで使用済のキムワイプや新聞紙を丸めて、ビニールのチャック袋に密閉。有害ゴミとして廃棄。
という感じで処理しているのですが…これだけで小一時間かかってしまいます。作業が終わってゴム手袋を外すとやれやれ、という感じ。

ということで、鉛フリーのペーストを試してみました。AliExpress経由で買ったMECHANICというブランドの217度ペーストです。

MECHANICは共晶ハンダではごく一般的なブランドで、私もステンシルを使うようになってからはずっとコレなのですが…残念ながら鉛フリーハンダペーストの品質はよくありませんでした。写真の通り、小さなTSSOPのランドすら広がりきっていません。いわゆる「濡れ性」が低い、ということなのでしょうか(写真の基板は金メッキ処理。写真だとわかりにくいですが金メッキが隠れずに見えています)。

残念ながら2枚作った基板は廃棄となりました…。

さて困った…と頭を抱えていたところ、Twitterのタイムラインで「松尾ハンダ」様は個人相手でも500g単位でペーストを売ってくださると知り、さきほど注文してみたところです。

結果は改めてご報告します。

加筆:結果はこんな感じです。最高だぜ松尾ハンダ
松尾ハンダの鉛フリーハンダクリーム

2019年4月14日日曜日

試作完了!


  1. Dynamic Version 0.0 - ESP32の「GPIOにはGeneral Purposeでないものが」
  2. Dynamic Version 0.1 - RTCとIR Remote追加
  3. Dynamic Version 0.2 - ダイナミック点灯としては試作完了
  4. Static Version 0.0 - 別のESP32の落とし穴にハマって抜け出せないのでボツ
  5. Static Version 0.1 - シフトレジスタが破損して時間を取られたが問題点すべて解決して試作完了
…と書いたな。それは間違いだった(追記5/6)

  • Static Version 0.2 - MOSFETドライブの特性向上
  • Static Version 0.3 - MOSFETドライブの安全性向上、今度こそ試作完了
なんだかんだで基板7枚、ブレッドボードから数えれば8バージョンで完成しました。

そしてあとはソフトだ…。

エモい。

PCBiteはもっと積極的に商売して欲しい



PCBiteというのは、プリント基板関連作業を支援するツールセットです。

基板を固定するためのバネ式のクリップと重力式(?)で固定するプローブ付きフレキシブルアームから構成されています。

いずれも磁石で鉄板に張り付くようになっています。


バネ式のクリップは指で押し下げて、開いた隙間に基板をはさみます。付属の絶縁シートを使えば、電極を挟んでも大丈夫。4つ付属していますが2個でも計測には十分ですし少し力のかかる作業では四隅を固定すればはんだ付けやリワークに対応できます。まぁ4つ外すのは少し面倒なので、裏表ひっくり返しながら作業するはんだ付け作業には別の台のほうが便利だと思いますけどもw


なかなかよくできているのはプローブです。フレキシブルアームで磁石の台とつながっていますが、このフレキシブルアームはぐにゃりと垂れ下がっていて、プローブに余計な力がかかりません。なので、狭いピンに当てたプローブがずれて隣のピンとショート、なんてことが起こりにくいです(起こらないとは言わないけど)。先端は尖ったポゴピンでハンダにいい感じに刺さって止まります。ヘッダピンが2本出ているのも気が利いてます。ただ残念なのはオシロプローブが用意されていないことです。シールドされて調節可能なプローブがついていたら神なのに。

Kickstarterプロジェクトとして始まって、今は自らのサイトで販売しているようです。いろいろ改良されたりアタッチメントが追加されていくのだろう…と期待していたんですが、あんまり活動していない様子。残念でなりません。もっとメジャーになってくれないかなーという想いで、このブログを書いた次第でございます。

基本セットで約100ユーロ、送料約50ユーロです。

もう1セット買っておきたいのですが、どなたか共同購入して送料を浮かせませんか?w

リワークの達人(への道)



あまり自慢できたことではないのですが、最近、初めて使うチップでドハマリしておりまして、部品交換や手直しを頻繁に行うため、妙に手際が良くなりました。

吸取り線とフラックスを併用するようになったのが効いてます。いや昔の吸取り線ってフラックスが粉を吹くほどに染み込んでいたんですが、今のはそうでもなくて、別にフラックスを使わないと駄目なんですね。それ知らなくて「今の吸取り線はどうもイマイチ」って思っていたのですが…いや、フラックス塗ってから使うと効くわー(笑)。

■表面実装の抵抗・コンデンサなど■

1005(mm・以下同)なら、電動式のハンダ吸い取り機でチップごと吸ってしまいます。

1608以上だと私の手持ちのノズルにはでかいので、

  1. まず基板用フラックスを多めに塗る
  2. チップ全体をかぶせるように吸取り線をのせてハンダゴテで上から加熱しつつ斜め方向に軽く力をかけるとズルッと滑ります。
  3. もう一度フラックスを塗って、ランドの上に吸取り編みを載せてハンダゴテをあて、雑巾がけするようにハンダを拭き取る
  4. フラックスクリーナーを適量落として綿棒で拭き取る

って手順ですっきりキレイに取れます。

■SOT-23ぐらいのトランジスタなど■

上記と同様の方法でも取れますが、ハンダゴテを2本使うと楽です。私の場合は通常のハンダゴテの他に前記の電動吸取り機をコテ代わりにも使っていますが、メインで使うハンダゴテの他に安い安い中華製ハンダゴテをもう一本買っておいて大きめのマイナスドライバーやカッターナイフみたいなコテ先をつけておくと何かと便利です。

いずれにせよ、大きなコテ先を2ピン側、もう1本を1ピン出ている側に当てればツルッと取れます。お掃除は上と同じ様に。

そういえば電子工作再開した当時は「左手でピンセット使えない」と嘆いておりましたが、いつの間にか普通に使ってます。人間の適応力すごい。まぁそれを言うと当時は「表面実装ばかりになったら、わしら不器用な人間はどう生きていけばいいんじゃ」なんて言ってたんですが、今はPQFPのピン間に1005のセラミックコンデンサ載せたりしているんだから、人間の適応力すごいです。


USB顕微鏡下での作業ですが、USB顕微鏡もレイテンシが大きくて買ったばかりの頃はまともに作業できなかったんですよね。あ、これは、ワタシのレイテンシーが大きくなって適応したのかもしれないw

■ESP32ぐらいまでのチップ■

以前書きましたが、ヒーティングガンとカプトンテープのお世話になっております。

2019年4月4日木曜日

基板のレジストをきれいに剥がす


■レジスト剥離■

基板レタッチでレジストを剥がす場合、今まではデザインナイフを使っていました。デザインナイフは先端がとがっているので削っている箇所をみながら作業できますが、鋭利なので線で削っていく感じになってしまい、キレイに剥がすのが難しいです(レジストが筋状に残りやすく完全に剥がそうとするとキズがつく)。

社内のガンプラ部の人からこんな道具があると教えていただきました。

顕微鏡下で使ってみると、刃の先が少し丸くなっていて(鋭角だと割れるんでしょうね)しかも刃に厚みがあるので…刃のどのへんが基板にあたっているのかわかりにくいのですが、慣れてしまえば0.1mm幅ぐらいの「面」で削れるので、作業しやすいです。

まぁ基板のレタッチなんてしないほうが良いんですが…しなければならないときのために1本あると便利です。

■余談■

最近、USB顕微鏡下の作業が増えました。受託開発でVSONなど微小(当社比)かつ使ったことのないチップが持ち込まれるケースが多いせいだと思うのですが…ペーストをステンシルで塗布した後のピック&プレースも顕微鏡下で行わないとズレてしまいます。以前はTERASAKIのルーペを使っていたんですが、倍率2倍だと見えないんですよね…ルーペだと立体視できるのは良いんですが、TSSOPまでが限度(当社比)。

実体顕微鏡買う方が捗るかなぁ…。

なお、写真の基板はJLCPCBに依頼して、自宅リフローしたものです。つや消し黒でも追加料金なしってのがありがたいです。ただ、つや消し黒ってフラックスをちゃんと洗わないと汚いですね。あと、金属光沢のハイライトに引っ張られてしまうので、顕微鏡で見てて目が疲れます。

量産はともかく試作には緑が目に優しいですわww

2019年3月26日火曜日

Eagle、NC強制配線の現象がわかった(っぽい)

回路図を見ても配線されていないNCの端子が、基板上では勝手に他の配線とつなげられてしまう現象の原因がわかりました。

回路図に部品をおいて、ローテートや移動したときに間違って他の端子とつながってしまうことがあります。そういう場合に配線を削除しても、その時のRoute名が端子に残っているようです。それで、その後配線作業をした時に、残っているRoute名と新たに生成されるRoute名が一致して結線されてしまいます。

直すには、NCのピンからどこにもつながらない配線を伸ばして、それからそこと勝手につながっている配線のRoute名を変えます。変更すると「このセグメントだけか?それとも関連する番号全部か?」と確認が出てきますが、「このセグメントだけ」を選びます。

これで消えるはずです。

DRCやERCにも出てこなくて、一本ずつ配線を確認しないと気づかない現象なので大変怖いです。今回NCと大きく書いてあるところにつながっていたので気づいたのですが…前回はVCCとGNDがショートしていてまったく起動せず頭を抱える状態でした。

ローテートや「接続しますか?」は慎重に扱いましょう。

超簡単!componentsearchengineでPCB CADの部品作り

Mouserさんの部品詳細ページを見ると、ECAD Modelという項目があります。ここに「PCB Symbol, Footprint云々」とあれば作成済のフットプリントとシンボルを各ツール別にダウンロードできるのですが、未登録の場合には「Build or Request PCB Footprint or Symbol」になっていて、自分で作るか作成をリクエストすることになります。


以下いずれの場合もcomponent search engineでの作業になります。さあWebを開きましょう! アカウントを登録しましょう!!

■ダウンロードできる場合

部品名を検索すると一覧が出てきます。そこに「部品あるで」と表示されている場合は、当該アイコンをクリックし、詳細ページでFREE DOWNLOADを選べばzipが落ちるので、回答して自分の使っているライブラリのファイルを抜き出すだけです。簡単すぎ。

■Build or Requestの場合

数分の作業なのでダマされたと思ってやって見よう!

作りたい部品の正しいパッケージのBuild or Requestをクリック


赤い矢印のところで大雑把どんなパッケージかを選びます。


仕様書には「44-Lead PQFP Package Outline (PG)」となっているので、一番近い?QFP-PLCC / Quad Flat Packagesを選びます。

一つ上に戻って、BUILD/LAUNCH WIZARDをクリック。SamacSys PCB LIbrary Wizardが開きます。



で、後は上から必要事項を入力していきますが、業界あるいはメーカーの標準的なパッケージであれば、だいたいパッケージをいじる必要はないと思います。いじる必要がある場合は…仕様書とにらめっこしながら各部の寸法をミリまたはインチ単位で入力してきます。仕様書の表記と画面の表記は違うので、間違えないように気をつけてください。私は一回パッケージの幅と広がったピンの幅を間違えて、ハンダが届かないFootPrintを作ってしまったことがあります(試作だったしハンダブリッジで届く範囲でしたけど…辛かった)。

次はElectrical Pin Informationの入力ですが、Typeがundefined / Power / Ground / InOut / Input / Outputしかないので楽といえば楽なんですがNCを明示できないのがちょっと危ないです。間違えないようにEagle上で直すことをおすすめします(間違えてNCに出力をつないでしまい、基板半分の配線をやりなおした経験者・談)。あと反転は!ではなく*です(横に注記が出てますがEagleが!なので間違えた)。CVSでのアップロードなどもできるようなので、仕様書でスプレッドシートにコピペしてアップロードすると楽になるかもしれません。私は地味に44ピン入力しましたが。

あとは「FinalCheck」ボタンを押して確認してもらい(何をどの程度確認しているのかは不明なのでそこは自己責任で)、以下の「Final Checks Pass.」が出たら、Complete Partをクリックします。

そうすると右上に、「Download Model」アイコンが出ます。クリックしてunzipすれば部品のライブラリが手に入ります! 素晴らしい。しかもここでMouserのカートに入りますから、「ライブラリのある部品を探す」ってのがものすごく簡単になります。
所要時間は9分でした。以前は「30分探してなかったら作る」だったんですが、今は「eagle library '部品名'」で最初のページで出てこなかったら作る、ってことにしています。見つけた部品もどっちみち検証しないと使えないので、その方が早いとです。

「EagleにライブラリがないからこのICは使うのをやめよう」という発想がなくなったので、褒めてください(笑)。

…なお、この辺の作業ってWindowsでLibrary Loaderを動かさないと駄目だと思っていたんですが… Webで完結してしまいました。

ああ世界がますますWindowsから孤立していくw

2019年3月23日土曜日

EagleのFanout機能


小さいパッケージに太いGNDを接続する場合や込み入った配線があるとき、今までは手で細いRouteを引いてやる必要があったんですが、新機能(でもないか)のFanoutは、

  • チップ単位または配線単位
  • 全部外側、全部内側、中外交互などのオプション
を指定すると、例えばチップを選べば自動的に細い線を引っ張り出して適当なviaを近くに打ってくれます。基板設計ものすごく楽。特に自動配線と相性が良いようで、バスを引っ張り回すような回路だと自動で打たれるvia数が半減したりします。

基板設計もだいぶ省力化できるんですが……ピンごとに対応したviaがあるので、わざわざテストピンを設けなくても良い、ってことに最近気づきましたw テストピン立てようと思えば立てられますし…いや便利便利。

Elecrow Rush-48hサービス


ちょっと急ぎだったので、貧乏な私としては清水の舞台、ではないけど、階段3段飛びぐらいの覚悟で48時間サービスに頼んでみました。朝9時に注文して72時間経ってもいつもの「出荷しました」連絡が来ないしWebでもIn Productionのままなので「どないなっとるねん」と連絡したら「前日に発送した」とのこと。直後にメールとトラッキング番号が届く。蕎麦屋の出前かいw OCSの集荷が夕方18時になっているから48時間出荷かどうかは議論の余地があるけど、まぁ誤差の範囲。あと例によってOCS/ANAがさくっと配達してくれたので、3月19日 9時発注、3月23日 14時受領……都合101時間で到着しました。

はやい(小並感

人民テープはもはや芸術の域
OCSで基板だけだと外装ビニールバッグなので人民テープと戦わなくて済むのも地味なメリットなんですが、今回はガチ人民テープで、どこから開けて良いのかわからない。剥がすと臭いのであんまり剥がしたくないのですが、ともかく全部剥がしてみると、横(短辺)に開け口がありました。例によって前後にMDF板が当てられていて、破損防止は万全。


ステンシルはばっちりです。

強いテープで剥がす時にステンシル痛みそうで怖い

基板、実は「48時間仕上げだと機械で作る要素も多くなって品質も良いのではないか?」とちょっと期待したのですが、シルクもレジストも、いつものElecrowより心持ちキレイな気がします。Elecrowは緑1.6mmだと比較的キレイなのですが、少なくともシルクは均一で潰れたり掠れていることがなく、これそのまま製品に使っても良いんじゃないか?というレベル。拡大写真はこちらです。ピンはSSOP 0.65mmピッチなので、レジストのズレは0.09mmぐらいでしょうか。via穴もずれてますけど許容範囲。



それにしても、0.65mmを普通にはんだ付けできるようになった自分をホメてやりたい…約5年前に電子工作を再開した時にはDIPが無くなったら死ぬ…って思っていたのにね(遠い目)。今はDIPだとはんだ付けしているというより溶接しているような気持ちで立ち向かっています。

今回フレーム付きステンシルと一緒の少し大きめの基板だったので7400円でしたが、注文から100時間ぐらいで届いて特に問題ありませんでした。私みたいな週末メイカーだと週末に設計して翌週に実装というサイクルをほぼ確実に回すことができるので、ありがたいです。

ピッチがもうちょっと細かいとJLCPCBかFusionの0.1mmピッチ指定じゃないと使えないんですが、JLCもFusionも緊急メニューがありません(Fusionは出来上がってから出荷されるまでが遅いし)。急ぎで0.5mmピッチ以下ならこれで十分かな、と思います。

2019年3月22日金曜日

SwiftからMetalへFloatの値を渡す(仮)

縦横比は無視(こういう演出なので)

(仮)がついているのは、「とりあえず動いたけど正しいかわからない」というツッコミ待ちフラグを示します。堤修一さんの「Metal入門」を読んでいることが前提です。

最初に結果を書きます。そのあとはほぼ雑談です。

まず、swift側のコード。drawの中です。valueが渡したい値で最初にバッファを定義して
        // バッファを作成
        var valueBuffer: MTLBuffer!
        let value:[Float] = [0.5]
        let size = MemoryLayout.size
        valueBuffer = device.makeBuffer(bytes: value, length: size)
次に生成したエンコーダーにセットします。
        renderEncoder.setFragmentBuffer(valueBuffer, offset: 0, index: 0)
.metal側
fragment float4 fragmentShader(ColorInOut       in       [[ stage_in ]],
                               texture2d texture  [[ texture(0) ]],
                               device float     *fBuffer [[ buffer(0) ]])
{
    float f = fBuffer[0];

fに値が入ります。めでたしめでたし。

[[ ]] の中の修飾子がどういう働きをしているのか理解できていなかったんですが…これ、GPUとCPUの共有メモリにtexure[0], [1], [2]....、vertex_id、buffer[0], buffer[1], buffer[2]....のような領域があって、
device float     *fBuffer [[ buffer(0) ]]
って書いた場合、「0番目のbuffer領域のアドレスをfloatのポインタfBufferにセットする」って意味なんですね。で、Swift側ではサイズとx番目かを示してデータをセットすれば、metal側ではそれをポインタ渡しみたいな形で受け取れる。

わかってしまえば簡単なんですが…いやー、苦労したたたた。

■背景■

「Metal入門」という本を読みつつ、Metalのお勉強をしています。お勉強中ですが、同僚のM氏から「作って」と言われている課題をこなさなければいけないので必死です。

その課題は撮影した画像をRGBとグレイに分割して、それらを重ねつつ動かすというやつです。CIFilterなどを探してみたのですが、どうにも上手く行かず、Metal様におすがりしました。

で、「Metal入門」を拾い読みして(それがいかんのだ)、fragment shaderを使えば画像の任意の点の色情報を取得し、それを最終的な描画位置の色として加工して返す、という処理が記述できることがわかった…のは良いですが、アニメーションとして処理したいのでCPUからパラメータを渡す必要があり、その方法を探していた次第です。

この記事が誰かの役に立ちますよーに。

■余談■

MSLでもif文書けるんですね。やってみたらエラーでないで意図した通りに動いたので思わずユーレカーと叫びながら表を走ってしまうところでした。ベクトルプロセッサだから無理だろと思って無駄な苦労してました。もちろん、GPUを使う上ではもっと効率のいい方法なんかもあるんでしょうけども、不勉強な凡夫として助かっております。

とりあえずfragmentShaderの実装については「今度、ここの座標の色を教えろや」って上位からドットの数だけ呼ばれるので、textureとして受け取った画像からsamplerを使って元画像の色の値を取り出し、そのカラー値(r, g, b, a)を返せば元画像がそのまま描画されるし、color = float4(red, 0, 0, 1)を返せば赤プレーンだけの値が返される…ということがわかって、そこから何とか書けるようになった感じです。

いやー…奥が深い。私基本的に業務系アプリ屋なんで、Metalのお勉強してもあんまり役に立たないんですけどねw でも、何かあったらお仕事いただければ幸いですm(_ _)m