« Arduino UNO R4 minima 電源供給方法でクロックが変わる#3 | トップページ | 発掘:Z80 CPU・・・いりませんか? »

2025年5月16日 (金)

Arduino UNO R3で周波数を計る

UNO R3での周波数計測回路、過去、あれこれ作ってきました。
その応用で、トランジスタ技術2025年6月号
VCO回路V-f特性の自動スイープ測定器」というタイトルで、
VCOの制御電圧を変えながら出てくる周波数を計るという
回路を載せてもらいました。

これの発端が、
2019年12月20日:Arduino UNOで周波数カウンタ
2021年5月1日:Arduino UNOで周波数カウンタ:アナデバの電力計用ICのために

今回のトラ技記事でも、タイマー1(16bit)のインプットキャプチャ
機能で周波数カウント用のゲートを作っています。
しかし、そのキャプチャ周期を1msとして、前回値との差分で
出したカウント値を積み重ねて、周波数としています。
 10ms(100Hz)ゲートなら1msを10回。
 0.5秒(2Hz)ゲートなら1msを500回。
ゲート時間の基本単位が1msで、好きな周期で周波数が
得られます。
  ※低周波なら周期計測のほうが良いのですが
   それはまた別問題。
アナデバの電力計では、ハードウェアで1秒のゲートパルス
を作りましたが、今回のは1ms=1kHzというATmega328Pでも
出しやすい周波数です。
   タイマー1個で作れる
無符号で加算すれば、タイマーカウンタのオーバーフローを
無視して積算することができます。
こんな具合です。
Aa11_20250516091701
これで、1ms=1kHzのゲート時間を作っておけば、その整数倍で
いくらでも好きなカウント時間に拡張できます。

インプットキャプチャで得られた総パルスから周波数を
求められるので、0.1秒(10Hz)周期で得たカウント値を
  この場合は10Hzが最小桁
10回の移動平均しながら処理すれば、1秒ゲートと同じ
最小桁1Hzの周波数が0.1秒ごとにえられます。
周波数の変化を見るとき、1秒待たなくても0.1秒ごとに
動きが分かります。
  電力計では1秒のを10回移動平均して、
  0.1Hzを読んでます。

|

« Arduino UNO R4 minima 電源供給方法でクロックが変わる#3 | トップページ | 発掘:Z80 CPU・・・いりませんか? »

Arduino」カテゴリの記事

トランジスタ技術」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« Arduino UNO R4 minima 電源供給方法でクロックが変わる#3 | トップページ | 発掘:Z80 CPU・・・いりませんか? »