電力計測

2022年9月24日 (土)

FDKの長寿命電池「HR-AAULT」がやってきた

2022年6月8日:FDK製「高耐久ニッケル水素電池」登場か!?
でFDKの「HR-AAULT」という長寿命ニッケル水素電池を
知りました。

あれこれ入手先を聞いてみたのですが、どれもアウト。
工業向け、量産向けの電池で、一般には販売しないと・・・

しかし・・・(FDKさんに直接お願いして)
  サンプルを3個いただきました。
    ※過去のトラ技投稿記事などの実験
     実績をお示しして。

やってきたのは単3形状をいくつか直列にして使う
組み電池用のもの。
B11_20220924084501
プラス極の形状が一般電池とは異なり、飛び出て
いません。
全体長が少し短くて、市販の急速充電器にはセットで
きないのです。

製作してあるJIS C8708:2019実験用充放電回路
はBULGIN社の電池ホルダーを使っているので、
電極をちょっと曲げれば安定した接触が得られます。
ですんで、さっそく充放電実験を開始。
B21_20220924130501
初回放電から4回目の充電、こんなグラフになりました。
Cap020
組電池を作る用途だからなんでしょう、
ほぼカラっけつでした。

長期保管したときの残量も気になるので、残り2本も
なんとか満充電しておきたいところです。
そこで・・・市販の急速充電器のプラス電極を内側に
ちょっとだけ折り曲げられるように「改造」してみました。

まずはサンヨーの「MC-MR58」。
B12_20220924084501
樹脂ケースを削って、電極が内側に入るようにします。
B13_20220924084601

充電の様子です。
とはいっても、外から観察できるのは充電池の電源
AC100Vの消費電力。
お手軽電力計を使って充電の様子を記録してみました。
Cap026
50分ほどで充電が終わりました。
   (あまり面白くないグラフです)

もう一つの充電器はパナの「BQ-CC21」。
これは電池電圧をモニターできるように改造して
あります。
B14_20220924084701
B15_20220924084701
B16
B17

これで、充電器の消費電力、電池電圧、電池側面温度
の変化を記録してみました。
こんなつなぎです。
B18
結果。
Cap024_20220924084901
1時間弱で充電が終了。
充電末期の電池電圧の上昇が見えています。
電池側面の温度は10℃ほど上がっただけ。

この充放電実験は長丁場になりそうです。

※「BQ-CC21」関連の過去記事
2021年5月22日:お手軽電力計でeneloop単3の充電を見る
2019年8月9日:東芝インパルス TNH-3A 内部抵抗増大中
2014年02月14日:ひょっとしてこのカバーのせいで?
2014年02月19日:ひょっとしてこのカバーのせいで?#2


※「FDK HR-AAULT」を検索していたら・・・
http://aacycler.com/battery/aa/fdk-hr-aault/
  この電池でしょう。 海外では手に入る?
  実験機材
    http://aacycler.com/about/how/

| | コメント (2)

2022年8月28日 (日)

コードレス電話の充電池がアウト #2

コードレス電話の充電池がアウトの続き。
まず、アウトになった「ROWA」の充電池、ゾンビ復活
させたんですが、その充電の様子をお手軽電力計 で記録
してみました。

計ったのは電池電圧、充電器からの電流(電池電流じゃない)、
充電器の電力。
Cap067
2時間半ほどの記録です。
ず~と、70mAほどの電流が流れてます。
これが全部電池に行ってるのかどうかは、調べてません。

そして、新たにやってきたのが「ELPA」の電池。
Cd1_20220828105701

昨日セットして帰宅。 日曜日朝に(さっき)データを回収。
まず、こんなグラフ。
Cap064_20220828105801
20時間ほど。
青線の電流値、平均化処理しています。
というのは5時間過ぎに、電流がパルス状になったのです。
Cap065
そのため、電流グラフが0mA~80mAを上下してしまい、
電力変化が埋もれてしまったのです。
そこで、電流値だけを平均化。

さらに拡大。
Cap066
これを見ると、
  ・1分サイクルで
  ・10秒間充電。
つまり、平均すると電流は80mAの1/6。
13mAほど。
電池の定格容量が600mAhですので、1/46。

スタンバイしている電話機の回路にも電流が行く
はずなので、これからそれを調べてみます。


お手軽電力計からのデータ。
~~~~~~~~~~~~~~~~~~~~~~
18525 0.71W 2.20V 0.38V 3.42Wh
18526 0.71W 2.20V 0.38V 3.42Wh
18527 0.71W 2.20V 0.38V 3.42Wh
18528 0.71W 2.20V 0.38V 3.42Wh
18529 0.71W 2.20V 0.38V 3.42Wh
18530 0.71W 2.20V 0.38V 3.42Wh
18531 0.71W 2.20V 0.38V 3.42Wh
18532 0.71W 2.20V 0.38V 3.43Wh
18533 0.71W 2.20V 0.38V 3.43Wh
18534 0.71W 2.20V 0.38V 3.43Wh
18535 0.70W 2.19V 0.00V 3.43Wh
18536 0.69W 2.19V 0.00V 3.43Wh
18537 0.67W 2.19V 0.00V 3.43Wh
18538 0.65W 2.19V 0.00V 3.43Wh
18539 0.63W 2.19V 0.00V 3.43Wh
~~~~~~~~~~~~~~~~~~~~~~
左から連番、電力、電圧1、電圧2、積算電力量

gnuploto
~~~~~~~~~~~~~~~~~~~~~~
#gnuplt 5.2で
set term wxt 0
set grid
set colorsequence classic
set title "ELPA電池"
set y2tics
set xrange [5.14:5.2]
set yrange [0:5]
set y2range [0:100]
set xlabel "経過時間(時間)"
set ylabel "電池電圧(V),消費電力(W)"
set y2label "電流(mA)"
set xtics 0.01
set ytics 0.5
set y2tics 10
set ytics format "%4.1f"
set y2tics format "%3.0f"
set key left center
plot "elpa1.txt" using ($1/3600):($3*1.98) with lines lw 2 ti "電池電圧(V)",\
    "elpa1.txt" using ($1/3600):2 with lines lw 2 ti "消費電力(W)",\
    "elpa1.txt" using ($1/3600):($4*200) with lines lw 2 ti "電流(mA)" axes x1y2
~~~~~~~~~~~~~~~~~~~~~~

plotの1行目「($3*1.98) 」の1.98は入力を抵抗分圧した時にの乗数。
実値と表示値で値を計算。 電圧に換算。
元の回路の入力最大値が4.096Vなので。

3行目の「($4*200) 」の200はINA199電流センサーのシャント抵抗と
ICのゲインで決まる値。 mAに換算。

| | コメント (0)

2021年5月25日 (火)

オリンパス OM-D E-M1mk2用充電器の挙動

お手軽電力計 を使って、あれこれと「充電の進み具合」を調べています。
先日のお手軽電力計でeneloop単3の充電を見る も、充電完了までの
電力量を調べておけば、充電不良、充電失敗を発見できるのではないかと。

オリンパスのミラーレス一眼カメラ用充電器の挙動を記録
するのに、これが役に立ちました。
2020年8月10日:オリンパス OM-D E-M1mk2の充電器の充電表示ランプを判別その2

OM-D EM-1mk2用の充電器「BCH-1」。
この充電表示ランプ、充電の進行とともに点滅周期が変わるんです。
この周期(周波数)を電圧に変換して状態を見ようというのがこの↑回路。

これと一緒に電力を記録するとこんなグラフが得られました。
Cap009
カメラのバッテリー残量表示「20%」まで消費した電池を装着。
そこからの充電進行が、電力と電池の外装温度、そして
充電器表示の変化が記録できました。
この4時間の電力量は約15Whでした。

測定の様子。
Cc65

フォトセンサー部の回路。
C51
充電の進行を示すLED表示はこんなタイミング。
C52
周波数が上がれば電圧を上げるという「FVコンバータ」です。

充電器の様子。
Cc61

センサー回路。
Cc62

充電器にくっつけられるよう、2枚構造の基板。
Cc63
Cc64

※電力量の変化をグラフに追加
Cap010
充電器のLED表示では100%=充電完了になっていても、
まだもうちょい充電が続けられている様子が見えます。
  消費電力=充電エネルギーではありませんが。

| | コメント (0)

2021年5月22日 (土)

お手軽電力計でeneloop単3の充電を見る

eneloop単3(BK-3MCC 1900mAh)を充電している様子を
お手軽電力計を使って記録してみました。
充電器は「BQ-CC21」。
電池電圧を観察できるようコネクタを付けてあります。
  (充電器にセットした左端の電池)

P31
それぞれの電池を1.0Vま放電して(すっからかんに)から
充電を開始。

10秒ごとにこんなデータが出てきます。
ピークを迎えて主充電を終えたあたりの様子です。
左から
 ・10秒ごとの連番  12500秒:3時間28分あたり
 ・計測した有効電力
 ・電池電圧 BQ-CC21に取り付けたコネクタから引き出し
 ・電池温度 電池側面にサーミスタを貼り付け
       1Vで20℃ 2Vで40℃
 ・電力量 電力値を累積

  :
 1245  5.94W 1.48V 2.03V 19.58Wh
 1246  5.95W 1.47V 2.03V 19.59Wh
 1247  5.95W 1.50V 2.03V 19.61Wh
 1248  5.95W 1.49V 2.03V 19.63Wh
 1249  5.95W 1.50V 2.03V 19.64Wh
 1250  5.01W 1.50V 2.03V 19.66Wh
 1251  4.44W 1.50V 2.03V 19.67Wh
 1252  4.49W 1.50V 2.03V 19.68Wh
 1253  4.51W 1.50V 2.05V 19.70Wh
 1254  4.45W 1.49V 2.04V 19.71Wh
  :

こんなグラフが得られました。

Cap006_20210522095201

電圧と温度、注目しているのは左端の電池だけ。
他の3本の状態は不明ですが、電力の変化を見ると
良く揃っているようです。
電池電圧のピークを検出。
-ΔVで主充電を止めて2時間ほど補充電に。

4本を充電する電力量が「約23Wh」。
電気代、1kWhが30円としたらざっと0.7円
充電を終えた後(補充電後)は「0.12W」で待機していました。

※BQ-CC21での充電の様子
http://act-ele.c.ooco.jp/blogroot/igarage/article/4406.html
http://act-ele.c.ooco.jp/blogroot/igarage/article/3667.html

※gnuplotでの描画

set title "eneloop単3 BK-3MCC 4本充電 充電器:BQ-CC21"
set y2tics
set xrange [0:9]
set yrange [0:10]
set y2range [0:50]
set xlabel "経過時間(時間)"
set ylabel "消費電力(W)"
set y2label "電池1外装温度(℃)"
set grid
set xtics 1
set ytics 1
set y2tics 10
set ytics format "%3.0fW"
set y2tics format "%3.0f℃"
set key left bottom
set label "電圧1.3V" at 7,4.25
set label "電圧1.4V" at 7,6.25
set label "電圧1.5V" at 7,8.25
plot 4 axes x1y1 lc rgb "cyan" ti "",\
6 axes x1y1 lc rgb "cyan" ti "",\
8 axes x1y1 lc rgb "cyan" ti "",\
"en1.txt" using ($1/360):(($3-1.1)*20) with lines lw 2 lc rgb "cyan" ti "電池1電圧(V)",\
"en1.txt" using ($1/360):2 with lines lw 2 lc rgb "red" ti "消費電力(W)" ,\
"en1.txt" using ($1/360):($4*20) with lines lw 2 lc rgb "green" ti "電池1温度(℃)" axes x1y2,\

 

| | コメント (1)

2021年5月18日 (火)

いがいと大きなトランスの無負荷電力

組み立てたお手軽電力計、これで「トランスの無負荷電力」を計ってみました。
無負荷でも有効電力として値が出てきたら、電気料金につながります。

まず基準に「定格100V・23Wの白熱電球」。
位相差なしのきれいな波形。
T20
お手軽電力計での値が20.27W。
これが有効電力=消費電力=電気代
そのときテスターで読んだ電流値(RMS)が203mA。
これに電圧を乗じると皮相電力
電線を行き来している電流値ですが、電気代とはちょっと違う。

大きいのから。
200VAの100V-100V絶縁トランス
T31
この波形。
T21_20210518105701
電力6.88Wに電流144mA。

次が500VA定格のスライダック
T32
トランスとはちょっと違った波形が出てきました。
T22
電力8.23Wに電流106mA。

電話機用のACアダプタ
9V 200mAという仕様。
T33
電流波形、なんとなく歪んでいます。
整流・平滑回路のせいなのか?
T23
電力0.79Wで電流15mA。

少し大きなACアダプタ。 9V900mAという定格。
T34
  元々外マイナスのプラグだったんですが、
  とある機器専用に外プラスに付け替えてます。
T24
電力0.94Wで電流36mA。

小さなACアダプタですが、無負荷でもいがいと大食い。
ちょいともったいないような・・・

| | コメント (2)

2021年5月17日 (月)

お手軽電力計 回路見直し

製作、試行錯誤中の電力計こんな回路に落ち着きました。
Pw3

・ACアダプタやLED電球(小電力機器)の有効電力を計る。
・周波数を計れば有効電力がわかる。
・CT(カレントトランス)、VT(電圧入力トランス)不要。
・Arduino-UNOベースでソフト作成。
・8文字×2行の液晶表示。
・設定スイッチが3つ。
  パラメータは内蔵EEPROMに保存。
・電力値などの測定データをシリアル出力。
・0~4Vのアナログ入力が2つ
  測定した電圧値をシリアル出力に
  加える。温度計などのデータ取り込み用。
・0~4Vのアナログ出力が1つ
  測定した電力値をアナログ出力。

※D/A出力,A/D入力なくても動く。
 シリアルはArduino IDEのシリアルモニターでok。
 液晶やスイッチは操作用に欲しい。

シリアル出力の例
0 0.00W 0.00V 0.00V 0.00Wh 0.00W 0.00W
1 16.69W 0.00V 0.00V 0.02Wh 0.00W 16.69W
2 20.67W 0.00V 0.00V 0.08Wh 18.76W 20.67W
3 20.68W 0.00V 0.00V 0.14Wh 20.67W 20.69W
4 20.66W 0.00V 0.00V 0.19Wh 20.66W 20.68W
5 20.68W 0.00V 0.00V 0.25Wh 20.66W 20.68W
6 20.69W 0.00V 0.00V 0.31Wh 20.67W 20.69W
7 20.68W 0.00V 0.00V 0.37Wh 20.68W 20.69W
8 20.69W 0.00V 0.00V 0.42Wh 20.68W 20.69W

左から6桁の連番、測定電力値。
ch0とch1のA/D値(10bitをVrefでスケーリング)。
積算電力量。
データ送出サイクル間(1秒、5秒、10秒、30秒、1分、10分)での
電力値の最小と最大。

※パラメータ設定
# Pwr Moni 2021-05-16 タイトル
# 1 PWR-Lo 4.96 W   2点cal Lo側電力値
# 2 FRQ-Lo 145 Hz    Lo側周波数
# 3 PWR-Hi 56.24 W   Hi側電力値
# 4 FRQ-Hi 1647 Hz    Hi側周波数
# 5 DA4.0V 40.00 W   D/A4V出力する電力値
# 6 Vref 4.092 V     基準電圧値
# 7 TxCyc 1 sec     データ送出サイクル
# 8 Avrg 10 ticks    周波数測定移動平均回数
# 9 TxStyl No.+D+m  送信データのスタイル
             連番の有無、min,maxの有無

※ソースファイル(ファイルタイプをtxtにしてます)
   ・ダウンロード - pwrmon3.txt

 

| | コメント (0)

2021年5月14日 (金)

お手軽電力計 試運転・・・ちょっと失敗と改良点

アナデバの電力計用IC AD71056を使った有効電力測定回路、
この試運転に、リコーのデジカメGX100用バッテリー充電の
様子を記録してみました。

Gx100a
30分ほどフル充電。
その後40分ほど徐々に充電電流を減らしながら
フル充電に持ってきている様子が消費電力から
想像できます。

左側が充電器にセットしたGX100の電池DB-65。
G11_20210514101601

充電器の定格
G12

すると、あれこれ反省点が・・・

・現在は1秒に1行のデータ出力頻度。
 数時間記録するもの(ゆっくり変化するもの)だと
 データ量が多すぎる。
 一晩放置だと4万行にも。
 出力間隔を10秒や1分に切り替えできるようパラメータ
 設定を増やすべきだろな。
   ※1秒ゲートの周波数測定。
    それを10秒間積算して平均値を0.1Hz単位で
    出している。
    そこから電力値を計算。

・チャートレコーダーで記録することもあるかと
 電力値を電圧で出力するD/A出力を設けた。
 これはこれで役立つと思うが・・・
 さらに、A/D入力も欲しくなった
 例えば、
   温度や照度の変化を電力と同時に取り込む。
   充電中の電池の温度変化もいっしょに記録で
   きるかと。

・測定物をつなぐ出力に注意!
 今回、充電器をつなぐのに「スイッチの付いた延長コード」
 を使った。
 しかし・・・こいつにon/off表示のネオンランプが
 付いていた。
 充電電力の測定にはこのネオンランプ点灯の電力も加味さ
 れてしまってた。
 これが「0.06W」・・・失敗
    ↓
G13

A/D入力を増やすには・・・
現回路、ATmega328Pのポートは一つしか余っていない。
  ※PB5(LED出力)ポートで、これは割り込みや
   処理時間チェックのためのパルス出力用に
   置いておきたい。
A/D入力ポート(PC0~PC5)は液晶表示に使った。
これのデータ線(D4~D7接続)は、D/A制御の2本
「SCK、SDI」と共用できるか。
ということは内蔵A/Dが2ch使える。
なんとかなるか!

※積算した電力量もいるかな・・・
 もともとが積算電力計用のICだ!

 

| | コメント (2)

2021年5月13日 (木)

アナデバの電力計用IC試運転回路の電力を測ってみる

コンデンサドロップ方式の電源回路、ラジオペンチさんが
 ・peacefairのAC電力測定アダプタ PZEM-004T v3(回路調査編)
で調べておられます。
  AC100V/50Hzを加えたとき、実効値で15mAの電流。
  電力にすると1.5VA。
   (カレントトランスを使っての測定)
目的は3.3Vの電源電圧供給。
必要なのはおそらく20mWほど。(出力5mAほどとしたら)
それに1500mVAの電力です。

ところが・・・
電気代の元となる実際の電力(有効電力)はゼロの表示。
コンデンサを出たり入ったりするだけでチカラを出さない
電力がほとんどで皮相電力が1.5VAという話になるのです。

これ、どんなものかこちらで作った電力測定回路でも
試してみました。
この回路を試します。
  ・2021年1月8日:アナデバの電力計用IC、試運転
Pwr_mtr1a
     ↑ この部分の挙動

AC電流を実効値測定できるテスターをつなぎ、
2021年5月11日:アナデバの電力計用IC、ケースに入れAtmega328Pで読む
これで有効電力を測ってみました。
A11_20210513151101

60Hzで電流が約18mA。 (その時の電源電圧が97.3V)
これで計算できる皮相電力1.75VA
この時に液晶表示された有効電力0.28W
  ※Hz値はアナデバのICが出すパルスの周波数
   これをArduinoで電力値に換算。
電流に換算すると2.8mA。

ついでだから電源電流と供給電圧の関係をオシロで見てみます。
電流はカレントトランスでピックアップ。
電圧は普通のトランスを電源ラインにつないで。
こんな具合。
A12_20210513151101

電源電圧の正弦波ピークから外れたところ、ゼロクロス付近
(90度位相差)で電流が流れています。
  ※瞬時電力の変化を想像できますでしょうか?

コンデンサドロップ方式の電源、過去、あれこれ使ってきま
したが、
  ・有効電力はどうなんだ?
  ・電流波形はどうなっている?
この二つをちゃんと見たのは初めてかと。

  ※有効電力を測定してくれるお手軽機材、
   今回の製作でできあがったわけで。


| | コメント (0)

2021年5月11日 (火)

アナデバの電力計用IC、ケースに入れAtmega328Pで読む

2020年8月26日:アナデバの電力計用IC
2021年1月8日:アナデバの電力計用IC、試運転
2021年1月15日:アナデバの電力計用IC、arduinoで周波数(周期)を計る
2021年5月1日:Arduino UNOで周波数カウンタ:アナデバの電力計用ICのために

まず、この電力計ICへの供給電源について。
コンデンサドロップ方式でAC100V→DC5Vを作っています。
アナデバのサンプル回路「AN-679」では、
 ・ドロップ用のコンデンサ:0.47uF/630V
 ・直列抵抗:470Ω/1W
 ・ツェナーダイオード:15V/1W
 ・平滑コンデンサ:470uF/35V
 ・三端子レギュレータ:78L05
で、構成されています。

C2_20200826092201

2021年1月8日:アナデバの電力計用IC、試運転
では、三端子レギュレータを「LT1129-5」で試作
しました。
これを「78L05」に変えて回路(ケース入れ用に新造)を
作ってみたのです。

すると・・・三端子レギュレータの出力電圧が5Vを
切る事態に。
入力電圧が下がってしまって6Vほどになっていました。
  あれれ。
LT1129の時はツェナー電圧の15Vがしっかりと加わって
いたんですが・・・

これ、何が問題なのか?

・LT1129と78L05ではバイアス電流(レギュレータ自身の
 消費電流)が異なります。
 78L05では3~6mA。
 LT1129だと0.3mAほどとおよそ1/10。
   これ、たまたま手持ちが有ったんで、

・AN-679のドロップコンデンサは0.47uFだけど
 これはアメリカなもんで電源「220V・60Hz」を想定。
 日本だと100Vなんで、流れる電流がざっと半分になって
 電圧ドロップが大きくなってしまいます。

で、対策です。
・LT1129は高価なんで汎用品でバイアス電流の
 小さな安いC-MOSの「S812C50」に。
   (バイアス電流マイクロAオーダーになる)
・しかし、S812C50の最大入力電圧は「16V」。
・15Vのツェナーだとギリギリなんで12Vのに。
   (9Vくらいでも)

あるいは、
・ドロップコンデンサを「1uF」に。

※参考
50Hz、60Hzでのリアクタンスと100Vでの電流
 0.47uF 6.8kΩ 14.7mA(50Hz)
 0.47uF 5.6kΩ 17.9mA (60Hz)

 1uF 3.2kΩ 31.4mA(50Hz)
 1uF 2.7kΩ 37.7mA (60Hz)

※参考:コンデンサドロップ方式電源
https://e2e.ti.com/blogs_/japan/b/power-ic/posts/ac-dc
digikey : tps7a78

※注意:電圧ドロップ用コンデンサの耐圧
たいていのフィルムコン、耐圧の定格は「DC」。
交流で定格が表記されたのもありますが、DCのをACで
使おうとしたとき、どのくらいの余裕がいるか・・・
これを参考に。
 共立エレショップ:ECQE2 474KF
  ・DC定格電圧品の交流使用可能電圧(PDF)
 http://www.kyohritsu.jp/eclib/OTHER/CATALOG/CAPA/capaacdc.pdf

昔々、痛い目にあっています。
年数が経つといつのまにか容量が減少。
その原因・・・内部で皮膜間が放電して電極が消滅・・・

※ケースに入れた様子
11_20210511180401

※回路図
Pwr_mtr2a  

マイコン用DC5V電源は百均のUSB出力のACアダプタ。

※バックアップがわりにスケッチを。
  ・ダウンロード - pwrmon2a.txt
   (テキストファイルにしてます)

ICP1に1Hzパルスが入るようにして、電力計が出すクロックパルス
もどき(1kHz程度のパルスで模倣可)を入れればArduino-UNOで動
きます。
パラメータ設定で使ってるスイッチ操作あたりの処理が参考に
なるかと。
「ENT」は短押しと長押しを区分。
「↑」と「↓」はオートリピート処理。
押し続ける時間でinc値、dec値を増加。
20回以降が±20に。
100回以降が±100にして大きな値の増減に変化。
さらに・・・いったんオフしてから0.8秒以内の操作は
直前のinc、dec値(20または100)を保持。

ここら、自由に使っていただければと。

| | コメント (2)

2021年5月 1日 (土)

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秒ゲート」をこしらえてみました。

こんな回路で実験。
F1

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端子に周波数測定するパルスを入れます。

ブロック図で描くとこんな感じ。
F2

システムで使っているタイマー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が出てきます。

試作実験中の回路。

F21

※追加実験
2021年5月4日:Arduino周波数カウンタ:FreqCounter Libraryを使った時のカウント異常を再現

| | コメント (0)