超小型人工衛星の通信・データ処理系
に関する研究
北海道工業大学工学部
応用電子工学科
6-4-L-00-056
佐藤
立博
6-3-M-00-072
相馬
徹平
6-4-M-00-100
馬場
要
6-4-M-00-116
三浦
理恵
指導教員
佐鳥
新
助教授
第1章
1.1
1.2
1.3
1.4
目次
序論・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1
超小型人工衛星とは・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1
CubeSat プロジェクト・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1
各大学での CubeSat の取り組み・・・・・・・・・・・・・・・・・・・・・・・・・・・・・2
本研究目的・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・7
第2章
2.1
2.2
2.3
超小型人工衛星システム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・8
概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・8
推進系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・9
電源系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・10
2.3.1
太陽電池パドル・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・10
2.3.2
バッテリ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・12
2.3.3
放電サイクル・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13
2.3.4
供給・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13
2.4 姿勢制御系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13
2.5 構体系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13
2.6 熱制御系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・14
2.7 センサ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15
2.7.1 温度測定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15
2.7.2 放射線測定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15
2.7.3 角速度測定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・16
2.8 オンボードコンピュータ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・16
2.9 通信系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・17
2.9.1 プロトコル・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・18
2.9.2 AX.25・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・21
2.9.3 CCSDS・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・26
2.10 電力重量管理表・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・28
第3章
データ処理系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・29
3.1 オンボードコンピュータ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・29
3.1.1 H8・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・29
3.1.2 データ取得について・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・33
3.1.3 マルチプレクサ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・37
3.2 通信・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・38
3.2.1 無線モデム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・38
3.2.2 シリアルインターフェイス・・・・・・・・・・・・・・・・・・・・・・・・・・・・・43
3.2.3 無線機・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・45
3.3 地上局・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・47
3.4 データ処理系 BBM・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・50
3.4.1 概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・50
3.4.2 サブシステム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・51
3.4.3 動作手順・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・59
3.4.4 モデル衛星の設計・作成・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・60
3.4.4.1 回路構成・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・60
3.4.4.2 電源との接続回路・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・62
3.4.4.3 H8−モータードライブ IC の接続・・・・・・・・・・・・・・・・・・・63
第4章 衛星制御実験・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・66
4.1 実験① モデル衛星の制御実験・・・・・・・・・・・・・・・・・・・・・・・・・・・・・66
4.1.1 目的・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・66
4.1.2 原理・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・67
4.1.2.1 モデル衛星側プログラム・・・・・・・・・・・・・・・・・・・・・・・・・・・67
4.1.2.2 パソコン側プログラム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・74
4.1.3 方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・75
4.1.4 結果・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・76
4.2 実験② 推進系の制御実験・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・77
4.2.1 目的・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・77
4.2.2 原理・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・77
4.2.3 方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・80
4.2.4 結果・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・81
4.2.5 考察・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・81
第 5 章 通信実験
5.1 実験①
CubeSat テレメトリ受信・・・・・・・・・・・・・・・・・・・・・・・・・・82
5.1.1 目的・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・82
5.1.2 原理・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・82
5.1.3 方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・87
5.1.4 結果・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・88
5.2 実験②
ハイブリッドロケット通信実験・・・・・・・・・・・・・・・・・・・・89
5.2.1 目的・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・89
5.2.2 概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・89
5.2.3
5.2.4
第6章
方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・90
結果・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・90
結論及び展望・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・91
参考文献・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・92
謝辞・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・93
付録・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・94
第1章
1.1
序論
超小型衛星とは
○超小型衛星の定義
小型衛星とは一般的に、従来の衛星よりも小型であるという意味で定義に
は非常に幅があり、欧米では衛星重量が 50−300kg、日本では 50−500kg のも
のまでを指す。
最近では重量が 50kg 程度までの衛星をマイクロサットと呼び、
5kg 程度までのものをナノサットと呼ぶ傾向にある。1kg 以下のものはピコサ
ットと呼ぶ。
1.2
CubeSat プロジェクト
CubeSat とは、1999 年 11 月にアメリカ・ハワイで開催された JUSTSAP
(Japan‑U.S.Science.Technology & Space Applications Program)での USSS
会議(University Space Systems Symposium)にて米国スタンフォード大学
の Twiggs 教授によって提案された、超小型衛星開発プロジェクトである。プ
ロジェクトの主な提案内容として、サイズは 10cm 立方体で重量は 1kg 以下、
制御等の運用としてアマチュア無線帯の利用、650km 円軌道、太陽同期軌道で
の運用である。さらに、超小型人工衛星開発を行う国際的な教育目的のプロ
ジェクトとして、日米の大学が中心となり衛星の開発と打ち上げ機会の模索
が進められ、現在では、60 を超える世界中の機関がこの CubeSat 開発に取り
掛かっている。
従来、衛星開発は莫大な費用がかかり、大学での研究開発には資金面での
支障があった。しかし、CubeSat ではその大きさや重量から、幾つかの衛星を
まとめてピギーバック方式で打ち上げることが可能なため、約 1000 万円程度
の低いコストで、大学での研究開発が容易になった。計画では 1 年に 1 回打
ち上げを予定しており、毎年開催される USSS 会議で各大学などの計画・成果
などが報告される。
現在、東京大学・東京工業大学の他に、米国・カナダ・デンマークの計 5
機関による 6 機の CubeSat が 2003 年 6 月 30 日、EUROCKOT 社製の ROCKOT(2
段)+BREEZE の 3 段ロケットにより打ち上げられ、高度 820km の太陽同期軌
道にて運用中である。
また、その他に日本国内の多くの大学が、5 年以内の打ち上げを目指して取
り組んでいる。日本の大学は東京大学・東京工業大学・創価大学・日本大学・
5
九州大学・北海道工業大学、海外ではスタンフォード大学・カリフォルニア
ポリテクニク州立大学・アリゾナ大学・ダートマス大学・オールボウー大学
などが CubeSat プロジェクトに取り組んでいる。
図1‑1
1.3
ROCKOT+BREEZE3 段ロケット
各大学での CubeSat の取り組み
○ 東京大学の取り組み
目的
・ CubeSat ミッションで超小型衛星システムの技術実証。
・ 通信・電源・電子システム等の、宇宙機に必要な技術習得。
・ 民生部品を多用することによる低開発コスト及び私用実績の蓄積。
概要
XI (X‑factor Investigator:「サイ」
)
東京大学中須賀研究室では、2000−2001 年にかけて 10cm 立方の超小型人工
衛星 CubeSat I を開発した。(CubeSat I の完成型:CubeSatXI‑IV を図 2‑1
に示す。)2002 年から CubeSat II プロジェクトを立ち上げた。開発期間は
2 年と設定し、2004 年春以降の打ち上げを目指している。
CubeII では、15cm 立方と形状を CubeI よりやや大型化し、バス機器に加え
て地球の光学観測用のミッション機器を搭載する。
6
図 1‑2
CubeSat XI‑IV 外観
CubeSat XI‑IV は 2003 年 6 月 30 日の打ち上げ成功により、現在順調に地球
周回中である。目的の一つである民生品である CMOS カメラでの撮影に成功し
た。(図2‑2 を参照)
図 1‑3 CubeSat XI‑IV による撮影
7
○東京工業大学の取り組み
目的
独自通信プロトコルよる衛星の運用
概要
CUTE‑I(CUbical Titech Engineering sate llite‑I)
CUTE‑I は太陽電池パドル、3 本のものポールアンテナを搭載している。
ROCKOT+
起動変換器 BREEZE の発射成功により、現在、高度 820km、起動傾斜 98.7deg の
太陽同期軌道にて運用中である。
図 1‑4
CUTE‑I 外観
○日本大学の取り組み
目的
温度センサーと地磁気センサーによる姿勢推定、地上局と衛星との通信。
概要
SEEDS(Space Engineering Educational Satellite)
SEEDS は姿勢制御や熱制御は行わず、太陽電池と Li‑ion2次電池から
8
なる電源系、FM方式の送受信とビーコンを送信する送信機、また、T
NCによる通信系、ハウスキーピングデータの処理やコマンドの処理を
行うデータ処理系で構成されている。また、トラスト構造を採用し十分
な強度と軽量化を図る。材料にはA7075 を使用。
図 1‑5
試作品の外観
○ 創価大学の取り組み
目的
・ FPGA(Field Programmable Array)を用いた独自の宇宙用アーキテクチ
ャの OBC 開発及び宇宙実証。
・ カメラ画像の取得ならびに地上への送信
・ 小型衛星用チップアンテナの開発
概要
Excelsior
OBC は FPGA を用いてソフトウェア CPU を組み込む。通信では AX.25
プロトコルを使い、1200bps の FSK 変調とする。また、光学系・温度計・
ジャイロ・電圧計・電流系を搭載する。
9
○ 九州大学の取り組み
目的
・衛星から 2km のテザーを伸展し、テザー技術を取得する。
概要
QUEST‑1(Kyushu‑U.S.Experimental Satellite Tether‑1)
QUEST は母機と子機の 2 つの衛星から構成されており、この 2 つはテ
ザーによって繋がれている。QUESTO‑1 は 1998 年に行われた USSS 会議
で提案された QUEST の第 1 号機として設計・作成が行われ、現在、
QUEST‑2 にステップアップし、テザーを利用したより実用的なミッショ
ンを行うことを予定している。
図 1‑5
QUEST‑1 のイメージ図
10
1.4
研究目的
本研究では、CubeSat の通信と制御、データ処理に関する衛星の基本システム
構築を行う。
本研究目的を下記に示す。
① 地上局からのコマンド送受信
② マイクロ波エンジン制御
③ 地上局システムの構築
11
第2章
2.1
超小型人工衛星システム
概要
CubeSat の構成は推進系、電源系、通信系、オンボードコンピュータ(以下
OBC と称す)系、センサ系に分けられる。
地上局は、地上からのコマンドにより、衛星の姿勢制御や推進器の制御を行
う。衛星は、センサ情報等の、テレメトリ信号を地上に伝送する。
システム構成を図 2−1 に示す。OBC 及び TNC は、衛星内のデータ処理を行う。
TNC
無線機
データ処理
電源
OBC
推進器
センサー
姿勢制御
CubeSat
図 2‑1 衛星システム構成図
12
地上局
2.2
推進系
軌道を制御する場合に、要求される推力を発生する。本研究では、CubeSat 用
に超小型マイクロ波エンジンを使用する。
マイクロ波エンジンは電気推進の一種である。主に点火器、アンプ、発振器、
加速電源から構成される。推進剤にはキセノンガスを使用しており、マイクロ
波を用いてプラズマを生成、さらに陽イオンを抽出して加速させるものである。
原理図を図 2‑2 に示す。
イオンビーム
Xe ガス
+
+
+
e
e
マイクロ波
図2−2
+ e
マイクロ波エンジン原理図
推進系を動かす電源として、加速電源を使用する。加速電源は、マイクロ波
エンジンのイオンを加速させるものである。これは、フライバック方式を採用
し、0V・100V・300V の電圧を発生可能である。
フライバック方式とは、トランジスタのスイッチングによりトランスに断続
的な電圧を掛け、そのデューティ比で電圧を変換するものである。
フライバック方式の基本構成を図 2−3 示す。
+Vo
i1
V IN
D1
Ls
LP
+
C1
Tr1
Ic1
図 2−3
T
0
フライバック方式の基本構成
13
2.3
電源系
衛星内部で消費するためのサブシステムで、搭載機器への必要な電力を供給
する。通常、日照中は太陽電池パネルから電力を供給し、食で太陽エネルギを
得られない期間は期間中に充電したバッテリから電力を供給する。
電源系は表 2‑1 のコンポーネントから構成される。
表 2‑1
電源系の構成
名称
個数
備考
太陽電池パドル
4
+X 面、‑X 面、+Y 面、‑Y 面、+Z 面、‑Z 面
バッテリ
2
リチウムイオン2次電池
電力制御ユニット
1
2.3.1
太陽電池パドル
人工衛星の発電とバッテリの充電に太陽電池を使用する。以下、太陽電池パ
ドルの検討を行った。衛星の主な構造を表 2‑2 に示す。
表 2‑2
衛星の主な構造
形状
100mm×100mm×100mm の立方体
方式
太陽電池パネル
ボディーマウント方式
姿勢制御
なし
機器の配置
太陽電池パネルとは断熱したデッキパネル上
太陽電池パネル面積:
A=
P
η *G
(1)
P:発生要求電力
η:太陽電池セルの発電効率
G:太陽定数
14
η=0.25、G=1376W/㎡、A=0.06 ㎡を(1)式に代入すると、
総面積パネルの電力 P=20.64W
一面パネルの電力 P1=3.44W となる。
発電は、ボディーマウント方式で行う。貼付は 1 ㎡×0.1 ㎡×6 面にする。
これより、最大発生電力、最小発生電力を求める。
SMAX =0.02 ㎡
SMIN =0.01 ㎡
PMAX =6.88W
PMIN =3.44W
太陽電池の性能を表 2‑3 に示す。
表 2‑3
メーカー
太陽電池の性能
SPECTROLAB 社(www.spectrolab.com)
GaInP2/GaAs/Ge Triple Junction Solar Cells
セル面積
2×2 cm2
セル質量
84 mg/cm2
太陽光吸収率α
0.92
15
2.3.2
バッテリ
搭載する電池として、リチウムイオン2次電池を採用する。リチウムイオン
電池は,小型・高容量であり、1セルあたりの電圧が約 3.8V である.また,メ
モリー効果が少ない為,周回毎の発電・放電サイクルに対してもあまり性能が
劣化しない。バッテリは、マクセル社 ICP063450G を搭載する。バッテリの仕様
を表 2‑4 に示す。
表 2‑4
バッテリ仕様
公称電圧(V)
3.7
定格容量(mA)
1000
充電電圧(V)
4.2±
0.05
最大外形寸法(mm)
質量(g)
厚み
6.5
幅
33.8
高さ
49.6
28
本衛星は、搭載するバッテリをミッション用及びバス機器用の2つを搭載する。
衛星の消費電力はミッション時に最大 5.4W、定常時に最大 2.4W と想定する。
最大消費電力のプロファイルを図 2‑4 に示す。
5.4W
2.4W
0W
1.0T
0.5T
図 2‑4
最大消費電力のプロファイル
16
2.3.3
放電サイクル
比較的低い衛星の円軌道として、軌道傾斜角 28.5°とすると、周回時間 94 分、
昼 59〜67 分、夜 27〜35 分と仮定し、一日 15 回の充放電を繰り返す。衛星の寿
命を 2 年とすると
総サイクル数=15 回[回/日]×356[日/年]×2 年=10,680 回
となる。
2.3.4
供給
要求電圧として、電子機器は 5V である。レギュレータ素子として高機能 DC
−DC コンバータを使用する。また、マイクロ波エンジンの動作は、ミッション
用のバッテリを使い供給を行う。食の場合には、バス機器用バッテリを使い、
バス機器を動作させる。
2.4 姿勢制御系
ミッションや熱電力の要求に応じて、衛星の姿勢を一定の方向に指向させる
など、方向変換を行わせることを目的としたサブシステムである。今回、姿勢
制御は行わない。
2.5 構体系
衛星に搭載する機器を、地球環境も含め打ち上げから運用終了までの機械的
な環境に耐えられるように支持し、かつ機械環境を緩和する役割を担う。主な
構造の概要を表 2‑5 に示す。
表 2‑5
衛星の主な構造
形状
100mm×100mm×100mm
太陽電池パネル
ボディーマウント方式
機器の配置
太陽電池パネルとは断熱したデッキパネル上
衛星の材質は、アルミニウム、マグネシウム合金、チタン、鉄を使用する。
17
○ 機器配置
機器配置図を図 2‑5 に示す。
図 2‑5
機器配置図
2.6 熱制御系
打ち上げ時から定常運用にいたる熱環境に対して、搭載機器の温度を許容範
囲に保つ。今回、姿勢制御は行わない。
18
2.7
2.7.1
センサ系
温度測定
宇宙空間は温度差が大きく、衛星は過酷な熱環境の中にある。人工衛星内の、
温度分布は極めて重要なハウスキーピングデータとなる。温度測定には温度セ
ンサ IC National Semiconductor LM35 を使用する。温度センサ IC は、温度
変化に伴い電圧値が変化する。表 2‑6 に温度センサ IC の仕様を示す。
表 2‑6
2.7.2
温度センサ IC
測定温度
‑55°〜150°
耐熱温度
300°
動作電圧
4 〜 30V
放射線測定
宇宙空間での放射線検出を行い、超小型人工衛星内における放射線の値を測
定する。ガイガーカウンタは、Gamma Labo 社の 1504W GM 管を使用する。
アノード電源には、高性能 DC−DC コンバータを使用する。表 2‑7 に GM 管の
仕様を示す。
表 2‑7
2.7.3
GM 管の仕様
アノード電圧
500V(450‑650V)
アノード抵抗
10MΩ(4.7MΩ以上)
外形
約 15mm
長さ
約 40mm
α線
3.0MeV 以上
β線
50KeV 以上
γ線
7KeV 以上
消費電流
3.5mA
角速度測定
衛星の姿勢を検出するためにジャイロセンサを用いる。衛星の X 軸、Y 軸、Z
軸の三軸を検出することにより、衛星の姿勢を把握できる。
19
ジャイロセンサには、シリコンセンシングシステムズジャパン社の CRS03 を
使用する。表 2‑8 に CRS03 の仕様を示す。
表 2‑8
ジャイロセンサ仕様
動作温度
2.8
‑40°〜85°
動作電圧
5V
消費電流
50mA
角速度計測範
囲
±10rad/s
外形
29×29×18.4(mm)
オンボードコンピュータ
オンボードコンピュータ(以下 OBC と称す)は衛星内の CPU であり、エンジ
ン、電源、通信、全ての制御を行うものである。また、ガスや電力などの供給
系からのデータ取得を行い、地上局に知らせる役割を担う。
20
2.9
通信系
通信系の目的は、衛星と地上局との間の通信路を確立することにある。通信
機器には、無線機、アンテナ及び TNC がある。TNC はデジタル情報を地上に伝送
するためのモデムである。下記に TNC の構成を図 2−6 に示す。
無線機
PTT
IN
OUT
PTT
制御回路
変調器
MIC
OBC
復調器
SP
シリアル
I/F
モデム部
図 2−6
TNC 構成図
通信機の仕様を表 2‑9 に示す。
表 2‑9
通信機の仕様
アップリンク周波数
145MHz
ダウンリンク周波数
430MHz
送信出力
1W
プロトコル
AX.25/CCSDS
アンテナ
半波長ダイポールアンテナ
21
2.9.1 プロトコル
○概要
プロトコルとは、コンピュータ通信ではコンピュータ同士が通信回線を介し
て結ばれ、電気信号を媒介としてデータのやり取りが行われるが、このやり取
りが間違いなくできるように、あらかじめコンピュータ相互間の接続方法やデ
ータの受け渡し方法を決めてある。このあらかじめ決められている約束事を通
信規約と呼び、これがコンピュータ通信におけるプロトコルになっているので
ある。
代表的なものに、アマチュア無線で用いられる AX.25 プロトコルがある。
○伝送制御の基本
三段階に分けて考える
① 通信チャンネルの確立:モデムや TNC などの必要な機器を使用可能な状
態とし、交信したい局を呼び出し、通信チャンネルを確立する。この際、
やりとりする情報としては、呼び出し符号、相手が交信可能な状態かど
うかの情報がある。
② 情報の転送:通信チャンネルを確立した後、実際にデータを伝送する。
この際、もちろん伝送中に発生する誤りを検出・訂正する。この場合、
誤りがあったことがわかれば再送してもらうことも行う。
③ 終結:情報の転送が終わることを双方が確認したとき、通信チャンネル
を開放し、通信チャンネル確立以前の状態に戻す。また、情報の転送中
に障害(相手局が停電になった場合など)が発生した時も、何度か情報
転送を試みた後、自動的にこの終結状態に移る。
○データ通信の標準化
※ OSI 基本参照モデル(開放型システム相互接続の基本参照モデル)
データ通信では様々なことを決めておく必要が生じる。しかし、手順とい
っても通信には様々なことがあるので、基本的な通信の取り決めに対する考
え方が国際的に決められている。これは、ISO(国際標準化機構)によって作
られている。
このモデルに従って、通信の取り決めが作りやすくなるという、標準的なサ
ンプルが OSI モデルである。
OSI モデルでは、物理的なコネクターのピン配置から、果ては業務処理に必
要な規格までを、7 つの層(レイア)に分けて、データ通信に必要な事柄を体
系的にまとめている。7つの層全てを網羅したプロトコルはまだ無い。
22
また、複数の層を一まとめにしているプロトコルもある。
各層の内容を次に示す。
①物理層
電気的・機械的な条件を規定する。具体的には、使用する変調方式、全二
重か半二重か、ボーレート、コネクターの形状やピンの配置、伝送媒体など
を決める。
物理層プロトコルとして代表的なものは、パソコンと TNC をつなぐときに
使う RS−232C、パソコンとプリンターをつなぐときに使うセントロニクス、
モデムでお馴染みの V.21(300bps モデム)や、V.23(1200bps モデム)など
V シリーズの規格がある。
②リンク層
伝送媒体で発生したビット誤りの検出と回復の手順を提案する。具体的に
はリンク層の確立と解放、データ転送、順序制御、誤り制御、フロー制御な
どを決める。リンク層プロトコルとして代表的なものは、HDLC、アマチュア
の AX.25 リンク層プロトコルがある。
③ネットワーク層
目的とする局までの中継経路(ルート)を選択(ルーティング)し、上位の
層がデータの転送を行う際、中継経路を意識せずに通信できることを目的とす
る。主な仕事としては、ネットワーク・コネクションの確立と解放、データ転
送、順序制御、フロー制御がある。
具体的なプロトコルとしては、X.25 のパケット層のプロトコルがある。
AX.25 では、X.25 の LAPB(Link Access Procedure Balanced)に相当する
ところだけを定めている。
④トランスポート層
この層の目的は、送られた全てのデータが完全に、かつ正しい順序で到着す
ることを保証し、ネットワークの違いを吸収することである。
具体的には、トランスポート・レベルのコネクションを行い、メッセージの
転送以外に、複数のトランスポート・コネクション間で一つのネットワークを
共有するため、多重化や分流化を行ったり、データが正しい順序となるよう整
頓したり、余分なものが含まれていないかなどを調べ、適切な処置を行う。
トランスポート層のプロトコルとして有名なものは、TCP/IP(Transmission
Control Protocol/Internet Protocol)がある。
23
⑤セッション層
通信の開始から終了までの流れを管理することが目的である。
具体的には、相手とコネクションを取り、どちらがデータを送るかという
データ通信権を決める。
同期を取りながらデータの授受を行う。半二重/全二重を設定するための主
導権の制御、障害への対処などを行う。別の言葉でいえば、あらゆる通信を
行う際に共通な対話の流れ(ダイアローグ)の管理が目的である。
⑥プレゼンテーション層
通信するデータの表現形式の違いを管理する層である。
データの表現形式とは、文字のコード(ASCII や Shift JIS など)
、画面の
制御コード(エスケープシーケンスなど)、ファイルの構成法、数値の表現法
などを意味する。また、必要ならコード変換も行う。
⑦応用層
本来通信をしたい情報の本体が出入りするところで、この層を介してユー
ザーは送りたい情報を授受する。主な仕事は、情報転送、通信相手の識別確
認、対話方法の決定、誤り訂正の一致、必要な資源(リソース)の決定など
を行う。
24
2.9.2
AX.25
○ 概要
AX.25 は、X.25 からアマチュア無線で使用するためのプロトコルである。X.25
はパケット網にパケット形態端末がつながるためのプロトコルである。ITU‑T 勧
告における名称は、
「公衆データ網に専用線で接続されたパケットモードで動作
するデータ端末装置(DTE)とデータ回線終端装置(DCE)間のインターフェー
ス」という。パケット形態端末とは、パケット網に対して、パケットを直接転
送できる端末のことで、自らがパケットをつくる機能をもっている高級端末で
ある。
AX.25 は国際的に標準化されている、高信頼・高能率なプロトコルであり、コ
ンピュータ通信に向いた手順である、HDLC(High level Data Link procedure)
に、準拠している部分が多い。
現在 AX.25 は、前に述べたように、リンク層だけを定めているもの。ところ
が、TNC にはリンク層部分だけではなく、物理層の機能も実装されている。
AX.25 とは、有線系のコンピュータ通信用のリンク層プロトコルに、次のよう
な変更や、拡張を加えたもの。
※ アマチュア無線のコールサインがアドレスとして使えるように拡張。
※ 相手と接続しなくても、一応交信や、CQ が出せるよう相手なしの非番号制情
報フレーム(TNC では、UNPROTO という呼び方)を追加。
※ 簡易に中断が出来るよう、ディジピーターという中継機能をリンク層に追加。
※ ある局とコネクト中に他局からコネクト要求があれば、ビジーを返す機能を
追加。
○AX.25 のフレーム構造
各フレームには 8 ビットの制御フィールドがある。この制御フィールドに
は種々の識別符号が入っている。各種類は、
フレーム
情報フレーム(I フレーム)
監視フレーム(S フレーム)
非番号フレーム(U フレーム)
25
AX.25 のフレーム内の構造…フラグ、アドレスフィールド、制御フィールド、
情報フィールドなどがある。
これらがどのように関わるのは、先ほど述べたフレームの種類によって異なる。
① フラグ
② アドレス
③ 制御
⑤ FCS
⑥ フラグ
01111110
8 ビット
8 ビット
16 ビット
01111110
情報部を持たないフレーム(S フレーム、U フレーム)
① フラグ
② アドレス
③ 制御
④ 情報
⑤ FCS
⑥ フラグ
01111110
8 ビット
8 ビット
N ビット
16 ビット
01111110
情報部を持つフレーム(I フレーム)
図2−7
AX.25 のフレーム構成
AX.25 プロトコルのフレームの構成図を図 2‑7 に示す。
そこで、これらのフレームの役割を次に示す。
① ・⑥ フラグ
フレーム構成において、フレームの前後には、
「フラグ」と呼ばれる特別のコ
ード(01111110)がある。
フラグを用いて、フレームの同期を取る。Zero insertion(0挿入)=送信
する際、情報部分には、1が 5 つ連続すると、強制的に0を挿入し、フラグと
同じビットの系列が絶対に発生しないようにしている。一方、受信側でもこの
約束を知っており、連続する 5 つの1の後の0は強制的に取り去る(zero
deletion:0削除)。このような操作をビット詰め(bit stuffing)と呼ぶ。
よって、どんなパターンのビットパターンでも送ることができる。これを「フ
レーム内容の透過性が保たれている(トランスペアレント)」という。
② アドレスフィールド
アドレスフィールドは、基本的には 8 ビットである。
通常、8 ビットをひとまとめにして、1バイトと呼び、データ通信では、1オク
テット(Octet)と呼ぶ。HDLC では、アドレス部を1オクテット以上(8 ビット
以上)に拡張することが可能で、AX.25 ではこの部分を拡張し、コールサイン入
れる。
※アドレス部の拡張方法
「アドレス部の再低位ビット(図では b0)が0であれば、次のオクテットもア
26
ドレスとする。最低位ビットが1なら、このオクテットでアドレスは終わりと
する」という約束に従う。
この規則にすると、任意にアドレス部を作ることが可能。
AX.25 アドレス拡張図を図 2‑8 に示す。
基本形
b7
b6
b5
b4
b3
b2
b1
b0
8 ビット
16 ビットに
拡張
AX.25 の
拡張
0
J
R
0
3
0
K
0
1
E
0
G
0
0
0
A
0
3
0
0
0
D
0
C
0
送信局コール
HDLC のアドレス部と AX.25 での拡張
27
SSID
0
1
終わり
宛先局コール
図2−8
J
SSID
③ 制御フィールド
HDLC では、情報転送に先立ち、相手方を呼び出し、互いに通信可能な状態に
なり、この時、相互にデータのやり取りをする経路をリンクと呼ぶ。
制御フィールドは、フレームの種類を表す。
HDLC に、情報を送る情報フレーム(I フレーム:Information Flame)
、リン
クの監視や制御のための監視フレーム(S フレーム:Supervisor Flame)、リン
クの設定などに使われる、非番号制フレーム(U フレーム:Unnumbered Flame)
がある。この中で、情報フィールドを持っているのは I フレームだけである。
28
④ 情報フィールド
情報フィールドには、送りたい情報を入れる。これは、どんなビット系列で
も構わない。たとえ1がたくさん連続していても、ビット詰めが自動的に行わ
れるので問題はない。
⑤ FCS
FCS(Flame check Sequence)は誤り検出部であり、CRC による誤り検出コー
ドを入れる。誤り検出の対象になるのは、前後のフラグを除いた部分で、CRC を
計算して、誤りを発見することができる。
29
2.9.3
CCSDS
○概要
CCSDS とは、宇宙データシステム諮問委員会(CCSDS:Consultative Committee
for Space Data System):コマンド、テレメトリなどの宇宙データに関する国
際規格を作成するため 1982 年に結成された組織である。
○CCSDS 勧告
CCSDS 勧告とは、NASDA を含めた各国の宇宙機関が共同で設立した「宇宙デー
タシステム諮問委員会(CCSDS)」によって勧告されたデータ処理プロトコルの国
際標準のことである。これは、CCSDS 勧告を近接宇宙リンクエリアのスペースデ
ータシステム標準とすることが目的である。
CCSDS 勧告はデータリンク層と物理層を定義している。
○衛星・地上間のデータ伝送方式
衛星・地上間のデータ伝送方式としては、次の二通りの方式がある。
・ 時分割多重化(TDM:Time Division Multiplex)方式
・ パケット(CCSDS)方式
TDM 方式は、固定長データ処理を基本としており、その固定長データに対して、
あらかじめ決められた順序でデータを割り当てて送信する。データ処理は容易
だが、多種多様なデータを扱えない欠点がある。
パケット(CCSDS)方式は、TDM 方式では扱えない多種多様なデータを柔軟に
取り込むことが可能とするように定められた国際規格の方式である。しかし、
パケットを編集するためにソフトウェア、ハードウェアの負担が大きくなる欠
点がある。
近年、姿勢制御やミッションの制御用に計算機が数多く搭載されてきており、
諸外国の地上局利用の容易性から、パケット(CCSDS)方式が有利である。
パケット(CCSDS)方式は、データリンク層プロトコルで、このプロトコルは、
スペースデータの効率的な転送のため、宇宙での要件を満たすように構成さ
れている。
30
パケット(CCSDS)方式のシステム図を図 2‑9 に示す。
宇宙機
地上
A
パス機器
B
ユーザー機器1
ユーザー機器2
C
CCSDSパケット
テレメトリ
仮想透過伝送
CCSDSパケット
観測データ
仮想透過伝送
CCSDSパケット
音声/画像
仮想透過伝送
A
衛星管理設備
B
ユーザー1設備
C
ユーザー1設備
CCSDSフレームの多重
A
B
C
CCSDSフレームの分解
CCSDS
テレメトリ/コマンド
処理部
CCSDS
テレメトリ/コマンド
処理部
電波
通信系
A
図 2−9
B
通信系
C
パケット(CCSDS)方式・システム図
31
A
B
C
表 2‑10 に設計した電力・重量管理表を示す。
表 2-10 電力・重量管理表
系統
ハードウェア
電源系
太陽電池
充電時電力[W] 定常電力[W] ミッション電力[W] 重量[g]
100
バッテリ
56
合計
通信系
156
アンテナ
50
無線機
0.3
1
1
100
TNC
0.5
0.5
0.5
50
合計
0.8
1.5
1.5
200
データ処理系 OBC
0.4
0.4
0.4
↓
データ記憶装置
0.1
0.1
0.1
↓
合計
0.5
0.5
0.5
150
ジャイロセンサ
0.1
0.1
0.1
50
放射線
0.1
0.1
0.1
50
温度センサ
0.1
0.1
0.1
50
合計
0.3
0.3
0.3
150
マイクロ波エンジンシステム
0
0
↓
150
加速電源
0
0
↓
50
合計
0
0
3
200
構造系
0
0
0
250
合計
0
0
0
250
1.6
3
6
1106
センサ
推進系
構造系
合計
通常発電量
3W
最大発電量
6.88W
32
第3章
3.1
データ処理系
オンボードコンピュータ
本研究では、衛星内の制御、データ取得などを行う CPU ボードとして H8/3048
(以下 H8 と称す)を使用する。CPU ボードとは、コンピュータの心臓部分であ
る CPU から構成されている電子部品の事で、一般的にはマイコン(マイクロコ
ンピュータ)と呼ばれている。
3.1.1
H8
オンボードコンピュータには,Hitachi 製 H8/3048 を使用する。この CPU は車
の制御用にも使用されており,機器性能の仕様はクロック周波数 16MHz,A‑D・
D‑A チャンネル 8ch,タイマ ITU5ch,シリアルポート 2ch と多機能である。
この CPU の機器選定は多機能であるということのほかに,宇宙放射線環境に
おいて耐性を持っているという理由がある。H8 の外観を図 3‑1 に、性能表を表
3‑1 に示す。
図3‑1
H8/3048 の外観
33
表3‑1
H8/3048
性能表
駆動電圧
5V
電流
50mA
クロック周波数
16MHz
内蔵メモリ
4kbyte
ウォッチドクタイマ
1ch
ITU タイマ
5ch
シリアル(SCI)
2ch
DMA コントローラ
ショートアドレス
大 2ch
I/O ポート
78 本
ROM
128KB
RAM
4KB
タイマー
16BIT×5ch
A/D 変換
10BIT×8ch
D/A 変換
8BIT×2ch
インターバルタイマとしても使用可
フルアドレス
最
フラッシュメモリ
SRAM
PWM 最大 5 相
リフレッシュコントロー 2CAS/2WE 方式
ラ
用可
その他
最大 4ch
インターバルタイマとしても使
16MB までリニアアドレス拡張可
基本クロックをソフトで 1/1〜1/8 まで分周可
(ギア機能)
周辺モジュールを個々にスタンバイ可
1MHz〜16MHz 動作可
5V、3V 動作可(3V は 8MHz まで可)
34
○H8 内部ブロック図
図 3‑2
H8 内部ブロック図
35
ピン配置図
図 3‑3
ピン配置図
36
3.1.2 データ取得について
○概要
推進系データ及び機体のデータなどは OBC(オンボードコンピュータ)によっ
て管理される。センサからの取得データをマルチプレクサに入力し、H8 の I/O
ポートの操作によるマルチプレクサの制御を行い、選定したデータを H8 の A/D
変換ポートに取り込む。
I/O のポート
A/D のポート
マルチプレクサ
I/O のポート
図 3-4 データ取得概念図
37
入力データ
マルチプレクサ
・・・・・
H8
○データ取得のグループ分け
H8 の一度に入力できるアナログデータ入力ポートは 4 つまでであり、一度に
マルチプレクサ入力出来るデータは 4×2 の 8 つである。従って、取得データ 4
つまでを 1 グループとするグループ分けを行う必要がある。また、H8 の I/O ポ
ートについても割り当てる。
表 3‑2
データのグループ分け
バッテリ電圧
太陽電池電圧
Group1 (衛星電圧電流)
+X 面
‑X 面
+Y 面
‑Y 面
Group2(太陽電池電流)
+Z 面
‑Z 面
+X 面
‑X 面
Group3(衛星温度)
+Y 面
‑Y 面
+Z 面
‑Z 面
Group4(衛星温度)
バッテリ
通信機
X値
Group5(ジャイロ)
Y値
Z値
放射線の量
Group6(量)
電池残量
38
スラスタ側入射電力
スラスタ側反射電力
Group7(スラスタと加速電源)
加速電圧
加速電流
スラスタ温度
Group8 エンジン温度
オリフィス温度
スラスタ側マイクロ波アンプ温度
Xe タンクセンサ
Group9(圧力センサ)
オリフィス供給圧力
比例電磁弁電流
※ Group1〜6 のデータは CW テレメトリで送信する
Group7〜9 のデータは推進系のデータとする
39
○H8 ポートの割り当て
マルチプレクサは入力最大 8 チャンネルなので、2 グループで 1 つのマルチプ
レクサを使うと考えると、全部で①〜⑤の 5 つのマルチプレクサを必要とする。
また、H8 の A/D 変換入力ポートを CH0、CH1 の 2 つ割り当てる。また、マルチプ
レクサの制御用に 3×5 種類分のポート割り振る。ただし、EN 端子は各マルチプ
レクサに対して 1 つであり、マルチプレクサ制御端子 A0、A1 は各マルチプレク
サ共通とする。
表 3‑3
マルチプレクサと H8 ポートの割り当て表
マルチプレクサ‐
グループ番号
A/D
EN 制御のポート
表 3‑4
Group1
①‐CH0
Group2
①‐CH1
Group3
②‑CH0
Group4
②‑CH1
Group5
③‑CH0
Group6
③‑CH1
Group7
④‑CH0
Group8
④‑CH1
Group9
⑤‑CH0
Port1‑0
Port1‑1
Port1‑2
Port1‑3
Port1‑4
マルチプレクサ制御端子と I/O ポートの割り当て表
マルチプレクサ制御端子
I/O ポート(①〜⑤共通)
A0
Port1‑5
A1
Port1‑6
40
3.1.3
マルチプレクサ
マキシム社の MAX309 を使用する。MAX309 は高精度モノリシック CMOS アナロ
グマルチプレクサで、オン抵抗は 100Ω以下と低く、全温度範囲における低リー
ク電流(+85℃での Ion(OFF)が 2nA 以下)と高速スイッチング特性が得られる。
入力 8 チャンネル、出力 2 ポートである。
表 3‑5
マルチプレクサ性能表
名称
MAX309
低オン抵抗
100Ω MAX
リーク電流
Ion(OFF)5nA
消費電力
300μW
動作
単一電源動作+5V〜+300V、バイポーラ電源動作+5V〜 ± 200V
図 3‑5
MAX(+85℃)
、Ion(OFF)20nA
MAX309 TOP
表 3‑6
図 3‑6
MAX(+85℃)
MAX309 端子接続図
41
MAX309
真理値表
3.2
通信部
3.2.1
無線モデム
○概要
地上から送られてきたデータ、あるいは OBC からのデータを地上に伝送する
ためには、モデムが必要になる。
○仕様
表 3‑7
無線モデムの使用表
変復調方式
搬送波周波
数
Bell202
1700Hz
周波数偏移
±500Hz
変調速度
1200bps
通信速度
1200bps
変調レベル
マイクレベ
ル
出力レベル
C‑MOS レベル
電源電圧
5V 単一
消費電流
50mA 以下
○モデム部
モデム部は、TI (Texas Instruments)社のモデム IC TCM3105 を利用して
いる。モデム IC は、デジタル信号を音声信号に変換する。
・
・
・
・
・
・
・
FSK(Frequency‑Shift‑Keying)モデム
Bell202 と CCITT V23 両方の仕様に適合
送信変調 1200bps
受信変調 1200bps
半二重送受信 1200bps
5V 動作
低消費電力
42
○TCM3105 のピン配置
表 3‑8
ピン
TCM3105 のピン配置表
説明
番号
名称
1
Vcc
+5V
2
CLK
送受信ビットレート選択のクロック
3
CDT
キャリア検出出力
4
RXA
受信アナログ入力
5
TRS
送受信選択入力
6
NC
ノーインターナル接続
7
RXB
受信 Duty 比調節
8
RXD
受信デジタル出力
9
GND
GND
10
CDL
キャリア検出レベル調節
11
TXA
送信アナログ出力
12
TXR2
ビットレート選択 2
13
TXR1
ビットレート選択 1
14
TXD
送信デジタル入力
15
OSC1
水晶発振
16
OSC2
43
○回路図
+5V
1KΩ
+5V
10kΩ
+5V
22kΩ
2SC1815
10μF
33pF
TCM3105
1 VCC
OSC2
2 CLK
OSC1
3 CDT
TXD
4 RXA
TXR1
5 TRS
TXR2
6 NC
TXA
7 RXB
CDL
8 RXD
GND
10kΩ
2SC1815
0.1μF
RX IN
+5V
0.1μF
16
15
14
13
12
11
10
9
VR3
10kΩ
33pF
+5V
VR2
10kΩ
VR1
5kΩ
TX OUT
RXD
図 3‑7
4.4336MHz
TXD
無線モデム回路図
44
○概観
図 3‑8
無線モデムの概観
45
○調整
・可変抵抗
VR1 マイクゲイン
VR2 キャリアレベル調整
VR3 受信 Duty 比調整
・信号波形の確認
モデムに信号が入力されていないと、ゼロの信号を発生するのでスピーカで
音による信号、若しくはオシロスコープで波形を確認する。オシロスコープで
のゼロ入力の波形を下記の図 3‑9 に示す。
図 3‑9
無線モデム信号ゼロ波形
46
3.2.2
シリアルインターフェース
○
概要
RS‑232 は、9V 程度のレベルであるが、スルーモデムは TTL レベルのためレベ
ル変換が必要になる。
シリアルインターフェース(以下シリアル I/F と称す)は、PC からの RS232
レベルを TTL レベルに変換あるいは、TTL レベルを RS‑232 レベルに変換するも
のである。
○
変換部
レベル変換には MAXIM 社の MAX232 と、MAX232 とピンコンパチブルな ADM 製の
ADM232 を使用した。
図 3‑10
MAX232 の構成
MAX232 には Charge‑pump タイプの DC‑DC コンバーターを利用している。この
Charge‑pump 機能を向上させるために、IC の外にコンデンサーを取り付けた。
47
○回路図
RS232 I/F
T C D
X T T
D S R
5V
R
X
D
D‑SUB9p
16
13
12
11
9
10
1
14
8
MAX
232
7
4
3
2
5
15
6
図 3‑11
シリアル I/F 回路図
○概観
図 3‑12
シリアル I/F 概観
48
TXD
RXD
DTR
CTS
GND
3.2.3
無線機
○概要
無線機は、音声信号を伝送するために必要である。
無線機は、ハンディー機を使用し、アイコム社製 IC‑S7 と ALINCO 社製の DJ‑C4
を使用した。
無線機の操作には、アマチュア無線技士の資格を要する。
○仕様
表 3‑9
IC‑S7 の仕様
周波数
145/430MHz 帯
最大出力
6W
変調方式
FM
表 3‑10
DJ‑C4 の仕様
周波数
430MHz帯
最大出力
350mW
変調方式
FM
49
○動作確認
モデムの動作を確認するために、PC 間の無線伝送実験を行った。
構成を以下に示す。
シリアルI/F
スルーモデム
受信機
送信機
PC
スルーモデム
シリアルI/F
PC
図 3‑13
構成図
○確認方法
2 台のスルーモデムを、PC 及び RS232I/F、無線機に接続し、一方を送信専用、
もう一方を受信専用とする。
無線機は、ICOM IC‑S7D ハンディー機を利用し、周波数は 430MHz の実験・研
究用周波数を利用する。
PC のソフトにはハイパーターミナルを使用し、RS232 での通信を行う。
ハイパーターミナルの通信速度を 1200bps として、入力した文字をシリアル
信号にて送信する。
受信側も同様の設定で、入力した文字を受信する。文字が化けるようであれ
ば、VR1 から VR3 の可変抵抗を調整する。
○結果
PC 間の、キーボードからの入力による文字情報の無線伝送に成功し、動作を
確認した。
50
3.3
地上局
○概要
地上局は、人工衛星と地上の通信を確立し、コマンドの送出やテレメトリ情
報の受信を行うものである。
○設備
表 3‑11
地上局設備表
無線機
IC‑970
アンテナ
WHS‑32N
ローテータ
安定化電源
RC53P
ECR51
PS125
サテライトトラッカ RAC805
TNC
TNC‑55
○構成
ROTATER
EL
AZ
SATELLITE
TRACKER
無線機
TNC
図 3‑14
PC
地上局構成図
51
以下、地上局設備について説明をする。
・無線機
多くのアマチュア衛星は、145/430MHz 帯を利用している。
ICOM 社製の IC‑970 は 145/430MHz 帯のアマチュア無線機である。
・送信出力最大 20W
・第 4 級アマチュア無線技士の免許の範囲内で操作可能
・FM/SSB/CW/AM 各変調方式に対応
・サテライトモードで、ドップラーシフトのアップリンクとダウンリンクを同
時に操作可能
・アンテナ
高い周波数では、パラボラアンテナが有利であるが指向性が強く、低い軌
道のアマチュア衛星では追尾が困難である。人工衛星からの電波は、ほぼ円
偏波であるのでクロス八木が有効である。
マスプロ電工社製の WHS‑32N は、145/430MHz のクロス八木アンテナである。
20 エレメントの 2 スタックである。図 3‑15 にアンテナの外観を示す。
図 3‑15
地上局アンテナ外観
52
・ローテータ
指 向 性 ア ン テ ナ で 衛 星 を 追 尾 す る に は 、 方 位 角 ( Azimuth ) と 仰 角
(Elevation)を調整しなくてはならない。ローテータは、アンテナの方位
角と仰角を制御するものである。
・サテライトトラッカ
サテライトトラッカは、軌道要素を入力することにより、アンテナの自動
追尾制御を行うものである。これは、直接ローテータを制御するのではなく
方位角、仰角用ローテータの各コントローラの回転スイッチ部を自動制御す
るものである。
・ TNC
TNC(Terminal Node Controller)は、多くのアマチュア衛星に搭載され
ているデータ専用交換機である。TNC はパケットの生成および分解を行う。
パケットには、識別信号やテレメトリ情報などが含まれる。
TNC‑55 はタスコ電機社製で下記の機能を有する。
・ 通信速度 1200bps
・ AX.25 プロトコル準拠
・ FSK モデム
・ 半二重通信方式
○無線局の概要
表 3‑12
無線局の詳細
呼出符号
JR8YIH
設置場所 北海道工業大学
Lat
N43.131916
Lon
E141.253766
呼出符号は、アマチュア無線局として総務省総合通信局から、免許が与えら
れる。本局は宇宙通信を含む無線局の免許である。設置場所は、北海道工業大
学3号館である。Lat 及び Lon は衛星を捕捉するために必要な位置情報である。
53
3.4 データ処理系 BBM
3.4.1
概要
CubeSat の通信及びデータ処理をシステム化するために BBM(Bread Board
Model)を製作した。これは、OBC である H8/3048(以下 H8 と称す)を搭載し、
通信機である無線モデム及び無線機、制御対象とする姿勢制御系リアクション
ホイール(以下 RW と称す)、CCD カメラを体系化したモデルである。
大きさは、実際の CubeSat が 10*10*10[cm]の立方体であるのに対し、モデ
ルは 15*15*15[cm]の立方体となっている。モデルの概要を図 3‑16 に示す。
CubeSat
③
CCD カメラ
カ メ ラ
用無線
TV
無線機
無線機
無 線 モ
無 線 モ
パソ
デム
デム
コン
OBC
H8/3048
リアクショ
ンホイール
電源
図 3‑16
モデル衛星と通信器の概要図
54
3.4.2
サブシステム
①
CCD カメラ
図 3‑17
カメラ背面
表 3‑13
図 3‑18
カメラ正面
CCD カメラの詳細表
名称
MTV−54B(K)ON(秋月電子通商(株))
画素数
542(H)*496(V)
出力
1.0Vp−p ビデオコンポジット(75Ω)
電源
DC12V/85mA
55
②
CCD カメラ送信
図 3‑19
CCDカメラ送信機
表 3‑14
CCD カメラ送信機詳細表
名称
2.4GHz
ワイヤレス超小型送信機
入力方式
1Vp−p ビデオコンポジット(75Ω)
送信周波数
2.413GHz、2.432GHz、2.451GHz、2.470GHz
電源
DC9V/90mA
56
15−2400MTS3
③
CCD カメラ受信機
図 3‑20
CCD カメラ受信機
表 3‑15
CCD カメラ受信機詳細表
名称
2.4GHz
ワイヤレス受信機
入力電源
DC12V
送信周波数
2.413GHz、2.432GHz、2.451GHz、2.470GHz
電源
DC12V アダプター
57
15−2400VR
④オンボードコンピュータ
無線モデム及び無線機は 3.1 オンボードコンピュータで明記したものを使用す
る。詳細はここでは省く。
⑤リアクションホイール
リアクションホイールは姿勢制御系であり、モータの回転によって軸の微妙
な位置を調整するものである。H8 の信号では、モータを直接駆動できないため、
モデル衛星では、モータを⑥のモータードライブ回路に接続し、モータードラ
イブ回路を H8 にて制御する。リアクションホイールを図 3‑21 に示す。
図 3‑21
リアクションホイール
58
⑥モータードライブ IC
モータドライバはブラシ付きモータの正・逆転切り替え用のフルブリッジ
ドライバで、正転、逆転、ストップの 4 モードがコントロールできる。
モータ駆動部とコントロール部は、電源ラインが独立しており、ステッピ
ングドライバとしても使用できる。RW の駆動に使用するものである。モータ
ードライブ回路を図 3‑22 に示す。
図 3‑22
モータードライブ回路
・入力プルアップ抵抗内蔵 BRAKE = 200kΩ(Typ.)
・入力プルダウン抵抗内蔵 IN、ENABLE = 100kΩ(Typ.)
表 3‑16
名称
TA8440H
電源電圧
Vcc 5V
出力電流 AVE
1.5A
消費電力
2.25W
、Vs
図 3-23
モータードライブ IC 詳細表
5V
モータードライブ IC
59
モータードライブ IC の電圧とデューティー比の関係を表 3‑17 に示す。これ
により、モータの回転数制御が可能となる。
表 3‑17
電圧とデューティー比
電圧=9V
デューティー比(%)
正電流
(A)
負電流
(A)
最大電流(A)C 最大電流(A)T
→T
→C
0
0
0
0
0
10
0.02
‑0.01
0.14
‑0.15
50
0.02
‑0.02
0.36
‑0.36
100
0.02
‑0.02
0.59
‑0.54
電圧=7V
デューティー比(%)
正電流
(A)
負電流
(A)
最大電流(A)C 最大電流(A)T
→T
→C
0
0
0
0
0
10
0.01
‑0.01
0.11
‑0.11
50
0.02
‑0.02
0.25
‑0.26
100
0.02
‑0.02
0.41
‑0.38
電圧=6V
デューティー比(%)
正電流
(A)
負電流
(A)
最大電流(A)C 最大電流(A)T
→T
→C
0
0
0
0
0
10
0.01
‑0.01
0.07
‑0.07
50
0.01
‑0.01
0.21
‑0.21
100
0.01
‑0.01
0.31
‑0.31
60
モータードライブ IC の真理値表を表 3‑18 に示す。これにより、モータの正
転、逆転、停止の制御が可能となる。
表 3‑18
モータードライブ IC の真理値表
入力
IN
出力
出力モー
ド
〜BRAK ENABL CHOP OUTA OUT〜
E
E
A
H
H
H
L
H
L
CW//CCW
L
H
H
L
L
H
CCW//CW
*
*
L
*
∞
∞
STOP
*
L
H
*
L
L
BRAK
E
H
H
H
H
∞
L
CHOP
L
H
H
H
L
∞
CHOP
∞;ハイインピーダン *;Don t Car
ス
e
*記号の前付いている「〜」はその記号の否定を表す。
61
⑦通信機
無線モデム及び無線機は 3.2
は省く。
通信で明記したものを使用する。詳細はここで
⑧電源
DC‑DC コンバータ
・入力保護素子、出力可変端子付
・入出力フローティング
・5面金属ケースのシールドタイプ
・過電流保護機能付
表3‑19
DC−DCコンバータの詳細表
製品型番
CCN‑0505SF、 CCN‑0512SF
駆動電圧
5V
最大出力電力
5W、6W
出力電圧
5V、12V
出力電圧
各々1
62
3.4.3 動作手順
モデル衛星の使用手順を下記に示す。
①
②
CCD カメラから周囲の映像をモニターに取り込む
H8 を無線で操作し、モータの制御を行う
①CCD カメラから周囲の映像をモニターに取り込む。
電源SWをONにする
同時にH8 用無線とCCDカメラ、カメラ用無線が立ち上がる
CCDカメラが画像を撮る
画像情報をカメラ無線受信機へ送られる
モニターで画像が映し出される
②
H8 を無線で操作し、モータの制御を行う
パソコンからモータを回転させるコマンドを無線でモデル衛星に送信する
モデル衛星側通信機からH8 へ信号を送る
H8 でモータードライブ回路を制御する
モータードライブ IC によりモータを駆動させる
パソコンから回転数、回転方向、回転軸の制御が出来る
63
3.4.4
モデル衛星の設計・作成
3.4.4.1
回路構成
回路のブロック図を図 3‑24 に示す。
CCD カメラ
DC/DC
5V
コンバーター
電圧
カメラ用
無線
通信機
モーター
ドライブ
H8-3048
モータ
CCD 用受信機
テレビ
パソコン
通信機
図 3‑24
回路のブロック図
64
○入力電圧
入力電圧は 5V である。また、持ち歩くことが可能となるように電池ホルダー
を衛星に付けてある。しかし、モータ回転時は電流不足となるため、カメラか
らの画像送信は不可能となる。
○画像送信
CCD カメラとカメラ用無線はケーブルで結ばれており、カメラでとった映像を
無線送信機に送り、無線で受信器へ送られる。
○モータ回転
パソコンからの情報を無線でキューブサット内の通信機に送り、H8に伝える。
モータードライブ回路は H8 に接続されており、コマンド通りの回転をモーター
ドライブ回路で動かす。
モニタ
テレビ
ラップトップ コンピュータ
パソコン
無線 B
無線 A
図 3‑25
キューブサット
キューブサットと無線通信の様子
65
3.4.4.2
電源回路との接続回路
電源回路と H8‑モータードライブ IC 接続回路を図 3‑26 に示す。
・モデル衛星電源回路図
+5[V]
+5[V]
0.1[μF]
+12[V]
DC/DCコンバーター
CCM‑0512SF(TDK)
Vctl
−5[V]
−5[V]
0.1[μF]
CCDカメラ
−12[V]
−5[V]
7809
※Vctlと‑Vinを接続することで
初めて出力を得ることが出来る
+12[V]
映像送信用ケーブル
+9[V]
GND
0.1[μF]
カメラ用無線
H8用無線
モータードラ
イブ回路
H8‑3048
図 3‑26 電源回路図
5V の電圧を DC/DC コンバーターにかける。モータードライブ IC にも同じ電圧
を加える。その電圧はコンバータを通して 12[V]に変換される。この電圧を CCD
カメラに加える。またその電圧を三端子レギュレータをと通して 9[V]にしてい
る。そしてその電圧をカメラ無線、H8 用無線、H8‑3048 に加える。
注意として、コンバータはVctl と−Vin を接続することで初めて出力が得られ
る。
66
3.4.4.3
H8−モータードライブ IC の接続
・モデル衛星 H8〜モータードライブIC接
続図
RS232C
2
CH4
4
WP‑203
通信ユニット
2
(H8無線)
(signal)
5(GND)
3(5V)
6
OBC H8/3048
27
28
CH3
Y軸
29
23
24
CH1
1
2
39
40
34
33
25
32
37
35
10
1(ENABLE)
2(IN)
3(BRAKE)
5[V]
TA8440H
モータードライブIC
4(Signal
GND)
5(CHOP)
Z軸
6(VCC)
7(Vs)
(OUT A) (PG) (COMMON) (PG)
8
9
10
11
(OUT
notA)
12
5[V]
M
図 3‑27
H8‑モータードライブ IC 接続図
モータードライブ IC の役割は、モータの制御と同時に、モータに 1A 流す
ことである。H8 から直接出される信号は 20mA 弱程度であり、1A を必要とする
このモータを駆動させることはできない。そこで、H8 から出力される信号をス
イッチングの代わりにし、モータードライブ IC により 1A を流す。モータード
ライブ IC 接続は以下の表 3‑18 H8 ピンの端子説明表と表 3‑19 モータードラ
イブ IC の端子説明表を参考にする。
67
○H8 ピン端子説明
表 3‑20
H8 ピンの端子説明表
CH 番号
ピン番号
ピンの名称
CH1
1
GND
2
GND
10
PA‑2:8 ビットの入出力端子。PADDR によって 1 ビッ
トごとに入出力を決定できる。
32
P4‑1:8 ビットの入出力端子。P4DDR によって 1 ビッ
トごとに入出力を決定できる。
33
P4‑2: P4‑1 と同様
34
P4‑3:P4‑1 と同様
35
5V
37
GND
39
POWER
40
POWER
23
P2‑0:8 ビットの入出力端子。P2DDR によって 1 ビッ
トごとに入出力を決定できる。
24
P2‑1:P2‑0 と同様
25
P2‑2 :P2‑0 と同様
27
P2‑4:P2‑0 と同様
28
P2‑5:P2‑0 と同様
29
P2‑6:P2‑0 と同様
2
GND
4
RXD1:レシーブデータ。SCI のデータ入力端子。
6
TXD1:トランスミットデータ。SCI のデータ入力端子。
CH3
CH4
68
○モータードライブ IC 端子説明
表 3‑21
モータードライブ IC の端子説明表
端子番号 端子記号
端子説明
1
ENABLE
イネーブル端子、 L
2
IN
正逆切り替え端子
3
〜BRAKE
ブレーキ端子、 L
4
SG
Signal GND
5
CHOP
PWM 信号入力端子
6
Vcc
制御側電子端子
7
Vs
出力側電源端子
8
OUTA
出力端子
9
PG
Power
10
COMMON
COMMON
11
PG
Power
12
OUT〜A
出力端子
のとき出力 OFF
のとき出力
L
GND
端子
GND
* 記号の前付いている「〜」はその記号の否定を表す。
69
第4章
衛星制御実験
4.1
実験①
4.1.1
目的
モデル衛星の制御実験
本実験では、モデル衛星のモーターを動かすためのプログラムを作成し、回
転数、回転方向、回転軸の制御が正しく行われているか確認するためのもので
ある。
モデル衛星のモーター回転プログラム開発にあたり、次のような機能を目標
とした。
・ PWM 信号の出力指定が、X,Y,Z の3チャネル行えること。
・ 回転数制御が行えること。
・ データを PC に送信出来ること。
制御アプリケーションは、次のような機能を目標とした。
・ モデル衛星の動作コマンドを、生成・送信できること。
・ モデル衛星からの受信データを表示できること。
・ 受信したデータをファイルとして保存できること。
OBC
H8/3048
パソ
コン
リアクショ
ンホイール
図 4‑1
モデル SAT 有線接続概念図
70
4.1.2
4.1.2.1
原理
モデル衛星側プログラム
受信したコマンドを読み込み、通信条件の決定、コマンドデータの処理、I/
Oポートの設定、シリアル設定、ITU設定、A/Dなどが含まれる。モーター
の制御は第3章データ処理系の 3.4 データ処理系 BBM の中で、モデル衛星のサ
ブシステムに掲載している、表 3−16 モータードライブ IC の真理値表を参考に
する。
○
PWM
モーターの回転数制御を考える場合、断続信号(パ
ルス)で動くスイッチを考える。
単位時間あたりのエネルギー(この場合電圧)を
可変させ、一定時間電力を加えることを繰り返すこ
とで、モーターの回転ができる。回転数が多い程、
電圧を加える回数も多くなる。
周期(s)
つまり、回転数は回転数に比例した動作期間と停
図 4‑2 PWM のパルス
止期間の比の情報をモータードライブ回路に与える
ことで、制御できる。指先でボールを回すのと同じ
原理である。
例えば、20000 回転で 100%だとすると、5000 回転は 25%なので 1/4 の電力
を使うことになる。普通の電源を使ってもモーターを回転させることは出来る
が、これでは電力が多く必要である。PWM の場合、その回転数までの周期のエネ
ルギーだけでいいのでエネルギー消費量を抑える事が出来る。
この動作期間と停止期間の比はデューティー比と呼ばれ、式⑴のように定義
される。デューティー比の変化によって、出力されるパルスの幅が変化するた
め、PWM(Pulse Width Modulation、パルス幅変調)と呼ばれる。
また、このPWMのパルスタイマーを決めるのがITUと呼ばれるものであ
る。
デューティー比 ≡
動作期間
回転数
GRA
=
=
動作期間+停止期間 MAX回転数 GRB
71
⑴
図 4‑3 を用いて PWM 制御を説明する。ここで GRA・GRB は、タイマーの設定値
である。パルス幅の変化は、GRA を変化させることで行う。カウントが0から
GRA までの期間、モーターは加速を受け、GRA から GRB までの期間、モーターは
慣性力で回転する。つまり GRA の値を変化させることにより、モーターが加速
を受ける期間と、慣性で回転する期間の比・デューティー比を変化させること
が出来る。
動作期間
停止期間
PWM波形
GRB
GRA
0
図 4‑3
デューティーサイクルとPWM出力
○
Time
ITU
プログラム中に使われているITUを簡単に説明する。
H8 には ITU(16bitインテグレーテットタイマユニット)というタイマー
機能が 5 チャンネル分付いている。このタイマーをスタートさせると、16bi
tのTCNT(タイマカウンタ)がカウントを開始する。0000h〜FFFFh
(1〜65535)までカウントできる。
このカウンタはある基準となるクロックの周期が 1 回H/Lを繰り返すたびに
1 つずつカウントを増やしていく。
ここで、GRA(ジェネラルレジスタ)に 0000h〜FFFFh(1〜65535)
まで好きな値を設定させることでこのクロック周期を決められる。
この値で先ほど述べたPWMの電力が決まりモーターの回転数につながる。
この 1 周期の中で電力の発生している割合をデューティー比という。
72
○ RW 制御プログラムの構成
・main 関数での処理
① ITU 初期化
ITU 初期化関数を呼び出して、モータを動かす上での、3 軸(X、Y、Z)3ch
分の PWM 出力を初期化する。この後で、PWM のカウントを開始させる。
②SCI 初期化
SCI 初期化関数を呼び出して、シリアル通信ポートの初期化を行う。この送受
信関数は出来合いの関数を使用している。
② データの送受信
コントローラからコマンドが送信されると、return 入力を検出するまで、1
文字受信を繰り返す。通信はシリアル通信方式である。今回はパソコンのシリ
アルポートとの通信なので、RS−232C 規格に基づき、1 本の信号線で 1bit ずつ
順番にデータを送り出している。受け取る側も 1bit ずつ受け取り、8bit 分が揃
ったところで 1 バイトのデータとして取り扱っている。
受信したデータは tx̲data[16]という配列からなり、コマンドを回転軸、回転
方向、回転数別に分けることができる。また、この配列を rx̲data という文字
列に格納しコントローラに直接返すようになっている。
④データ処理
送信されたデータがどのような段階を踏んでいるのか説明する。
回転軸(X、Y、Z)・・・・AXIS 関数を呼び出し、回転軸の確認を行う。
回転方向(L、R)・・・・・DIRECTION 関数を呼び出し、軸のポートに回転方
向の信号を入力する。
回転数(0〜20000)
・・・・・・NOR 関数を呼び出し、コマンドをアスキーコー
ドから数字に変換する。
73
・回転軸(X,Y,Z)と回転方向(L,R)の処理
回転軸と回転方向のコマンドは、AXIS 関数と DIRECTION 関数で処理させる。
回転方向(L,R)の信号を選択した回転軸(X,Y,Z)に対応したH8 のポートに入
力させる。X は H8 のポート 2、Y はポート 3、Z はポート 4 にそれぞれ対応させ
る。
H8
X
port2
Y
port3
Z
port4
図 4‑4
3 軸と H8 のポート
AXIS 関数で回転軸の確認を行った後、DIRECTION 関数へ行く。DIRECTION 関数
は X、Y、Z 用に 3 種類ある。AXIS 関数で、回転軸のコマンドが X だった場合、
DIRECTION_X 関数へ行く。ここで、回転方向(L、R)のコマンドを引数として
渡す。回転方向が L だった場合、
「101」の信号をポート 2 へ入力し、回転方
向が R だった場合、「111」の信号をポート 2 へ入力する。Y と Z のポートへ
は「000」の信号を入力して、停止させる。
Y、Z に関しても同様である。
・
回転数(0〜20000)の処理
コマンドは全て、アスキーコードで送られてくるため、回転数のコマンド
も 5 つの文字として取り出されている。回転数のコマンド(5 桁)は GRA に代入
するために、NOR 関数で5桁の数字に変換させる。
まず、5 つの文字を 0〜9 のどれに当てはまるかを確かめる。 0 なら数字の
「0」、 1 なら数字の「1」として、扱うようにする。これらに桁の重みをつ
けて、5 桁の数字にする。これを、
回転数
MAX 回転数
=
GRA
GRB
より、GRA に代入する。
74
(2)
○モデル衛星制御フローチャート
main
ITU 初期化
3軸(X,Y,Z)PWM カウント開始
SCI 初期化
PC からコマンド入力
1 文字受信
NO
Return 入力検出
YES
1文字を文字列に格納
AXIS 関数
DIRECTION 関数
端子
処理
判断
関数
手入力
NOR 関数
回転数を GRA に代入し、デューティー比設定
モーター回転
図4−5
main 関数フローチャ
75
AXIS 関数
回転軸の選択
X
Y
Z
DIRECTION_(X、Y、Z)関数
回転方向の選択
R
L
選択した回転軸(X、Y、Z)の port に「101」
の信号を入れる
選択した回転軸(X、Y、Z)の port に「111」
の信号を入れる
回転軸、回転方向処理終了
端子
判断
処理
関数
手入力
図 4−6
回転軸と回転方向処理のフローチャート
76
NOR 関数
回転数のコマンド(5 桁)を取り出す
アスキーコードから数字に変換
重みを付ける
GRA に代入
デューティー比設定
回転数処理終了
処理
端子
判断
関数
手入力
図 4‑7
回転数処理のフローチ
77
4.1.2.2
パソコン側プログラム
VBを使い、MSComm を利用する。構成は図 4‑8 のフローチャートを参考にす
る。
スタート
回転軸の決
回転方向決
回転数決定
STOP
START
コマンド生成
OR
START
停止
コマンドの生
コマンドの送
リアクション
ホイール回転
YES
回転要素の変
NO
図 4‑8
PC 側プログラムフローチャート
78
4.1.3
方法
① 制御プログラム
C言語のアルゴリズムを作成。要求される基本機能はコマンドデータ処
理である。コマンドは回転軸(X、Y、Z)、回転方向(L、R)、回転数(0
〜20000)とする。また、シリアル通信、信号出力用タイマーなどの周辺
機能の関数は、新規の作成を行わず、Web上に公開されているものを
応用し構成する。
②
制御アプリケーション
要求される基本機能は、コマンドの生成・送信、モデル衛星からのデー
タの受信・表示、そして受信データの保存である。
制御対象は、第 3 章で示したモデル衛星とする。 実験は、図 4‑9 のよう
な構成で行う。PC−H8 間はシリアルケーブルで接続されている。PC からコ
マンドを送信し、RW の回転制御が行われていることを確認する。回転数につ
いては、回転数を検出するためのデバイスを取り付けていないので、RW の回
転音によって変化を判断する。
PC
モデル衛星
H8
モータードラ
イブ回路
ステータス
モーター
コマンド
図 4‑9
実験接続図
79
4.1.4
結果
① モデル衛星
コントローラからの正転・逆転、回転数の増減のコマンドに対して、正し
く動作させることが出来た。プログラムは付録に載せる。
② コントローラ
モデル衛星の動作から、コマンドの生成・送信は正常に機能している。
コントローラデザインはの図 4‑10 のようになっている。デザイン画面には、
通信を開始するボタンや、回転数を決めるテキストボックス、回転軸、回転方
向を決定するコンボボックス、他に送信する文字列を出力するテキストボック
スコントロールと受信した時の文字列を入力するテキストボックスコントロー
ルを1つずつ配置した。
図 4‑10
RW 実行画面
80
4.2
実験②
4.2.1
目的
推進系の制御実験
本実験はマイクロ波エンジン制御用プログラムの作成とダミーモデルでの実
験である。
4.2.2 原理
マイクロ波エンジンは主に、点火器、加速電源、アンプ、発振器、供給系コ
レクタ電源の構成からなる。これらの部品のスイッチ(以下 SW と称す)
、電圧
を H8/3048(以下 H8 と称す)で制御することによってエンジンを動作させるこ
とができる。各部品と H8 の接続構成は以下の図 4−11 の様になっている。
点火器
On/Off
エンジンヘッド
マイクロ波系用電源
On/Off
方向性結合器
アンプ
発振器
反射電力
On/Off
On/Off
ガスタンク
ガス流量
H8/3048
加速電圧
加速電源
図 4−11
H8−マイクロ波エンジン接続図
81
マイクロ波エンジンをⅠ停止、Ⅱ待機、Ⅲ点火、Ⅳ加速の 4 段階に分ける。
表 4−1 ステータステーブルに示す。各段階でエンジンの正常が確認できれば、
次の段階への切り替えを行う。異常が起きた場合、地上局に通知する。
制御プログラムの構成は、図 4‑12 のフローチャートに示す。
表 4−1
ステータステーブル
Ⅰ
Stop
Ⅱ
Standby
Ⅲ
Ignition
Ⅳ
acceleration
ガスバルブ
L
H
H
H
アンプと発振器
L
H
H
H
加速電源
L
L
H
H
点火器
L
L
*H
L
コレクタ電源
L
L
L
H
*H:0.5 秒後に OFF
開始
停止
No
アラームモード
Yes
待機
No
Yes
点火
No
Yes
加速
No
Yes
加速電源制御
終了
図 4−12
マイクロ波エンジン制御フローチャート
82
○制御手順
各部品に対して、データ取得が正しくなされているか確認後、順番に次の部
品の制御を行う。
①
②
③
④
⑤
⑥
⑦
⑧
⑨
キセノンガスの SW を ON
アンプと発振器の SW を ON
加速電源の SW を ON
加速電圧を 0V → 100V まで上げる
点火器の SW を ON
0.5 秒後に点火器の SW を OFF
加速電圧を 100V → 0V まで下げる
コレクタ電源の SW を ON
加速電圧を自由に制御出来るようにする(0V〜100V)
点火器 ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ 5V
アンプと発振器‑‑‑‑‑‑‑‑‑‑ Vcc 3.7V、Vg
コレクタ電源‑‑‑‑‑‑‑‑‑‑‑‑‑ −50V
供給系、加速電源‑‑‑‑‑‑‑ 未定
83
4.39V、Vd
5.9V
4.2.3
方法
マイクロ波エンジンシステムを直接 H8 に接続して実験する前に、マイクロ波
エンジンを LED と SW のダミーモデルに置き換えて実験する。これにより、H8 か
ら出力される信号の増幅や、各部品から出力されるデータ取得に対して電圧の
分圧を行う必要がなく、プログラムの動作確認ができる。
エンジン部品の SW の ON、OFF を LED の点灯、消灯に置き換えて、各部品から
のデータ取得の確認を手動 SW に置き換える。
通信アプリケーションは、以前にもモデル衛星で使用した、VB のモデル衛星
RW 制御通信アプリケーションを使って、コマンドを送る。
84
4.2.4 結果
作成したプログラムでダミーモデルを使い、実験したところ正しい動作が確
認できた。LED の点灯に従って SW を操作したところ、プログラムが確認し、次
の命令へ進み、最後までループできたことが確認できた。
また、SW の操作をエラー想定時で動作させたところエラーの報告が送られて
きたのを確認できた。
これによって、ダミーを使ったマイクロ波エンジン制御実験は成功した。
4.2.5 考察
実験が成功したことで、次に実際のマイクロ波エンジンシステムと H8 を接続
した実験を行うことができる。これには H8 の低出力(4.5V、数mA)というこ
とや、データ取得の際、H8 の入力最大 5V 定格に合わせるということを考慮しな
ければならない。
85
第5章
5.1
通信実験①
Cube Sat 受信
5.1.1 目的
本実験では、地上局ネットワークの構築を目的とし、既に宇宙で運用中の東
京大学 CubeSat XI の捕捉を行うものである。
5.1.2 原理
衛星の位置を計算するために必要な情報は軌道要素と呼ばれ、本受信実験で
は、NASA(アメリカ航空宇宙局)と NORAD(北米航空宇宙防衛司令部)から公表
されている、NASA 2Line Format と呼ばれる、軌道要素を使った。この軌道要
素から、計算した軌道を基に、CubeSat XI の捕捉を行う。本実験では、軌道計
算ソフト calsat を使用して、衛星を捕捉する。表 5−1 に東大 CubeSat の軌道
要素と周波数を示す。
表 5‑1
1 27848U 03031J
2 27848 98.7213
XI
1 月 08 日軌道要素と周波数
04008.52307237 .00000140 00000‑0 86362‑4 0 1151
17.6858 0010583 111.4573 248.7728 14.20016683 27227
CW(ビーコン): 436.8475MHz
FSK(パケット): 437.490MHz
このように 2 行、22 種類、衛星識別番号からなる。
地球重心の周りを人工衛星が楕円軌道を描いて運動するとき,
・長半径
・離心率
・軌道傾斜角
・昇交点赤経
・近地点引数
・平均近点離角
からなる、 6 つの軌道要素を用いて,その軌道を表すことができる。
86
以下に、軌道要素の各行の各カラムの意味を示す。起動角度の様子を図 5‑1
に示す。
1行目
1
2
3
4
5
6
1 27848U 03031J
04008.52307237 .00000140 00000‑0 86362‑4 0 1151
a bbbbbb ccddde
ffgggggggggggg
hhhhhhhh iiiiiii jjjjjjjjj
kkkl
2行目
2 27848 98.7213 17.6858 0010583 111.4573 248.7728 14.20016683 27227
m nnnnn oooooo
ppppppp qqqqqqq rrrrrrrr ssssssss tttttttttt uuuuv
a:
b:
c:
d:
e:
f:
g:
h:
i:
j:
k:
l:
行番号
衛星識別番号
打ち上げた年(西暦の下2桁)
打ち上げの通し番号
同時打ち上げ衛星の識別
元期 年(西暦の下2桁)
元期 通日で表示
摂動1
摂動2
摂動3
エレメント番号
チェックサム
a:行番号
一行目を示す
1
m:
n:
o:
p:
q:
r:
s:
t:
u:
v:
行番号
衛星識別番号
軌道傾斜角
昇交点赤経
離心率
近地点引数
平均近点離角
平均運動
周回番号
チェックサム
が入る。
b:衛星識別番号
衛星固有の識別番号である。 27848U
が今回 XI に当てられた番号である。
c:打ち上げ年(西暦の下二桁)
2003 年に打ち上げた。
d:打ち上げの通し番号
e:同時打ち上げ衛星の識別
2003 年の 031 番目に打ち上げられ、少なくとも A、B、C、D、E、F、J の 7 つ
の衛星が同時に打ち上げられている。
87
f:元期 年(西暦の下二桁)
g:元期 通日で表示
いつの軌道要素かを示す。04008.52307237 より、2004 年 1 月 08 日+.52307237
日を示す。時刻は UTC0 の時から.52307237*86400 秒経過した時刻で、12 時 33
分 13.5 秒となる。
h:摂動 1
平均軌道速度の1次時間微分値または弾道係数 (軌道予報形式による)
後にあるt(平均運動の変化率)を示す。
i:摂動 2
平均軌道速度の2次時間微分値 (小数点位置は決められている; 求められな
ければ空白とする)
CubeSat XI では利用していない。
j:摂動 3
GP4一般摂動理論が使用されている場合は、BSTAR大気抵抗の項
それ以外の場合は輻射圧係数 (小数点位置は決められている)
k:エレメント番号
要素番号
l:チェックサム
チェックサムは次のように計算する。
1. 最初はゼロ。
2.
3.
4.
5.
6.
その行の各数字について、その数字の値を加算する。
負符号は 1 を加算する。
正符号は 2 を加算する。
文字、空白、ピリオドはなにも加算しない。
結果の 10 進数の最後の桁 (modulo10) がチェックサムの値になる。
m:行番号
行番号
n:衛星識別番号
その衛星に決められた番号である。A〜J同様である。
88
o:軌道傾斜角
衛星の軌道平面と地球の赤道面が交わる角度である。 98.7213
るので、極軌道から少し傾いた軌道である。
となってい
p:昇交点赤経
春分点と昇交点が作る角度である。各点の位置関係は図 5‑2 赤道面と衛星軌
道面の様になっている。春分点とは、黄道と天の赤道との 2 つの交点のうち、
黄道が南から北へ交わる方の点のことであり、昇交点とは、赤道面と衛星軌道
面との2つの交点のうち、衛星軌道面が南から北へ交わる方の点のことである。
q:離心率
軌道の楕円の形を表す。完全な円軌道では 0 となる。楕円の長半径を a、短半
径を b とすると、離心率 e は(1)式の様になる。
1− b2
e =
(1)
a2
我々の用途では離心率は 0 ≦e < 1 である。XI では 0.0010583
り、限りなく円に近い。
であ
r:近地点引数
昇交点から軌道面の衛星の軌道に沿って、衛星が重心に一番近づく点(近地
点)までの角度を表す。各点の位置関係は図 5‑2 赤道面と衛星軌道面の様にな
っている。
s:平均近地離角
長半径から決まる平均的な角速度で衛星が動いたと仮定した場合における、
衛星の地点から近地点までの角度であり、想像上の角度である。
t:平均運動
衛星が軌道上を1日に何週するかを示す。軌道の長半径から決まる。
u:周回番号
衛星が打ち上げられてから軌道上を何週したのかの積算値である。低い軌道
の衛星ほど周期が短いため、早く加速する。
v:チェックサム
l と同様に考える。
89
衛星の位置
近地点
s:平均近点離角
衛星軌道面
赤道面
p:昇交点赤経
r:近地点引数
春分点方向 昇交点
o:軌道傾斜角
図 5‑1
衛星軌道角
図 5‑2 赤道面と衛星軌道面
90
5.1.3 方法
三橋ゼミ地上局から衛星を捕捉する。地上局の詳細は、第 3 章で既に述べた。
実験手順
① 軌道計算ソフトから、衛星の仰角及び方位角を求める。
② 周波数のドップラーシフトを調整
③ アンテナの仰角及び方位角を調整
④ CW(モールス符号)テレメトリを記録。
91
5.1.4 結果
CW を解析した結果以下の衛星のテレメトリが得られた。実験結果を表 5‑2 に
示す。
表 5‑2
衛星のテレメトリ情報
アップリンク回数
16/31
カメラ撮影回数
6/1
通信系 SEL 回数
0/7
アンテナ展開
展開完了
CW duty 比
0.3 以上
OBC リセット要因
通常
バッテリ充電状況
トリクル充電中
OBC 生存状況
生存
FM 送信状況
待機中
バッテリ電圧
4.1V
バッテリ温度
58.2℃
太陽電池電圧
6.0V
太陽電池電流
衛星温度
+X 面
0.0mA
‑X 面
141.6mA
+Y 面
112.8mA
‑Y 面
0.0mA
+Z 面
0.0mA
‑Z 面
54.8mA
+X 面
51.8℃
‑X 面
121.3℃
+Y 面
50.6℃
‑Y 面
53.2℃
+Z 面
51.4℃
‑Z 面
39.3℃
バッテリ
53.0℃
送信機
53.6℃
RSSI 値
7.8dBu
92
5.2
5.2.1
通信実験②
ハイブリッドロケット通信実験
目的
CAMUI ハイブリッドロケットに三橋ゼミで製作したアビオニクス(電子機器系
統)に、今回製作した無線モデムを搭載し、GPS データを地上にアマチュア無線
で送信する。
5.2.2
概要
2004 年 3 月中旬に北海道大樹町にて CAMUI ハイブリッドロケット打ち上げ実
験が行われる。これまでに、2 度の打ち上げ実験に成功しており、今回の実験は、
有翼飛翔体のデルタ翼の飛行特性を生かして設計した有翼を、CAMUI ハイブリッ
ドロケットに装着して、有翼 CAMUI ハイブリッドロケットとして打ち上げ実験
を行う。有翼 CAMUI ハイブリッドロケットの完成予定図を図 5‑3 に示す。
図 5‑3
有翼 CAMUI ハイブリッドロケット完成予定図
93
5.2.3
方法
①
②
③
④
有翼 CAMUI ハイブリッドロケットにアビオニクスを搭載する
GPS を同期させた後、打ち上げる
最高高度到達後、無線操縦によって飛翔体を旋回させて着陸させる
その間の姿勢情報を無線モデムによりアマチュア無線機(ALINCO 社製
DJ‑C4)を使用して地上局で受信する。
⑤ 回収後に、EEPROM から詳細な姿勢情報の取得を行い、解析をして軌跡と姿
勢状態を算出する。
以上の手順で行なう。搭載予定のアビオニクスを図 5‑4 に示す。
図 5‑4
5.2.4
アビオニクス
結果
2004 年 3 月中旬に実験を行なう。
94
第6章
結論及び展望
本実験では、モデムによる通信、PWM 制御、マイクロ波エンジン制御、地上局
システムの構築が成功した。この成功により、今後の足がかりとなる超小型人
工衛星の通信・データ処理系の基本的システムを完成させることができた。
今後、これをさらに発展させ、センサ、電源、構体など他のシステムを構築
させ、第二段階として、PM(プロト モデル)を作成することを目標とする。
95
参考文献
(1) 株式会社 日立製作所
『H8/3048 ハードウェアマニュアル』
(2) 株式会社 日立製作所
『H8 マニュアル・資料』
(3) CQ 出版社 奏 正人 山内 雪路
『ダイナミック・ハムシリーズ 9 パケット無線ネットワーク』
(4) 培風館 茂原 正道 鳥山 芳夫
『衛星設計入門』
(5) 地人書館 河崎 俊夫
『宇宙航行の理論と技術』
(6) 培風館 茂原 正道
『宇宙システム概論』
(7) 丸善プラネット株式会社 岩崎 信夫
『宇宙工学概論』
(8) ソフトバンク 林 晴比古
『新 C 言語 シニア編』
(9) 東京電機大学出版局 安達 宏司
『1・2 陸上無線教室① 無線工学の基礎』
(10)東京電機大学出版局 白土 義男
『H8 ビギナーズガイド』
96
謝辞
本研究は、北海道工業大学電気電子工学科 佐鳥新 助教授のご指導の下に進
められたものである。日頃より適切なご指導して頂き深く感謝申し上げます。
また、通信実験、モデム製作に多大なるご指導、助言、協力をして頂いた北
海道工業大学情報デザイン工学科 三橋 龍一助教授に感謝申し上げます。
そして、北海道工業大学応用電子工学科佐鳥研究室修士 田中 吹雪氏、上
島 広史氏には、研究全般及び、研究外のことにも日頃から多大なるご指導、
助言、協力をして頂き、ここに、心より感謝の意を表します。
北海道工業応用電子工学科三橋研究室修士 中村 直紀氏には、通信実験や
地上局等ご指導、ご協力頂き、深く感謝申し上げます。
研究に協力をしていただいた、有限会社先端技術研究所の伊藤 康正氏、金
尚郁氏、木崎 隆義氏、また、プログラム等多大なご指導をして頂いた元先端
技術研究所職員の長田 淳氏に深く感謝の意を表します。
航空高専助手 石川 智浩氏には研究を始めるに当たり、多大なご指導頂き
心より感謝の意を表します。
さらに,本研究を行うにあたり,御協力いただいた皆様に厚く御礼申し上げ
ます.
97
付録
1 マイクロ波エンジンアンプと発振器制御実験
2 モデル衛星制御プログラム
3 マイクロ波エンジン制御プログラム
1
マイクロ波エンジンアンプと発振器の制御実験
目的
本実験はマイクロ波エンジンのアンプと発振器の制御を H8 にて行うものであ
る。
原理
H8 から出力される5V の信号により、アンプと発振器の ON/OFF 制御を行う。
アンプと発振器を動作させるには、9V 程度必要であるため、直接 H8 で制御す
ることはできない。そこで、スイッチングを用い、アンプと発振器及び、電源
の切り替えを行う。また、この SW の ON/OFF の制御を H8 にて行う。
アンプと発
V=9
図 1 スイッチング構
98
方法
FET により、スイッチング回路を作成する。H8 の出力によって、電源9V がア
ンプと発振器に加わり、動作する。FET は H8 で動作させるため、4V 駆動のも
のを使用する。
ゲートに H8、ドレインとソースを結線にし、アンプと発振器及び、電源を接続
する。回路図は以下のような構成になっている。
制御手順
① 電源の ON
② H8の出力
③ マイクロ波ドレイン入力 SW の ON
アンプと発振器接続端子
9V
R1=10kΩ
H
R1 = 10
図2
FET によるスイッチング回路
結果
アンプに 9Vが入力され、正常に 1.7Wのマイクロ波が出力された。
考察
ドレイン入力 SW に関しては、ドレイン入力の GND が H8と共通にすることが
出来ないので、今のところ FET によるスイッチングの制御が難しく、別な方法
を考える必要がある。
99
パワーMOSFET
H8 から出力される信号は5V(数 mA)であり、何かの部品を制御には微弱す
ぎて直接制御させることはできない。そこで、H8 と部品の間にスイッチング回
路を用いて、部品とその電源を接続させるのが通常の方法である。
今回は、H8 でマイクロ波エンジンを制御するために、スイッチングとして FET
(2SK2409)を用いる。
4V 駆動の低オン抵抗
RDS(ON)1=27mΩ最大(VGS=10V、Id=20A)
RDS(ON)1=40mΩ最大(VGS=4V、Id=20A)
低入力容量
Ciss=2040pF 標準
ゲートカットオフ電圧幅が狭い
VGS(OFF)=1.0〜2.0V
ゲート保護ダイオードを内蔵
表1
FET製品仕様
製品型番
2SK2409
駆動電圧
Vgs=4V
入力容量
2040pF
出力容量
1080pF
備考
100
2 モデル衛星制御プログラム
/* モーターの回転数をシリアル通信で制御する
/*
*
*
*
2003年11月14日 Ver.1.0.0
*
11月16日 Ver.1.1.1
替え・各軸正転逆転
*
*
*
*
*/
*/
テレメトリなし版・軸切り
#include <3048.h>
/*
関数プロトタイプ宣言 */
void ITU̲SET̲UP(void);
void AXIS(char axis,char direction);
void DIRECTION̲X(char direction);
void DIRECTION̲Y(char direction);
void DIRECTION̲Z(char direction);
int NOR(char data,int a);
void sci1̲tx(char data);
void sci1̲strtx(char *str);
void sci1̲init(void);
/* メイン関数 */
int main(void){
ITU̲SET̲UP();
/*
ITU初期化
101
*/
ITU.TSTR.BIT.STR0 = 1;
ITU.TSTR.BIT.STR1 = 1;
ITU.TSTR.BIT.STR2 = 1;
PA.DDR
P2.DDR
P3.DDR
P4.DDR
=
=
=
=
0xff;
0xff;
0xff;
0xff;
/*
/*
/*
/*
/* 送受信データ */
char rx̲data;
/*
char tx̲data[16]; /*
/*
/*
/*
X軸用PWMカウント開始
Y軸用PWMカウント開始
Z軸用PWMカウント開始
PWM出力
X軸
Y軸
Z軸
*/
*/
*/
*/
*/
*/
*/
受信データ */
送信データ */
/* ループのカウント用変数 */
int i;
/* データ受信部用
*/
int a;
/* 文字>数字変換用 */
/* 文字>数字で変換した数字を格納 */
int k[10];
/* GRAの設定値を格納 */
int duty;
sci1̲init();
/*
SCI 初期化
*/
sci1̲strtx("General Purpose Satellite Simulator of HiT");
信開始してから衛星の電源を入れると表示されるオマケ */
/*
/*
普段は出ない
*/
102
通
while(1){
/********************************************
*
* テレメトリの送信部分は、この辺になる予定?
*
*********************************************/
i = 0;
/*
ループするたびに、tx̲data の添え字をクリアする
*/
/* リターンが入力されるまでの処理 */
do{
rx̲data = sci1̲rx(); /* 1 文字受信 */
if(rx̲data != '¥r'){
tx̲data[i] = rx̲data;
/* 1 文字を文字
列に格納 */
i++;
/* i をプラス 1 する */
}
}while(rx̲data != '¥r');
/* 入力された文字列を送信する。
sci1̲tx('¥r');
sci1̲tx('¥n');
sci1̲strtx(tx̲data);
/*
/* リターン入力を検出 */
*/
/* パソコンカーソル先頭 */
/* パソコン改行 */
/* 文字列を送信する */
NOR 関数に tx̲data を渡し、文字に変換 */
for(a=3;a<8;a++){
/* 数字データは、3〜7の要素
k[a‑3] = NOR(tx̲data[a],a);
103
*/
}
duty = k[0]*10000 + k[1]*1000 + k[2]*100 + k[3]*10 + k[4]*1; /*
デューティーに設定する値。
<‑ 間違っていた!!!01345 になってた
各数字に桁の重みを掛ける。*/
/*
回転軸と、回転方向の指定を AXIS 関数に渡す
AXIS(tx̲data[1],tx̲data[2]);
/*
先ほど得られた値を、GRA に設定
*/
*/
/* 回転数が20000以下か判定 */
if(duty <= 20000){
switch(tx̲data[1]){ /*
を設定 */
現在選択されている軸に、デューティー比
case 'X': ITU0.GRA = duty;
break;
/*
X軸
GRA0*/
case 'Y': ITU1.GRA = duty;
break;
/*
Y軸
GRA1*/
case 'Z': ITU2.GRA = duty;
break;
/*
Z軸
GRA2*/
}
}
else{/* 20000以上なら停止信号とみなす */
P2.DR.BYTE = 0x00; /* X軸 */
P3.DR.BYTE = 0x00; /* Y軸 */
P4.DR.BYTE = 0x00; /* Z軸 */
104
}
/* 変数のクリア (入力待ちのループが反応しないように)*/
rx̲data = '¥0';
while(i>=0)
{
tx̲data[i] = '¥0';
i‑‑;
}
}
}
/*
軸
を
決
め
る
関
数
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
void AXIS(char axis,char direction)
{
if(axis == 'X'){
/*
DIRECTION̲X(direction);
}
else if(axis == 'Y'){
/*
DIRECTION̲Y(direction);
}
else if(axis == 'Z'){
/*
DIRECTION̲Z(direction);
}
else{
/*
P2.DR.BYTE = 0x00;
/*
P3.DR.BYTE = 0x00;
P4.DR.BYTE = 0x00;
回転軸xの場合 */
/* P2 に信号を入れる。 */
回転軸yの場合 */
/* P3 に信号を入れる。 */
回転軸zの場合 */
/* P4 に信号を入れる。 */
回転軸の指定がない場合 */
信号を入れない。 */
105
}
return;
}
/*
回
転
方
向
を
決
め
る
関
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
/* X軸が選択されている場合 */
void DIRECTION̲X(char direction){
if(direction == 'L'){
P2.DR.BYTE = 0x05;
数
/* L の信号がきた場合 */
/* 101 の信号を入れる。 */
P3.DR.BYTE = 0x00;
P4.DR.BYTE = 0x00;
}
else if(direction == 'R'){
P2.DR.BYTE = 0x07;
/* R の信号がきた場合 */
/* 111 の信号を入れる。 */
P3.DR.BYTE = 0x00;
P4.DR.BYTE = 0x00;
}
else{
P2.DR.BYTE = 0x00;
かない。 */
/*
106
回転方向を決める信号がない場合動
}
return;
}
/* Y軸が選択されている場合 */
void DIRECTION̲Y(char direction){
if(direction == 'L'){
/* L の信号がきた場合 */
/* 101 の信号を入れる。 */
P3.DR.BYTE = 0x05;
P2.DR.BYTE = 0x00;
P4.DR.BYTE = 0x00;
}
else if(direction == 'R'){
/* R の信号がきた場合 */
/* 111 の信号を入れる。 */
P3.DR.BYTE = 0x07;
P2.DR.BYTE = 0x00;
P4.DR.BYTE = 0x00;
}
else{
/* 回転方向を決める信号がない場合動かない。 */
P3.DR.BYTE = 0x00;
107
}
return;
}
/* Z軸が選択されている場合 */
void DIRECTION̲Z(char direction){
if(direction == 'L'){
/* L の信号がきた場合 */
/* 101 の信号を入れる。 */
P4.DR.BYTE = 0x05;
P2.DR.BYTE = 0x00;
P3.DR.BYTE = 0x00;
}
else if(direction == 'R'){
/* R の信号がきた場合 */
/* 111 の信号を入れる。 */
P4.DR.BYTE = 0x07;
P2.DR.BYTE = 0x00;
P3.DR.BYTE = 0x00;
}
else{
/*
回転方向を決める信号がない場合動かない。 */
P4.DR.BYTE = 0x00;
}
108
return;
}
/* 回転数の取り扱い:
回転数を読み込む → 各位に分ける
変換 → デューティー比をだす
*/
→
ASCII コードから 10 進数に
/* 送られてきた回転数を加工する関数‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
int NOR(char data,int a){
*/
int i;
switch(data)
字ごとに分けたもの */
{
case
/* tx̲data[i] = ASCII コード回転数を一文
'0':
i = 0;
break;
case
'1':
i = 1;
break;
case
'2':
i = 2;
break;
case
'3':
i = 3;
break;
case
'4':
i = 4;
break;
109
'5':
i = 5;
break;
case
'6':
i = 6;
break;
case
'7':
i = 7;
break;
case
case
'8':
i = 8;
break;
case
'9':
i = 9;
break;
default:
i = 0;
}
return(i);
}
/* ITU の初期設定 ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
void ITU̲SET̲UP(void){
110
/* CH0 (PW0) */
ITU.TMDR.BIT.PWM0 = 1;
/* ITU PWM0 動作 ON
*/
ITU0.TCR.BYTE = 0x43;
/* GRB コンペアマッチ CLOCK1/8
*/
ITU0.GRA = 0x4E21;
/* 1/(16M/8)×20000=10[mS] PWM 周期は 10[mS] */
ITU0.GRB = 0x4E20;
/* デューティー比 初期値 0
*/
/* GRB<GRA の 時 は カ ウ ン ト し ま せ ん 。
*/
ITU.TSTR.BIT.STR0 = 0 ;
/* CH1 (PWM1) */
ITU.TMDR.BIT.PWM1 = 1;
ITU1.TCR.BYTE = 0x43; /*
ITU1.GRA = 0x4E21;
10[mS] */
ITU1.GRB = 0x4E20
/*カウント停止状態。
ITU.TSTR.BIT.STR1 = 0 ;
/* CH2 (PWM2) */
ITU.TMDR.BIT.PWM2 = 1;
ITU2.TCR.BYTE = 0x43;
*/
/*ITU PWM1 動作 ON
*/
GRB コンペアマッチ CLOCK1/8
*/
/* 1/(16M/8) × 20000=10[mS] PWM 周 期 は
/* デューティー比 初期値 0
*/
/* GRB<GRA の時はカウントしません。 */
/*カウント停止状態。
*/
/*ITUPWM2 動作 ON
*/
/*
GRB コ ン ペ ア マ ッ チ
CLOCK1/8
*/
ITU2.GRA = 0x4E21;
10[mS] */
ITU2.GRB = 0x4E20;
/*
1/(16M/8) × 20000=10[mS] PWM 周 期 は
/*デューティー比初期値 0
*/
/* GRB<GRA の 時 は カ ウ ン ト し ま せ ん 。
*/
ITU.TSTR.BIT.STR2 = 0 ;
/*カウント停止状態。
*/
}
/* シリアル通信初期化 ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
void sci1̲init(void){
111
int i;
SCI1.SCR.BYTE = 0x00;
SCI1.SMR.BYTE = 0x00;
SCI1.BRR = 51;
/* SCI1 設定 stop,内部クロック */
/* data8.stop1,pari non */
/* 9600bps */
while(i<=0x000f){i++;} /********** 待ち時間発生
設定してから、最低1ビット期間待機 */
SCI1.SCR.BYTE = 0x30;
SCI1.SSR.BYTE &= 0x80;
return;
**********
BRR を
/* Tx,Rx 有効 ,割込み無効 */
/* エラーフラグのクリア */
}
/* SCI1 に1文字送信する ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
void sci1̲tx(char data)
{
while(SCI1.SSR.BIT.TDRE == 0){};
/*未送信データが送られるまで
待つ*/
SCI1.TDR = data;
/*送信データのセット*/
SCI1.SSR.BIT.TDRE = 0;
/*送信フラグのクリア*/
return;
}
/* SCI1 に 文 字 列 を 送 信 す る 文 字 列 は '¥0' で 締 め く く っ て お く
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
void sci1̲strtx(char *str){
while(*str != '¥0'){ /* 文字が¥0 になるまで繰り返す */
sci1̲tx(*str);
/* 1 文字送信*/
str++;
/* 次の文字に移る*/
}
112
return;
}
/* SCI1 から1文字受信する ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑*/
sci1̲rx(void){
char data;
while((SCI1.SSR.BYTE & 0x78)==0); /* 受信とエラーのフラグが立
つまで待つ*/
if(SCI1.SSR.BIT.RDRF == 1){
/* データ受信が正常 */
data = SCI1.RDR; /* データを受け取り data に保存 */
SCI1.SSR.BIT.RDRF = 0;
/* 受信フラグのクリア*/
return(data);
}
else{
/* データ受信にエラー発生 */
SCI1.SSR.BYTE &= 0xc7;
/* エラーフラグをクリア */
return(0xff);
/* エラー時は FF を返す */
}
}
113
3
マイクロ波エンジン制御プログラム
/* マイクロ波エンジン制御 */
#include <3048.h>
/* ポートのビットを部品ごとに割り当てる */
#define kisenon
P1.DR.BIT.B0
#define amp̲vco P1.DR.BIT.B1
#define power
P1.DR.BIT.B2
#define igniter
P1.DR.BIT.B3
#define collecter
P1.DR.BIT.B4
#define
miteidayo
P2.DR.BYTE
に制御するポート まだ未定(><) */
/*
/*
/*
/*
/*
キセノンガス */
アンプと発振器 */
加速電源 */
点火器 */
コレクタ電源 */
/* 加速電源を好き
/* 各部品の状態を電圧でみる */
#define voltage0
P4.DR.BIT.B0
#define voltage1vg
P4.DR.BIT.B1
#define voltage1vd
P4.DR.BIT.B2
#define voltage1vcc
P4.DR.BIT.B3
#define voltage2
P4.DR.BIT.B4
#define voltage3
P4.DR.BIT.B5
#define voltage4a
P4.DR.BIT.B6
#define voltage4b
P4.DR.BIT.B7
int x = 2000;
/* 部品が安定するまでの待ち時間 */
/* プロトタイプ宣言 */
void mode1(void);
void mode2(void);
void mode3(void);
void mode4(void);
void alarm(void);
void voltage̲control(void);
/*
/*
/*
/*
/*
/*
停止 */
スタンバイ */
点火 */
加速 */
アラーム */
可変電圧制御関数 */
114
void sci1̲init(void);
void sci1̲tx(char data);
void sci1̲strtx(char *str);
/* シリアル通信初期化 */
/* SCI に 1 文字送信関数 */
/* SCI に 1 文字送信関数 */
void timer̲init(void);
void wait(int msec);
/* 待ち時間発生初期化 */
/* 待ち時間発生 */
/* メイン関数 */
int main(void){
P1.DDR = 0xff;
/* P1 を出力とする */
P2.DDR = 0xff;
P2.PCR.BYTE = 0x00;
/* P2 を出力とする */
/* P2 のプルアップオフ */
P4.DDR = 0x00;
P4.PCR.BYTE = 0xff;
/* P4 を入力する */
/* P4 のプルアップオン */
int i;
/*
送受信データ */
char rx̲data;
/*
char tx̲data[16]; /*
timer̲init();
sci1̲init();
受信データ */
送信データ */
/* タイマー初期化 */
/* sci1 初期化 */
while(1){
for(i=0;i<16;i++){
/* tx̲data[]の初期化 */
tx̲data[i] = '¥0';
}
i = 0;
/* 変数 i で文字数を数える */
115
sci1̲tx('¥r');
sci1̲tx('¥n');
/* パソコンカーソル先頭 */
/* パソコン改行 */
/* リターンが入力されるまでの処理 */
do{
rx̲data = sci1̲rx();
/* 1 文字受信 */
if(rx̲data != '¥r'){
sci1̲tx(rx̲data); /* 1 文字送信 */
tx̲data[i] = rx̲data;
/* 1 文字を文字列に格納
*/
i++;
}
}while(rx̲data != '¥r');
/* i をプラス 1 する */
/* リターン入力を検出 */
/* 入力された文字列を送信する */
sci1̲tx('¥r');
/* パソコンカーソル先頭 */
sci1̲tx('¥n');
/* パソコン改行 */
sci1̲strtx(tx̲data);
/* 文字列を送信する */
/* R と入力したら、mode1 を実行する */
if(tx̲data[0] == 'R' ){
sci1̲strtx("実験開始!(^ー^)");
mode1();
}
/* mode1 へいったら自動的に mode2、mode3、mode4 を実行 */
sci1̲strtx("mode2 へ行けるかな?");
wait(2000);
if(voltage0+voltage1vg*10+voltage1vd*10+voltage1vcc*10+voltage2*100+vo
ltage3*1000+voltage4a*10000+voltage4b*10000 == 0){
/* modo1
の状態が正しく実行されたら */
mode2();
/* スタンバイ関数呼
び出し */
}
116
sci1̲strtx("mode3 へ行けるかな?");
wait(2000);
if(voltage0+voltage1vg*10+voltage1vd*10+voltage1vcc*10+voltage2*100+vo
ltage3*1000+voltage4a*10000+voltage4b*10000 == 31){
/* mode2 の状
態が正しく実行されたら */
mode3();
/* 点火関数呼び出し */
}
sci1̲strtx("mode4 へ行けるかな?");
wait(2000);
if(voltage0+voltage1vg*10+voltage1vd*10+voltage1vcc*10+voltage2*100+vo
ltage3*1000+voltage4a*10000+voltage4b*10000 == 131){
/* mode3 の
状態が正しく実行されたら */
mode4();
/* 加速関数呼び出し */
}
wait(2000);
if(voltage0+voltage1vg*10+voltage1vd*10+voltage1vcc*10+voltage2*100+vo
ltage3*1000+voltage4a*10000+voltage4b*10000 == 20131){
/* mode4
の状態が正しく実行されたら */
sci1̲strtx("これでオッケー");
}
else{
sci1̲strtx("(>_<;)");
alarm();
}
/*
voltage̲control(); /* 可変電圧を自由に制御できるようにする */
117
}
}
/**********
待ち時間発生
**********************************/
/* 待ち時間発生初期化 */
void timer̲init(void){
ITU0.TCR.BYTE = 0x23;
/* GRA コンペアマッチ clock 1/8 */
ITU0.GRA = 0x07d0;
/* GRA を 2000 に設定 */
ITU.TSTR.BIT.STR0 = 0;
/* カウント停止状態 */
return;
}
/* 待ち時間発生 引数に必要なミリ秒を指定する */
void wait(int msec){
int i;
ITU.TSTR.BIT.STR0 = 1;
/* ITU0 TCNT カウント開始 */
for(i=0;i<msec;i++){
do{
/* TCNT = GRA になるまで待つ(1mS) */
}while(ITU0.TSR.BIT.IMFA == 0);
ITU0.TSR.BIT.IMFA = 0; /* 検知フラグを戻して再開 */
}
ITU.TSTR.BIT.STR0 = 0;
/* ITU0 TCNT カウント終了 */
return;
}
/* 停止モード ***********************************************/
void mode1(void){
sci1̲strtx("mode1");
118
kisenon = 0;
wait(5000);
switch(voltage0)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
amp̲vco = 0;
wait(x);
switch(voltage1vg)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
switch(voltage1vd)
{
case 0:
break;
default:
alarm();
return;
}
switch(voltage1vcc)
{
case 0:
break;
default:
119
alarm();
return;
}
power = 0;
wait(x);
switch(voltage2)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
igniter = 0;
wait(x);
switch(voltage3)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
collecter = 0;
wait(x);
switch(voltage4a)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
120
switch(voltage4b)
{
case 0:
break;
default:
alarm();
return;
}
sci1̲strtx("mode1 OK!");
return;
}
/* スタンバイモード *****************************************/
void mode2(void){
sci1̲strtx("mode2");
sci1̲strtx("ガスバルブ ON");
kisenon = 1;
/* SW を ON にする信号を入れる */
wait(5000);
switch(voltage0)
{
case 1:
break;
default:
alarm();
return;
}
sci1̲strtx("アンプと発振器 ON");
amp̲vco = 1;
/* SW を ON にする信号を入れる */
wait(x);
switch(voltage1vg)
{
case 1:
121
break;
default:
alarm();
return;
}
switch(voltage1vd)
{
case 1:
break;
default:
alarm();
return;
}
switch(voltage1vcc)
{
case 1:
break;
default:
alarm();
return;
}
power = 0;
wait(x);
switch(voltage2)
{
case 0:
break;
default:
alarm();
return;
}
igniter = 0;
/* SW を OFF にする信号を入れる */
/* SW を OFF にする信号を入れる */
122
wait(x);
switch(voltage3)
{
case 0:
break;
default:
alarm();
return;
}
collecter = 0;
wait(x);
switch(voltage4a)
{
case 0:
break;
default:
alarm();
return;
}
/* SW を OFF にする信号を入れる */
sci1̲strtx("mode2 OK!");
return;
}
/* 点火モード ***********************************************/
void mode3(void){
sci1̲strtx("mode3");
sci1̲strtx("ガスバルブ ON");
kisenon = 1;
/* SW を ON にする信号を入れる */
wait(5000);
switch(voltage0)
{
case 1:
123
break;
default:
alarm();
return;
}
sci1̲strtx("アンプと発振器 ON");
amp̲vco = 1;
/* SW を ON にする信号を入れる */
wait(x);
switch(voltage1vg)
{
case 1:
break;
default:
alarm();
return;
}
switch(voltage1vd)
{
case 1:
break;
default:
alarm();
return;
}
switch(voltage1vcc)
{
case 1:
break;
default:
alarm();
return;
}
sci1̲strtx("加速電源 ON");
124
power = 1;
wait(x);
switch(voltage2)
{
case 1:
break;
default:
alarm();
return;
}
/* SW を ON にする信号を入れる */
sci1̲strtx("点火一回目!");
igniter = 0;
wait(x);
/* SW を ON にする信号を入れる */
while(voltage3 ==0 ){
sci1̲strtx("点火二回目!");
igniter = 0;
wait(x);
if(voltage3 ==1 )break;
sci1̲strtx("点火三回目!");
igniter = 0;
wait(x);
if(voltage3 ==1 )break;
sci1̲strtx("点火四回目!");
igniter = 0;
wait(x);
if(voltage3 ==1 )break;
125
sci1̲strtx("点火五回目!");
igniter = 0;
wait(x);
if(voltage3 ==1 )break;
sci1̲strtx("点火しませんでした(ー△ー;)");
alarm;
return;
}
sci1̲strtx("点火しました!(^▽^)!");
sci1̲strtx("点火器は 0.5 秒後に OFF");
wait(500);
igniter = 0;
wait(x);
switch(voltage3)
{
case 0:
break;
default:
alarm();
}
collecter = 0;
wait(x);
switch(voltage4a)
{
case 0:
break;
default:
alarm();
return;
}
/* 0.5 秒待つ */
/* 点火気は ON にしてから 0.5 秒後に OFF */
/* SW を OFF にする信号を入れる */
126
switch(voltage4b)
{
case 0:
break;
default:
alarm();
return;
}
return;
}
/* 加速モード ***********************************************/
void mode4(void){
sci1̲strtx("mode4");
sci1̲strtx("ガスバルブ ON");
kisenon = 1;
/* SW を ON にする信号を入れる */
wait(5000);
switch(voltage0)
{
case 1:
break;
default:
alarm();
return;
}
sci1̲strtx("アンプと発振器 ON");
amp̲vco = 1;
/* SW を ON にする信号を入れる */
wait(x);
switch(voltage1vg)
{
case 1:
break;
127
default:
alarm();
return;
}
switch(voltage1vd)
{
case 1:
break;
default:
alarm();
return;
}
switch(voltage1vcc)
{
case 1:
break;
default:
alarm();
return;
}
sci1̲strtx("加速電源 ON");
power = 1;
/* SW を ON にする信号を入れる */
wait(x);
switch(voltage2)
{
case 1:
break;
default:
alarm();
return;
}
igniter = 0;
/* SW を OFF にする信号を入れる */
128
wait(x);
switch(voltage3)
{
case 0:
break;
default:
alarm();
return;
}
sci1̲strtx("コレクタ電源 ON");
collecter = 1;
/* SW を ON にする信号を入れる */
wait(x);
switch(voltage4a)
{
case 1:
break;
default:
alarm();
return;
}
switch(voltage4b)
{
case 1:
break;
default:
alarm();
return;
}
return;
}
/* 電圧制御関数 まだ未定 */
void voltage̲control(void){
129
}
/* アラームモード *******************************************/
void alarm(void){
/*
送信関数呼び出して、地上局に連絡 */
sci1̲strtx("err!!(:_;)");
という文字を送信 */
P1.DR.BYTE = 0x00;
P2.DR.BYTE = 0x00;
/*エラーが起きたら err!!
/* P1 初期化 */
/* P2 初期化 */
return;
}
/* シリアル通信初期化*****************************************/
void sci1̲init(void){
SCI1.SCR.BYTE = 0x00;
/* SCI1 設定 stop,内部クロック */
SCI1.SMR.BYTE = 0x00;
/* data8.stop1,pari non */
SCI1.BRR = 51;
/* 9600bps */
wait(1);
SCI1.SCR.BYTE = 0x30;
/* Tx,Rx 有効 ,割込み無効 */
SCI1.SSR.BYTE &= 0x80;
/* エラーフラグのクリア */
return;
}
/* SCI1 から1文字受信する*************************************/
sci1̲rx(void){
130
char data;
while((SCI1.SSR.BYTE & 0x78)==0); /* 受信とエラーのフラグが立つ
まで待つ*/
if(SCI1.SSR.BIT.RDRF == 1){
/* データ受信が正常 */
data = SCI1.RDR;
/* データを受け取り data に保存 */
SCI1.SSR.BIT.RDRF = 0;
/* 受信フラグのクリア*/
return(data);
}
else{
/* データ受信にエラー発生 */
SCI1.SSR.BYTE &= 0xc7;
/* エラーフラグをクリア */
return(0xff);
/* エラー時は FF を返す */
}
}
/* SCI1 に1文字送信する **************************************/
void sci1̲tx(char data){
while(SCI1.SSR.BIT.TDRE == 0);
/*未送信データが送られるまで
待つ*/
SCI1.TDR = data;
/*送信データのセット*/
SCI1.SSR.BIT.TDRE = 0;
/*送信フラグのクリア*/
return;
}
/* SCI1 に文字列を送信する 文字列は'¥0'で締めくくっておく**************/
void sci1̲strtx(char *str){
while(*str != '¥0'){ /* 文字が¥0 になるまで繰り返す */
sci1̲tx(*str);
/* 1 文字送信*/
str++;
/* 次の文字に移る*/
}
return;
}
131
© Copyright 2026 Paperzz