Adafruit INA260:高精度电流、电压和功率传感器的全方位解析

电子说

1.4w人已加入

描述

Adafruit INA260:高精度电流、电压和功率传感器的全方位解析

在电子工程师的日常工作中,准确测量电流、电压和功率是一项至关重要的任务。今天,我们就来深入了解一款功能强大的传感器——Adafruit INA260电流、电压和功率传感器扩展板。

文件下载:4226.pdf

一、概述

Adafruit INA260扩展板或许是你最后一次需要购买的电流传感解决方案。它不仅能替代两台万用表的功能,还具备惊人的精度和灵活性。它可以测量高侧或低侧直流电流、总线电压,并自动计算功率。在令人印象深刻的电压、电流和温度范围内,其测量精度优于1%,而且通过I2C接口以易于使用的格式传输数据。

该扩展板适用于任何兼容CircuitPython或Arduino的微控制器,以及像树莓派这样的单板计算机。它支持3V或5V逻辑,能够测量高达+36VDC的总线电压,但不适用于交流电压。

1. 选择测量侧

大多数电流测量设备都有一些显著的限制,影响其使用范围。许多设备只能进行低侧测量,当地参考点随电流变化时会出现问题。而INA260的“小姐妹”INA219B虽通过高侧测量避免了这个问题,但需要更换分流电阻来测量不同的电流范围。INA260则避免了这些限制,其集成的精密分流电阻使其能够在高侧或低侧测量高达+36V、连续15A的电流。

2. 工作原理

内部16位ADC测量集成的2毫欧(0.002欧姆)、0.1%分流电阻两端的电压,从而在令人印象深刻的电流范围内实现1.5 mA的分辨率(由于电阻极低,一些万用表可能会将其视为短路)。

在高侧配置中,可以准确获取总线电压测量值和功率计算结果。但对于想要在低侧配置中测量总线电压的高级玩家,需要切断连接V+和VBUS的跳线,并将VBUS引脚连接到电压总线。

需要注意的是,在切换感性负载时,由于电感反冲,瞬时电压水平可能会大大超过稳态水平。如果不采取预防措施保护芯片免受电感尖峰的影响,可能会导致芯片损坏。更多信息可参考相关链接

二、引脚说明

1. 电源引脚

扩展板上的传感器需要2.7V至5.5V的电源,可轻松与大多数微控制器(如Arduino、Feather等)配合使用。

  • Vcc:电源引脚,为扩展板供电,其电压应与微控制器的逻辑电平相同(例如,对于5V的Arduino,使用5V)。
  • GND:电源和逻辑的公共接地端。

2. I2C逻辑引脚

  • SCL:I2C时钟引脚,连接到微控制器的I2C时钟线。逻辑电平与Vcc相同,且已内置10K上拉电阻。
  • SDA:I2C数据引脚,连接到微控制器的I2C数据线。逻辑电平与Vcc相同,且已内置10K上拉电阻。

3. 其他引脚

  • Vin+:正输入引脚,用于高侧电流传感时连接电源,用于低侧传感时连接负载接地端。
  • Vin-:负输入引脚,用于高侧电流传感时连接负载,用于低侧传感时连接扩展板接地端。
  • Alert:中断输出引脚,可配置中断以触发各种“原因”,如超过或低于配置的电流、电压或功率设置。也用于信号单次转换完成。电压电平与Vcc相同。
  • VBus:总线电压引脚。默认情况下,它与Vin+相连,但在进行低侧测量时,应切断扩展板右侧的VB跳线,并将VBus连接到电源总线,以便准确计算总线电压和总功率(VBus * 电流)消耗。
  • A0和A1焊接跳线:可通过焊接将地址引脚拉高到VCC,根据下表更改I2C地址。 A1 I2C Address (hex)
    GND 0x40 (Default)
    GND 0x41
    VCC 0x44
    VCC 0x45

三、组装步骤

1. 准备排针

如有必要,将排针剪至合适长度。将排针插入面包板(长引脚朝下),这样焊接会更容易。

2. 安装扩展板

将扩展板放在排针上,使短引脚穿过扩展板的焊盘。

3. 焊接排针

确保焊接所有8个引脚,以实现可靠的电气连接。(有关焊接技巧,请查看优秀焊接指南)。焊接完成后,目视检查焊点。

4. 准备端子块

将端子块放在扩展板内,确保其朝外。将扩展板翻转,使端子引脚朝上。

5. 焊接端子块

先用烙铁支撑扩展板,焊接一个引脚。然后使用虎钳或辅助工具固定扩展板,焊接另一个引脚。焊接完成后,目视检查焊点,然后继续下一步。

四、Arduino使用

1. 接线

将INA260连接到Feather或Arduino非常简单:

  • 如果使用Feather(3.3V),将Feather的3V连接到扩展板的VIN。
  • 如果使用5V的Arduino(如Uno等),将Arduino的5V连接到扩展板的VIN。
  • 将Feather或Arduino的GND连接到扩展板的GND。
  • 将Feather或Arduino的SCL连接到扩展板的SCL。
  • 将Feather或Arduino的SDA连接到扩展板的SDA。
  • 将Vin+连接到电源以进行高侧电流传感,或连接到负载接地端以进行低侧传感。
  • 将Vin-连接到负载以进行高侧电流传感,或连接到扩展板接地端以进行低侧传感。

2. 安装Adafruit_INA260库

要开始读取传感器数据,需要安装Adafruit_INA260库(代码可在GitHub仓库中找到)。该库可从Arduino库管理器中获取,建议使用此方法进行安装。

从IDE中打开库管理器,点击“Manage Libraries”菜单项,搜索“Adafruit INA260”,选择该库并点击“Install”。然后按照相同的步骤安装Adafruit BusIO库。

3. 示例代码

以下示例代码是标准库的一部分,展示了如何从INA260获取电流、电压和功率的传感器数据。

#include < Adafruit_INA260.h >
Adafruit_INA260 ina260 = Adafruit_INA260();

void setup() {
  // Wait until serial port is opened
  Serial.begin(115200);
  while (!Serial) {
    delay(10);
  }
  Serial.println("Adafruit INA260 Test");
  if (!ina260.begin()) {
    Serial.println("Couldn't find INA260 chip");
    while (1);
  }
  Serial.println("Found INA260 chip");
}

void loop() {
  Serial.print("Current: ");
  Serial.print(ina260.readCurrent());
  Serial.println(" mA");
  Serial.print("Bus Voltage: ");
  Serial.print(ina260.readBusVoltage());
  Serial.println(" mV");
  Serial.print("Power: ");
  Serial.print(ina260.readPower());
  Serial.println(" mW");
  Serial.println();
  delay(1000);
}

4. 加载演示

打开“File” -> “Examples” -> “Adafruit_INA260 Library” -> “ina260_test”,并将其上传到连接了传感器的Arduino。此外,你可能需要添加代码来点亮NeoPixel灯带,以便有电流可供测量。如果你不熟悉使用NeoPixel库,请参考优秀的NeoPixel Überguide页面

上传草图到开发板,打开串口监视器(“Tools” -> “Serial Monitor”),你应该能看到电流、电压和功率的值。

5. Arduino使用说明

首先,包含库并创建一个Adafruit_INA260对象,以便在后续的草图中使用。

#include < Adafruit_INA260.h >
Adafruit_INA260 ina260 = Adafruit_INA260();

然后,在setup函数中调用INA260对象的begin函数,初始化驱动程序并准备从传感器读取测量值。如果无法连接到INA260传感器,begin函数将返回false。此时,需要仔细检查电源和I2C接线。

if (!ina260.begin()) {
  Serial.println("Couldn't find INA260 chip");
  while (1);
}

最后,可以进行测量!readCurrentreadBusVoltagereadPower分别读取并返回以毫安、毫伏和毫瓦为单位的测量值。

Serial.print("Current: ");
Serial.print(ina260.readCurrent());
Serial.println(" mA");
Serial.print("Bus Voltage: ");
Serial.print(ina260.readBusVoltage());
Serial.println(" mV");
Serial.print("Power: ");
Serial.print(ina260.readPower());
Serial.println(" mW");

默认情况下,功率和电压测量仅在高侧电流传感时准确。要在低侧传感时调用readVoltagereadPower获得准确测量值,需要切断扩展板右侧的VB跳线,并将VBus引脚连接到总线。

五、Python & CircuitPython使用

1. 接线

CircuitPython微控制器接线

将INA260按照以下方式连接到开发板:

  • 开发板的3V连接到传感器的Vin。
  • 开发板的GND连接到传感器的GND。
  • 开发板的SCL连接到传感器的SCL。
  • 开发板的SDA连接到传感器的SDA。
  • 传感器的Vin+连接到电源以进行高侧电流传感,或连接到负载接地端以进行低侧传感。
  • 传感器的Vin-连接到负载以进行高侧电流传感,或连接到开发板接地端以进行低侧传感。

注意:此扩展板的I2C线上已包含上拉电阻,无需外部上拉电阻。

Python计算机接线

以树莓派为例,接线方式如下:

  • 树莓派的3V3连接到传感器的VIN。
  • 树莓派的GND连接到传感器的GND。
  • 树莓派的SCL连接到传感器的SCL。
  • 树莓派的SDA连接到传感器的SDA。

2. 安装库

CircuitPython安装INA260库

首先,确保你的CircuitPython开发板运行的是最新版本的Adafruit CircuitPython。然后,需要安装使用硬件所需的库,仔细按照步骤从Adafruit的CircuitPython库包中查找并安装这些库。我们的CircuitPython入门指南有关于如何安装库包的详细页面。

对于非Express开发板(如Trinket M0或Gemma M0),需要手动从库包中安装必要的库:

  • adafruit_ina260.mpy
  • adafruit_bus_device
  • adafruit_register

在继续之前,确保开发板的lib文件夹或根文件系统中已复制了adafruit_ina260.mpyadafruit_bus_deviceadafruit_register文件和文件夹。然后连接到开发板的串行REPL,进入CircuitPython的>>>提示符。

Python安装INA260库

需要安装提供Python中CircuitPython支持的Adafruit_Blinka库。这可能还需要在你的平台上启用I2C,并验证你运行的是Python 3。由于每个平台都有所不同,且Linux经常更新,请访问CircuitPython on Linux指南,让你的计算机做好准备。

完成上述步骤后,从命令行运行以下命令:

sudo pip3 install adafruit-circuitpython-ina260

如果你的默认Python版本是3,可能需要运行pip代替。请确保不要在Python 2.x上使用CircuitPython,因为它不支持。

3. 使用示例

以下代码展示了如何初始化传感器并从Python REPL读取电流和电压:

import time
import board
import busio
import adafruit_ina260

i2c = busio.I2C(board.SCL, board.SDA)
ina260 = adafruit_ina260.INA260(i2c)

print("Current:", ina260.current)
print("Voltage:", ina260.voltage)
print("Power:", ina260.power)

4. 完整示例代码

import time
import board
import adafruit_ina260

i2c = board.I2C()  # uses board.SCL and board.SDA microcontroller
# i2c = board.STEMMA_I2C()  # For using the built-in STEMMA QT connector on a 
ina260 = adafruit_ina260.INA260(i2c)

while True:
    print(
        "Current: %.2f mA Voltage: %.2f V Power:%.2f mW"
        % (ina260.current, ina260.voltage, ina260.power)
    )
    time.sleep(1)

默认情况下,功率和电压测量仅在高侧电流传感时准确。要在低侧传感时调用readVoltagereadPower获得准确测量值,需要切断扩展板右侧的VB跳线,并将VBus引脚连接到总线。

六、下载资源

  • 数据手册:包括INA260数据手册、TI设计资源等。
  • 原理图:可查看扩展板的详细电路连接。
  • 制造图纸:提供扩展板的尺寸信息。

Adafruit INA260传感器扩展板为电子工程师提供了一种高精度、灵活的电流、电压和功率测量解决方案。无论是在Arduino还是Python环境中,都能方便地进行使用。你在使用过程中遇到过哪些问题呢?欢迎在评论区分享你的经验和见解。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分