マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。50回目は、中級者の方からよく質問される「マイコンで信号の周波数をppmレベルで測定する裏ワザ」についてです。
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。
今回は、中級者から多く寄せられる質問です。
マイコンの周辺機能を使って、外部から入力される交流信号の周波数(例えば、商用電源の周波数50Hz)を測定できませんか? もしできる場合は、どのくらいの精度で測れますか? また、マイコンに内蔵された発振回路の周波数も測れますか?
マイコンに搭載されているインプットキャプチャ機能は、外部から入力された信号の立ち上がりまたは立ち下がりをトリガーにして、カウンターの値を取り込むことができます。図1に示すように、カウンターをマイコンの内部クロック(既知の周波数)でカウントさせつつ、外部信号の2つの連続する立ち上がりの時のカウンターの値を取り込み、引き算をすることで外部信号の周期を測定できます。また、周期の逆数を計算すれば周波数が得られます。
外部から入力されるクロックの周波数に対し、カウンターの周波数が高ければ高いほど、測定精度は上がります。例えば、最大動作周波数480MHzの32ビットマイコン「STM32H7シリーズ(STマイクロエレクトロニクス製/以下、H7*1)を使って商用電源の50Hzを測定した場合は理論上(カウンターのカウント周波数誤差を含まなければ)、0.35714 ppmの誤差率(精度)で測定できます。
また、逆に外部信号として周波数精度の高いクロックを入れれば、マイコンの内部発振回路の周波数の誤差を測定できます。周波数の補正機能が付いているマイコンであれば、そのまま補正することも可能です。
*1)参考リンク:「STM32H7シリーズ」の概要(STマイクロエレクトロニクスサイト)
Copyright © ITmedia, Inc. All Rights Reserved.