ロケット用の慣性計測ユニット作ってみた

作ってみたったら作ってみた。

2011年6月4日に自分たちで作ったロケットを伊豆大島で打ち上げてきた。
詳しいことは別のページに書くことにして、久々に面白い(exciting)作業ができたのでブログにしてみる

自分たちが作ったロケットがどのように飛行したのか、どこまで飛んだのか、機体にどのような変化があったか、これらがわかるとただ単に打ち上げて楽しかっただけではなく工学的な面白さが出てくる。
ということで慣性計測ユニットを作ってみた。

諸々の都合があって、開発にかけられる時間は非常に限られていた。
今回書く慣性計測ユニットだけではなくパラシュート分離機構用のタイマー作りや普段の研究室生活、ロケット打ち上げまでの事務一般、ロケット本体の仕上げなどの作業をしながら2週間弱しか開発期間がなかった。無給のブラック企業を素でいくぐらいの忙しさだった。

このため、開発の工数を少なくして、新しく勉強することを最小限にしながら自分が満足できるクオリティのものを作ることをコンセプトにした。

マイコン

AVRのATMEGA328PにArduinoブートローダを書きこんでDIPマイコン単体でArduinoとして動かした。
28ピンのAVRのICに3端子レギュレータから5VのVccとGNDと16MHzのセラロック(発振子)だけを付けてやればArduinoとして動く。
ピンの役割などはATMEGAのデータシートを見ながら動かした。
3.3Vの電源が取れないだけでそれ以外はArduinoとして動くのでロケットに積むために小型化したい要求と開発が早くて簡単だという要求を満たしていた。

ブートローダの書き込みはここを参考にして、書いてあるとおり行った。

搭載センサ

センサによっては3.3V駆動だったり入出力がRS232Cレベル(3.3V)だったりするのでセンサへの入力になる部分は分圧抵抗を入れて5V→3.3Vにした。

気圧センサSCP1000

秋月で買える気圧センサで測定範囲300hPa〜1200hPaで2Hz程度で出力が取れるので高度計として使用した。
大気圧1013hPaとしてざっくりと10mで1hPaの変化があるのに分解能が1.5Paあるということで理論的には分解能15cmぐらいがわかるはずと思って採用した。

実際はノイズがあったり、風が当たると動圧で気圧が変化するなどがあり、建物1階の高さの判別ができる程度だった。つまり、3mの違いはセンサから読み取れる。
SPI通信で値が出てきてくれるのも使いやすかった。

3軸加速度+3軸ジャイロセンサ

SparkfunのIMUフュージョンボードを使用した。
IMU3000(3軸ジャイロセンサ)とADXL345(3軸加速度センサ)を合わせたもので、両方の値がI2Cで取得できる。
レジスタを最初にいじれば最大加速度などを変えられる。値段が少し高いが5G以上の加速度を取得したく、勉強する時間がない、実装をいかに早くできるかが勝負という今回の目的に非常によく合っていた。すごく小さいし。
最初はわけわからなかったが、データシートをしっかり読みこんだら使えた。

GPSモジュール

秋月のGPSモジュールGT−723Fを買ってたが、逆起電圧をかけてしまったのか、何時まで経っても衛星を補足してくれないただの金属片になってしまったので泣く泣くその場にあったGT−720Fを使用した。
RS232Cレベルの出力だったがArduinoのピンにそのまま接続して大丈夫だった。
入力部分は分圧抵抗で3.3V近くまで落としている。
ArduinoにTinyGPSというライブラリがあったので複雑になりがちなGPSの出力を比較的簡単に扱えた。

温度計LM35

ロケットエンジンの酸化剤周りは充填中と点火後にそれなりの温度変化があるのでどの程度なのかがわかると酸化剤の蒸気圧から燃焼圧だったりがわかる。
その目的のために秋月で買えるLM35をAnalogINのピンに繋げて使った。
これはA/D変換するだけで温度がわかるので一番簡単だった。
キャリブレーションはするヒマが無かったが見た感じは何もしなくてもそこそこの精度の値は出てる気がした。

SDカード

データを保存したかったのでSDカードを付けた。
SPI通信の口が1つしか無かったのでデータロガー用の2つ目のATMEGA328Pを用意し、一つ目とシリアル通信しながら貯めたデータをマイクロSDカードに保存するようにしたかった。
SDカードになんでもないデータを書きこむことは出来たが、最後までデバッグが間に合わなくて目的は達成できなかった。根本的に勉強不足すぎてよくわからないままだった。
結局AVRの内部のEEPROMに打ち上げから2分のデータを保存するようにして対処した。

デバッグ用のLCD

1つ目のセンサの読み取り用のマイコンにはセンサの値がすぐわかるように16×2のLCDキャラクタディスプレイを外付けで取り付けられるようにした。

プログラム

プログラムはArduinoのサンプルスケッチやセンサの型番でググって出てくるサンプルコードをほとんどそのまま組み合わせる形で書いた。
こういうことができるのがArduinoのいいところ。

値段

6軸の加速度・ジャイロセンサとGPSモジュールが高かったがそれ以外は秋月・千石で買えば安く作れた。
1.5万円ぐらいで全部作れた計算になる。実際は余分な部品を買ったりで3万円ぐらい使って開発したので金欠な自分にはキツい出費だった。

基板

学校にあった基板切削機という機械で基板を作った。
初めてだったのであまり上手とはいえない設計になったが非常に楽しく基板を作れた。
画像はmbeというソフトで設計した基板

精度とか校正とか試験とか

これがすごく重要なのだが開発の期間が短すぎて手がつかなかった。これが心残り。

完成したところ


今までLEDチカチカさせて喜んだり、小物を作って満足したりしてたぐらいの電子工作経験だった。その段階から一気に本格的に趣味としての電子工作が出来たので心底満足した。これでもまだプロトタイプみたいな完成度なのであんまり外に出せるようなものではない。
打ち上げ後回収を失敗し、機体が大破してしまったので夏の終わりまでに作り直してver.2の進化したものを作りたいと思った。

尊敬するfenrirさんが作っているような慣性航法装置が理解できるようになるまでは続けたいところです。