加速度センサを用いた運動動作計測システムの開発 学 学 学 051219 多 員 2010 3 Copyright c 2010 by Takafumi Sugita
卒 業 論 文
加速度センサを用いた運動動作計測システムの開発
石川工業高等専門学校 電気工学科
学籍番号 051219
杉田 多翔史
主任指導教員 河合 康典 講師
2010年 3月
Copyright c© 2010 by Takafumi Sugita
c©2010
Takafumi Sugita
All rights reserved
要 旨
本研究では,加速度センサを用いた運動動作計測システムを開発する.本研究の目的は,
安価・小型である慣性センサを用い,手軽に運動動作を計測できる装置の開発を行うこと,
また,研究段階である慣性センサを用いる運動動作分析システムを実用的に使用すること
のできる装置へと発展させることである.
はじめに,運動動作システムの方向性と概要を説明する.その後,使用するマイコンと
センサの選定,C言語と eclipseSDKを使用してプログラムの作成を行う.加えて,コンパ
イルしたファイルをDFUファイルに変換してマイコンへのプログラムの書込み,データの
書込み方法,デジタル値を重力値に変換する方法などを考え,システムを構築する.
次に,構築したシステムを実際に運動動作を行って計測できるように装置を製作する.プ
ログラムを書き込んだマイコンをセンサと接続して,被験者に対しての装置の取り付け方
を考え,システムの収納・装置の改良を行う.
最後に,製作した装置を実際に利用して運動動作を行う.被験者がジャンプする動作に
ついて,運動分析法で一般的に用いられているフォースプレートの結果と比較・解析した
上で,実用的に使用することができるかを検証する.
i
目 次
第 1章 序論 1
1.1 研究の背景と目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 論文構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
第 2章 システムの構築 3
2.1 システムの方向性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 システムの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 マイコンボード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 プログラム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 プログラムの流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7 マイコンボードへの書込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.8 データの書込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
第 3章 装置の製作 11
3.1 センサとマイコンの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 収納 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 ベルトでの固定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 装置始動法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
第 4章 運動動作計測実験 14
4.1 計測方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 計測結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 実験考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
第 5章 おわりに 17
5.1 研究の成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ii 目 次
付 録A プログラム 19
A.1 メイン関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
A.2 タイマ割込み関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
謝辞 25
参考文献 26
iii
図 目 次
2.1 概略図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 マイコンボード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 三軸方向図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 端子番号図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1 センサの接続図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 収納した状態の装置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 外形寸法図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 SD挿入口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.5 ベルト装着後 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.6 裏からみた装置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1 被験者への取り付け . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3 フォースプレートによる解析 (早稲田大学・スポーツ科学部) . . . . . . . . . 15
iv 表 目 次
表 目 次
2.1 端子機能説明表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 ライブラリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
第 1章
序論
1.1 研究の背景と目的
日本のスポーツ界は世界のトップレベルと戦えるまでに成長してきている.オリンピッ
クや世界選手権,メジャーリーグで活躍する野球選手,プレミアリーグで活躍するサッカー
選手など,世界で活躍する日本のアスリートをニュースで目にしない日はないと言っても
過言ではない.これらの活躍は,アスリート達の日々のたゆまぬ努力に加え,スポーツを
医学・栄養学などの科学的観点から解明したことが一つの要因といえる.
スポーツを科学的に解明する分野の一つに,スポーツバイオメカニクスがある.これは,
身体の運動に関して生体の構造や機能を力学的観点から解明する科学であり,簡単にいえ
ば,運動の仕組みを明らかにすることである.運動の仕組みを調べるためには,運動をし
ている身体の動きや一緒に使用している用具も含めて,刻々と変化する身体や用具の位置
を測定し,記録する必要がある [1].
スポーツバイオメカニクスの分野において,モーションキャプチャやフォースプレートを
用いて分析を行うのが主流である.しかし,これらの運動分析法は,効果的である一方で
装置が高価であること,専門的な知識を必要とする点などから,一般へはあまり出回って
おらず,ごく限られた場所でしか使われていない.
近年,慣性センサの小型化・低価格に伴い,慣性センサを用いた運動動作の研究が報告
されている [2].慣性センサを用いた動作計測システムは,手軽で比較的簡単にデータ解析
することが可能である.しかし,研究段階であるため実用的に使用するには至っていない.
本研究では,小型化・低価格である加速度センサを用いて,安価で手軽に利用できる運
動動作計測システムを開発を行い、研究レベルでしか用いられていない運動動作分析から,
実用的に使用することのできる装置の開発を目的とする.
2 第 1 章 序論
1.2 論文構成
本稿では,運動動作計測システム(以下、「システム」という)を対象として開発および
製作を行い,実際に計測を行う.第 2章では、どのような装置を目指すか提案し,システム
を開発する.第 3章では,開発したシステムを装置として製作する.第 4章では,製作した
装置を実際に使用して計測を行い,実用性があるかを検証する.第 5章では,研究の成果と
課題を示す.
3
第 2章
システムの構築
2.1 システムの方向性
専用のソフトなどを必要とせず,ある程度パソコンが使える人間であればデータ解析が
できるようなシステムを開発する.
大型でなく,小型・軽量化であり,動作計測が一般的な運動分析法と結果が一致すること
を目指す.また,身につけて計測を行うため,装置を身体に固定できることが必要となる.
なおかつ身体条件が異なっても計測できる(身長の違い,体重の違いなど)ことを考えて
製作する.
2.2 システムの概要
本研究で製作するシステムは,人間の動作をセンサで感知し,運動動作を計測するとい
うものである.本研究ではマイコンボードとセンサを主に用いて製作する.その後,シス
テムを身体に取り付けて運動を行い,データをパソコンに出力し,データの数値表示とグ
ラフ化により,運動動作を確認する.概略図を図 2.1に示す.
図 2.1: 概略図
4 第 2 章 システムの構築
2.3 マイコンボード
本研究でのマイコンボードはテクノロード社・Coronボードを使用する.外形寸法は縦
58mm×横 48mm×高さ 26mm,重量は 30gである.Coronボードは一つのボードに以下の
様な機能を搭載している [3].
• ARM Cortex-M3(STM32 72MHz)コアを使用
• 最大 16個のRCサーボモータ出力
• 2チャンネルDCモータドライブ回路搭載
• オーディオアンプ搭載
• microSDスロット搭載
• miniUSB接続コネクタ搭載
• 高速 12bitA/D変換器内蔵
• 無線シリアル接続ポートを用意
• I/O,A/D,D/Aなどが自由に使える拡張ポート
• LED× 3,スイッチ× 1搭載
今回の研究ではこのマイコンボードのACアダプタ,microSDスロット,miniUSB接続コ
ネクタ IOA0~IOA3ポート,LED× 3,スイッチ× 1を使用する.マイコンボードを図 2.2
に示す.
図 2.2: マイコンボード
2.4. センサ 5
2.4 センサ
センサは日立金属・H48Dを使用する.センサの外観図を図 2.3に示す.
図 2.3: センサ
外形寸法は縦 4.8mm×横 4.8mm×高さ 1.5mmである.このセンサには以下のような特
徴がある [4].
• 補正機能つき増幅回路内蔵で,3軸 (X,Y,Z)加速度に比例したアナログ電圧を同時
出力
• IC補正機能による高検出精度,個体間ばらつき,温度ドリフトを補正
• + 2.2Vから+ 3.6Vの単電源動作
• 低消費電流 動作時 typ.0.58mA at 3V 待機時 1μA以下
• 加速度検出範囲± 10g(g = 9.81m/s2)
• 静的加速度,動的加速度の計測可能
• 耐衝撃性 5000g
• 温度センサー出力端子装備
• QFNパッケージ採用により高密度実装可能
• 無鉛はんだ対応
6 第 2 章 システムの構築
センサの 3軸方向を図 2.4に示す.また,端子番号図を図 2.5に示し,それに対応する端
子番号機能説明を表 2.1に示す.
Y
ZX
図 2.4: 三軸方向図
1 2 3 4 5
678910
1112131415
1617181920
21
2223
24
4.8
4.8
図 2.5: 端子番号図
2.5. プログラム 7
表 2.1: 端子機能説明表
端子番号 名称 機能説明
1 Reserved GNDへ接続
2 Tout 温度センサーの電圧出力
3 AGND アナログ系グランド
4 AOZ Z軸出力
5 AOY Y軸出力
6 AOX X軸出力
7 NC 未接続
8 NC 未接続
9 NC 未接続
10 NC 未接続
11 STBYB スタンバイ制御
12 Reserved GNDへ接続
13 AVCC アナログ系電源
14 Vref ゼロG基準電圧 (1/2Vcc)
15 DVCC ディジタル系電源
16 Reserved GNDへ接続
17 Reserved GNDへ接続
18 Reserved GNDへ接続
19 NC 未接続
20 DGND ディジタル系グランド端子番号 21~24ははんだ接合補強ランド
2.5 プログラム
プログラムには C言語を用い,統合開発環境である eclipseSDK上でプログラミングを
行った.なお,Coronの開発環境には様々なライブラリと関数が用意されているため,そち
らも使用した.main関数で使用したライブラリの説明および関数の説明をそれぞれ表 2.2
と,表 2.3に示す [5].
8 第 2 章 システムの構築
表 2.2: ライブラリ
ライブラリ名 機能説明
Coron_lib.h Coronボードに搭載されているRCサーボやDCモータ,
スピーカ等の基本的動作関数とmicroSDカードスロット用のライブラリ.
stm32f10x_lib.h 標準ファームウェアライブラリ.CPUの割込みや,
A/Dなどの機能のライブラリ.
Coron_tim7int.h タイマ割込みの処理のライブラリ.
表 2.3: 関数
関数名 機能説明
coron_init() Coronの初期化
wait_timer_msec() ()× 1msec待機する
LD()_ON(OFF) ()で指定した LDをON(OFF)する
TIM_init() タイマ割込み初期化
USB_puts() ()の情報を送信する
coron_logtxt_start() txtファイルへログの書き込み開始
SD_txt_write_s(0,()) ()の情報に沿い、SD内の txtへログを書きこむ
coron_logtxt_stop() txtファイルへのログの書き込み終了
SD_txt_USBput() USBターミナルを通して txtファイルを表示
2.6 プログラムの流れ
プログラムでは以下の2つのことを中心に実行している.
• センサから取得したアナログ電圧値を 10msごとにA/D変換
• デジタル変換された値を SDカードへ書き込み
その他,
• LEDの点滅
• タイマによる時間指定
2.7. マイコンボードへの書込み 9
などを行っている.
2.7 マイコンボードへの書込み
マイコンへプログラムを書きこむ際には,DFUファイルをマイコンへ転送するDfuSeDemon-
strationにてUSBケーブルを通してプログラムを書きこむ.しかし,eclipseSDKで作成さ
れたファイルがHexファイルであるため,DFUファイルを作成する必要がある.DFUファ
イルを作成するには,DFU File Managerを使用する.
DFUファイルの作成が完了したら,書きこむためにマイコンをDFUモードに切り替え
る.これはマイコンのスイッチ (SW_USER)を押しながらUSBケーブルをマイコン及びパソ
コンと接続すると,LED3つがすべて点滅する.この状態がDFUモードに入った状態であ
るので,先ほど作成した DFUファイルを選択し,DfuSeDemonstrationで upgradeを行え
ば書込みが実現される.
2.8 データの書込み
跳躍動作を行う際,解析のためにデータを収集しなければならない.しかし,装置とパ
ソコンがケーブル等で接続されている状態で計測を行うと,次のような問題点が発生する
可能性がある.
• 計測可能な運動動作が制限されてしまう
• ケーブルによる無駄な振動の発生
これを防ぐために,データの保管および書込みにはmicroSDカード(BUFFALO社)を用
いた.SDカード内にテキストファイルを保管したフォルダを保存しておき,このファイル
を使用してデータの書込みを行う.このデータをパソコンに取り込み,データ処理を行う.
なお,保管した値はデジタル電圧値となっている為,それぞれの値を重力値に換算しな
ければならない.換算する式を (2.1)式‐(2.3)式にそれぞれ示す.
gx =AOXA/D値− V refA/D値
4095× 3300
333(2.1)
gy =AOY A/D値− V refA/D値
4095× 3300
333(2.2)
10 第 2 章 システムの構築
gz =AOZA/D値− V refA/D値
4095× 3000
333(2.3)
ただし AOX はX 方向のセンサ値,AOY は Y 方向のセンサ値,AOZ は Z 方向のセンサ
値,V ref は電源の 1/2の電圧である これらをそれぞれグラフ化(縦軸:重力値,横軸:時
間)して,解析を行う.
11
第 3章
装置の製作
3.1 センサとマイコンの接続
マイコンにセンサを接続した状態のものを図 3.1に示す.
図 3.1: センサの接続図
ポートとセンサは,IOA0が 6番ピン,IOA1が 5番ピン,IOA2が 4番ピンにそれぞれ接
続されている.なお配線は,IOA0から,赤・黒・緑のもので配線した.なお IOA3は 14番
ピンに接続されている.
3.2 収納
センサ,電源を取り付けたマイコンボードをケースに収納する.収納するケースは,プラ
スチックケース(リングスター社・ポケットケースPC-140)を使用する.なお,マイコン・
センサはネジとナットを使用して取り付ける.電源は 9Vアルカリ乾電池(SONY・6LR61
(SG))を使用する.この乾電池をソケットとDCプラグを使い,マイコンへと接続する.こ
の時センサ電源として使用できるように,マイコン内部で電源は 3.3Vに変換される.ケー
スに収納した状態のものを図 3.2に示す.また,外形寸法を図 3.3に示す.
12 第 3 章 装置の製作
図 3.2: 収納した状態の装置
27
14075
図 3.3: 外形寸法図
なお,SDカードの取出しが収納状態で困難であるため,ケースに SDカードの挿入口を
作成した.挿入口を図 3.4に示す.
図 3.4: SD挿入口
3.3 ベルトでの固定
装置は身体に取り付けるため,何らかの方法で身体に固定できる様にする必要がある.今
回は長さ 1120mmのベルトを使用し,装置に取り付けた.このベルトを使用することで,身
体のどの部位にでも装置を固定することが可能である.
取り付けには厚さ 1mmのプラバン(TAMIYA・ ITEM70124-500)を使用し,ケースの
裏からベルトを装置とプラバンの間に挟みこんで固定する.ベルトを装着した状態を図 3.5
に示す.また,挟み込んだ裏面からの図を図 3.6に示す.
3.4. 装置始動法 13
図 3.5: ベルト装着後 図 3.6: 裏からみた装置
3.4 装置始動法
装置の始動法及び計測時間は次のとおりである.
• SDカードをスロットに差し込む
• リセットボタン (SW_RESET)を押し,リセット
• LED1→LED2→LED3の順番でLEDが 0.5秒間隔で点滅 (全て消灯したら準備完了)
• SW_USERを押す
• LED1が 5秒間点灯
• LED1が消灯,1秒後に LED3が点灯
• LED3が点灯中は計測可能 (3秒間)
• LED3が消灯で計測終了
なお,今回の実験では,計測する時間が 3秒で十分であったために計測時間は 3秒で設定
した.準備時間 (LEDが点灯する時間)および,計測を行う時間は,プログラムによって変
更可能である.この際,データを書きこむ側のプログラムも変更する必要がある.
14 第 4 章 運動動作計測実験
第 4章
運動動作計測実験
4.1 計測方法
本研究で開発した計測システムを用いて,実際に実験を行った.計測方法は,被験者の
腰部に計測システムを取り付け,その場で垂直跳躍動作を行うというものである.被験者
に取り付けた状態を図 4.1に示す.
図 4.1: 被験者への取り付け
4.2 計測結果
実験結果を図 4.2に示す.また,早稲田大学スポーツ科学部の授業報告により報告されて
いる一般的な運動分析法(フォースプレートによる床反力)による垂直跳躍運動の計測結
果を図 4.3に示す.
4.2. 計測結果 15
A B C D
X方向センサ値[G]
-Y方向センサ値[G]
Z方向センサ値[G]
時間[ms]
5
4
3
0
-1
-2
2
1
1.5
1
0.5
0
-0.5
0.5
0
-0.5
-1
-1.5
-2
-1
100 120 140 160 180 200 220 240 260 280
z
-y
x
図 4.2: 実験結果
0
1000
2000
3000床反力
図 4.3: フォースプレートによる解析 (早稲田大学・スポーツ科学部)
人体図により,それぞれA~D地点は,A地点が踏み込み地点,B地点が重心最下点,C
地点が地面からの離地点,D地点が地面への着地点である.被験者からみて,X方向は左
右,Y方向は上下,Z方向は前後にそれぞれ相当する.
なお,図 4.2にて-Y方向のグラフを報告しているのは,床反力の値をグラフ化する必要
があったからである.
16 第 4 章 運動動作計測実験
4.3 実験考察
垂直跳躍運動であるため,X方向,Z方向への値は基本的に発生しないはずである.今回
の実験にてX方向・Z方向に発生した値は,
• 踏み込み地点から離地までの動作におけるセンサの作動
• 振動によるセンサの作動
• センサ(システム)の位置などが原因としてあげられる.
特に,踏み込みから離地までのセンサ動作については,
• 腰を垂直に重心最下点まで降ろし,垂直に引き上げることは,人体の構造上難しい.
• 被験者によっても,しゃがみこみの動作が異なるためセンサの値が発生しないということは考えにくい.
ということが考えられる.
Y方向については,離地時や着地時においては多少の振動は生じているものの,一般
的な分析法の結果と似た傾向を出すことに成功した.しかし,最下点から離地点まで
と着地後における値は,一般的な分析法の値とは一致していない.これには,
• センサによる振動
• システムの取り付け位置
などが考えられる.
17
第 5章
おわりに
5.1 研究の成果
本研究では,持ち運びが非常に楽で,一般的な表計算のソフトのみでデータの解析が
できるシステムの開発および製作に成功した.
安価で製作するという面でも,
• マイコンボード 9000円
• センサ 10000円
• SDカード 1000円
• ケース 150円
• ベルト 150円
となり,全費用が 20000円少々で製作することに成功し,非常に高価であるフォース
プレートなどより,非常に安いコストで製作できたという点は,その目標を達成する
ことができたのではないかと思う.また,製作した装置は,一般的な運動分析法の結
果と完全には一致しなかったものの,それに近い値を取得することができた.
5.2 今後の課題
今後の課題としては
• 着地時などの振動に対する対策
18 第 5 章 おわりに
• どの部位に取り付けても,一人で計測が行えるようなシステム作り(現段階では背面部に対して対応できていない)
• その他の運動動作における値の測定と比較
などが必要となってくるものと思われる.
19
付 録A
プログラム
本章では,マイコンボードに書き込んだプログラムを示す.
A.1 メイン関数
メイン関数を以下に示す.
int main(void){
coron_init(); //Coron初期化 (※機能は coron_conf.hで指定)
//LED点灯
wait_timer_msec(500); //500msec待機
LD1_ON; //LD1を点灯
wait_timer_msec(500); //500msec待機
LD1_OFF; //LD1を消灯
LD2_ON; //LD2を点灯
wait_timer_msec(500); //500msec待機
LD2_OFF; //LD2を消灯
LD3_ON; //LD3を点灯
wait_timer_msec(500); //500msec待機
LD3_OFF; //LD3を消灯
while(!SW_USER); //SW_USERが押されるまで待機
wait_timer_msec(500); //500msec待機
20 付 録 A プログラム
LD3_ON; //LD3を点灯
wait_timer_msec(5000); //5000msec待機
LD3_OFF; //LD3を消灯
wait_timer_msec(1000); //1000msec待機
TIM7_init(); //10msecタイマ割り込み初期化
USB_puts("\r\nIOA0~IOA3 A/D convert 10ms Logging Start...\r\n");//IOA0~IOA3の
A/Dconvertで得られた値を 10msごとに送信
//IOA0→ X IOA1→ Y IOA2→ Z IOA3→ Vref
coron_logtxt_start(); //TXTファイルへのログ書き込み開始
//10ms× 300回分 IOA0~IOA3の AD値のログをとるまでループ
while(tim7_int_count<300){
//ログセット確認フラグが立つのを待つ
if(tim7_adset_flag){
tim7_adset_flag=0; //フラグをリセットする
LD1_ON; //LD1を点灯
//SDカード"TextData"フォルダ内の TXTファイル (0番目)にログ文字列を書込む
SD_txt_write_s(0,((tim7_int_count+1)*32),log_buf,32);
LD1_OFF; //LD1を消灯
}
}
coron_logtxt_stop(); //TXTファイルへのログ書き込み停止
USB_puts("...Stop\r\n");
wait_timer_msec(500); //500msec待機
SD_txt_USBput(0,1); //USB CDCで"TextData"フォルダ内の TXTファイルを表示する
//(0番目の TXTファイル、ヘッダ表示有り (=1))
return 0;
}
A.2 タイマ割込み関数
ライブラリに保存されている coron_tim7intの内部を以下に示す.
A.2. タイマ割込み関数 21
TIM7 10msecタイマ割り込み初期化
//==============================================================================
void TIM7_init(void){
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM7);
/* TIM7 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);
/* Enable the TIM7 Interrupt */
NVIC_StructInit(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 10;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 10;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* TIM7 configuration */
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 10000;
TIM_TimeBaseStructure.TIM_Prescaler = (72-1);
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000;
TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);
/* Immediate load of TIM7 Precaler value */
TIM_PrescalerConfig(TIM7,72-1, TIM_PSCReloadMode_Immediate);
/* Clear TIM7 update pending flag */
TIM_ClearFlag(TIM7, TIM_FLAG_Update);
/* Enable TIM7 Update interrupt */
22 付 録 A プログラム
TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);
/* TIM7 disable counter */
TIM_Cmd(TIM7, DISABLE);
}
//==============================================================================
// TIM7 10msecタイマ割り込み
//==============================================================================
void TIM7_Intterupt(void){
TIM_ClearFlag(TIM7, TIM_FLAG_Update);//TIM7割り込みフラグクリア
//一時的に ADの結果をバッファに格納する
ADValue_buf[0]=coron_IOA_ADValue[0];
ADValue_buf[1]=coron_IOA_ADValue[1];
ADValue_buf[2]=coron_IOA_ADValue[2];
ADValue_buf[3]=coron_IOA_ADValue[3];
//結果をログ用文字列に変換する ("00000, 0000, 0000, 0000,\r\n")
log_buf[0]=(tim7_int_count/1000)+’0’;
log_buf[1]=((tim7_int_count%1000)/100)+’0’;
log_buf[2]=((tim7_int_count%100)/10)+’0’;
log_buf[3]=(tim7_int_count%10)+’0’;
log_buf[4]=’0’;
log_buf[5]=’,’;
log_buf[6]=’ ’;
log_buf[7]=(ADValue_buf[0]/1000)+’0’;
log_buf[8]=((ADValue_buf[0]%1000)/100)+’0’;
log_buf[9]=((ADValue_buf[0]%100)/10)+’0’;
log_buf[10]=(ADValue_buf[0]%10)+’0’;
log_buf[11]=’,’;
log_buf[12]=’ ’;
log_buf[13]=(ADValue_buf[1]/1000)+’0’;
log_buf[14]=((ADValue_buf[1]%1000)/100)+’0’;
log_buf[15]=((ADValue_buf[1]%100)/10)+’0’;
log_buf[16]=(ADValue_buf[1]%10)+’0’;
A.2. タイマ割込み関数 23
log_buf[17]=’,’;
log_buf[18]=’ ’;
log_buf[19]=(ADValue_buf[2]/1000)+’0’;
log_buf[20]=((ADValue_buf[2]%1000)/100)+’0’;
log_buf[21]=((ADValue_buf[2]%100)/10)+’0’;
log_buf[22]=(ADValue_buf[2]%10)+’0’;
log_buf[23]=’,’;
log_buf[24]=’ ’;
log_buf[25]=(ADValue_buf[3]/1000)+’0’;
log_buf[26]=((ADValue_buf[3]%1000)/100)+’0’;
log_buf[27]=((ADValue_buf[3]%100)/10)+’0’;
log_buf[28]=(ADValue_buf[3]%10)+’0’;
log_buf[29]=’,’;
log_buf[30]=0x0d;
log_buf[31]=0x0a;
tim7_int_count++; //割り込みカウンタを加算
tim7_adset_flag=1; //ログセット確認フラグを立てる
}
//==============================================================================
// TIM7 10msecタイマ割り込み開始
//==============================================================================
void coron_logtxt_start(void){
tim7_adset_flag=0; //ADログセットフラグをリセット
tim7_int_count=0; //TIM7の割り込み回数をリセット
AD_enable(); //AD入力許可 (開始)
TIM_Cmd(TIM7, ENABLE); //TIM7 enable counter
}
//==============================================================================
// TIM7 10msecタイマ割り込み停止
//==============================================================================
24 付 録 A プログラム
void coron_logtxt_stop(void){
AD_disable(); //AD入力禁止 (停止)
TIM_Cmd(TIM7, DISABLE); //TIM7 disable counter
25
謝辞
本研究を行うにあたり,様々な御指導をして下さった河合康典講師に心より深く感謝い
たします.
ならびに,日頃から実験協力などをしていただいた河合研究室のメンバーに感謝します.
最後に,本研究生活を暖かく見守っていただいた両親,兄弟に深く感謝します.
26 参考文献
参考文献
[1] バイオメカニクス http://www.nanzan-u.ac.jp/
GAKUSEI/kagai/ssrseto/ikegami.html
[2] 安立, 米田, “加速度センサとビデオカメラを用いた運動動作計測システムに関する研
究, ” 平成 19年度学生による研究発表会, pp. 55, 2008.
[3] 株式会社テクノロード Coronボードマニュアル pp.1
[4] Hitachi Metals, Ltd.’s Proprietary pp. 1–5
[5] 株式会社テクノロード Coronソフトウェアライブラリ pp.1–2,pp.8