[衛星開発] KiCADである程度の規模の基板を効率よく設計したい (モジュール設計を気軽にオープン開発環境で)


[2020/01/26追記] こちらに補足記事リンクを追記

1.はじめに

趣味で宇宙開発を行う団体「リーマンサット・プロジェクト」がお送りする新春アドベントカレンダー2021です。本記事は13日目です。
リーマンサット・プロジェクトは「普通の人が集まって宇宙開発しよう」を合言葉に活動をしている民間団体です。他では経験できない「宇宙開発プロジェクト」に誰もが携わることができます。興味を持たれた方はリーマンサットのホームページからお気軽にどうぞ。

2.この記事は

趣味の宇宙開発団体リーマンサット・プロジェクトで、RSP-02という小型人工衛星電源系の開発をメインに開発に参加している者がお送りします。

元々、高周波アナログLSIの回路設計や光通信機器のハードウェア設計開発から始まり、新規事業立上げ関連やAI/IoT/データ領域での基盤技術戦略の検討等をやっていましたが、
ご縁が重なり、来月より「いつか宇宙に関する仕事に就く」という十数年来の目標がご縁が重なり叶いまして、その第一歩目を踏み出す事となりました。趣味から仕事まで宇宙と共に歩もうとしております。
(仕事では、「宇宙を産業化し盛り上げる」を目指して、それが自分を育ててくれた製造業、ひいては日本の盛り上がりにも繋がってゆけば…!を目指して直感を元に動こうとしています)

3.どういった人向けか

趣味や個人でハードウェア開発、特に基板(PCB=Print Circuit Boardとも言われます)の設計をされている方で、

  • なるべく費用は抑えて開発したい
  • 開発環境は無料のオープンソース一択

の方向けに、ある程度大規模に近い規模の基板開発を「楽に」に「効率よく」設計したい方向けに少しは役立てば…と、自身の実践元にまとめております。

4.やりたいこと

人工衛星の電源系では、様々な動作をする各部1に電源を供給するという重要な役割があるのですが、以下の様に、同様の回路を複数持つ必要があったりします。


 [図4-1. 電源分配部(PDU)のイメージ例]

で、この同様の回路をいざ回路書くぞ!基板のパターン引くぞ!となったときにフルスクラッチでベタ書きをすると結構大変で、書いたら書いたでチェックも大変で、、等々。。

であれば、実際に民生品や産業用と向け商用開発とかで良く行っている、モジュール分割し同一回路を集約して階層設計する手法を「KiCADでもやりたい!」と思い立ちトライすることとしました。
なお、この記事ではKiCAD(Mac版) Version: (5.1.8-0-10_14), release buildを用いています。

5.出来たこと

5-1.回路設計におけるモジュール設計の結果

回路設計については、KiCADでも以下のようにモジュール設計(階層化)が上手く出来ました。
実施にあたっては公式マニュアルのChapter6が非常に参考となりました。


 [図5-1. Eeschema Top回路図]

イメージとしては、同一の機能を持つ部分をモジュールとしてボックス化し抽象化する事で、上記図5-1の様にまずはTopの回路図をすっきりさせる形となります。


 [図5-2. Eeschema Top回路図における階層ツリー構造]

また、上記図5-2のように、Top回路図上で、階層ツリー構造を確認することもでき、ここのツリー配下のモジュール名をクリックすることでモジュール内部にドリルダウンも出来ます。


 [図5-3. モジュール部をクリックするとドリルダウンできるイメージ]

また、上記図5-3のように、Top回路図のモジュールシンボル自体をダブルクリックすることで、モジュール内部にドリルダウンすることも可能です。
以下、図5-4〜図5-6は、ドリルダウンした後に開くモジュール回路図の例となります。
(なお、図5-5の過電流保護回路については、人工衛星開発している人にとって最重要な回である雑誌トランジスタ技術 2020年6月号「宇宙大実験!人工衛星の製作」に掲載されいている回路を参考とさせて頂きました)


 [図5-4. ドリルダウンした後に開くモジュール回路図(例:電流検出回路]


 [図5-5. ドリルダウンした後に開くモジュール回路図(例:ロードSW 兼 過電流保護回路]


 [図5-6. ドリルダウンした後に開くモジュール回路図(例:ロードSW)

なお、次の章にて作成の手順について触れますが、モジュール階層化を行うとKiCADプロジェクトディレクトリの配下に以下のようにTop回路図の.schファイルモジュール回路図の.schファイルが個別に作られます。同一の回路を用いるブロックは同一の.schファイルを参照するイメージです。
(この例ではTop回路図1つに、モジュールが5つあるイメージです)

これにより、回路設計については、実際の商用向け開発とかで良く行っている、モジュール分割し同一回路は集約して階層設計する手法という目的を達成出来ました。

例えば、今回の例だと、重複するモジュール部(結構部品点数多い)を24ブロック5ブロックに減らせてますので、(相当に)単純計算ですが、ある範囲における回路を書くという工数を、約79%削減することが出来ました。(あくまでイメージです;)

5-2.回路設計におけるモジュール設計のやり方

では、いざ、このやり方について。
このTop回路図の作成のポイントですが、

KiCAD Eeschamaの右端に上記の様なボタンがあるのでクリックしてもらうと、

こういう様な形で、回路図シート プロパティウィンドウが開きます。
このファイル名欄に、モジュールとして作る回路図のファイル名(このファイルをいくつかのブロックで共用する形になります)を、シート名欄に、個々のユニークなモジュール名を書いて頂き、[OK]をクリックしてください。

そうすると、上記のようにモジュールのシンボルが配置されると思いますので、そのモジュールをクリックしてもらうと、中にドリルダウンできると思います。

ドリルダウンした時の初期回路図は上記のようにブランク回路図かと思いますので、一度保存します。(この例だとこの時点で、KiCADプロジェクトディレクトリ内にmodule_TEST01.schという回路図ファイルが作成されていると思います)

あとは、このブランク回路図に、モジュール回路図をガシガシ書いていく流れですが重要なのは以下だと思います。

  • 階層ピンを用いて、上位階層回路図とのインタフェースを作る
  • 階層ピンがパッと見で分かるように配置する

一応この流れを貼っておきます。


上記の様な階層ピンボタンを押すと、


ウィンドウ出ますので、入力すると、


このような形で黄色のピンが出来ます。これが、上位階層とのインタフェースとなるピンとなりますので、適切な名称をつけてみてください。

これらにより、モジュール自体の回路が出来ましたら、いざ、上位の回路図に戻ってもらって、、

このボタンをクリックしてもらった上で、作ったモジュールシンボルをクリックしてもらうと便利なことに、モジュール内部で指定した階層ピンが勝手に出てきますので、カーソルをピン置きたい場所に移動してクリックにてピン設定が出来ます。これにより、上位階層とモジュール階層とでインタフェースが導通しますので、こんな流れでどんどん作っていくと上手く出来ると思いますので、ぜひ!

5-3.基板設計におけるモジュール設計について【課題残】

基板設計について、まずはじめにお伝えすると、結論、これだ!というモジュール分割の旨味を引き出す事は出来ませんでした。。
状況としては、

  • 回路図上はせっかくモジュール階層化出来ているもののpcbnewでの実装設計では、丸々一つの階層となる
  • そのため、全部品を個別で配置替えおよび配線をしなければならない。。

です。ここについては、別途より良い方法を模索しようと思います。
(もし、お読みになった方で良案ある方はコメントいただけると幸いです。。!)

なお、結局基板設計についてはマニュアルとはなりましたが、試作した基板実装例と3D Viewの例を参考までに載せておきます。

で、最後に実際にSeeed社Fusion PCBAサービスにて一部部品実装まで行った試作基板の実物がこちら。(Fusion PCBAサービスについてはこちら)

6.まとめ

以下を実現すること/確認することができました。

  • 回路設計については、階層設計(モジュール設計)を実現する事ができた
    • 大規模な回路において、同一回路を持つものであればあるほど設計効率を高められそう
    • 大規模な回路において、視認性/チェックのしやすさも向上できそう
  • 今後の開発においても、モジュールレベルでの再利用性も高められそう

ちなみに以下についてはまだまだ課題あり。。

  • 基板パターン設計については、階層構造化(モジュール化)した恩恵を受けきれなかった
    • 目標として、モジュール内部のパターン設計結果が他の同一モジュールにも反映されて、一度のパターン配置で n 個分のパターン設計が一気に完了!を目指してましたが今回はここまで行けず。。

なお、今回実践したもの一式はGithubに上げてますのでご参考まで。

7.少し昔の話を(当時は想像もしてなかった事が出来る今ってすごい)

自分がこういった回路設計を仕事で本格的にやっていたのは気づけば5年前、、と気づけば結構時間経っているのですが、当時はこういったハードウェア開発はプロ向けの開発環境を用いて行うのが当然で、いざ作った後の製造(試作含む)についても、個人が手を出せるように無かったと記憶してます。。
(自分がまだ知らなかっただけかもしれませんが)

ですが、今回やったように

  • KiCADのようなオープンソース開発環境でも階層設計が出来る
  • 個人が手を出せるロット数/価格でPCB基板製造および部品実装ができる

という事で、本当にすごい時代になったな、、と感動しています。

8.今後トライしたいこと

いよいよ今年は、RSP-02という小型人工衛星は、

  • EM(=Engineering Model)開発2
  • FM(=Flight Model)開発2

が本格化しますので、それに向けてしっかり開発を推進しつつ、以下を試していきたいところです。

  • 今回あまり効率化踏み込みきれなかった基板パターン設計をもっと簡単にやりたい
  • 自動配線ツールと階層モジュール設計の連動をさせてもっと楽に開発したい

9.さいごに

いろいろと書きましたが、「いち個人が気軽にハードウェア開発出来るようになった現在」「それを実現するべくオープンなハードウェア開発環境開発に取り組まれている方々」に感謝しつつ、如何にオープンソースの開発環境でプロの商用レベル開発に匹敵する事がやれるのか?を今後も探求していきたいと思っています。

なお、リーマンサット・プロジェクトに興味を持たれた方はリーマンサットのホームページから、ぜひお気軽にどうぞ。
私達の活動を応援したいという方がいらっしゃいましたら、ご支援お願い致します。
https://www.rymansat.com/donate

次回は、 @Fuminori_Souma さんの記事 「【Python】高速道路のIC/JCTは本当にクロソイド曲線状に建設されているのか?検証してみた」となります。
(本アドベントカレンダーの過去記事はこちら)

[2020/01/26追記] Fusion PCBAサービスでの基板製造から部品実装について

今回の試作基板のFusion PCBAサービスでの基板製造から部品実装についての一連の流れについて、『Seeed社 FusionPCBで基板製造および部品実装を依頼してみた』に纏めてみました。

参考文献・リンク


  1. ミッション系やC&DH系など(詳細はこちらをご参考) 

  2. EMとFMについてはJAXA Q&A:宇宙機の開発段階で製作される一般的なモデルの種類を教えてくださいを参考のこと