アイロン転写エッチングによる基板製作
前々からエッチングというものにトライしてみたいと思っていたのだが、最近ようやく手を付けることができた。
ネットの作例を見ると、アイロン転写による方法では細かいパターンは難しいようなことがよく書いてあるのだが、幅0.2mmの配線や0.5mmピッチの狭ピッチICのフットプリントも問題なく行けることを確認した。今回得たノウハウをこの記事で書き残しておきたいと思う。

前々からエッチングというものにトライしてみたいと思っていたのだが、最近ようやく手を付けることができた。
ネットの作例を見ると、アイロン転写による方法では細かいパターンは難しいようなことがよく書いてあるのだが、幅0.2mmの配線や0.5mmピッチの狭ピッチICのフットプリントも問題なく行けることを確認した。今回得たノウハウをこの記事で書き残しておきたいと思う。

日本の電子工作界隈で数限りなく擦られたであろうネタ。この度自分も挑戦し、案外手こずったのでその記録を書いておく。

最近、Zephyrというものを勉強してみている。RTOSと言われるものの1つで、様々なマイコン上で高度な処理を統一的に実装できる。対応チップは結構あるようだ。(参考)
出来ることは広いのだが、その中でUSB機能に注目したい。適当な32bitマイコンを買ってきて独自デバイス化できるのであれば、考えられるアプリケーションはかなり多い。
その一方で公式のサンプルには、マウスとかキーボードとかMIDIとかメモリとか既定のUSBデバイスクラスのものしかない。ベンダ独自デバイスを定義する方法のちゃんとした解説がどこにもない。というわけでこの記事を書いた。
実験にはRaspberry Pi picoを使用したが、Zephyrが対応するUSBマイコンであればどれでも使えるはずだ。
ソースコードの全体はこちら(リンク,zip形式)。
MOSFETの熱雑音を表す式としてよく教科書に載っているのが以下の式だ。
$$\overline{i_n^2}=4kTg_m\gamma\Delta f$$
曰く、この電流がドレインソース間に重畳されるという。
$4kT\Delta f$の部分は抵抗の熱雑音と同じなのでなんとなく納得できるが、相互コンダクタンス$g_m$が出てくるのが分からない。$\gamma$という係数の値が理論値としては$2/3$になるという情報も割と見当たるが、その根拠というのはネット上だと全く見つからなかった。仕方ないのでちゃんと調べてみたのがこの記事だ。
記事の内容は書籍 Noise: Sources, Characterization, Masurement(Van Der Ziel, 1970) に基づく。
CMakeでちょっと複雑なソフトを作っていると、ビルド時に単にソースをコンパイルするだけでなく、ちょっとしたコマンド実行やファイル操作をしたくなる場合がある。何らかのスクリプトで設定ファイルからソースコードを生成したり、あるファイルを必要な場所にコピーしたりなど。
そういう場合にはadd_custom_commandやadd_custom_targetを使えば任意のシェルコマンドを実行することができる。もちろんLinuxならcpやrm、Windowsであればcopyやdelが実行できるのだが、こうしたプラットフォーム依存な処理をするのはCMakeの意義に照らしてあまり良いことではない。
そこで出てくるのがcmake -Eだ。これを使うとif(WIN32)みたいな不格好な場合分けをせずに済む。
TWE-Liteという無線マイコンモジュールがある。みんな大好きESP32より値は張るが、μAオーダーの超低消費電力が持ち味で、乾電池で年単位の稼働が見込める。こうした芸当はESP32やRaspberry Pi Pico Wなどには出来ない。競合としてはnRFマイコンなどが挙げられるだろう。

(画像は秋月電子より)
TWE-Liteにファームウェアを書き込む場合には専用ライタを使うのが確実だが、ライタの中身はFTDI社のUSBシリアル変換ICなので、少し知識のある人であれば簡単に自作できる。配線例が公式にもあるので恐らく公式も認めたものだ。(リンク)
一方でこの配線による非公式ライタの場合、書き込む前にリセット端子とPRG端子を手動でポチポチする必要がある。公式のライタならば要らない操作だ。
一体どうすれば公式のライタ同様に、挿して書き込んで抜くだけという開発体験を手に入れられるのだろうか?この疑問を解くため調査隊はジャングルの奥地に向かった。
ComplexPlotというグラフ表示アプリを作った。この手のアプリはDesmosやGeoGebraで良いだろと思うかもしれないが、複素数のプロットがあまり便利でないので、それに特化した表示器を作った次第だ。(リンク)
これを開発するにあたって、問題になったのが計算可能なレンジだ。元々電子回路の周波数vs利得とかの計算を便利にしたくて作ったやつなので、両対数表示とかをしたくなる。しかし対数スケールでズームアウトしていくと、まあまあ簡単に値が計算可能な幅を超えてしまう。
JavaScriptの数値型は倍精度浮動小数で、最大で10^308くらいである。まあ大抵のユースケースで収まることは収まるかもしれないが、5秒くらいズームアウトし続けたらすぐに「端」が見えてしまうのは心許ないといえば心許ない。
巨大な数を安定的に扱う手法といったら対数領域計算である。英語では Logarithmic Number System(LNS) などとも呼ぶらしい。今回初めて実装してみたので、その知見を書き留めておく。