Arduino UNOで周波数カウンタ:アナデバの電力計用ICのために
2021年1月15日:アナデバの電力計用IC、arduinoで周波数(周期)を計る
この続きです。
2019年12月20日:Arduino UNOで周波数カウンタ
これ↑ではゲート(タイマー1のインプットキャプチャ)の周波数を
「1kHz」としていました。
今回はそれを「1Hz」、つまり「1秒ゲート」にして周波数を計ります。
↑の1月15日の実験では、周波数を計るために(有効電力値が
周波数で出てくる)パルス間の周期を計って周波数を求めてい
ました。
ICの仕様では最高周波数が2.8kHzあたり。
これが最大電力となるように、電流検出抵抗の値や
電圧測定の分圧回路を選びます。
1Hzまで計ったとしておよそ11bitの分解能。
前のように周期を計る方が良いか、それとも、ゲート時間を1秒
くらいにして周波数を計る方が良いか・・・
そんな実験のために「1秒ゲート」をこしらえてみました。
ATmega328Pには3つのタイマーがあって、タイマー1が16bit。
タイマー0とタイマー2が8bit。
そして、タイマー0がArduinoのシステムで使われていて、
1.024ms周期で割り込みを発生させています。
さらに・・・タイマー0には外部クロック端子がありますが、
タイマー2にはありません。
タイマー2は内部クロックしかカウントできないのです。
「1秒ゲート」を作るためには、こんな回路接続になります。
・タイマー2で500Hz方形波を作り、それをタイマー0のクロック
入力端子T0に接続。
・タイマー0はそれを1/250して2Hzを得、OC0Aをトグル出力
(つまり1/2)して1Hzを作ります。
・これをICP1端子に入れて、エッジでキャプチャします。
・T1端子に周波数測定するパルスを入れます。
システムで使っているタイマー0を横取りしているので、
スケッチではmillis()やmicros()、delay()は使えません。
PWM出力もできません。
※参考
2020年1月28日:Arduinoから「タイマー0」を取り上げる(ユーザーが使う)
タイマー2で1ms割り込みを発生させているので、必要な計時処理は
この中に実装しします。
動作確認のためのスケッチを示しておきます。
・ダウンロード - pwrmon2.txt
(ファイルタイプを.inoに変えてくださいな)
液晶に表示するだけでなくシリアルにも出力していますので
簡単に確認できるかと。
皆さんがよく参考にしている
・Arduino Frequency Counter Library
これの場合、ソフトウェアでゲート時間を作っているので、
計測処理中に割り込み処理が入ると、カウントが狂って
しまいます。
※システムで使っているタイマー0割り込みは
止めていますが、計測中のシリアル通信はちょい危険。
送受とも割り込み処理されるんで。
※ゲート終了間際に割り込みが入ると、ゲート時間が
延ばされるので、補正しているカウント値が狂います。
ですので、割り込み処理は止めて、ゲートの終了をひたすら
待ち続けるというふうにしておかなくてはなりません。
つまり、ゲートを動かしている間は何もしない・・・できない・・・
今回のサンプルは、ICP1に入る1Hzパルスのエッジが
ハードウェア的なゲート信号になるので、ソフト的な
遅れの補正は不要です。
カウントが始まれば、勝手に周波数データが上がってき
ます。
新たなキャプチャ完了フラグをチェックしてから(1秒ごと)
・いったん割り込み禁止にして
・ロングワードの周波数データを読む
・割り込み有効に戻す
これで、その時々の新しい周波数データを読み出せます。
なお、Arduino-UNOのクロック周波数(16MHz)でT1クロック入力を
刻んでいるようなので、計測できる最高周波数は実測7.5MHzあたり
で頭打ちになります。
1秒ごとのカウント値として7500000が出てきます。
試作実験中の回路。
※追加実験
・2021年5月4日:Arduino周波数カウンタ:FreqCounter Libraryを使った時のカウント異常を再現
| 固定リンク
「電子工作」カテゴリの記事
- TRWの16pin DIP IC「8543」 これは何?(2023.10.06)
- 予告:「マイコン型導通チェッカー」「電池電圧チェッカー」値上げします(2022.11.16)
- 三和の針式テスター「GP-5」不調(2022.10.18)
- 「ダイソー ミニケース 5個組」が見つからない #2(2022.10.12)
- 「ダイソー ミニケース 5個組」が見つからない(2022.09.29)
「ツール」カテゴリの記事
- 「アラルダイト」が無い!(2023.12.05)
- HAKKOダッシュがやってきた:細いコテ先も来たけれど(2023.11.13)
- HAKKOダッシュがやってきた:コテ先の様子(2023.11.08)
- 新ハンダゴテ、HAKKOダッシュがやってきた(2023.11.07)
- 愛用のハンダゴテ・・・コテ先が取れないゾ!(2023.10.27)
「Arduino」カテゴリの記事
- Arduinoで「ボコスカハンマー」 あれれれれっ?!(2023.12.07)
- Arduino UNO R3で±19.9V表示電圧計(2023.10.14)
- 「御詠歌プレーヤー」の製作 (MP3-TF-16Pモジュールの使用例)(2023.08.10)
- Arduino UNO R3のソケット・・思えば違和感がぁ(2023.07.07)
- 初めて買ったArduino UNO・・・今は(2023.05.25)
「電力計測」カテゴリの記事
- FDKの長寿命電池「HR-AAULT」がやってきた(2022.09.24)
- コードレス電話の充電池がアウト #2(2022.08.28)
- オリンパス OM-D E-M1mk2用充電器の挙動(2021.05.25)
- お手軽電力計でeneloop単3の充電を見る(2021.05.22)
- いがいと大きなトランスの無負荷電力(2021.05.18)
コメント