Comments
Description
Transcript
ATmega8Lを用いたモデルロケット用データロガーの開発
2005 年度 卒業論文 ATmega8L を用いたモデルロケット 用 データロガーの開発 東海大学電子情報学部コミュニケーション工学科 梅田 祐希 2ADT1139 指導教員 清水 尚彦 教授 2006.2.6 1 目次 1 はじめに 6 2 小型飛翔探査体 HAMANA プロジェクト 7 3 2.1 2.2 2.3 サーベイヤプロジェクト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HAMANA-1 プロジェクト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HAMANA-2 プロジェクト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 2.4 HAMANA-2 における主要デバイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 マイクロコントローラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 2.4.2 2.4.3 2.4.4 miniSD カード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CMOS カメラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ラジオビーコン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 9 9 2.4.5 加速度センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 ATMEL ATmega8L の概要 10 3.1 ATmega8L について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 ATmega8L の周辺デバイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.1 3.2.2 3.2.3 3.3 3.4 3.3.2 3.3.3 3.3.4 汎用レジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 3.3.6 プログラムカウンタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 ALU(Arithmetic and Logic Unit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 ステータスレジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 命令レジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 3.3.7 命令デコーダ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.8 パイプライン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 ATmega8L の各種メモリについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 プログラム用フラッシュメモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 データ用 SRAM メモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4.3 データ保存用 EEPROM メモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ATmega8L の内蔵周辺機能について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5.1 割込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5.2 3.5.3 4 11 3 端子レギュレータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 コンデンサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 AVR アーキテクチャの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.1 ハーバード アーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4.1 3.4.2 3.5 水晶発振子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . タイマ/カウンタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 SPI(シリアル周辺インタフェース) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 加速度センサ 4.1 4.2 4.3 17 軌道計測における加速度センサの必要性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 加速度センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 4.3.2 4.3.3 4.4 17 17 計測範囲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 出力方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 出力パルスの周期の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 外形条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2 4.5 4.6 動作条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 動作に必要な外部デバイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.6.1 4.6.2 4.7 出力パルスのサンプリングについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1 4.7.2 5 Cdc:コンデンサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 COUNTER:マイコン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 標本化定理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 サンプリングの割合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.7.3 4.7.4 サンプリング時の最低必要周波数について . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.5 4.7.6 4.7.7 分周比を決める . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . タイマ機能の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 カウンタ値を計算する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 タイマレジスタに設定する値を計算する . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ATmega8L のテスト 基板作成 21 5.1 基板作成の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 プリント基板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2.1 リジッド 基板:絶縁体の種別による分類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3 プリント基板 CAD EAGLE によるレ イアウト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3.1 部品ライブラリの絞込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3.2 5.3.3 5.3.4 デバイスのライブラリ作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.5 5.3.6 5.3.7 回路パターンの自動作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.8 5.3.9 ベタアースの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 回路図の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 基板上への部品の配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 回路パターンの手直し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 回路パターンの配線チェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 マスクパターンの印刷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 5.4 フィルムのずれの調整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.5 感光基板へのマスクパターンの焼き付け . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.6 現像液による不要部分の除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.6.1 回路の検査と補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.7 エッチング液による不要銅部分の除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.8 現像液による感光剤の除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.9 レジスト剤による回路の保護と絶縁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.10 穴空けと回路の整形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.11 回路作成の反省点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.11.1 EAGLE を使った設計での回路設計とレ イアウト設計における不連動 . . . . . . . . . . . . 26 5.11.2 フィルムの重ね間違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.11.3 基板に対する現像用薬品の直接投与 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.11.4 エッチング工程における回路の侵食 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.12 実装するデバイスについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.12.1 LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.13 デバイス実装段階においての反省点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.13.1 マスクパターンの間違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.13.2 ハンダの接着ミス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.13.3 回路パターンにおける配線間隔の短さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3 5.13.4 熱による IC の破壊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.13.5 エッチング工程でのミス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 ソフト ウェア開発環境 6.1 クロスコンパイルとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.1.2 6.2 29 29 コンパイラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 クロスコンパイルとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 使用した開発ツール 6.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2.2 AVR-Libc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2.3 GNU Binutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3 ソフトウェア開発環境の構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.4 ソフトウェア実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7 miniSD カード の制御 31 7.1 7.2 miniSD カード の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 SD カード のピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.3 7.4 SD カード のアーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 MMC の仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.4.1 インタフェース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7.5 7.6 7.4.2 7.4.3 転送モード 7.4.4 7.4.5 7.4.6 動作周波数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 コマンド 構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.4.7 7.4.8 レスポンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ATmega8L の SPI 関連レジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.6.1 SPCR(SPI Control Register) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 SPSR(SPI Status Register) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 SPDR(SPI Data Registor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 miniSD カード 制御ソフトウェアの開発 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.7.1 通信プロトコル理解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.7.2 Makefile の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.7.3 7.7.4 7.8 33 データトークン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 モード 選択と初期化 7.6.2 7.6.3 7.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ヘッダファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 制御プログラムの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 動作実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.1 7.8.2 35 74 クロック以上のダミークロック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 CS を Low にして CMD0(CRC 付き) を発行 . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.8.3 7.8.4 7.8.5 データラインにレスポンス (0x01) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.6 7.8.7 レスポンスが 0x00 になるまで CMD1 を発行 . . . . . . . . . . . . . . . . . . . . . . . . . . データラインにレスポンス (0x00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 36 7.8.8 初期化完了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 36 CMD1 を発行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 データラインにレスポンス (0x01) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4 7.8.9 エラーレスポンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 まとめ 41 9 謝辞 42 5 1 はじめに ることと、その仕様の上で正確に制御させるソフトウェ アを書いていくことである。 現在私達を取り囲んでいる家電製品を始めとし 、携 これら組込みシステムの開発にははハードウェアとソフ 帯電話や自動車のエンジンの燃料噴射制御に至るまで、 トウェアの技術が必要不可欠であり、それらを会得する 意識せずに使っている多種多様の製品にコンピュータが 環境が身近に無いのが現状である。本研究では HAMANA入っている。そうすることによって電子部品等のハード 2 プロジェクトに参加し 、ATMEL 社の ATmega8L マ イコンを中心にデータロガーの開発を行って行く上で、 ウェアで実現されていた機能がソフトウェアで実現でき るようになった。それは単に製品を構成する部品数を減 組込みシステムの理解や基板の設計・製作、プログラム らせることだけではなく、減ったことによるハード ウェ によるデバイスの制御について研究を行った。これらに アの信頼性の向上や、更なる小型化や軽量化にもつなが ついて卒業研究論文として報告する。 る利点を生んだ。 #!% ""$&'" ( ) 図 1: 組込みシステムの例:自動車のエンジン制御 しかしその半面重要となってくるのは、各種デバイス を制御するソフトウェアである。ソフトウェアがもたら した欠陥による記憶に残る事例としては、2001 年に頻 発した携帯電話のソフトウェアのバグによる回収騒動が 挙げられる。開発者は「バグは半ば必然的」とコメント をしていたが、そのコメントに対し 、情報処理振興事業 協会セキュリティセンター長の小林氏は「情報家電はパ ソコンのようにバグを前堤とすべきではない。」と述べ ていた。携帯電話は年々サービスの多様化に伴いハード ウェアは高度化し 、それに比例してソフトウェアも肥大 化かつ複雑化している。一方、自動車のエンジンの燃料 噴射制御やサスペンション制御のようにバグがあっては 直接人間の安全を脅かすようなものまである。 現在を含め、これからの将来に渡って更に高度な機能や サービ スを提供する製品が登場するはずである。しか し 、基本となるのは確かな動作をするハード ウェアを作 6 小型飛翔探査体 HAMANA プロ 2 ジェクト 2.1 サーベイヤプロジェクト サーベイヤプロジェクトとは、HAMANA プロジェク トの母体となるプロジェクトで、初学者から中級者を対 象とした組込みシステム開発の学習教材を作り上げる ことを目標とした開発プロジェクトである。また、同時 に参加者の技術力を向上させる場でもあり、それだけで なく、プロジェクト管理や実際の開発経験を積む場とも なっている。 「サーベイ」とは直訳すると「調査」、 「測 量」等の意味であり、このサーベイヤプロジェクトでは 自然環境の調査や測量を自動で行う探査体や、その中に 組み込まれる情報処理システムの開発を主としている。 2.2 HAMANA-1 プロジェクト サーベイヤプロジェクトの一環として企画された HAMANA- 1 プロジェクトは 、GPS を搭載した小型モデルロケッ ト (模型ロケット ) を打ち上げ、その打ち上げから着陸 に至る軌道を記録するシステムの開発をするプロジェク 図 2: HAMANA プロジェクトに使用するモデルロケット トである。組込み業界に係わる企業や大学、そして個人 間で分担し 、開発を行っていた。本大学では各デバイス を制御するマイコンボード の製作で係わっている。 HAMANA-1 のシステム図を図 3 に示す。また、デー タロガー周辺のシステム図を図 4 に示す。 2.3 ■主要なマイコンの特長 • H8 H8 は日立製作所製のマイコンであり、実装面積は HAMANA-2 プロジェクト 他のマイコンに比べて大きいが、それらより高性 能高機能だが SH には劣る。自律ロボット用とし HAMANA-2 プロジェクトは、打ち上げに成功し 、多 くの可能性を残した HAMANA-1 の後継プロジェクト ては標準的なマイコンである。また入手可能なバ リエーションも豊富である。コンパイラとしては である。本プロジェクトでは HAMANA-1 で残した技 フリーである GCC がある。また、H8/OS 、HOS 術課題を解決し 、更なる進歩を目指すものである。 2.4 2.4.1 などの OS 、H8/OS 用の開発環境などもある。 • PIC HAMANA-2 における主要デバイス PIC は米 Microchip Technology 社製のマイコン で、世界中に広く普及しているマイコンである。ピ ン IC タイプのマイコンであり、DIP ピンの IC ソ マイクロコント ローラ HAMANA-2 システムの中核を担う各種デバイスを制 御するコンピュータである。今回の研究では GPS ユニッ トや加速度センサ、CMOS カメラなどからデータを受 ケットにつけられる。PIC にクリスタル振動子か セラロックだけで動かせる。価格は百数十円から 数百円の間で低価格。書込みにはライターが必要。 け取り、記憶デバイスへと書き込んだり、またはそれら 低価格ながら A/D コンバータ、PWM 、USART デバイスを制御する役割りがある。今回は ATMEL 社 を搭載している。SDCC というフリーのコンパイ の ATmega8L を使用した。今回使用する以外にも様々 ラがある。 なマイコンがあり、紹介していく。 7 EEPROM GPS GPS 2.GPS 3. DC/DC GPS 100m 図 4: データロガー周辺システム図 1. 4. 5. 図 3: HAMANA-1 システム図 • SH SH は日立製作所と米 Triscend 社製のマイコンで あり、アマチュアロボット向けではトップクラス のパフォーマンスである。PWM は最大 12 相も あるのが便利である。コンパイラとしては GCC がある。 図 5: HAMANA-2 の打ち上げ風景 • AVR AVR は米 ATMEL 社製のマイコンであり、今回 使用した ATmega8L もその 1 つである。コンパ イラにはフリーの GCC がある。 2.4.2 ド ) に著作権保護機能を付加させたものとなっている。 今回は miniSD を使用するということで、まず先に min- iSD の仕様書を読みたいところであるのだが 、miniSD を含めた SD メモリカード は SD メモリカード のデ ィ miniSD カード ファクトスタンダードを目指して創設された SD カード アソシエーション (SDA) によって管理されているため、 HAMANA-1 では基板上に実装した EEPROM に GPS SD メモリーカード 使用した開発や販売にあたって厖大 からの軌道情報を記憶していたのであるが、今回の HAMANA2 では更に加速度センサの値を記録しなければならず、 なライセンス料を払う必要がある。よってこの 3 つのメ 今後の発展を考えた上でも小型 CMOS カメラ等で映像 モリカードのプロトコルは一部を抜いて共通したもので 情報を採取していくのであれば 、大容量のメモリを採用 あるため、開発においてはライセンス料が不用であり、 するのが妥当であると考えた。そこで今回採用したの 仕様も公開されている MMC の仕様書を参考に開発を が miniSD カードである。(図 6) 今日の携帯電話の多く 進めた。 で採用され 、大容量小型記憶デバイスとして広く普及 小指とのサイズの比較を図 6 に載せる。 している。miniSD カードは SD メモリーカード の小型 版で、SD メモリーカード も MMC(マルチメディアカー 8 図 6: miniSD カード のサイズの比較 2.4.3 CMOS カメラ HAMANA-1 では実装されていなかったが、小型探査 体としてロケットの下降時に周囲の映像情報を記録する ために今後実装が予想される。 2.4.4 ラジオビーコン モデルロケットは発射した後、上空 100M まで上昇 し 、その後下降する際はパラシュートを開いて降下して くる。しかし遠方に着水した際、ロケットを回収するの は困難である。そこでロケット側から電波を発信し 、そ れを検出することでロケットの着水した位置を捜し出そ うと開発したのがこのラジオビーコンである。 2.4.5 加速度センサ 加速度センサは HAMANA-2 で初めて実装される。 HAMANA-1 では GPS でロケットの発射から着水に至 るまでの軌道を記録しようと試みた。しかし 実際に採 種されたデータから、使用した GPS ユニットでは高さ の値が正確に採れないということが判明した。そこで GPS では地上に対して平面の値のみを採種するとして、 高さに対しては加速度センサを使用することにした。 9 ATMEL ATmega8L の概要 3 コンパイラ、マクロアセンブラ、デバッガ 、シミュレー タ、インサーキット エミュレータ、評価キットを含む専 3.1 ATmega8L について 用のプログラム及びシステム開発ツールで支援される。 ATmega8L は書き込み中に読み出し可能な能力を持 ■ピンの概要 つ 8k バイトの書き変え可能なフラッシュメモリと 512 ピン配置については図 7 を参照。 バイトの EEPROM 、1k バイト SRAM 、23 本の汎用入 出力線、32 個の汎用レジスタ、比較動作も含む柔軟性 のある 3 つのタイマ/カウンタ、内部及び 外部割込み、 • VCC 電源ピン。 • GND グランドピン。 設定可能なシリアル USART 、バイト対応の 2 線シリア ルインタフ¿ェース、6(PDIP) 、8(TQFP 、QFN/MLF) チャネルの 10 ビット A/D 変換器、設定可能な内部発 振器付きウォッチド ッグタイマ、SPI シリアルポート、 • PB7∼PB0 ポート B はビット毎に選択される内蔵プルアップ 抵抗付きの 8 ビットの双方向入出力ポート。 そしてソフトウェアで選択できる 5 つの低消費動作機 • PC5∼PC0 ポート C はビット毎に選択される内蔵プルアップ 能を提供する。 アイドル動作では動作を停止するが、SRAM 、タイマ/ 抵抗付きの 7 ビットの双方向入出力ポート。 カウンタ、SPI ポート、割込み機能は有効で、動作を継 続する。 パワーダウン動作ではレジスタの内容は保護されるが 、 発振器が停止するため、以降のハード ウェアリセットか • PC6/RESET RSTD ISBL ヒューズがプログラム (0) されると、 PC6 は I/O ピンとして使用される。また、RSTD ISBL ヒューズが非プログラム (1) の場合、PC6 外部割込みまで他の全機能を禁止 (無効に ) する¿。 パワーセーブ動作では非同期用タイマ発振器が動作を継 はリセット入力として使用される。 続し 、デバイスのその他が停止中であっても基準タイマ • PD7∼PD0 ポート D はビット毎に選択される内蔵プルアップ の継続が許される。A/D 変換ノイズ低減動作では A/D 変換中のスイッチングノイズを最小とするため、非同期 タイマと A/D 変換器を除く周辺機能と CPU が停止す 抵抗付きの 8 ビットの双方向入出力ポート。また、 る。 ポート D は ATmega8L の特殊機能としても使用 スタンバイ動作ではクリスタル発振子/セラミック振動 される。 子用発振器が動作し 、一方デバイスのその他は休止す • AVCC AVCC は ADC7 、6 、ポート C(3∼0) と A/D 変 る。これは低消費電力と非常に高速な起動の組み合わせ を許す。 換器用供給電圧 (電源) ピン。 ATmega8L は ATMEL の高密度不揮発性メモリ技術を • AVEF 使用して製造されており、内蔵の実装書き換え (ISP) 可 能なプログラム用フラッシュメモリは 、規定の不揮発 AVEF は A/D 変換器用アナログ基準 (電圧) ピン。 性¿ メモリ書込み器、SPI シリアルインタフェース経由、 AVR コア上のブートプログラムの実行により、再書き 込みができる。ブートプログラムは、応用領域フラッ¿ シュメモリ内の応用プログラムの読込みに 、ど のイン • ADC7 、6 TQFP と QFN/MLF パッケージでの ADC7 、ADC6 は A/D 変換器のアナログ入力として取扱う。 タフェースでも使用できる。ブート領域フラッシュメモ リ内のソフトウェアは、 「書込み中の読出し可」¿動作に 3.2 より、応用領域フラッシュメモリの更新中も実行を継続 する。モノシリック上の自己実装書き換え可能なフラッ ATmega8L の周辺デバイス ここでは ATmega8L を動作させるために必要なデバ シュメモリと、8 ビット RISC 型 CPU の組み¿合わせに イスを示す。また、ここで示したデバイスはソフトウェ よる ATMEL の ATmega8 は 、多くの組込み制御の応 ア開発のためのテスト基板用のデバイスで 、実際にロ 用に対して高度な柔軟性と対費用効果をもたらす強力 ケットに登載した ATmega8L を使用したデータロガー なマイクロコントローラである。ATmega8 AVR は C¿ のデバイスとは電源周辺が異なる。ロケットに登載し 10 24 23 22 21 20 19 18 17 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 3.2.3 コンデンサ 電源部の 3 端子レギュレータの入出力側にそれぞれ入 れる。最低でも出力側にコンデンサが無いと出力が発振 PC1(ADC1) PC0(ADC0) ADC7 GND AREF ADC6 AVCC PB5(SCK) する。このような使い方をするときはバイパスコンデン サという。役割りとしては電流の中の周波数 (交流) 成 分のみを迂回させる役割りがある。 3.3 (T1)PD5 (AIN0)PD6 (AIN1)PD7 (ICP1)PB0 (0C1A)PB1 (SS/0C1B)PB2 (MOSI/0C2)PB3 (MISO)PB4 (INT1)PD3 (TO)PD4 GND VCC GND VCC (XTAL1/TOSC1)PB6 (XTAL2/TOSC2)PB7 32 31 30 29 28 27 26 25 PD2(INT0) PD1(TXD) PD0(RXD) PC6(RESET) PC5(ADC5/SCL) PC4(ADC4/SDA) PC3(ADC3) PC2(ADC2) パスコンデンサという) を使用する。 AVR アーキテクチャの概要 ここでは今回の研究において使用した ATmega8L を 踏襲する AVR コアのアーキテクチャについて初学者の 立場に立って説明していく。AVR アーキテクチャ構成 図を図 8 に示す。 図 7: ATmega8L のピン配置 3.3.1 た基板では、電源部の小型、軽量化のために小型 IC を ハーバード アーキテクチャ 採用しているが、テスト基板では一般的な 3 端子レギュ AVR は効率化と並行処理のため、プログラムとメモ リに対してメモリとバスを分離するハーバード アーキ レータを使用している。 テクチャを使用している。一般的なコンピュータでは、 主記憶であるメモリにプログラムをしまうだけでなく、 3.2.1 演算に用いるデータや文字等の記憶にも用いられてい 水晶発振子 る。 クロック周波数を作りだすための発振子で、今回の開 これはフォンノイマン型アーキテクチャと呼ばれる。 発では ATmega8L を 8MHz で動作させるために 8MHz の水晶発振子を使用している。 3.2.2 CPU 3 端子レギュレータ ATmega8L は 3.3V で動作するために出力が 3.3V で あり、プログラムをダウンロード する際に使用している FPGA からは 5V 電源を採ることが出来るので 5V 入力 & 3.3V 出力のできる三端子レギュレータ TA48M033F を 採用した。 3 端子レギュレータはその名の通り端子が 3 本出てお り、入力、グランド、出力の端子がある。入力と GND に入力電圧を加えると、出力と GND 間に +3.3V が出 図 9: 一般的なコンピュータのメモリ・バス構成 力される。入力電圧は出力電圧よりも 0.65V 以上高く なければならない。一般的な 3 端子レギュレータと比較 それに対してハーバード アーキテクチャの構成では、 すると、入出力間電圧差が比較的小さいといえる。入力 電圧が出力電圧に近いとレギュレータ自身が動作する電 プログラムをしまうメモリとデータをしまうメモリを 圧が足りず、出力にノイズが乗ってしまう。また使用す 別にしている。ちなみに AVR ではプログラムメモリは るときには発振防止のためにコンデンサ (この場合バイ 書換え可能なフラッシュメモリで、データメモリには高 速動作をする SRAM を使用している。 11 • 論理演算 (AND 、NOT 、OR 、XOR) • ビットシフト AVR CPU (ROM) 16 8 ALU はオペランド と呼ばれる処理すべきデータを受 け取った後、制御装置からのコード で実行すべき処理 (RAM) をしていく。その後に演算結果として出力をするのであ る。 AVR では合計 32 個の汎用レジスタに直接接続され、レ ジスタ間やレジスタと即値間の演算は単一クロックで実 行している。 図 10: AVR のメモリ・バス構成 3.3.5 プログラムカウンタ このハーバード アーキテクチャは 1 チップ マイコン プログラムカウンタは次にど のアドレ スの命令を読 系では一般的に用いられている方法で、AVR のように 込むかを記憶しているレジスタである。実際にメモリか データメモリは 8 ビットマイコンならバス幅 8 ビット ら命令を読込む際に 1 ずつ増えていく。また、ジャンプ のように演算単位とメモリの 1 番地あたりのビット数 命令が実行された際には、そのジャンプ先のアドレス値 は同じになるが 、プログラムメモリはバス幅が 12∼16 が入る。 ビットとデータ幅より広いのが一般的である。AVR で はプログラムメモリはバス幅が 16 ビット、データメモ 3.3.6 リ幅は 8 ビットである。 命令レジスタ 並行処理という点では 、プログラムメモリ内の命令を 命令レジスタはプロセッサの実行ユニットの一部であ 単一段のパイプラインで実行することにより、命令の実 り、実行忠野命令を格納する機能がある。各命令を実行 行中に次の命令がプログラムメモリからプリフェッチさ するときにその命令を命令レジスタに格納し 、デコード れ 、全部のクロックサイクルで命令実行を可能にして して実行するまでの間記憶し続ける役割がある。 いる。 3.3.7 3.3.2 汎用レジスタ 命令デコーダ プロセッサが メモリから読込んだ命令がどんな命令 レジスタとはスリップフロップなどの回路素子を用い であるのかを解読する部分である。実際にデコード (解 てデータを一時的に保存する機能を持つ回路んことを 読) するにあたって、命令の種類を判別し 、オペランド いう。AVR は汎用レジスタとして合計 32 個の 8 ビット を解読の後、必要であればオペランドをメモリから読込 長レジスタを持つ。 む。ここで解読した後に制御信号線に信号を送る 3.3.3 ステータスレジスタ 3.3.8 ステータスレジスタはプロセッサが様々な演算を行っ パイプライン 実際に計算機の動作というものは 、命令をメモリか たときの状態を示すフラグビットの集まりである。 ら持って来て (命令フェッチ) それをデコード (解読) し 、 メモリからデータを読込む。そして演算を実行 (命令実 3.3.4 行) し 、メモリに書込むといった流れで順次行われる。 ALU(Arithmetic and Logic Unit) これらの操作は実行するユニットはほとんどの場合はそ ALU とは CPU の中核を成す実行ユニットの1つで の操作毎に用意されている。つまり、他の操作をしてい あり、四則演算や論理演算等を処理する。基本的に多く る際にはそれ以外のユニットはアイドル状態にあること の ALU は以下の動作をする。 になる。よってこの個々のユニットのアイドル時間を無 くし 、流れ作業のような機構を取り入れたのがパイプラ • 整数演算 (加算、減算、乗算) インである。(図 11 参照) 各部の処理ユニットのアイド 12 ル時間を減らし 、休み無く働かせることで全体的により 動作を速くすることが可能である。 T1 T2 T3 T4 ! "$#%&')(*+, -/.$021)321$41 "!"#$% ALU 56 78 + 7 9): <;2= 9 >2?9@$A 図 13: 単一クロックサイクル内での ALU 操作 図 11: パイプライン構造 えて ATmega8L はデータ保存用 EEPROM メモリがあ るのが特長である。 AVR ではハーバード アーキテクチャと高速アクセス が可能なレジスタより、並列の命令取得とその実行が 可能となる。命令と実行のタイミングを図 12 に示す。 3.4.1 プログラム用フラッシュメモリ 1MHz あたり 1MIPS(1MIPS は、1 秒間に 100 万回の命 フラッシュメモリは最低 10000 回の消去/書込みサイ 令を処理できるという性能尺度) を達成する。 クルの耐久性がある。ATmega8L はプログラム保存用 T1 T2 T3 に書換え可能な 8K バイトのフラッシュメモリをチップ T4 上に含む。ソフトウェア保護のためにプログラムメモリ 空間はブートプログラム領域と応用プログラム領域の 2 つに分けられる。 2 23 3.4.2 データ用 SRAM メモリ SRAM はトランジスタによる順序回路 (フリプフロッ 34 プ回路) で構成され 、この回路に 1 、0 という論理値レ ベルでデータが記憶される。SRAM は 1 つのセルを構 成するのに 4 つ、またはそれ以上のトランジスタが必 図 12: 命令の実行のタイミング 要となり、配線数も多いため、消費電力が大きく、実装 密度を上げにくく、大容量化が難しいといった問題はあ また、図 13 は 1 クロックサイクルにおける ALU 命 るが、トランジスタによるスイッチ回路で全てを構成す 令のタイミングを示している。単一クロックサイクル内 るため高速動作が可能である。よって大容量を要求さ で 2 つのレジスタオペランドを使用する ALU 操作が実 れるものには向かないが 、プログラムを ROM に持ち、 行され 、その結果がレジスタヘと書き戻されている。 RAM を作業メモリとして使用するような一般の電子機 器や、高速性が要求されるキャッシュメモリとして利用 3.4 されている。 ATmega8L の各種メモリについて ATmega8L の SRAM の構成は 32 個のレジスタファイ ル、64 個の I/O レジスタ、1024 バイトのデータ用内蔵 ここでは ATmega8L に使用されているメモリについ SRAM に分けられる。 て説明する。AVR マイコンにはプログラムメモリ空間 とデータメモリ空間の主に 2 つの空間があり、それに加 13 3.4.3 • ソフトウェア割込み データ保存用 EEPROM メモリ 割込みを起こすための命令によって発生させる割込 EEPROM は他のメモリとは独立して用いられている データを記憶するためのメモリで 、不揮発性メモリで あり、電源を落しても記憶内容が消えることは無い。1 み。また、例外としてゼロ除算、オーバーフロー、 ページフォルト等によって発生する。 番地単位で消去・書込みが可能であるが、構造はフラッ どの割込みにしてもプロセッサに割込みが生じるとメ シュメモリに比べて複雑である。また、その分記憶容 インルーチンを中断して別の処理を実行する。その後に 量も小さい。ATmega8L では 512 バイトの EEPROM 実行される処理は割込みハンド ラ、もしくは割込みサー を内蔵している。ちなみに書換えは 100,000 回可能であ ビスルーチンと呼ばれる。また割込み処理が終了した後 る。今回の研究では先に挙げたように記憶デバイスとし も、割込み処理が発生する前に実行していた処理に戻っ て miniSD を使用した。よって今回に関して EEPROM て来られるように元の処理のアドレ スに関する情報を 多くを保存しておく。割込み処理を実行するために、ど は使用していない。 この場所に飛べば良いかを示す情報は割込みベクタと 3.5 呼ばれるテーブルに書かれている。割込みベクタには飛 ATmega8L の内蔵周辺機能について び先の命令のアドレスを書くこともあれば 、ジャンプ命 令を書くこともある。 ここでは ATmega8L に内蔵されている各種機能につ いて説明する。 3.5.2 3.5.1 割込み タイマ/カウンタ カウンタは入力信号を数える機能がある。実際に数え 割込みとは、ある連続した処理の最中に別の処理を行 ていくのは入力信号の Low から High への立ち上がり わせることである。例えばなにかの処理をしながらス や立ち下がり等である。これらの数えた値はカウンタ イッチを押したら別の関数が動くようにしたいとする。 内に記憶されている。カウンタは任意の時点でプロセッ そうするとスイッチの状態を常に監視し 、押されていた サ記憶された値を読むことができ、更にカウンタ内の らその関数を動かすルーチンを呼び出して実行し 、また 初期値をプロセッサ側から設定することも可能である。 スイッチの状態監視に戻るという流れになる。 カウンタ入力にあらかじめ周期がわかっている信号を用 しかしこの場合、常にスイッチを監視していなければな いれば時間間隔を測ることが可能である。 らない。そこで使用するのが割込み機能である。例とし このようにカウンタを時間間隔の測定や遅延等の目的 て外部割込み機能を使うと、メインルーチンの中で定期 で使用する場合にはタイマと呼ばれる。内部の動作はカ 的にスイッチのチェックをすることとなくマイコンのあ ウンタと同じである。 るピンにつながれたスイッチが押されると、メインルー チンの処理を中断して、処理させたい関数を実行させる 3.5.3 SPI(シリアル周辺インタフェース) ことができる。その関数の修了後は意とすること無く続 シリアル周辺インタフェース (以降 SPI) は ATmega8L きのメインルーチンが再開される。 と周辺デバイス間の高速同期データ転送を提供する。SPI 割込みには例で挙げた外部ハードウェア割込みの他にも 内部ハード ウェア割込み、ソフトウェア割込みがある。 には次のような特長がある。 以下にそれらの割込みの動作について示す。 • 全二重 3 線同期データ転送 • マスタ/スレーブ動作 ■割込みの種類と動作 • LSB/MSB 先行データ転送 • 内部ハード ウェア割込み プロセッサの内部で問題が生じた際に発生する割 込み。 • 設定変更可能な 7 つのビットレート • 送信完了割込み要求フラグ • 外部ハード ウェア割込み 外部のボタン等によって割込みルーチンを発生さ • 送信上書きフラグ保護 せる割込み。 • アイド ル動作からの起動 14 • 倍速 (CK/2) マスタ SPI 動作 SPI 通信を簡単に述べると、SPI マスタと呼ばれるデ バイスと SPI スレーブと呼ばれるデバイスの間を 4 本の 信号線 (SCK 、MISO 、MOSI 、SS) と GND で接続し 、 マスタ側で転送命令を掛けると双方の SPI データレジ スタ SPDR の値が交換されるというものである。 MISO(Master in Slave Out) はその名の通りスレーブか らマスタ方向の転送データを、MOSI(Master Out Slave In) はマスタからスレーブ方向の転送データを伝える。 SCK 線は、マスタ側から伝送に当たってクロックを供 給する。SS はマスタ、スレーブによって機能が変わって 来る。まずマスタの場合、方向レジスタで入出力を決め られ、出力指定の場合は汎用出力ピンとして、入力指定 の場合は SS ピンが High の時にのみマスタとなる。ス レーブの場合は常に SS ピンは入力となり、High の時 は SPI はリセット、SCK/MISO/MOSI は入力となる。 また、Low の時のみスレーブとなる。 SPI 機能を有効にした際のピンの動作を表 1 に示す。 また、周辺デバイスとのマスタ/スレーブとの接続は図 14 に示す。 表 1: SPI 有効時のピンの動作 ピン 位置 マスタ スレーブ SCK PB5 DDR レジスタに従う 入力 MISO PB4 入力 DDR レジスタに従う MOSI PB3 DDR レジスタに従う 入力 SS PB2 DDR レジスタに従う 入力 MSB LSB 8 MSB MISO MISO MOSI SCK MOSI SCK SS VCC SS GND LSB 8 図 14: SPI マスタ/スレーブの接続 15 8bit Data Bus $+)&%$ /, - 5&6&7 4 / ! . "0$&% 4 89 %0#: <= ; 32 8 !#"$&% ALU '&()* ')&% SRAM ,-G0HI EEPROM / 12304 図 8: AVR アーキテクチャ 16 SPI >0? @0AB C0D&EF 4 C0D&EF 4 C0D&EF 4 1 2 n 加速度センサ 4 4.1 4.3 4.3.1 軌道計測における加速度センサの必要性 機能 計測範囲 前回の HAMANA-1 において、GPS でロケットの軌 ADXL210AE は2軸の加速度計で、最大± 10g の範 道計測していたのであるが、記録情報から GPS データ 囲の加速度を計測することができる。モデルロケットは で正確な高度を求めることは難しいということがわかっ ている。その理由として、 「 GPS の出力するデータが地 3 秒∼4 秒で高度約 100m に到達する。ロケットが最高 地点に到達するまでにはエンジンの出力による上昇と、 球の地域的な凹凸を無視していること。」そして、 「地 エンジンの出力が低下した際の慣性力とがある。この 球の重力に関係するジオサイドと呼ばれる補正 (海抜値 際、慣性力を考えず、3.5 秒で高度 100m まで到達する をもとに補正する) をかける必要がある」ということが とすると 1 秒で 28.6m 上昇することになり、ここでロ 挙げられる。また、 「同一地点にあるはずの状態で計測 ケットにかかる重力加速度 g を求めると 2.91g となる。 高度が 20m 程度の間で揺らいでしまう」という GPS を よって 3g 以上を計測することができるので十分である。 使用したシステムの精度自体に関することがらもわかっ ている。よって GPS による軌道測定は大地に並行な面 4.3.2 出力方法 においては可能であるが、大地に垂直な面、つまり高度 よって GPS を除き、高度情報を得ることができる方法 ADXL210AE は計測した値の出力方法としてアナロ グ出力とデ ィジタル出力が用意されている。アナログ として、加速度と時間によって高度を算出する方法が挙 出力はX軸と V 軸の加速度に応じて出力電圧が変化し 、 げられ 、そこに加速度センサの必要性が生じてくる。 それをインバータを用いてバッファリングするか、もし 情報を得る際には使用できないことがわかっている。 くは RC フィルタにデューティサイクル信号を通すこと で出力が得られる。 4.2 加速度センサ 一方、デ ィジタル出力は加速度に応じて出力パルスの デューティ比 (図 16) を変化させることで値を出力して モデルロケットは小型軽量でなおかつシステムを搭 載するペ イロード の大きさが制限されることもあり、 センサの選定には軽量かつ小型であることが要求され いる。今回はこのディジタル出力を利用し 、出力パルス をマイコンでサンプリングして値を得ようと考えた。 T2 る。今回選定した加速度センサは AnalogDevices 社の ADXL210AE である。回路図は図 15 に示す。 T1 3V to 5.25V Cx Vdd Xfilt X SENSOR DEMOD Cdc OSCILLATOR Rfilt 32kR g=(T1/T2-0.5)/4% 0g=50%Duty Cycle Xout ANALOG TO DUTY CYCLE (ADC) ADXL210AE DEMOD Y SENSOR SELF-TEST Rfilt 32kR Yfilt T2 COUNTER 図 16: デューティ比 Yout COM Cy Rset 4.3.3 出力パルスの周期の設定 図 15: ADXL210AE の回路図 ディジタル出力における出力パルスの周期 T2 は抵抗 Rset の値を変更することで、0.5mS∼10mS の間で設定 することができる。表 2 に T2 と Rset の対応を示す。 17 デカップリングキャパシタとも呼ぶ。 表 2: 周期 T2 の設定 周期 T2[mS] 抵抗値 Rset[k Ω] 1 125 2 250 5 625 10 1250 4.6.2 COUNTER:マイコン ディジタル出力の際、出力されたパルスから後でデュー ティ比を求め、重力加速度を算出できるよう、時間当り の値をサンプ リングして外部記憶デバイスへ記憶させ るデバイスである。 今回は ATMEL 社の 8bit マイクロコントローラ、AT- 4.4 mega8L を使用する。消費電流は標準動作 3.6mA 、ア 外形条件 イドル動作 1.0mA 、パワーダウン動作 0.5 μ A である。 モデルロケットは先ほど述べた通り、小型であること (条件:4MHz 、3V 、25 ℃) 動作電圧は 2.7V∼5.5V で、 が要求される。その点で ADXL210AE¿は縦横高さ 5mm 動作周波数は 0Hz∼8MHz である。小指とのサイズの比 × 5mm × 2mm の大きさで収まっており、非常に小型で 較を図 18 に載せる。 あるといえる。小指とのサイズの比較を図 17 に載せる。 図 18: mega8L のサイズの比較 図 17: ADXL210AE のサイズの比較 4.7 4.5 動作条件 4.7.1 出力パルスのサンプリングについて 標本化定理 モデルロケットのシステム電源は小型の電池を搭載す 原信号に含まれる周波数のうち最高の周波数を f とす るのであるが、発射前から着地に至るまでの 5 分間程度 ると、2f よりも高い周波数と fs で標本化すれば 、原信 を持たせなければならない。システム電圧は同時に搭載 する AVR マイコンの 3.3V に依存しており、ADXL210AE ば原信号に含まれる周波数が最高で f=22.05kHz だった は最低動作電圧は 3.0V と動作範囲内である。また温度 場合、fs=44.1kHz よりも高い周波数で標本化 (1 秒間に 範囲は -40 ℃から +80 ℃までである。 4.6 4.6.1 号を完全に復元できるということを示している。例え 44100 回超) 値を取得すれば 、原信号を完全に復元する ことができる。 標本化周波数が 2f 以下であった場合、原信号には無い 動作に必要な外部デバイス 偽の周波数がエイリアス信号として復元した信号に現 Cdc:コンデンサ れる。よって、アナログ信号のディジタル化においては 電源の雑音と信号とを適切にセンサから切り離す役 2f(ナイキスト周波数と呼ぶ) よりも高い周波数で標本化 を行わなくてはいけない。 割りがある。このような目的に使用されたコンデンサを 18 4.7.2 サンプリングの割合 4.7.3 サンプリング時の最低必要周波数について 先にも述べたが 、ADXL210E のディジタル出力はパ 今回使用するマイコンの ATmega8L は、当初、動作 ルス波を出力し 、その感知した加速度に応じてパルス 周波数を 4MHz にに設定していた。また加速度センサ のデューティ比を変化させることで重力加速度を定量化 ADXL210AE が 1 秒間に出力するパルスの数は 、1 周 している。そのデューティ比をを AVR マイコンを使用 期を 10mS に設定すると 100 パルスである。 してサンプリングし 、パルスの 1 周期とその High 時を 10mS 時間で数値化し 、それを ADXL210E の計算式を用いる ことで重力加速度 g を求めることができる。その際の 1 周期 T2 の設定は抵抗値 Rset を変更することで 0.5mS 0.04mS ∼10mS まで設定することができる。 この出力から重力加速度 g を求める式は、 g=( T1 − 0.5)/4 % T2 (1) である。例として、周期 T2 を最長の T2 = 10mS とし た場合の重力加速度 g に対する T1 の割合を求める。式 を変形すると、 g=( T1 − 0.5)/4 % 0.01 T 1 = ((0.04g + 0.5)0.01 図 19: 1 周期と 0.04mS の時間の関係図 (2) (3) 図 19 において、0.04mS は 1 周期 (10mS) の 1/250 、 さらにそれを判別するためにはその 1/10 ずつサンプリ となる。ここで g を 1∼10 までの間で変化させてみ ングすることになる。よって 1 周期を 1/2500 毎にサ る。(表 3) ンプ リングすることで加速度 1 桁オーダーを判別する 0.04mS を判別することができる。よって 1 秒間当たり 表 3: 重力加速度 g と T1 の対応 では 2500 回のサンプリングを 100 パルス分行わなけれ 重力加速度 g T1 の時間 [mS] 1g 5.4 2g 5.8 3g 6.2 4g 6.6 ことになる。次に MEGA8L は 2 クロックで 1 サンプル 5g 7.0 を取れるという事なので 、必要な周波数は次の通りと 6g 7.4 なる。 7g 7.8 8g 8.2 9g 8.6 10g 9.0 ばならない。計算すると次の通りになる。 2500 × 100 = 250, 000 (4) よって 1 秒間当たり 250,000 回のサンプリングをする 250, 000 × 2 = 500, 000[Hz] = 500[kHz] (5) よって、加速度センサのディジタル出力から値を採取 する際の最低必要な動作周波数は 500kHz となる。 しかし 、実質 500kHz でサンプリングを行ってもそれに 応じた値を保存して行く必要があり、マイコンのタイ すると表より、1g 上がる毎に 0.4mS 増えているのが マ機能を使用していくことで不化を軽減させようと考 わかる。よって加速度 g の 1 桁オーダーでは 0.4mS の えた。 違いを判別できるようにマイコンでサンプ リングしな ければならない。次で値を採取するために必要な周波数 を考えてみる。 4.7.4 タイマ機能の使用 タイマを使用するによってクロック波形の立ち上がり 立ち下がりで割込みを発生させ、加速度センサの出力の 19 High 時と Low 時の時間を求めた。そして 1 周期の時間 と High 時の時間を比較することでデューティ比を得よ うと考えた。ここではタイマ機能を使用するにあたり、 設定していくことを述べる。 4.7.5 分周比を決める 分周比とは基準となるクロックの周波数から低い周波 数のクロックを作りだす時に用いる比。普通 1/n(n は 整数) になる。 例としてシステムクロックが 4MHz で、200ms 毎にカ ウントしていきたい場合、まずシステムクロック値を 目的の時間で割り、分周比を決める。200ms=5Hz なの で 、4MHz/5Hz=8000,000Hz となる。この結果を設定 可能な分周比 (1/8/64/256/1024) で割り、8 ビットまた は 16 ビットレジスタで設定可能な値を決める。この場 合は最大の分周比1/1024 で設定しても 8 ビットタイマ に設定できる値にはならない。よって 16 ビットタイマ を持たない AVR では、割込み処理内で別のカウンタを 使う等の処理を行う必要がある。ちなみに ATmega8L は 16 ビットレジスタを有している。 4.7.6 カウンタ値を計算する 分周比が決まったら、クロック/目的時間を計算する。 目的時間を 200ms 、分周比を 1/1024 とした場合、 4M Hz/1024/5Hz = 781.25 (6) となる。分周比を 1/256 とした場合は、 4M Hz/256/5Hz = 3125 (7) となり、ど ちらの場合でも 16 ビットタイマで設定可能 なのだが 、この場合はなるべく誤差の少ない 1/256 を 選択した方が良い。 4.7.7 タイマレジスタに設定する値を計算する タイマはカウントアップタイマで、オーバーフロー時 に割込みが発生する。従って実際にタイマレジスタへ設 定する値はレジスタの最大値からカウンタ値を差し引い た値となる。システムクロックが 4MHz のとき、200ms のタイマを設定する場合は、分周比 1/256 、カウンタ値 3125 となるが 、レジスタへ設定する値は 65536 − 3125 = 62411 (8) にしなくてはならない。 20 ATmega8L のテスト 基板作成 5 図 21: 図 20 と同じく基板の比較 (電源変換実装面) 図 20: HAMANA-1 で使用した基板と今回作成した基 しており、自動で配線をしてくれる機能なども利用でき 板との比較 (マイコン実装面) る。 次に完成した基板のマスクパターンを OHP フィルムに 本項では HAMANA-2 システムの制御を担うマイコ 印刷する。これは次に感光基板にそのマスクパターンを ン ATmega8L のテスト基板作成に付いて述べる。 重ね、紫外線を当てることでマスクパターンを焼き付け 本プロジェクトにおいて、基板設計は小型化や軽量化 るのに使用するからである。 を目指す上で重要な工程のひとつである。モデルロケッ 次に感光基板にマスクパターンを焼き付け、現像液に浸 トのペイロード (貨物スペース) には限りがあり、また、 して不要な部分を除去し 、エッチング液に浸して回路と 重量はロケット自体の飛行特性にも係わってくる。よっ なるべき場所以外の銅を除去する。再度現像液に浸し 、 て、より小さなスペースにデバイスを集約するために両 残った回路部の上に乗った感光膜を全て除去する。 面のプ リント基板を用いて小型軽量化を実現する必要 最後に露出した銅配線の酸化やショートを防ぐためにレ がある。 ジスト剤を吹きかけて回路の保護と絶縁をし 、乾いた後 また、テスト基板を作成する理由には本番の基板を作成 にデバイス実装部のみ剥し 、必要な部分の穴をド リルで する前の練習という意味合いもあり、基板を作成する工 空けることでオリジナルの基板が完成する。 程を一通り体験することによって、そのノウハウを本番 の基板作成時に結びつけることができる。 ■基板作成の大まかな流れ 1. EAGLE による回路設計/基板設計 5.1 基板作成の流れ 2. フィルムへマスクパターンの印刷 オリジナルな基板を作成するに至って、まず行わなけ 3. (両面基板の場合) 重ねたフィルムのずれの調整と ればならないことは回路設計と基板設計である。今回使 両辺の接着 用する EAGLE においては回路設計と基板設計が連動 21 4. 感光基板へのパターンの焼き付け 5.3 5. 現像液による不要部分の除去 プリント 基板 CAD EAGLE によるレ イアウト 今回、回路のレ イアウトと基板を作成するうえでの 6. エッチング液による不要銅部分の除去 マスクパターンの作成にプリント基板 CAD の EAGLE 7. 現像液による感光膜の除去 を使用した。メリットとして一つめに挙げられるのが 、 8. レジスト剤による回路の保護と絶縁 非商用、または評価用の場合は無料で使用できることで ある。制限は多少あるのであるがまた、2 層基板に対応 9. 穴空けと回路の整形 していること、大きさは 100mm × 80mm まで対応し ていることと、今回のように小型集約型の基板を設計す 5.2 るに至っては十分な環境である。 プリント 基板 二つめに挙げられることとして部品ライブラリが豊富 プリント基板とは集積回路、抵抗器、コンデンサ等の にあるということである。本来基板のレイアウトを行う 電子部品を実装し 、その部品間を接続して回路を構成す 際には、抵抗ひとつに至っても実装する部品の大きさを る配線を担う役割りの板状、またはフィルム状の部品で を使用した。 CAD 上にひとつずつ忠実に再現しなければならない。 しかしそれを手作りする必要が無く、すぐに回路設計を 始めることができるのである。 基板には大きな分類として、絶縁体基材に柔軟性のある 三つめとしては回路設計と基板設計が連動していて自 ある。今回はテスト用途の基板であるので、板状のもの 材料を用いたフレキシブル基板と、逆に柔軟性の無い材 動配線が可能ということである。よって配線時間の大幅 料を用いたリジッド 基板とに分けられる。フレキシブル な短縮と配線ミスを大幅に減少させることができる。 基板は柔軟性を出すことにより薄く作られ、非常に自由 EARGLE でのマスクパターン作成の流れは以下の通り である。 度が高く、小型の電子機器等に用いられる。一方リジッ ド 基板は通常プリント基板と呼ばれるもので、次で更に 分類分けしていく。 ■ EARGLE によるマスクパターン作成の流れ 1. 部品ライブラリの絞込み 5.2.1 リジッド 基板:絶縁体の種別による分類 2. 必要なデバイスのライブラリの作成 • 紙フェノール基板 紙にフェノール樹脂を浸透させて硬化させたもの。 特徴としては安価で加工がしやすい。しかし半面 3. 回路図の作成 4. 基板上への部品の配置 では無理な力が加わった際の強度が弱く、反り返 5. 回路パターンの自動作成 りが生じやすい。 • 紙エポキシ基板 6. 回路パターンの手直し 紙にエポキシ樹脂を浸透させて硬化させたもの。 紙フェノール基板とガラスエポキシ基板との中間 的特性の基板。 7. 回路パターンの配線チェック 8. ベタアースの作成 • ガラスエポキシ基板 9. フィルムに回路パターンの印刷 ガラスクロス (布) を複数枚重ね合わせたものにエ ポキシ樹脂を浸透させて硬化させたもの。電気的 特性や機械的特性共に優れているが高価である。 5.3.1 部品ライブラリの絞込み 回路図で使用するデバイスは基本的にライブラリに • テフロン基板 絶縁材にテフロン樹脂を用いたもの。特徴として 登録されているものから選ぶ。汎用デバイスであれば 、 その形状やピンの位置などが同じ 部品をライブラリか は、高周波特性が良好なため、UHF や SHF 体の ら探す必要があるが 、リストに無い場合は自分でデバ 回路に用いられるが、非常に高価であるのが難点 イスデータを登録することも出来る。使用したいデバ である。 22 イスがライブラリに登録されていれば良いのであるが 、 しに自動配線をしたのであるが、自分の思った通りの簡 そうでない場合は作成しなければならない。 潔なレイアウトにはならなかった。しかし取り敢えず配 線をし 、その後から自分で修正を加えていくことが可 5.3.2 能なので、そういった使い方をすれば効率よく配線がで デバイスのライブラリ作成 きる。 今回のテスト基板の作成にあたり、追加しなければな らないデバイスに加速度センサ ADXL210E 、水晶発振 5.3.6 子、手巻のコイルがあった。共通して注意しなければな 回路パターンの手直し らないのが、出来る限り正確に作らなければならないと 自動配線任せであるとやはり思ったような配線レ イ いうことである。今回作ったデータロガーの基板のよう アウトにはならない。また、レイアウトも大切なのであ に、限られたスペースに多数のデバイスを詰め込まなけ るのだが 、最終的に実装基板へと作りあげるのは手作 ればならないときには、多少の誤差のせいでショートし 業であるので、あまりにも細か過ぎる配線であったりだ てしまったりした。また、実際に配線のレイアウトを行 とか 、配線と配線の間の絶縁スペースが小さいために う際にグリッドに沿わず、他のデバイスや配線との設計 起きるショートを事前に防ぐ ために修正を加える必要 段階での協調性を欠いてしまうことなど の不具合が起 がある。実際の ATmega8L の IC 近傍の配線ピッチは きた。 0.79[mm] である。細過ぎてもエッチングの工程で溶け てしまう可能性があり、これより太くてもショートの危 5.3.3 険性がある。 回路図の作成 デバイスが揃ったところで EAGLE の回路図上で回 5.3.7 路を設計していく。この段階での設計は配線のレイアウ 回路パターンの配線チェック ト等は関係なく、シンプルな回路図を想像してもらうと 回路パターンを印刷し 、エッチング工程を経てし ま 良い。まずは追加したデバイスが画面に散乱している うと回路の修正が難しい。実際に SWEST に向けた回 ので大体の場所に設置していく。次に配線をしていき、 路作成では回路パターンが間違っているのに気付かず、 線とともにデバイスにも名称や値をつけていく。配線の エッチング工程を経てから気付き、配線を切断したりす 確認を行い、間違いがあれば訂正し 、無ければ基板のレ るなど大掛かりなハード ウェアデバックをした。そのせ イアウト工程に移る。実際に作成した回路図は図??に いで基板には不必要な削りあとや簡易的な修正が加え 示す。 られていったことにより、回路の信頼性は落ちていって しまった。 5.3.4 ここで配線一本一本を追って見ていくような確認を行 基板上への部品の配置 い、ショートやレイアウトにも気を配ることが重要であ EAGLE での基板設計は大きく分けると回路図での設 る。この後ベタアース (全面アース) 処理をしていくの 計と、基板上での配線レ イアウト設計の 2 つで構成さ で、変更が難しくなる。 れている。回路図の作成が終ったら「 Board 」ボタンを 配線チェックを行い、実際に作成した配線図を図 23 に クリックすることで配線画面に移る。 示す。 まずは実際に作成する基板の大きさを入力する。その後 に各デバイスやピン等を配置していくのであるが、意外 5.3.8 と気をつけていかなければならないのが使い易さとい ベタアースの作成 う観点である。今回作成したのはテスト基板なのであ ベタアースとは信号線や電源以外の部分を GND(アー るが 、汎用ピンの設置やコネクタの位置など 等も考慮 ス)で塗りつぶすことである。回路が高周波用の回路で した。 あったり、外部からのノイズによる影響を防ぐ場合など に使用する。プリント基板を手作業で作る場合には溶か 5.3.5 す銅の量を少なくできるという効果もある。 回路パターンの自動作成 実際にベタアースのパターンを描くのにはポリゴン機 EAGLE には自動配線という機能があり、これを利用 することで EAGLE 任せの配線レイアウトができる。試 能を使う。ポリゴンは元々多角形のパターンを描く機能 であるが、プリント基板の余白をパターンにする機能も 23 図 22: テスト基板の回路図 ある。 わせてずれを調整していると気付かないのであるが、双 EAGLE によって作成したテスト基板のマスクパター ンを図 24 、25 に示す。 方のフィルムの本来重ねるべき逆の面を重ねてしまい、 鏡に映した様な基板ができてしまうことだけは避けた い。実際に私達はその失敗をしてしまい、部品実装の段 5.3.9 階になるまで気付かなかった。 マスクパターンの印刷 EAGLE 上でできあがったマスクパターンを OHP フィ 5.5 ルム等の透明なフィルムに印刷する。印刷する際はプリ 感光基板へのマスクパターンの焼き付け ンタの設定を高精細設定にする。ここでパターンが印刷 感光基板へのマスクパターンの焼き付けは 、紫外線 されたフィルムはこの後感光基板に焼き付けることにな を照射することででき、螢光灯でも可能であるのだが 、 り、インクの濃淡や印字の荒さは直接回路に影響してし むらができてしまうために専用の紫外線照射器で行う。 まう。印刷の際は印字の荒いド ラフト印刷やインクの濃 まず、重ね合わせたフィルムの両辺をテープ等で接着さ 淡を生む双方向印刷等は避けるべきである。 せ、感光基板を挟み込むようにする。それを専用のトレ イで挟み、ポンプで空気を抜くことにより、感光基板と 5.4 フィルムをより接着させ、ぶれないように固定すること フィルムのずれの調整 が可能である。 今回作成するテスト基板は、両面の基板である。よっ 感光基板の焼き付け時間は使用するフィルムや、機器に て感光基板に焼き付ける際には、上下の基板のずれが無 よって異なる出力によっても変わってくるのであるが 、 い状態で感光基板を挟み込み、焼き付けるようになる。 今回使用した OHP フィルムやサンハヤト製紫外線照射 ここで少しでも双方のパターンにずれが生じると、例え 器の環境下では目安は約 3 分として挙げられている。 ば 、部品実装のための穴を空けた際に穴が合わない等の フィルムと光源の違いによる、感光基板の焼き付け時間 問題が起きてしまう。また、何気なくフィルムを重ね合 の目安を表??に示す。 24 図 24: EAGLE で作成したマスクパターン (マイコン実 図 23: テスト基板の配線図 装面) 表 4: 感光基板の焼き付け時間の目安 刃先等で丁寧に削る必要がある。つまり、万が一現像ま 光源 透明フィルム マットフィルム 紫外線照射器 約3分 約 4∼5 分 螢光灯スタンド 約 20 分 約 25 分 での工程にミスがあってもこの工程で補正できるので、 必ずこの工程を行う必要がある。 5.7 5.6 現像液による不要部分の除去 エッチング液による不要銅部分の除去 回路の検査と補正を行った基板から、最終的に回路以 マスクパターンを焼き付けた感光基板から、今度は不 外の不要な銅部分を除去する作業を行う。用意するもの 要な部分を除いていく。用意するものとしては、ぬるま としては、噴流式のエッチング装置、無ければ底の広い 湯と現像剤とそれを入れる容器が必要である。ここで回 金属以外の容器とエッチング液である。容器に付いては 路パターンに傷を付けないように現像液を動かし 続け 四角形のカップ焼きそば等の容器が大きさ的にも良いの ることが大切である。ここで回路パターンがくっきり現 であろうと考える。 われ、回路以外の感光剤が完全に溶けたら、引き上げて エッチング液は約 40 ℃前後まで温め、ポンプでエッチ 水洗いする。ここで不必要な感光剤を除去した際の基板 ング液を循環させている中に基板を漬けておくことで を図 27 に示す。 感光剤が乗った部分以外の銅が露出している部分が除 去されるのである。漬けておく時間は、銅の溶け具合に 5.6.1 よって変わってくるので、常に時間を意識していること 回路の検査と補正 が大切である。 次はエッチング液を使用する工程なのであるが、ここ 今回は噴流式のエッチング装置を使用したのであるが 、 までの工程が全てうまく進んだからといって完全な基 そのような装置が無い場合は底の広い容器を使用して 板が作れるわけではない。回路以外の感光剤を溶かし 基板を回路パターンが下になるように沈め、エッチング た時点で、再度、回路の検査を行わなければならない。 が終わるまで容器ごと液を動かし 続けることで早く綺 パターン切れや、回路の導通に自信が持てない箇所はレ 麗に仕上げることができる。回路以外の銅が完全に溶け ジストペン等で塗りつぶす必要がある。また、逆にはみ たら引き上げて水洗いする。実際に不要な銅を除去した 出ているところやショートの危険性がある際はナイフの 基板を図 28 に示す。 25 図 26: 重ねてずれを調整し 、接着したフィルム 図 25: 図 24 と同じくパターンの比較 (電源変換実装面) 5.8 現像液による感光剤の除去 最終的に回路部分に乗っている感光剤を除去すること で基板自体は完成する。 5.9 レジスト 剤による回路の保護と絶縁 完成した基板は回路部分の銅が露出しており、直接指 などで触ってしまうと皮脂等で酸化してしまう。また、 図 27: 不必要な感光剤を除去した基板 露出した回路は思わぬことでショートする危険性が高 い。よって絶縁性のあるレジスト剤をスプレー等で吹き かけ、回路の保護と絶縁をする必要がある。 5.10 穴空けと回路の整形 5.11.1 部品を実装する上でド リルで穴を開けなければならな EAGLE を使った設計での回路設計とレイア ウト 設計における不連動 今回のテスト基板は直接ペイロード に収めることは考 EAGLE で回路設計を行った後、レイアウト設計画面 に移って配線のレ イアウト等を行って¿いくわけである えていないのであるが、形が限定されている場合は整形 が、レイアウトを完成させた時点で回路設計画面と本来 する必要性がでてくる。これで基板は完成である。 連動していなければならないのに 、そのリンクが切れ いのであるが 、確実に垂直に開ける必要がある。また、 ていた。それに気付かず基板のレイアウトを行っていた 5.11 ので 、後から部品の不一致や配線ミス等の問題が発生 回路作成の反省点 した。 今回はマイコンのテスト基板作成ということで基板 CAD EAGLE を用いて回路のマスクパターンを作ると ころからド リルで穴を開けるところまでの工程を一通 り行った。各工程には反省点が挙げれる。 26 5.12 実装するデバイスについて ここでは AVR マイコンのテスト基板において実装す るデバイスについて述べる。大部分は「 ATMEL AT- mega8L の概要」の章の「 ATmega8L の周辺デバイス」 に示してある。ここでは追加実装したデバイスのみ示 す。 また、デバイスを実装した基板を図 29 、30 に示す。 図 28: エッチング液による不要銅部分の除去 5.11.2 フィルムの重ね間違い フィルムのずれを調整して接着する工程では、双方の フィルムの本来重ねるべき逆の面を重ねてしまい、鏡に 映した様な基板ができてしまった。発覚したのは部品実 装の段階で、簡単なミスなのであるが、大幅に時間を無 図 29: デバイスを実装したテスト基板 (電源変換実装面) 駄にしてしまった。 5.11.3 基板に対する現像用薬品の直接投与 現像液によって不要な部分の感光剤を除去する工程で は何枚も基板を現像液に漬けていると段々と化学変化 が起きなくなり、現像液は最終的に飽和に向かってしま う。 そこでで直接現像液の基となる薬品を直接トレーに振 り巻いてしまった。その際、多少基板の上にもその薬品 が直接降り掛かってしまい、掛かったパターンの周辺は 紫外線を照射したしないに係わらず広範囲に渡り除去 されてしまった。 5.11.4 エッチング工程における回路の侵食 図 30: デバイスを実装したテスト基板 (マイコン実装面) また、エッチングの工程では回路と回路の間の銅の溶 け残りを除去するために、必要以上エッチング液に漬け てしまったことが挙げられる。長時間エッチング液に漬 けておくことで、溶け残りを除去することはできたので 5.12.1 あるが、本来溶けることの無い回路部分がどんどん侵蝕 LED LED は ATmega8L にプログラムをダウンロードして されていってしまい、よって回路の信用度が落ちてしま テストを行う際、簡単なレスポンスを可視化して即事確 う結果となった。 認できるようするために実装した。LED のグランド は あらかじめ本体回路のグランド と接続してあるために、 27 レ スポンスを確認したいピンと直接接続することで使 用できる。 5.13 デバイス実装段階においての反省点 今までの基板製作も含め、基板を作成するにあたって 多くの失敗をしてきた。その反省点を以下に述べる。 5.13.1 マスクパターンの間違い 回路設計と基板設計を同時に行ってくれる EAGLE を信用しきってし まったがために 、マスクパターンの チェックを怠ってしまい、デバイス実装時になってその 問題が発覚し 、銅配線を切断するなどのハード ウェアデ バックをすることになってしまった。EAGLE ではデバ イスの形も配線に考慮されているために、本来デバイス を実装する場所と多少ずれるだけで、ショートの原因と なってしまった。 5.13.2 ハンダの接着ミス 今回のマイコンに代表されるように、IC の足は非常 に細く、また隣の足との間が非常に狭く設計されてい る。IC のハンダ付けには慣れていないがために近くの 線とショートしてしまっていることがあった。 5.13.3 回路パターンにおける配線間隔の短さ 基板を作成する工程で、うまく配線と空白とが区別さ れず、ショートしたままでできてしまった。 5.13.4 熱による IC の破壊 部品実装の際に 、なかなか基板とデバイスとが接合 されず、ハンダごてを当て過ぎてしまったことにより熱 が加わり過ぎて IC が破壊されてしまったものと考えら れる。 5.13.5 エッチング工程でのミス エッチング工程において、必要以上にエッチング液に 漬け過ぎてしまったがために、必要な部分まで除去され てしまった。そのために回路自体の信用度が下がってし まった。 28 ソフト ウェア開発環境 6 2. コンパイルされたオブジェクトプログラムの実行 速度が速く、また、そのとき必要となる記憶領域 データロガーは AVR マイコンを中心とし構成されて がなるべく少いこと。 いることから、AVR 用のクロスコンパイル環境を構築 3. コンパイル速度が速いこと。 した。また、ATmega8L へのソフトウェアの実装は同研 究室の大山氏が開発した FPGA を用いたシリアル /SPI 変換モジュールを使用した。 6.1.2 クロスコンパイルとは 実際にソフトウェア開発は開発環境の多くが無償で公開 パソコン用のプログラムはパソコンでコンパイルす されている Linux をベースとし 、様々なツールを用い ることで行っていった。 るのであるが 、マイコンはパソコンに比べて非力であ ここでは使用した実験器具や開発ツールの紹介と、開発 り、なおかつ自身でコンパイル出来る環境に無いのが殆 ツールのインストール方法、ソフトウェアの実装方法等 んどである。よってマイコンのソフトウェア開発は一般 の開発環境の構築について述べる。(実際の開発環境は 的にパソコンでコンパイルし 、そのプログラムをマイコ 図 31 を参照) ンにダウンロード するという方法をとる。 このようにプログラムを実行する環境とは別の環境で コンパイルすることをクロスコンパイルと呼ぶ。クロス コンパイルをするためにはプログラムを実行する側の 環境に対応したコンパイラが必須である。 6.2 使用した開発ツール 使用したツールとその正式名称を以下に示す。 • gcc-core-3.4.4 GNU Compiler Collection(GCC) • avr-libc-1.2.3 AVR Libc 図 31: ソフトウェア開発環境 6.1 • binutils-2.16.1 GNU Binutils クロスコンパイルとは 6.2.1 GCC 本研究では Linux 上で ATmega8L に実装するソフト GCC とは GNU プロジェクトによるフリーなコンパ ウェアの開発を行っていった。まずクロスコンパイルす イラで、殆の UNIX 系 OS に移植されている。初めは るということはど のようなことであるかについて簡単 C 言語と C++言語をサポートしていたが 、様々な言 に述べる。 語をサポートするようになったため、 「 GNU Compiler Collection 」に名称変更された。 6.1.1 コンパイラ 6.2.2 コンパイラは高水準プログラム言語で書かれたソー スプログラムを機械語へコンパイル (変換) する変換器 AVR-Libc AVR Libc は Atmel AVR 8bitRISC マイクロコント ローラ専用のスタンダード C ライブラリのサブセット である。コンパイラが備えるべき条件として以下のこと がらが挙げられる。 (デバイスやソフトウェアプログラム間でのインターフェ イス) を提供する。 1. コンパイルをする時点でプログラム中にある誤り (バグ ) を検出し 、その結果を出力すること。 29 6.2.3 GNU Binutils Binutils はオブジェクトファイルとアーカイブで働く リンカ、アセンブラ、その他のツールを含むソフトウェ ア開発ツールの集まりである。 6.3 ソフト ウェア開発環境の構築 PC AVR マイコンのクロスコンパイル環境を構築するに は 、入手してきた AVR マイコン対応のツールを AVR にターゲットを設定し 、コンパイルの後にインストール FPGA SPI SCK RS232C /SPI MISO MOSI ATmega8L ! " % &'#( $ SS する必要がある。 以下にインストールオプションとインストールコマンド を示す。 図 32: ソフトウェア実装環境の概要図 1. GNU Binutils のインストール ./configure –target=avr –prefix= インストール先 のアドレス make make install 2. GCC のインストール ./configure –target=avr –prefix= インストール先 のアドレス –enable-languages=”c,c++” make make install 3. AVR-Libc のインストール ./configure –target=avr –prefix= インストール先 のアドレス make make install ■インストールオプションの説明 • –target=TARGET TARGET で指定した名前を使用して関連づけら れたファイルをインストールする。 • –prefix=PREFIX PREFIX で指定されたディレクトリにインストー ルする。 • –enable-languages=NAME NAME で指定された言語を有効にする。 6.4 ソフト ウェア実装環境 図 33: ソフトウェア実装環境 (PC より後端) ATmega8L にプログラムを実装するには FPGA を用 いた。PC からは RS232C でシリアル出力、また、AT- mega8L は SPI で通信したい。そこで同研究室の大山氏 の開発した FPGA を用いたシリアル /SPI 変換モジュー ルを使用した。ソフトウェア実装環境の概要図を図 32 に示す。(実際の実装環境 (PC より後端) は図 33 を参照) 30 miniSD カード の制御 7 では 9 ピンに増えている。ただ、今回マイコンと通信す る際には SPI 通信を使用するので、追加された 2 ピン 本項ではデータロガーで採取されたデータを記録し は特に使用せず、影響は無い。 ておくデバイスとして選定した miniSD カードの概要と その制御について述べる。実際に ATmega8L と通信を いるので、SPI 通信についても詳しく述べていく。 7.1 SD カード のアーキテクチャ 7.3 行う際にはシリアル周辺インタフェース (SPI) を用いて SD カード も MMC と同様にカード 内部にフラッシュ メモリセルだけでなく、コントローラを内蔵している。 図 35 miniSD カード の概要 データロガーの記憶デバイスとして採用した miniSD カードは、今日、私たちの身近な携帯電話の外部メモリ として広く普及するにいたっている。miniSD カード と SD カードは形状以外は全同じものである。SD カードは シーメンス社とサンディスク社が共同開発した MMC(マ ルチメディアカード ) をベースに規格化している。よっ て MMC に対して SD カード は上位互換を維持してい る。 SD カード は SD カード アソシエーション (SDA) が仕 様を公開していないのに対し 、MMC は MMC アソシ エーション (MMCA) がロイヤリティフリー (ライセン ス不要) で仕様を公開している。よって開発は MMC の 仕様書を基に行っていった。 7.2 SD カード のピン配置 図 35: SD カード の内部コントローラを介した通信 SD カードのピン配置を図 34 に示す。また、MMC と 比較したピン名称表 (SPI モード 時) を表 5 に示す。 MMC 内部にコントローラを登載することにより、様々な利 7 点を産むのであるが、今回の開発においてはメモリアク セスが容易であるということが一番のメリットであると 考える。 具体的にはメモリにアクセスする際に、メモリの構造を 意識すること無く、コマンドでやり取り出来るところで 1 2 3 4 5 6 ある。よってホストとなるマイコンはカード 内部のレジ 7 8 スタを介して SD カードと通信を行い、各レジスタの情 9 報を読書きすることで、ホスト側は容易にカードの制御 が行えるようになる。 7.4 MMC の仕様 ここでは仕様が公開されており、今回の開発を行った 範囲では SD カード と互換のある MMC の仕様を説明 図 34: miniSD のピン配置 していく。 MMC のピン数が 7 ピンだったのに対し 、SD カード 31 表 5: MMC と SD カード のピン名称表 (SPI モード 時) SD メモリカード MMC 7.4.1 ピン番号 名称 説明 名称 説明 ピン 1 CS Chip Select CS Chip Serect ピン 2 DataIn Data Input DataIn Data Input ピン 3 Vss Vss Vss Vss ピン 4 Vdd Vdd Vdd Vdd ピン 5 CLK Clock CLK Clock ピン 6 Vss Vss Vss Vss ピン 7 DataOut Data Output DataOut Data Output ピン 8 - - - - ピン 9 - - - - インタフェース 7.4.3 MMC のデータ転送はシリアルで行われ 、その通信 CRC CRC はカード 内のデータエラー検出用ではなく、ホ 手段には 2 つのモードがある。その 1 つは (MM) カー ストとカード 間のデータエラー検出を目的としている。 ド モード、もう1つは SPI(Serial Peripheral Interface) MMC モード ではこの CRC は必須なのであるが 、SPI モード である。今回は比較的容易である SPI モード で モードではオプションとなっており、デフォルトでは不 通信を行った。 要である。 SPI モードではホストとのインタフェースは CLK 、DataIn 、MMC モードではコマンドには 7 ビット、データは 512 DataOut 、CS の 4 本の信号線を使用する。DataIn は バイトあたり 16 ビットの CRC を付ける必要がある。 ホストからのコマンドや、書込みデータの転送に使用さ れ 、DataOut はカード からのコマンドレスポンスや読 7.4.4 出しデータの転送に使用される。SPI モードでは信号線 MMC の最大動作周波数は MMC モード、SPI モード 共に 20MHz である。クロックは何の命令を実行してい は単一方向バスとなる。 7.4.2 動作周波数 るときにでも任意にとめることができる。またクロック 転送モード の再開により、カード へのアクセスの再開が可能であ る。 MMC ではデータ転送のモード として 3 つのモード がある。ひとつはストリーミング転送、もう1つはシン また、クロックの停止時間に対するカード 側でのタイム グルブロック転送、最後にマルチプルブロック転送があ アウトはない。 る。MMC モードではこの全ての転送モードが使用でき るのであるが、SPI モードではシングルブロック転送の 7.4.5 みがサポートされている。 コマンド MMC はカード 内部にコントローラを内蔵しており、 MMC ヘのアクセスは基本的にブロック転送になる。こ のブロックの概念はハードディスクやコンパクトフラッ ホストとのインタフェースを司るとともに 、カード 内 シュのセクタの概念に似ている。一般的な MMC の場 のフラッシュメモリの制御も行っている。よってフラッ 合、デフォルトのブロックサイズが 512 バイトである。 シュメモリチップやフラッシュメモリのみのスマートメ ちなみにシングルブロックの転送は、1 コマンドに対し ディア等での制御に必要な FTL や MTD はホスト側に て 1 つのブロックが転送される。 は必要ない。 また、フラッシュメモリで書込みが特定のブロックに偏 るのを防ぐための平滑化等の処理も不要である。内蔵の コントローラがこれらの処理を行う。 32 MMC のコマンドは簡単な書込みや読出しコマンドが中 心であり、殆んどのアプリケーションはこれら数種類の 7.4.8 データト ークン カード に書込むデータやカード から読出されるデー コマンド で済む。 タはデータトークンの形で受け渡される。SPI モード の データトークンを図 38 に示す。 7.4.6 4 コマンド 構成 MSB 1 コマンドはコマンド 部が 1 バイト、アーギュメント部 6 5 4 3 2 1 0 1 1 1 1 1 1 1 0 0 7 6 5 4 3 2 1 0 1 0 0 0 0 2 ! 513 " # $&% 2 16 '( CRC )*& 1 +,.-0/&12 成されている。コマンド の上位 2 ビットは「 01 」の固定 ビットで、実質残りの 6 バイト分がコマンドとなる。コ マンド 構成図は図 36 に示す。 CMD1 0 6 1 5 4 0 3 0 2 0 1 0 0 7 が 4 バイト、最後に CRC の 1 バイトで計 6 バイトで構 7 515 Out of Range Card ECC Failed CC Error Error 図 38: SPI モード のデータトークン ARG1 (MSB) CMD 1 ARG1 ARG1 (LSB) ARG1 CRC 1 CRC1 7.5 図 36: コマンド 構成 モード 選択と初期化 MMC は電源投入時は MMC モードで起動する。MMC はコマンド CMD0 の受信中に CS が Low になることで SPI モード になる。カードが MMC モード として選択 されていることを認識するとカード はコマンド には応 7.4.7 レスポンス 答せず、MMC モードを維持する。SPI モードとして選 択されていればカードは SPI モードに切り替わり、SPI ホストが MMC にコマンド を発行するとカード のコ モード のレスポンスを返す。 ントローラはレスポンスを返す。また SPI モード では 初期化はその後にコマンド CMD1 を発行し 、レスポン データブロックがカードに書込まれるたびに 8 ビット長 ス 0x01 を受け、続いて CMD1 を発行し 続けてレスポ のデータレスポンスを返す。データレスポンスの図を図 ンス 0x00 が来ると初期化完了となる。 37 に示す。 7 6 5 4 3 2 以下に簡略化したモード 選択と初期化のプロセスを示 1 0 0 す。(フローチャートは図 39 を参照) 1 Status ■モード 選択と初期化のプロセス Status 010 101 CRC 1. 電源立ち上げ直後は MMC モード 2. 74 クロック以上のダミークロック 3. CS を Low にして CMD0(CRC 付き) を発行 図 37: SPI モード のデータレスポンス 4. データラインにレスポンス (0x01) 5. CMD1 を発行 6. データラインにレスポンス (0x01) 7. レスポンスが 0x00 になるまで CMD1 を発行 33 • SPDR の内容が SPI 経由で交換 8. データラインにレスポンス (0x00) 9. 初期化完了 • 転送開始はこのレジスタへの書込みで開始 START • 転送が終了すると SPSR のビット、SPIF がセッ ト 74 CS Low このとき割込みが許可されていれば (SPCR の bit- CMD0 CMD1 SPIE) 、SPI 割込みが掛かる 7.7 miniSD カード 制御ソフトウェアの開発 本項ではデータロガーの開発にあたって重要となる response = 0x01 記憶デバイスの制御について述べる。実際の開発では、 軽率な仕様の調査により初期化に加えてデータを書込 response = 0x00 めるところまで進めなかったのだが 、一部反省も含め、 END それまでの工程を述べる。 図 39: モード 選択と初期化のプロセス 7.7.1 通信プロト コル理解 miniSD カード の制御をするにあたってこれまでにも 述べたように様々なデバイスや、通信方法等の調査を 7.6 ATmega8L の SPI 関連レジスタ 行った。通信プロトコルについては MMC を開発して いる各社ベンダの提供する仕様書を入手して調査を行っ miniSD カードには内部コントローラがあり、そこに ホスト側からコマンド を発行することで通信をすると いうのは先にも述べた通りであるが 、本研究ではホス た。ただステーブルな仕様を得たいと考えた際、MMC の場合は MMCA が公開をしているため、真っ先にその 仕様書を入手するべきであったと考える。 トを ATmega8L とし 、miniSD 内部コントローラ間を SPI を介して通信を行った。 本項では、ATmega8L の SPI 通信をするにあたって関 7.7.2 連するレジスタについて述べる。 Makefile の作成 コンパイルは make コマンドで実行することができる が 、その際にカレントデ ィレクトリの Makefile に従っ 7.6.1 SPCR(SPI Control Register) て実行される。Makefile では実行するファイル名の指定 や、使用するヘッダファイルやライブラリの指定、使用 SPCR では SPI を使用する際の各種機能の設定に使 用するレジスタである。設定項目は表 6 に示す。 するコンパイラやオプションの指定等、様々な指定がで きる。 下に作成したヘッダファイル (オプションを除く) を載 7.6.2 SPSR(SPI Status Register) せる。 SPSR は通信している際のフラグや設定を記憶、保存 しているレジスタである。機能に付いては表 7 に示す。 7.6.3 //Makefile TARGET = minisd func HEADER = ../HEADER FILE/*.h MCU = atmega8 SPDR(SPI Data Registor) CC = avr-gcc-3.4.4 CFLAGS = -Wall SPDR の機能や関連事項を次に示す。 34 表 6: SPCR の設定項目 bit 名称 機能 7 SPIE SPI 割込み許可 6 SPE SPI 許可 5 DORD Data Order 選択 (0:MSB から /1:LSB から ) 4 MSTR マスタ/スレーブ選択 (0:スレーブ /1:マスタ) 3 CPCL SCK 極性選択 (0:アイド ル時 SCK は High/0:Low) 2 CPHA SCK 位相選択 (0:SCK 先行エッジで入力、後行きエッジで出力/1:その逆) 1・0 SPR1-0 クロック選択 (00:f/4 、01:f/16 、10:f/64 、11:f/128) 表 7: SPSR の機能 bit 名称 機能 7 SPIF SPI 割込み要求フラグ 6 WCOL 5-1 予約 0 SPI2X 上書きエラーフラグ (データ転送中に SPDR に書込む) これがセットされるとクロックが倍速 の設定等の関数をまとめた。 OBJC = avr-objcopy HEXBIN = ../hex-bin DATE = ‘date ’+%y%m%d %T’‘ 7.7.3 7.7.4 制御プログラムの作成 miniSD カードの制御プログラムは C 言語を用いて作 成した。作成したプログラムのより細かなフローチャー ヘッダファイルの作成 トを図 40 に示す。本項では miniSD カード の初期化の 一般的なプログラミングを行う際にも標準の入出力 みを扱う。 関数を既述してあるヘッダファイルをインクルードして 使用するのであるが 、それに加えてマイコンを制御す 7.8 るプログラムを書く際にはマイコンの I/O 等を制御す る専用のヘッダファイルが存在する。それ以外にも自分 動作実験 作成したソフトウェアをマイコンにダウンロードし 、 で定義した関数や、多用する関数等を1つのヘッダファ SPI 通信をロジックアナライザで観察した。その際の波 イルにまとめることが出来る。そうすることで、動作の 形を順に示す。 確認がとれた安定している関数は誤った変更や削除を防 止することができる。 7.8.1 実際に作成したヘッダファイルは以下の通りである。 74 クロック以上のダミークロック ここでは実際に 80 クロックを送っていることが確認 ■作成したヘッダファイル できた。(図 41) • NomalFunc.h 「 待つ」 「 止める」等の簡単な動作をする関数を 7.8.2 CS を Low にして CMD0(CRC 付き) を発行 まとめた。 CS を Low にし 、CRC 付きの CMD0 が発行されてい • spi func.h SPI を使用したデータ送信関数、受信関数、SPCR ることを確認できた。コマンド 発行後に仕様よりダミー 35 図 41: 80 クロックのダミーの発行 クロックを送っている。(図 42) 7.8.6 レスポンスが 0x00 になるまで CMD1 を発行 CMD1 の初回発行後にレ スポンス 0x01 が返って来 7.8.3 データラインにレスポンス (0x01) る。その後再度 CMD1 を連続して発行するわけである が 、その連続発行を確認することができた。 CMD0 を発行した後に最大 8 クロックサイクルを送 る。そうすることでデータラインに CMD0 のレスポン ス 0x01 が返ってくる。ここではレスポンス 0x01 を確 7.8.7 認することができた。(図 43) 7.8.4 データラインにレスポンス (0x00) CMD1 の連続後にレスポンス 0x00 を得ることができ る。ここでレスポンス 0x00 を確認することができた。 CMD1 を発行 (図 44) CMD0 と同様に CMD1 が発行されていることを確認 できた。 7.8.8 初期化完了 全工程においてレ スポンスでエラーが返ってきてい 7.8.5 データラインにレスポンス (0x01) ないことより、miniSD の初期化が完了したものと考え る。 CMD0 のレスポンスを得る際と同様に最大 8 クロッ miniSD カードの初期化における一連の波形を図 45 、46 クサイクルを送る。そうすることで CMD1 のレスポン に分けて示す。ただし一部、CMD1 を連続発行する箇 ス 0x01 を確認することができた。 所は省略している。また、信号のタイミングが解り易い よう、途中にウェイト (1ms) を入れている。 36 図 42: CMD0(CRC 付き) の発行 7.8.9 エラーレスポンス 最終的に miniSD カードを初期化するところまでは完 了したのであるが、読書きの制御を完了するまでには到 らなかった。初期化を完了するまでにはいくつかの問題 があり、一番時間が掛かってしまったのは CMD1 を発 行した際にエラーレスポンス 0x05 が返ってきてしまう ことであった。その様子を図 47 に示す。 仕様書からは「 イリーガルコマンド 」であるというこ とはわかった。原因はコマンドを発行した後に送信する ダミークロックの量であった。エラーが返って来きてし まう時には他者の意見を参考に 2 回としていたのであ るが、仕様ではレスポンスが返って来るまで (最大 8 ク ロックサイクル ) 送信しなければならなかった。 37 図 43: CMD0 のレスポンス 0x01 図 44: CMD1 の連続発行後のレスポンス 0x00 38 図 45: miniSD カード の初期化における通信の波形 (前半) 図 46: miniSD カード の初期化における通信の波形 (後半) 39 図 47: エラーレスポンス 0x05 40 まとめ 8 開発における知識に乏しいながら、今回 HAMANA-2 のプロジェクトに参加することで組込みシステムの理 解や基板の設計・製作を初めとするハード ウェア設計、 プログラムによるデバイスの制御等のソフトウェア設計 について一連の「開発」をすることができた。 START 私は組込みシステムの開発に関して本当に初学者であっ 74 たのであるが、非常に有用な多くのことを学ぶことがで きた。 CS High ATmega8L のテスト基板等は、本来であればすぐにで も完成して動作テストも行える状況にあるのである。し CS Low かし 、本来は時間が掛かってしまってはいけない工程な CMD0 のかもしれないが、基板作成においてのノウハウの蓄積 ということを考えると、その失敗が有益だったのかもし れない。 データロガーシステムの中心である miniSD カードが動 作しないという状況ではあったが、仕様書を何度も見返 すことでなんとか初期化に至っては完了することができ response none response = 0x01 た。 CMD1 今回はモデルロケット用のデータロガーの開発を行った わけであるが、ハード ウェアの設計から製作、実際にデ response none response = 0x01 CMD1 response none response = 0x01 response = 0x01 response = 0x00 CS High END 図 40: 制御プログラムのフローチャート 41 バイスを接続した後のソフトウェアによる制御等、組込 みシステムの一連の工程を通して学ぶことで組込みシ ステムに対しての知見や理解を得ることができた。 今後の課題としては miniSD カードの読書きを完成させ るとともに、他のデバイスの制御プログラムと結合し 、 実験を通して完成を目指すことである。 9 謝辞 卒業研究をするにあたり、清水先生をはじめ、HAMANA- 2 プロジェクトリーダーの御村さん、そして多くの先輩 方や同期の皆様には大変お世話になりました。 清水研究室のますますの発展を望むとともに、心より御 礼申し上げます。 参考文献 [1] サーベイヤプロジェクトにおける GPS 制御回路の デバイス選定 御村武生 著 [2] サーベイヤ計画で用いるモデルロケットの軌道記 録装置の開発 松下真悟 著 [3] TECHI PC カード / メモリカード の徹底研究 CQ 出版社 [4] http://www.ertl.jp/SWEST/ [5] http://www.kumikomi.net/ [6] http://www7a.biglobe.ne.jp/ attlee/avr-jp- wiki/wiki.cgi [7] http://ww2.tiki.ne.jp/ maro/ 42