一年目エンジニア

n年目です。

組み込み開発でつまずいてきたこと

satoru-takeuchi.hatenablog.com
mizchi.hatenablog.com

上記の記事に感化され、備忘録として残しておこうと思いました。

私について

組み込み開発のハードウェアの業務についています。
やっていることは回路設計、筐体設計、試作品評価、生産支援です。
アートワークに関しては業者へ発注を行っています。

たまにCやVBAで簡単なコードを書きます。

以下、つまずいてきたこと(よくあった失敗)です。

ハードウェア編

回路設計

  • ダイオードのアノードとカソードの向き:毎回迷っていた。「五十音順に電流が流れる」と覚えることで間違いはなくなった(カソードがCOM側ということ)。同様の混乱としてトランジスタのPNP/NPN、FETのnch/pchがある。
  • 回路のネット接続:繋がっているようで繋がっていなくてトラブルになる。CAD上で見ると繋がっているように見えるが、拡大すると繋がっていない。接続を示すの「●」マークがあればわかるが、導線の角は見つけにくい。繋がっていないネットはネットリストでおかしな表記(1つしかピンが記載されていないなど)になるため、ネットリスト上で確認すると結構すぐわかる。
  • ネット名:微妙に異なり繋がっていない。例えばリセットの「RST」と「RESET」、電源の「D+3.3V」と「D3.3V」などが混在する。他の回路をコピペしたときに起こりやすい。これもネットリストで確認するとすぐわかる。

アートワーク

  • 基板構造と製造期間の関係:覚えられない。回路で必要となる部品点数が多くなるほど複雑な基板構造を選択することになる。部品同士を繋ぐ動線が複雑になるためである。当然、複雑なほどコストや納期がかかる。が、その目処を把握できていないためどの基板で発注すべきか迷う。これは、業者に恥ずかしがらずに「どれが予算と納期に入りますか?」聞けば回答をもらえる。ただしそれが最適かどうかはまた別である。
  • 確認用のデータが届いても何を確認すれば?:発注先の業者からは、確認用として主に「部品の寸法、ピン配置を示すデータ」、「部品に導線を引いたデータ」が届く。「部品の寸法、ピン配置を示すデータ」は部品のデータシートと回路上の部品の相違を確認すればよい。しかし「部品に導線を引いたデータ」は経験が必要だと思う。何を確認するか。「部品のデータシートに書いてある推奨パターンを可能な限り守っている」かどうか、「基礎知識で間違いとされることを守っているかどうか」をまず確認するべきだと思う。私が思う「基礎知識」とは何か。次のサイトにほとんど書いてある。仮に初めてアートワークを設計、確認するにしても、私は次のサイトにあることが守られていれば、まずはOKだと思う。

www.noise-counterplan.com

組み立て

  • 回路図を現実に落とし込めない:自分で基板に部品をはんだ付けするときに、繋がっていない箇所があって動かない。これは、繋いだ箇所をはんだ付けするたびに回路図にマークしていくとミスが減る。あと新卒社員の教育でよくあったのが、シンボル同士を接続しないミス。電源やCOMのシンボルは回路図上で点在しているが、はんだ付けの際にそれらを繋げない。図面上で物理的に繋がっているところだけを繋いでしまう。確かに、教科書上では数値だけを気にしておけばよいので、このミスはある意味目からウロコだった。

ソフトウェア編

コード設計

  • 他人のコードをレビュー:できない。担当外の開発品のコードを見る場合があるが、良いか悪いか判断ができない。その開発品をどのよう動かすか、どうなったらエラーになるかという資料等がないまま開発が進むと詰まる。*1
  • 設計仕様書がない製品:設計仕様がないため、後継を作ったとしても完全に同じ動作になったかどうかが分からない。

検証〜生産編

検証

  • 検証用基板がない:基板を作っても他の基板がないから検証できない。例えばRS-232CやI2Cなどの通信器を作っても、相手の開発器が未完成の為つなげて確認できない。ラズパイやARDUINOなどで周辺機器を自力でくみ上げられる技術をつけておくことで、ある程度はカバーできる。
  • 検証内容の是非:是非が担当任せ。担当が少人数のときは非常に危険である。組み込み製品の場合、他社製品と組み合わせて動かすことはほぼ必須かと思う。しかし、周辺機器のプロトコルに精通している人間は開発に携わった人間のみということで、他の誰も確認できない場合がある。

生産

  • 生産用プログラム:生産時にかかる時間を短縮するために、生産用のプログラムを仕込む。前述の「設計仕様書がない」上にコマンドで検査をする前提の製品の生産設備を使いまわすとなると話は別である。

*1:それがないまま進める開発って何だよって話ですが