人工衛星を作るときに気を付けること
人工衛星の設計って,ふつうの機器の場合と何が違うの?という質問をたまにされるので,具体例を思いつくまま挙げてみます.一般論というよりも自分の経験による部分が大きいので,JAXAやNASAの衛星ではこの限りではないかも.
宇宙環境の3大強敵
宇宙で動くモノをつくるにあたって,考慮すべき敵は3つ.
- 真空
- 熱
- 放射線
色んな人が色んな環境で使う自動車なんかと比べると,環境が精度よく予測出来るのである意味楽.このほかにデブリもリスクだけど,設計で回避できるようなモノではない.
電気・電子系の開発
- fail safe, fail operativeの徹底
- 修理が出来ない分,偶発故障に対する耐性を十分持つ必要がある.電子部品の故障モード(オープンORショート),偶発故障率(MIL-HDBK-217などを使う),システムへの影響度(FMEA)から,必要十分な対応を取る.「Aが壊れた時のためにBを用意しよう」と言うのは簡単だけど,現実的にはとても難しい.Aの故障判定やA→Bへの切り替えを行う部分を新たに用意する必要があり,今度はそこが単一故障点になるからだ.「人の手」という最終兵器が使えない以上,弱点の無い衛星システムは作れず,乱暴に言えば「どの弱点を曝すのが一番マシか」という考え方になる*1.
- 電流による磁気外乱に注意
- 基板上を流れる電流のループは,地磁場と干渉して衛星にトルクを生む.高精度の姿勢制御が必要な小型衛星の場合,電流ループを発生させないように部品のレイアウトを工夫する必要がある.まったく同じ基板を裏表に2枚貼り,同じように動作させることで相互にトルクを打ち消すという荒業をやった衛星もあるらしい.
- BGAやLGAパッケージは好まれない
- 地球周回衛星は約6000秒周期の熱サイクルで温度が変動し,それに連動して基板の膨張・収縮が繰り返される.リードで応力を吸収できないこれらのパッケージは,ICにダメージを与える恐れがあるとか,長期の軌道上動作実績が無いとかで避けられる.
- 電解コンデンサは使えない
- 真空中で電解液が揮発する.使い物にならない.
- 電池の充放電深度は浅く取る
- 現在のLi-IonやNiH電池は数百サイクルの深い充放電で容量が大きく劣化する.約6000秒に1回充放電する衛星では,70日で1000サイクルに達する.数年の寿命を確保するために,大容量の電池を搭載して,数%〜十数%での浅い充放電を行う*2
- ヒューズは使わない
- 飛んでも交換する人がいない.自己復帰できるPTCとかなら使うことも.
- アースが取れない
- 衛星構造体をグラウンドとする(構体グラウンド)ことが多いが,宇宙プラズマ環境で帯電しまくるのでアースと呼べるような環境ではない.静電気放電で停止・破壊に至った衛星もある.
- 放熱環境に注意する
- 熱を逃がす空気が無いので,データシートの定格通りに電子部品を使うと放熱できずに焼け焦げる.計算や実験の上,必要なら金属体やヒートパイプによる放熱機構を構成する.
- 各種法規に注意する
- 航空宇宙機器の性質上,各国の法規にかかる可能性はある.例えば米国のEAR(再輸出規則)に沿った申告を行うなどなど.
- 放射線による持続的影響
機械・構造系の開発
打ち上げ時の振動を除けば,無重力なので構造的にシビアかというとそうでもない.
- 有機材料を避ける
- 多くの有機材料は真空中でアウトガスを放出する.ガスは電子部品や光学系に再付着し,深刻な問題を起こす.
- 放射線による物性変化
- 放射線の照射によって,物体の輻射率が変動することがある.衛星表面の輻射率が変わると,衛星内部の平衡温度にかなり強い影響があるので,それを織り込んだ設計をしておく必要がある.
- 不用意に気体を封止しない
- ハニカムパネルの内部セルや,テープ・接着剤内部に入り込んだ空気などが真空でも大丈夫かどうか,事前に漏れなく検討する.
- 展開構造物の信頼性を徹底的に考える
- 磁性材料の管理
- 鉄などの強磁性体は,地磁場と干渉して擾乱トルクを生む.構造から磁性材料を排除するか,逆にダンパーとして積極的に搭載するか,いずれにしても衛星の磁性は慎重に管理する必要がある.特に小型衛星の場合(慣性モーメントに対して相対的に磁気モーメントが大きいので)影響は顕著.構造の組み立てに使用する工具なども消磁作業を行い,衛星に着磁しないように注意.
ソフトウェアの開発
ハードに比べると,宇宙環境であることの影響は少ない.ただ,使うプロセッサの制限から,プログラムの空間・時間効率に強い縛りがかかることは良くある.
- ビット反転対策
- 高エネルギーの荷電粒子が半導体に衝突することで,ビットが反転する(Single Event Upset)ことがある.プログラム領域の反転による暴走はWDT(Watch Dog Timer)などで外部から検知するが,データ領域のビット反転はソフト的に対処する.例えば,重要なパラメータは3重に持っておき,常に多数決を取る.イメージとしてはこんな感じ.
class Foo { public: int get_data() const{ if((data_0 == data_1) && (data_1 == data_2)){ return data_0; }else{ //多数決冗長とエラー訂正 } } void set_data(int data){ data_0 = data_1 = data_2 = data; } private: int data_0; int data_1; int data_2; };
まとめ
何かの拍子に衛星作りたいなーと思ったら,最低限ここらへんのことを気をつけましょう.これで突然衛星を設計することになっても大丈夫ですね.
何か思い出したら適当に追加するかも.