公開日:2019/09/07
title.png

7th Season


#7-4 USB電圧・電流計で電流を測定する

 USBのオス・メスコネクタに4桁のLED表示器が付いた、電圧・電流計(下図)を購入してみました。

ar74_usbvam.jpg

※表面にかなりキズが見えますが、届いた状態でこうでした。価格相応と言うことですが(1^^;)、しっかり機能すれば問題なしです。

 USB機器の間に挟み込むことで、USBコネクタに掛かる電圧と、流れる電流値を表示してくれるツールです。元々は、USBで充電する充電池の状態モニタ用みたいです。
 これで、ようやく、概算の電流値を知ることができます。

 「いい加減、テスタ買えば?」という声が聞こえてきそうですが……、そういう専門ツール無しで、どこまでできるか、行けるところまで行ってみようと思っています。

USB電圧・電流計

 このツールは、一定時間(約5秒)毎に電圧表示⇔電流表示が入れ替わって表示されます。
 測定可能範囲は、電圧3.5〜7V、電流0〜3Aです。LED表示器は4桁ですが、数値3桁+単位です。10mV/10mAの解像度で表示されます(精度は不明)。
 USBオス端子をPC等のUSB端子に挿入すると、その電源を使って、電圧・電流値を表示します。USBメス端子の方に負荷を接続すると、負荷に流れた電流値が測定可能です。恐らく、ある期間内の平均電流値が測定されているはずなので、ピーク電流が問題になるようなケースの測定には使用できません。

 USBメス端子に出力を繋がない(無負荷)状態でも、電流値が0.01Aと表示されました。本来は0Aになるべきところですが、単なる測定精度の問題なのか、電圧・電流計自身で消費している電流分が見えているのか、説明書も何もないので不明です。後ほど実験で確かめてみたいと思います。

 所詮は校正されていない、おもちゃですが、それは、数千円で売っているテスタでも同じこと(定期的に、何千円か何万円か支払って、校正し続けて使うならまだしも、そうでないなら、と言う意味です)。最後の所に購入価格を記しておきますが、この金額で消費電流の概算値を知ることができるなら、費用対効果はイーブンです。

測定値を検証する

 まず、既知の抵抗と、既知の電源電圧を使って、USB電圧・電流計の確かさを検証してみます。
 電源電圧には、「#5-10 電源電圧を計測する」で使った昇圧電源モジュールを使います(下図)。

ar63_stepup.jpg

 この昇圧電源モジュールは、出力電圧値を3桁のLED表示器で確認することが可能です。ただし、5V以上の電圧しか作り出せないため、出力電圧を1:1に抵抗分圧して、抵抗に流れる電流値を測定します。

ar74_schem.png

 「#3-8 ブラシ付きDCモータ」で作成したUSB治工具(回路図中CN1,CN2、下図)を使って、抵抗分圧回路にUSB電圧・電流計を挟みこみます。

ar38_usbjig.jpg

 分圧比は1:1なので、昇圧電源モジュールで7〜14Vを出力すると、USB電圧・電流計には3.5〜7Vがかかり、55Ωの抵抗に流れる電流は、約64〜127mAとなる計算です。
 抵抗55Ωは、手持ちの220Ω抵抗を4本並列にして作りました。手持ち抵抗の定格は1/4Wなので、4並列にすることで、1本あたり約220mWと、定格内に抑えることが可能です。
 ただし、定格1/4W(=250mW)に対して余裕は無いので、結構発熱すると思います。手早くデータを取って、速やかに実験を終了させる必要があります。

 下図は実験中の様子です。

ar74_expr.jpg

 以下グラフに、測定結果を示します。USB電圧・電流計で測定した電圧値を横軸、電流値を縦軸にプロットしています。

ar74_va.png

 電圧の測定可能範囲は3.5V以上となっていますが、3V弱の所から、ギリギリLED表示されていました(ただし暗い)。あまり低電圧の測定値は、正しくない恐れがある(∵定格外)ので、3.3V以上の測定値をプロットしてあります。
 測定される電流値が10mA刻みのため、粗くて判断難しいですが、一次回帰直線を描かせてみたところ、ざっと、10mAくらいの下駄を履いているように見えます。

※一次回帰直線から読み取った抵抗値≒56Ω(≒1/0.0179、実際に使用したのは55Ω)、切片(下駄)≒10.7mAでした。

 無負荷の状態で0.01A(=10mA)が表示されることと併せて考えると、表示される電流値には、測定回路その物の消費電流も含まれていると考えるのが妥当です。そして、その分が下駄となって観測されている。従って、今後の計測では、無負荷での表示値10mAを根拠として、10mAの下駄を履いていることを前提としたいと考えます。つまり、表示値から10mAを減じて、負荷回路の消費電流とします。

 ただし、上の確認結果は、筆者手元の個体での話となります。同じ型のツールを同じショップで購入したとしても、同じ結果になるとは限らないので、各自で確認してから使うことを推奨します。

 なお別途、無負荷の状態で、昇圧電源モジュールとUSB電圧・電流計を直結し、昇圧電源モジュールから5〜7Vを印加して、電圧値を測定したところ、昇圧電源モジュールのLED表示値とUSB電圧計のLED表示値は、ほぼ一致しました(下図)。

ar74_vivo.png

 よって、USB電圧計の電圧表示は、ほぼ正しいと考えることにします。

電流値を測定してみる

 今まで、電流値を知りたかったのだけれど、測定できなくて、お茶を濁してきたパーツの電流を一気に測定してみましょう。

8x8ドットマトリクスLED表示器

ar26_dotmx.jpg

負荷 状態 電圧[V] 電流[mA] 備考
8×8 LED シャットダウン
モード
5.14 0 "wrt,c,0"
全消灯 5.11 20 "wrt,c,1"
"fnt,0000000000000000"
"dsp,0,0"
全点灯(最低輝度) 5.14 20 "wrt,a,0"
"fnt,ffffffffffffffff"
"dsp,0,0"
全点灯(1/2輝度) 5.06 100 "wrt,a,7"
全点灯(最高輝度) 5.00 180 "wrt,a,f"
電流を確認しながら、徐々に
輝度を上げて行って、確認。

 「#2-6 ドットマトリクスLEDを使う」で作成した制御プログラムで状態を作り、電流を測定しました。
 これ、Iduinoスタータキット(「#2-4 二代目のスタータキット購入」参照)に入っていたモジュールなのですが、このキットには説明書の類が全くついておらず、色々探した時に見つけた、似たようなモジュールのデータシートに、「TYP 320mA,MAX 2A」という記述があり、ちょっとビビっていました。そうそう、5V−2Aも流せるACアダプタなんて、無いですからね……。
 測定してみたら、180mAくらいでしたとさ(ビビッて損した……💦)。
 全消灯と、シャットダウンモードの差分値20mAが何なのか?は不明です。どちらも全消灯した状態に変わりないのですが、電流値は20mAも違っています。

USB FAN(5V DCモータ)

ar38_usbfan.jpg

負荷 状態 電圧[V] 電流[mA] 備考
USB FAN(5V DCモータ) 回転時 4.89 150  
ストール時 4.45〜4.87 180〜240 手で回転を止めた
スイッチOFF 5.13 0  

 ストール時の電圧・電流測定値は、場合によってばらつきました。単に停止(ストール)したというだけではなく、何か他の条件も絡んでいる印象です。その要因については、わかりませんでした。よって、上表の測定値では、ストール時の最大電流を測定できていない可能性もあります。
 また、ご覧の通りこのモータは、普通に回転させた場合よりストールさせた時の方が、多くの電流を消費します。

ステッピングモータ

ar36_stepper.jpgar36_drv.jpg

負荷 状態 電圧[V] 電流[mA] 備考
ステッピングモータ
 28BYJ-48
停止中
(電源を遮断)
5.14 0 回転終了後、電源を遮断
停止中
(電源は供給)
4.96 220 トルクを維持して停止した状態
回転中
(ゆっくり1[rpm])
4.96 220  
回転中
(高速5[rpm])
4.97 220  
脱調時 4.95 220 限界を超えた回転速度
(10[rpm])で脱調(回転が停止)
した状態。
1相励磁 4.99 130 回転速度は5[rpm]で共通
1-2相励磁 4.98 180
1-2相マイクロステップ励磁 5.01 150

※励磁方式が明記されていないケースは、2相励磁。

 ドライバIC(ULN2003AN)モジュール込みの電流値です。また、モータの回転軸には何も負荷をかけていません。
 「#3-6 ステッピングモータ」および、「#5-7 マイクロステップ励磁」の実験で使った回路とプログラムを使って、上表の状態を作り、電流値を測定しました。

 ざっと、電流値を測定してみただけで、あまり深追いはしていませんが、以下雑感です。

サーボモータ

ar34_servo.jpg

負荷 状態 電圧[V] 電流[mA] 備考
SG90 停止状態 5.16 0 "angl,90"
指定して、停止した状態
0°→180°の回転 5.14 60 "rot,0,180,10000"
0°→180°までを10sで回転
0°⇔180°の往復 5.09 200 "rtrip,100,100"
0°⇔180°間を高速(3往復/2秒)に
往復繰り返し

 「#3-4 サーボモータ」で作成したプログラム(test_servo.ino)と結線で、上表の状態を作り出して計測しました。ただし、「0°⇔180°の往復」機能については、今回の計測用に追加しました。いつもの様に、元のプログラムを更新してあります。

 ゅゆ、油断してました……。「こんなに小さなサーボモータなんて、大した電流は流れないだろう」と、高をくくっていました。さすがに、0°⇔180°を2秒間で3往復もするような高速動作を繰り返すことは少ないでしょうけど、実際にやったとすると、200mAも流れます。もし、4自由度(4DOF)のロボットで同じことを実行したら、4DOF×200mA=800mAも流すことに!
 ゆっくり回転させると、60mA程度なので、もしかしたら、動かすときのピーク電流が結構大きいのかもしれませんね。要注意です。少なくとも、複数のサーボモータを動かす場合には、ちゃんと、十分な電流容量を持った外部電源から供給しましょう。

Arduino UNOの電流

ar66_expr.jpg

負荷 状態 電圧[V] 電流[mA] 備考
Arduino UNO portbl_logger.ino稼働中 5.13 70 SDカードI/F等の消費電流込み。
アイドル中 5.14 60 他の回路を接続せず、
Arduino UNO単体で、
空のloop()関数実行中

※上写真には、モバイルバッテリが写っていますが、上表の測定値は、PCのUSB端子から電源を取って測定しました。

 「#6-6 ポータブル気温・湿度ロガ」で使用した回路とプログラムを使って、電流を測定しました。
 あの時は、Arduino UNOの消費電流を約15mAと見積もっていました。eneloopの電流容量約1,900mAhより、モバイルバッテリによる稼働時間を、およそ54.7hと予測したのに対して、実測では15hしか持ちませんでした。
 実は70mAも食っていたとなると、計算上は12h弱で、だいぶオーダとしては合ってきます。

 ちなみに、SDカードI/F等の余計な回路を接続せずに、空のloop()関数で測定した場合は、60mA程度と、少し低下したものの、あまり変わらない結果となりました。ほぼほぼ、UNO本体で消費している電流が見えているようです。
 ATmega328のデータシートからは、やっぱり15mA@16MHzくらいの数字が読み取れるのだけど……、ちょっと、良く見せすぎじゃない?。
 ただ、当方の見積もりも、だいぶ甘いところがあったのは事実です。実はArduino UNOだと、ボード上にATmega328だけではなくて、USBブリッジチップATmega16U2なども載っているし、MCU以外の部分で定常的に消費される電流分も見積もらなくてはならないところ、ATmega328のカタログスペックだけで見積もってしまっていました。

 やっぱり、概算値でも測定できて良かったです。

Arduino Pro Miniの電流

ar41_mini.jpg

負荷 状態 電圧[V] 電流[mA] 備考
Arduino Pro Mini アイドル中 5.11 20 空のloop()関数実行中

 Arduino Pro Miniなら、USBブリッジチップ(ATmega16U2)も載っていないし、UNOよりも消費電流が少ないだろうと予想して、UNOと同じく、他の回路を接続せずに、空のloop()関数で測定してみました。
 予想通り、ですが、アレアレ?こっちの結果だと、ATmega328のデータシートから読み取った、15mA@16MHzの数値も、あながち「大嘘」ってことは無いみたいですねm(1__)m。UNOのボードに何か、電流を流す回路が載っているのかな??意外とATmega16U2(USBブリッジチップ)の消費電流が大きかったり??

 バッテリ駆動など、低消費電力が必要なアプリケーションには、UNOよりPro Miniの方が適しているみたいです。

Arduino Microの電流

ar21_micro.jpg

負荷 状態 電圧[V] 電流[mA] 備考
Arduino Micro アイドル中 5.15 60 空のloop()関数実行中

 Microには、ATmega32U4というチップが載っていて、ATmega328+ATmega16U2の機能を有するチップです。やっぱり、USBブリッジチップの消費電流が意外と大きいのでしょうか?UNOのボードと同じくらい流れています。

 ATmega32U4,ATmega16U2データシートによれば、消費電流は27mA(MAX、@5V,16MHz)でした。

STM32(STM32F103C8)ボードの電流

ar41_stm32.jpg

負荷 状態 電圧[V] 電流[mA] 備考
STM32(STM32F103C8)ボード アイドル中 5.16 40〜50 空のloop()関数実行中

 ATmega系の手持ち機体は全て測定してみたので、「じゃあ、STM32は?」って、なって、測定してみました。UNOやMicroに比べると、ちょっと小さめ、Pro Miniに比べるとだいぶ大きめ。こっちはARM Cortex-M3(@72MHz)なので、重い処理をガツガツやらせ始めると、もう少し電流を喰らうかも、知れません。

ESP32の電流

ar71_expr.jpg

負荷 状態 電圧[V] 電流[mA] 備考
ESP32 APに接続した状態 5.10 110 UNOとつないで、HTTPサーバの稼働中に測定

※UNOと組み合わせて、HTTPサーバを稼働した時の電流値ですが、上表の電流値は、ESP32に流れた電流値のみとなります。UNOやSDカードI/Fの電流値は含まれていません。

 「#7-1 HTTPサーバを立てる」に従って、Arduino UNO+ESP32でHTTPサーバを稼働した状態で測定しました。
 APと接続してHTTPサーバを稼働中なので、電波は飛ばしている状態だと思われます。USB電圧・電流計の測定値の更新周期が長めなので、あまり細かい電流変化は読み取れないのですが、外部からHPデータにアクセスしても、110mAから変化は見られませんでした。

Raspberry Pi ZeroWの電流

ar72_final.jpg

負荷 状態 電圧[V] 電流[mA] 備考
Raspberry Pi
 ZeroW
リセット中 5.15 100〜130
Raspbian起動中 5.15 150〜200
起動後 5.16 120〜140
gccコンパイル中 5.16 180〜200
Shutdown後 5.17 40

※いずれも、キーボード、マウス、HDMIの接続無し、無線LANでVNC接続した状態の計測値。

 「#7-2 デザートにラズベリーパイはいかが?」でセットアップしたばかりのRaspberry Pi ZeroWを使って電流値を測定しました。
 こちらは、公式HPにて、TYP 150mAと言う記載があるので、そんなに外していない印象です。それでも、ちょっとコンパイルとか始めると、軽く200mAを超えてくるので、やっぱり、結構な電流を食う機体みたいです。
 考え様で、この機体は無線LAN接続があるので、UNO(〜70mA)+ESP32(〜110mA)≒180mAだと考えると、1GHzの高速CPUを搭載している割には、低消費電流だと見ることもできます。

 Shutdownした後でも、意外と電流を流している(40mA)ので、Shutdownした後は、電源を供給するACアダプタごとコンセントから抜いて、電源を遮断した方が良いです。

今回のお買い物

 今回のお買い物は、以前「#4-1 中国から配送されるネットショッピング」で利用した、「EasyWordMall(7-14日でお届け致します)」というネットショップです。

 今回は、発注から7〜8日で届いてしまいました。早っ。中国からの発送なのは理解しており、配送期間としては、毎回、2週間を覚悟しているので、(送料無料で)そんなに頑張ってくれなくても良いのですけどね。
 なお、ミニブレッドボードの使い勝手にやられてしまい、もう1セット(5個入り)購入してしまいました(1^−^)v。


 「不明」として、見て見ぬふりでスルーしてきた消費電流値を測定することができ、色々とやり易くなりました。それはそうと、やっぱり、モータを回すのって、結構電力が要るんですね……。再認識できました。


btn_arduino.png

btn_prev.png btn_next.png

home