TIM¶
TIMとは¶
TIM(Timer)はマイコンに搭載されている「時間を測る・作るための周辺機能」である。
簡単に言うと
時間を正確にカウントする専用回路
である。
STM32などでは超重要な機能で、以下に使われる。
- PWM生成
- 周期処理
- 割り込み制御
- パルス計測(エンコーダなど)
- 時間測定
TIMの基本動作¶
TIMは内部クロックを使ってカウントを進める。
クロック
↓
カウンタ +1
↓
一定値でリセット
例
0 → 1 → 2 → 3 → ... → 999 → 0
基本構成¶
TIMは主に以下で構成される。
- カウンタ(CNT)
- プリスケーラ(PSC)
- オートリロードレジスタ(ARR)
プリスケーラ(PSC)¶
クロックを分周する機能。
例
システムクロック = 72MHz
PSC = 7199
の場合
72MHz / 7200 = 10kHz
になる。
つまり
カウント速度を遅くする機能
である。
オートリロード(ARR)¶
カウンタの最大値を決める。
例
ARR = 9999
なら
0 → 9999 → リセット
で周期が決まる。
TIMの周期計算¶
周期は以下で決まる。
周期 = (PSC + 1) × (ARR + 1) / クロック
例
クロック = 72MHz
PSC = 7199
ARR = 9999
計算
72MHz / 7200 = 10kHz
10kHz / 10000 = 1Hz
つまり
1秒周期
になる。
TIMのモード¶
TIMには複数の動作モードがある。
① アップカウントモード¶
0 → 1 → 2 → 3 → ...
一般的な使い方。
② ダウンカウントモード¶
9999 → 9998 → ...
③ センターアラインモード¶
0 → 9999 → 0
PWM制御でよく使われる。
PWMとの関係¶
TIMの最も重要な用途の一つがPWM生成である。
PWMとは
ONとOFFを高速に繰り返す信号
例
ON ON OFF ON OFF OFF ...
TIMで以下を制御する
- 周波数
- デューティ比
PWM例¶
ARR = 999
CCR = 500
デューティ比
50%
出力
ON 50%
OFF 50%
割り込みとの関係¶
TIMは一定周期で割り込みを発生できる。
例
1msごとに割り込み
用途
- 制御ループ
- センサ読み取り
- タイマー処理
エンコーダ計測¶
TIMは回転センサの読み取りにも使える。
例
モータ回転
↓
パルス入力
↓
TIMカウント
これで
回転数
速度
位置
が計算できる。
入力キャプチャ¶
TIMは外部信号の時間測定もできる。
例
パルス幅測定
用途
- 超音波センサ
- 周波数測定
出力コンペア¶
特定のタイミングで出力を変える機能。
例
指定カウントでLED点灯
STM32でのTIM構成¶
CubeMXでは以下のように設定する。
TIM1
TIM2
TIM3
など。
それぞれ用途が違う。
例
| TIM | 用途 |
|---|---|
| TIM1 | 高機能PWM |
| TIM2 | 汎用タイマ |
| TIM3 | PWM / 割り込み |
TIMとクロック¶
TIMはシステムクロックに依存する。
例
APB1 / APB2クロック
クロック設定を間違えると
PWM周波数ズレ
時間ズレ
が起きる。
よくあるトラブル¶
周波数が合わない¶
クロック設定ミス。
PWMが出ない¶
GPIO設定ミス(AF設定忘れ)。
割り込みが来ない¶
NVIC設定忘れ。
デューティ比がおかしい¶
CCR設定ミス。
Asterでの利用例¶
TIMはAsterでもかなり重要。
モータ制御¶
PWM生成
↓
DRV8871
制御ループ¶
1ms周期
↓
PID制御
センサ読み取り¶
エンコーダ
↓
回転速度計算
TIMの重要性¶
TIMは単なるタイマーではなく
制御システムの心臓部
である。
PWM・PID・エンコーダ・通信周期など
ほぼすべての制御系に関わる。
まとめ¶
TIMはマイコンの時間制御機能である。
- カウント機能を持つ
- PWM生成ができる
- 割り込みを発生できる
- エンコーダ計測に使える
- 制御周期の基礎になる
組み込み開発ではGPIOの次に重要と言ってもいいレベルのコア機能である。