HOME | Raspberry Pi | ビジネス書籍紹介 | 2021-04-18 (Sun) Today's Access : 9 Total : 277427. Since 10 Sep. 2019

2020.09.18 電流計測モジュール INA219

YouTubeでポイントを説明しています。画像をクリックすると再生できます。

■INA219 電流センサーモジュール
INA219 電流センサーモジュールは、INA219チップを搭載し、ハイサイド(電源側)電圧、電流を誤差1%の精度で測定可能です。 INA219には、AとBの2つのグレードが存在し、Bグレードのほうが高い精度(誤差0.5%)の仕様になっています。

左が、Adafruit Industries のロゴ(桜)の刻印されたINA219モジュール、右がcloneということになるのでしょうか?
clone はハズレもあったりするので、余裕のある方は、adafruit製をお勧めします。
ハズレを引いた場合、まったく動かなければ問題ない?のですが、下手に動作すると無駄に時間を消費してしまいます。
私の場合、対象を測定しようとすると、なぜか、INAモジュールへの電力供給用VccをBus電圧として取得してしまい、測定電流も非常に不安定でした。 別のものに交換してみると、運よく動作しました。

・電源電圧:3.3V~5V
・最大計測電圧:MAX+26VDC
・最大計測電流:±3.2A
・レンジ:4レンジ選択
・ロジックレベル:TTL(3-5V)
・通信形式:I2C(プルアップ抵抗実装済み)
・通信速度:MAX 40KHz
・アドレス:0x40、0x41、0x44、0x45(ジャンパーにより選択可)
・消費電流:最大1mA

Ref. INA219 High Side DC Current Sensor Breakout - 26V ±3.2A

■開発環境

パソコンから、TeraTeamでラズパイにSSH接続、ラズパイでビルドしたコードを、Seeeduino XIAO に転送します。 ラズパイのディストリビューションは、Raspbian Stretch、開発環境に platformio を使用しています。

■INA219 設定

最大四つまでI2C接続可能(デフォルト:0x04)
 
 I2C   A0  A1 
 0x40       
 0x41   ○    
 0x44      ○ 
 0x45   ○  ○ 
○:ショート(Bridge)
ボード右側のジャンパーをショートさせることで、I2Cアドレスを変更します。
Ref. Adafruit INA219 Current Sensor Breakout

高精度電流測定用IC INA219は、電源側(ハイ・サイド)で検出した信号を増幅するICです。
ハイサイド電位を測る VIN+,VIN-端子間のシャント抵抗(検出抵抗)器100mΩにかかる電圧を誤差1%で測定します。
この際、1Aの電流が流れた場合、0.1V (=1A*0.1Ω)の電圧降下が生じます。

Ref. TEXAS INSTRUMENTS INA219

搭載しているアンプの最大入力差(Shunt Voltage)は初期設定では±320 mVなので、最大計測電流はオームの法則 I=V/R より、最大3.2 Aまでの計測が可能です。
3.2(A) = 0.32(V)/0.1(Ω)
内部に12bit ADC(Analog-to-Digital Converter)を搭載しているので、±3.2 Aレンジでの分解能は、0.8mAです。
0.8(mA) = 3.2(A)/4096

3.2Aのような大電流の測定が必要ない場合は、設定を変更して分解能を向上させましょう。 インターナルゲインを最小値の±40mVに設定すると、最大電流は±400 mAで、分解能は0.1 mAまで向上します。
0.4(A) = 0.04(V)/0.1(Ω)
0.1(mA) = 0.4(A)/4096

adafruit の INA219ライブラリーを使用すると簡単に設定が変更できます。
  ina219.setCalibration_16V_400mA();
Ref. Adafruit_INA219.h
Ref. Adafruit_INA219.cpp

その他のカスタマイズ
0.1Ωの検出抵抗器を取り外し、それを独自のものに置き換えてレンジを変更することが可能です (例えば0.01Ωにすると、32 Aまでを8 mAの分解能で測定できます)。
Ref. FeatherWing - INA219搭載 電圧、電流、電力測定ボード


■配線


測定データ表示に使用しているTFT液晶モジュール(ST7735との接続は下記の通りです。
 XIAO  - TFT DISPLAY
GND  - [1]GND
3.3V  - [2]VCC
SCK[D8]  - [3]SCL:SPI clock line
MOSI[D10] - [4]SDA:SPI data line
[D2]  - [5]RES:Reset interface
[D3]  - [6]DC:SPI data / command selection
[D1]  - [7]CS:Chipselect
   [8]BLK:Backlight control

■プロジェクトの作成

$ mkdir -p ~/INA219
$ cd ~/INA219
$ platformio init -b seeed_xiao

$ vi platformio.ini
[env:seeed_xiao]
platform = atmelsam
board = seeed_xiao
framework = arduino
 ↓追記
board_build.mcu = samd21g18a
board_build.f_cpu = 48000000L
upload_protocol = sam-ba

■プログラミング

$ vi src/ina219.ino
#include <Adafruit_INA219.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS    1
#define TFT_RST   2
#define TFT_DC    3
#define TFT_SCLK  8
#define TFT_MOSI 10

#define BLACK   ST7735_WHITE
#define CYAN    ST7735_BLUE
#define ORANGE  ST7735_ORANGE

Adafruit_INA219 ina219;
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI,
TFT_SCLK, TFT_RST);

void setup() {

  tft.initR(INITR_MINI160x80);
  tft.setTextWrap(false);
  tft.setRotation(1);
  tft.setTextSize(1);
  tft.setTextColor(ORANGE);

  if (! ina219.begin()) {
    while (1) {
      tft.setCursor(5, 30);
      tft.print("Failed to find INA219 chip");
      delay(10);
    }
  }
  ina219.setCalibration_16V_400mA();
}

void loop() {

  float shuntvoltage = ina219.getShuntVoltage_mV();
  float busvoltage   = ina219.getBusVoltage_V();
  float current_mA   = ina219.getCurrent_mA();
  float power_mW     = ina219.getPower_mW();
  float loadvoltage  = busvoltage + (shuntvoltage / 1000);

  tft.fillScreen(BLACK);

  tft.setTextSize(2);
  tft.setTextColor(ORANGE);

  tft.setCursor(5, 5);
  tft.print("bus:");
  tft.print(busvoltage);
  tft.print("V");

  // tft.print("loadV:");
  // tft.print(loadvoltage);

  tft.setCursor(5, 23);
  tft.print("shunt:");
  tft.print(shuntvoltage);
  tft.print("mV");

  tft.setCursor(5, 41);
  tft.setTextColor(CYAN);
  tft.print("cur.:");
  tft.print(current_mA,1);
  tft.print("mA");

  tft.setCursor(5, 59);
  tft.print("power:");
  tft.print(power_mW,1);
  tft.print("mW");

  delay(1000);
}
$ pio run
/home/pi/INA219/src/ina219.ino:2:29: fatal error: Adafruit_INA219.h: No such file or directory

$ platformio lib search "header:Adafruit_INA219.h"

Adafruit INA219
===============
#ID: 160
INA219 Current Sensor

Keywords: sensors
Compatible frameworks: Arduino
.....

$ platformio lib install 160
Library Storage: /home/pi/.pio/libdeps/seeed_xiao
LibraryManager: Installing id=160
Adafruit INA219 @ 1.0.9 has been successfully installed!
Installing dependencies
Looking for Adafruit NeoPixel library in registry
LibraryManager: Installing id=28
Adafruit NeoPixel @ 1.6.0 has been successfully installed!
Looking for Adafruit GFX Library library in registry
LibraryManager: Installing id=13
Adafruit GFX Library @ 1.10.1 has been successfully installed!
Installing dependencies
Looking for Adafruit BusIO library in registry
LibraryManager: Installing id=6214
Adafruit BusIO @ 1.5.0 has been successfully installed!
Looking for Adafruit SSD1306 library in registry
LibraryManager: Installing id=135
Adafruit SSD1306 @ 2.4.0 has been successfully installed!
Installing dependencies

$ pio run
/home/pi/src/ina219.ino:4:29: fatal error: Adafruit_ST7735.h: No such file or directory

$ platformio lib search "header:Adafruit_ST7735.h"

Adafruit ST7735 and ST7789 Library
==================================
#ID: 12
This is a library for the Adafruit ST7735 and ST7789 SPI displays.
....
$ platformio lib install 12

Library Storage: /home/pi/.pio/libdeps/seeed_xiao
LibraryManager: Installing id=12
Adafruit ST7735 and ST7789 Library @ 1.6.0 has been successfully installed!
Installing dependencies
Looking for Adafruit GFX Library library in registry
LibraryManager: Installing id=13
Adafruit GFX Library @ 1.10.1 has been successfully installed!
Installing dependencies
Looking for Adafruit BusIO library in registry
LibraryManager: Installing id=6214
Adafruit BusIO @ 1.5.0 has been successfully installed!
Looking for Adafruit seesaw Library library in registry
LibraryManager: Installing id=1890
Adafruit seesaw Library @ 1.3.1 has been successfully installed!
Installing dependencies
Looking for Adafruit ST7735 and ST7789 Library library in registry
Looking for SD library in registry
Conflict: More than one library has been found by request {"name": "SD", "frameworks": ["arduino"]}:
SD
==
#ID: 161
This library aims to expose a subset of SD card functionality in the form of a higher level 'wrapper' object

SD
==
#ID: 868
Enables reading and writing on SD cards. Once an SD memory card is connected to the SPI interface of the Arduino or Genuino board you can create files and read/write on them. You can also move through directories on the SD card.

Automatically chose the first available library (use `--interactive` option to make a choice)
LibraryManager: Installing id=161
SD @ 0.0.0-alpha+sha.041f788250 has been successfully installed!

$ platformio run -t upload


モニターに映る測定データをみてみましょう。
bus voltage 2.73V
shunt voltage0.19mV
current 1.9mA
Power 5.0mW

shunt抵抗は100mΩ、電圧降下は 0.19mV なので電流は
1.9mA=0.19mV/0.1Ω
消費電力は
5.19mW=2.73V*1.9mA
この計算結果からもわかるように、電流が小さいと、 関数から取得される値と、計算式で求められる数値の誤差が大きくなります。
shunt電圧とbus電圧から、計算式により電流、消費電力は求めたほうがよいかもしれません。
shunt検出器を挟んで、電源側が load電圧(負荷電圧)、回路側が bus電圧 になりますが、 shunt電圧が小さいので、この2つはほとんどかわりません。
load電圧 = shunt電圧 + bus電圧

上記の回路では、330Ωの抵抗を介して、LEDを点灯させましたが、抵抗値を10Ωに換えてみると、bus電圧が低下しました。
bus voltage 2.59V
shunt voltage0.50mV
current 5.0mA
Power 13.0mW

電池の内部抵抗による分圧も関係していると思いますが、簡単な計算式では算出できませんでした。

■参考文献
シャント抵抗器(分流)
直流回路の計算(分圧と分流)
あらゆる分野で求められている電流検出
電源電流の高精度測定
pi-ina219 1.3.0

【深層学習関連】
20.11.21 深層学習 第1回環境整備
20.12.19 深層学習 第2回マルコフ連鎖・自動歌詞生成
21.01.02 深層学習 第3回コード進行解析

【画像処理関連】

20.05.28 画像処理 第1回トイカメラ
20.06.09 画像処理 第2回カメラモジュール制御
20.06.28 画像処理 第3回リアルタイムクロック
20.07.08 画像処理 第4回電源回路
20.10.27 画像処理 第5回自作デジカメ初号機完成
20.11.10 画像処理 第6回ドーナツデジカメ
【音楽関連】

20.01.05 第1回 abcjs 楽譜作成・演奏スクリプト
20.01.09 I2S通信によるハイレゾ音源再生
20.01.18 MIDI再生:FM音源YMF825+Arduino編
20.01.24 FM音源YMF825+micro:bit編
20.02.13 Piano Hat & Rosegarden
20.06.22 波形処理 第1回 音の波と三角関数
20.07.22 波形処理 第2回 平均律と純正律
20.08.26 波形処理 第3回 黒鍵と白鍵
21.01.02 深層学習 第3回 コード進行解析
21.01.16 波形処理 第4回 コード演奏
【WEBサイト構築関連】

19.10.15 第1回 前準備
19.10.20 第2回 Ubuntu Server インストール
19.10.27 第3回 Ubuntu Server 詳細設定
19.10.28 番外編 無線LAN接続設定
19.11.02 第4回 Apache WEBサーバ設定
19.11.05 第5回 PHP 設定
19.11.10 第6回 MySQL 設定
19.11.11 第7回 DNS (bind) 設定
19.11.16 第8回 メールサーバ(Postfix)設定・前編
19.11.21 第9回 メールサーバ(Postfix)設定・後編
19.11.24 第10回 ファイアウォール(iptables) 設定
19.11.25 第11回 crontab 設定
19.12.01 第12回 運用準備
19.12.03 第13回 Windowsパソコンに開発環境を作る
19.12.05 第14回 WEBサーバー公開
19.12.10 第15回 動的サイト制作
19.12.11 第16回 簡単なアクセスカウンターを作る
20.03.04 TTGO-Camera による定点観測・WEB公開
21.03.15 第17回 サーバ・リプレイス
21.03.27 第18回 システム移行
【開発環境関連】

19.12.19 Raspbian Stretch LITE インストール
19.12.19 ファイル共有 dokany + Win-sshfs
19.12.26 Arduino開発環境構築 PlatformIO
20.02.04 電子組版 upLaTeX
21.04.13 GPIO拡張
21.04.14 無線LAN動的切替え
【SNS関連】

20.03.18 テキスト読み上げ gTTS
20.04.24 Twitter-LINE連携によるビジネス活用
20.05.19 テキスト読み上げ AquesTalk pico LSI
21.02.27 TweLite Neural Network 第1回環境設定
【周辺機器関連】

20.01.01 1280x800 HDMI MONITOR
20.01.12 micro:bitをコマンドラインで使う
20.02.04 サーマルプリンタを使う
20.03.27 M5Stackキーボードを利用する
20.06.29 液晶キャラクターディスプレイLCD1602A
20.08.03 Seeeduino XIAO
20.08.09 LGT8F328P - Arduino clone
20.09.18 電流計測モジュール INA219
21.02.09 Raspberry Pi Pico 開発環境構築
21.03.06 疑似コンソール
21.03.20 Raspberry Pi Pico 突入電流制御
21.04.04 Raspberry Pi Pico Explorer Base
【その他】

19.12.13 モバイルバッテリーによる瞬間停電対策
20.04.10 電卓を制御して数字を表示する
20.05.06 箱庭回路 蓄電&昇圧回路
20.09.04 箱庭回路 センサーライト
20.09.29 シガーライターIC s090c
20.10.13 自動給水装置 LM393+NE555
20.12.05 FM放送受信 TEA5767
21.01.30 DVD Player LED
21.02.16 癒しの電子回路

 ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場! 高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。 DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。 作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。
Interface 2021年5月号
~ 5G時代のコモンセンス ! 旬の信号処理をパソコンでマスタ ! ~
☆特 集 [ザ・新人研修]Pythonで無線信号処理
☆特 設: ソフトウェア・ラジオで合点 ! 無線通信[変復調]技術
☆新連載: IoT定番プロトコルMQTT: IoTに向く理由

ラズパイマガジン2021年春号
モーターやLED、小型ディスプレイ、スイッチなど、多様な電子パーツ450種を一挙に紹介します。 特性や価格の一覧表を用意したので、用途に合った適切な製品を選べます。
トランジスタ技術 2021年4月号
☆特集~ホビーも実践も軽快・即開発のA-D内蔵ワンチップ~
「AVRでサクッとマイコン開発」
日経Linux 2021年3月号
【特集 1】まる分かり50ステップ Linux 超入門
【特集 2】あなたのワガママかなえます! WindowsのアプリをLinuxで使いたい
【特集 3】公衆Wi-Fiは危険がいっぱい!? パスワードの盗聴を実験してみた
【特集 4】キーボード一体型の新モデル Raspberry Pi 400を検証
【特集 5】ラズパイで楽しむLinuxライフ オンラインのドキュメント編集をNextcloudとCollabora Onlineで実現

15Stepで踏破 自然言語処理アプリケーション開発入門
エンジニアの実務に役立つ知識に絞り、独自に15の学習ステップを体系化しました。 数値計算にNumPy、形態素解析にMeCab、機械学習にscikit-learn、ディープラーニングに Keras等を使い、Pythonのコードを記述し動かしていきます。
プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法

Linuxサーバーがゼロから作れる本
このLinuxを使いこなす上で一番手っ取り早いのが自分でLinuxサーバーを構築してみることです。 WindowsやMacのパソコンしか使ったことが無い人でも理解できるよう、 しくみや手順の解説を丁寧にまとめ上げた、ゼロからのサーバー入門ガイドです。

Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
【仕様概要】CPU:ARM 1.2GHz 4コア、GPU:2コア 3D・動画支援、RAM:1GB、ネットワーク:LAN/Wi-Fi/Bluetooth、インターフェース:USB/HDMI/オーディオ/GPIO(UART/I2C/I2S/SPI...)。

Arduino Nano
ATmega328搭載/ 動作電圧: 5V/ 入力電源電圧(推奨):7~12V/ デジタル入出力ピン: 14本/ PWMチャンネル: 6本/ アナログ入力チャンネル: 8本/ 直流電流(1ピン当り最大): 40 mA/ 直流電流(3.3Vピン、1ピン当り最大): 50 mA/ Flashメモリ: 32 KB (ATmega328) 内2KBはブートローダーで使用/ SRAM: 2 KB (ATmega328)/ EEPROM: 1 KB (ATmega328)/ Clock Speed: 16 MHz
逆引き PIC電子工作 やりたいこと事典
機能が豊富で、速度・アナログ制御・省電力性・コストの面でもアドバンテージをもつPICマイコン。そんなPICマイコンの使い方を、目的別にやりたいことから引ける、逆引きタイプのガイドブックです。
C言語による PICプログラミング大全
2002年に初版、2009年に第2版を発売した名著『C言語によるPICプログラミング入門』 が大幅リニューアルし「大全」として生まれ変わりました。 本書では、機能豊富なPIC16F1シリーズを使いこなすために、統合開発環境を MPLAB X IDEに、CコンパイラはMicrochip Technology社純正のXC8に、それぞれ変更しました。 C言語でPICマイコンのプログラミングを始めたい方から、最新のPICマイコンの機能をとことん使い倒したい方まで、必ず役に立つ1冊です。
PICと楽しむRaspberry Pi活用ガイドブック
「PICマイコン+Raspberry Pi3B」という組み合わせで、高機能な電子工作を簡単に実現し、電子工作を各段に高度化する方法について解説していきます。
ESP32&Arduino 電子工作 プログラミング入門
電子工作ファンに人気のマイコンArduino、そしてWiFiとBluetooth内蔵でネットワーク接続しやすいESP32。それらのマイコンでプログラムを組む際に使うのが「Arduino言語」です。
超特急Web接続!ESPマイコン・プログラム全集
IoT技術の回路とプログラムを解説しました. トランジスタ技術2016年9月号と2017年3月号の特集に 最新の情報を加筆して一冊に仕上げました. 回路とプログラムのサンプル資料として最適です. ラズベリー・パイやIchigoJamを連動させた例も紹介しています
M5Stack用カード型キーボードユニット
M5Stackにフル機能のQWERTY配列キーボードを実装できるユニットです。複数のボタンの組み合わせ(Sym + Key、Shift + Key、Fn + Key)や豊富なキーの値を出力することが可能です。
Ubuntu サーバー徹底構築
サーバー用UbuntuでLinuxサーバーを構築しよう! 導入からLinuxやコマンドの基本、各種サーバー構築、バックアップやストレージ管理まで! サーバー用Linuxディストリビューションとして定評のあるUbuntu Serverの中でも、 10年長期サポート版であるUbuntu Server 18.04 LTSに対応!
[改訂第3版]Linuxコマンドポケットリファレンス
本書はLinux操作に必要なコマンドを収録したポケットリファレンスです。機能別にコマンドを分類し、各コマンドページでは書式/使用例などをコンパクトにまとめています。またアルファベット順索引も用意しており、名前しかわからなくてもすぐに目的のコマンドを探すことができます。今回の改訂では仮想化、データベース、クラウド時代に対応したネットワークコマンドなどを追加しています。おもなLinuxディストリビューションのCentOS、Fedora、Debian GNU/Linux、Ubuntuに対応し、初心者から上級者まで必携の1冊です。
できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応
番のApache独学書を改訂しました! CentOS、Ubuntu、Windows、Mac OS Xに対応しています。できるPROシリーズは、実際の画面や詳細なイラスト、概念図などで構成。 はじめての方でも理解しやすくなっています。 インストール、アクセス制限、CGI、モジュール拡張、ログ管理など、基本的なことから実践的なことまでていねいに解説しています。
[改訂第3版]PHPポケットリファレンス
PHPを利用したいすべての方必携の「PHPポケットリファレンス」最新版がついに登場! PHP 5/4による開発の際によく利用される機能を集約し、必要な知識を目的別、逆引きでまとめました。PHP5.3以降を対象とし、PHP4からある機能はPHP4でも利用できることがわかるようになっています。またオブジェクト指向型のAPI解説を大幅に強化。開発の現場には1冊置いておきたい書籍です。
MySQL ポケットリファレンス
MySQLはさまざまなWebサービスの中核を担うデータベースです。本書はMySQLの基礎的な内容を中心に、日常的によく使うちょっとしたコマンドや、外部管理ツールとの連携など、MySQLの管理/運用にあたって便利な情報を素早く探し出すことができます。MySQL自体の操作、MySQL特有のコマンド、MySQL専用管理ツール、PHPからの操作など、MySQLを実際に使っているユーザーに役立つ内容となっています。
Postfix詳解―MTAの理解とメールサーバの構築・運用
電子メールの配送システムの中核を担うプログラム「MTA」(Message Transfer Agent)のひとつが、「Postfix」です。 この全容を記した本です。 すところなく解説していきます。
DNSがよくわかる教科書
本書では、DNSの仕組みから、ドメイン名のルール、主なリソースレコードの内容、コマンドによる動作確認、DNSの運用ノウハウ、DNSSECの基礎知識まで、順を追ってやさしく解説します。

Copyright © 2011-2022 Sarako Tsukiyono All rights reserved®.