树莓派PICO使用INA226测量电流和总线电压(4)

        这篇文章将写一些题外话,关于INA226的地址,如果不清楚开发板的I2C地址,可以通过总线扫描的办法来获取开发板设定的地址。

#include "hardware/i2c.h"
#include "pico/binary_info.h"
#define I2C_SDA 16
#define I2C_SCL 17

void setup() 
{
    // put your setup code here, to run once:
    Serial.begin( 115200 );
    i2c_init( i2c_default, 100*1000 );
    gpio_set_function(I2C_SDA, GPIO_FUNC_I2C);
    gpio_set_function(I2C_SCL, GPIO_FUNC_I2C);
    gpio_pull_up(I2C_SDA);
    gpio_pull_up(I2C_SCL);
    bi_decl(bi_2pins_with_func(I2C_SDA, I2C_SCL,GPIO_FUNC_I2C));
}

void loop() {
  
  Serial.printf("\nI2C Bus Scan\n");
  Serial.printf("   0 1 2 3 4 5 6 7 8 9 A B C D E F\n");

  for (int addr = 0; addr < (1 << 7); ++addr) {
    if (addr % 16 == 0) {
      Serial.printf("%02x ", addr);
    }

    // Perform a 1-byte dummy read from the probe address. If a slave
    // acknowledges this address, the function returns the number of bytes
    // transferred. If the address byte is ignored, the function returns
    // -1.

    // Skip over any reserved addresses.
    int ret;
    uint8_t rxdata;
    if (reserved_addr(addr))
      ret = PICO_ERROR_GENERIC;
    else
      ret = i2c_read_blocking(i2c_default, addr, &rxdata, 1, false);

    Serial.printf(ret < 0 ? "." : "@");
    Serial.printf(addr % 16 == 15 ? "\n" : " ");
  }
  Serial.printf("Done.\n");
}

bool reserved_addr(uint8_t addr) {
  return (addr & 0x78) == 0 || (addr & 0x78) == 0x78;
}

 我的开发板的地址就是0x40。

### INA226 使用 VBUS 测量线电压的工作原理及方法 #### 线电压测量的基本概念 INA226 是一款高精度的电流电压监测器,它可以通过 VBUS 引脚测量电源线电压。此引脚用于检测供电线路中的实际电压值,并将其转换为数字化形式以便后续处理[^1]。 #### 测量范围与连接方式 - **测量范围**:VBUS 引脚支持宽广的输入电压范围(0 至 36V),这使其适用于多种不同的应用场景。 - **连接方式**:通常情况下,将待测系统的主电源轨直接连接到 VBUS 引脚即可完成设置。值得注意的是,尽管技术上允许把 VBUS 接入 IN+ 或者 IN- 来运作,但从提高测量精确性的角度来看,推荐优先考虑将 VBUS 连接到 IN- 上面去操作。这样做主要是基于减少因分流电阻所引入之共模噪声影响这一考量因素所致。 #### 数据采集过程解析 当 VBUS 引脚接收到来自外部电路传来的电信号之后,内部集成了专门设计用来放大弱小信号变化幅度的功能模块会对原始数据进行初步加工整理。接着经过一系列复杂的运算逻辑步骤后得出最终结果输出给用户端查看利用[^2]。 具体来说就是先由 ADC 转换器负责把连续模拟量转变成为离散数字序列表示出来;然后再依据预先存储在校准寄存器内的系数参数来进行必要的调整校正动作以确保获取的数据更加贴近真实情况下的物理量表现特征[^2]。 #### 提升测量准确率的技术手段探讨 为了克服可能存在的系统误差问题从而获得更为精准可靠的测试成果,在实践过程中往往还需要额外采取若干针对性强的有效措施予以辅助改善效果显著。例如通过精心挑选高品质的标准参考组件配合实施细致周全的软件算法补偿方案相结合的方式共同发挥作用等等[^3]。 --- ### 实际应用案例说明 以下是关于如何在 Raspberry Pi Pico 平台上部署配置 INA226 设备的一个实例描述: 在这个项目里头,我们采用了如下所示的一种典型硬件布局结构图来构建整个实验平台框架基础构架体系架构层次分明清晰易懂便于理解维护管理操作简便快捷高效实用性强等特点优势明显突出显示了出来[^4]: ```plaintext +-------------------+ | | | Raspberry Pi |----> SDA (Pin 16) | PICO |----> SCL (Pin 17) | |---> GND --> INA226 GND & IN- | |---> 3.3V --> INA226 VCC & VBUS +-------------------+ Additional Connections: - Potentiometer Midpoint ---> INA226 IN+ - One End of Potentiometer ---> Ground ``` 在此基础上编写相应的程序代码控制驱动装置正常运转起来就能顺利达成预期目标要求了。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值