MCUタイマー / プリスケーラ計算ツール
この無料MCUタイマー&プリスケーラ計算ツールは、システムクロック、プリスケーラ、ARR値からタイマー周波数・周期・オーバーフロー時間を計算します。目標周波数に最適なプリスケーラ/ARR/CCRの組み合わせを求める逆算PWMソルバー、インタラクティブなSVG波形図、STM32・ESP32・Arduino・nRF52・PIC・RP2040 MCUのプリセットを搭載しています。
MCUのメインクロック周波数(プリスケーラ前)
クロック分周値(STM32では実際の分周 = PSC + 1)
タイマーは0からARRまでカウントし、リロードします(周期 = ARR + 1)
タイマー周波数
1.000 kHz
タイマー周期
1.000 ms
オーバーフロー時間
1.000 ms
タイマークロック(プリスケーラ後)
1.000 MHz
オーバーフローあたりカウント数
1,000
最大タイマー周期
59.6523 s
ご提案はありますか?
新しいツールのリクエストや改善提案をお待ちしています — Slackコミュニティにご参加ください!
MCUタイマー / プリスケーラ計算ツールとは?
MCUタイマー / プリスケーラ計算ツールは、組み込みシステムエンジニアがマイクロコントローラのハードウェアタイマーを設定する際に役立つツールです。ハードウェアタイマーは、精密な時間遅延の生成、パルス幅の測定、モーター制御やLED調光のためのPWM(パルス幅変調)信号の生成、周期的な割り込みのトリガーに使用される基本的なペリフェラルです。 タイマー周波数はシステムクロックをプリスケーラとオートリロードレジスタ(ARR)で除算して決まります。これらの値はMCUファミリーによって異なる特定の範囲内の整数でなければならないため、目標周波数を達成するための適切な組み合わせを見つけるには注意深い計算が必要です。特にプリスケーラオプションが固定値(Arduino/AVRの場合)や2のべき乗(nRF52の場合)に制限されている場合はなおさらです。
MCUタイマー計算ツールの使い方
- プリセットタブからMCUを選択するか、システムクロックとタイマービット幅を手動で入力
- タイマー計算タブでプリスケーラとARR値を入力し、結果の周波数・周期・オーバーフロー時間を確認
- PWM計算タブで目標周波数とデューティサイクルを入力
- 「最適設定を検索」をクリックして、最小誤差のプリスケーラ/ARR/CCRの組み合わせを取得
- 周波数精度と分解能のトレードオフを考慮した代替設定を確認
- インタラクティブなPWM波形図で実際のタイミングを確認
- MCUプリセット値をタイマー計算またはPWM計算タブに直接適用
よくある質問
実際のPWM周波数が目標値と異なるのはなぜですか?
タイマーレジスタ(プリスケーラとARR)は整数値しか保持できないため、実際の周波数は目標値に最も近い近似値になります。例えば、72 MHzクロックで正確に50 kHzが必要な場合、理想的なARRは1439(72M / 50k - 1)となり、ちょうど50 kHzが得られます。しかし33 kHzの場合、理想的なARRは約2181.18となり、2181に丸めると33.003 kHz(0.01%の誤差)になります。この計算ツールは実際に達成可能な周波数と誤差率を表示します。
PSC+1と直接プリスケーラ値の違いは何ですか?
STM32などのARMベースMCUでは、PSC+1が実際の分周係数です(PSC=0は1分周、PSC=1は2分周を意味します)。Arduino/AVR MCUでは1、8、64、256、1024のような固定プリスケーラ値を使用し、この中から直接選択します。nRF52は2のべき乗のプリスケーラ(1、2、4、8、...、512)を使用します。この計算ツールはすべての規格に対応し、選択したMCUのレジスタ設定値を表示します。
サーボモーター用に50 HzのPWM信号を生成するにはどうすればよいですか?
サーボモーターには50 Hz(20 ms周期)のPWM信号が必要です。72 MHzのSTM32F103の場合:プリスケーラを71(72分周で1 MHzタイマークロック)に設定し、ARRを19999(20000カウント = 20 ms)に設定します。一般的なサーボ範囲の1〜2 msパルス幅には、CCRを1000〜2000に設定します。16 MHzのArduinoの場合:16ビットタイマーでプリスケーラ64、ARR=4999を使用すると、ちょうど50 Hzが得られます。
非常に遅いタイマー(秒・分単位)が必要な場合はどうすればよいですか?
長い周期には、プリスケーラとARRの両方を最大化します。16ビットタイマーは65535までカウントでき、最大プリスケーラと組み合わせることで数秒の周期を実現できます。72 MHzのSTM32でPSC=65535、ARR=65535の場合:周期 = 65536 × 65536 / 72M ≈ 59.6秒です。より長い周期には、40億までカウントできる32ビットタイマー(STM32F4/H7)を使用するか、複数のタイマーをカスケード接続します。