工具/软件:
您好、
我的原型连接如下图所示
我正在使用 pyftdi 尝试使用 I2C 来测量电流、电压和功率。
我将此电路板 https://www.amazon.co.uk/dp/B0CG9HNZZR?ref_=pe_27063361_487360311_302_E_DDE_di_1 用于 INA219。
连接是否合理? 我可以以我的 python 代码回复 E2E 工程师、因为我没有获得预期的结果。
谢谢、
Lalit
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好、
我的原型连接如下图所示
我正在使用 pyftdi 尝试使用 I2C 来测量电流、电压和功率。
我将此电路板 https://www.amazon.co.uk/dp/B0CG9HNZZR?ref_=pe_27063361_487360311_302_E_DDE_di_1 用于 INA219。
连接是否合理? 我可以以我的 python 代码回复 E2E 工程师、因为我没有获得预期的结果。
谢谢、
Lalit
嗨、Malika、
FYI 如果我将 JTAG_TDO_TDI 接线连接到3.3K 电阻器、SDA ia 始终为高电平。 FYI 从 FTDI AE 获悉 FT4232H 在 IO 引脚上具有内部上拉电阻器、因此这可能是 SDA 线路保持高电平的原因、所以我移除了这里 SDA 的上拉电阻器。
我觉得 FTDI I2C 工作正常、因为我可以在示波器上看到 SCL 和 SDA 的波形。
这是我的 pyhton 代码
#########################
从 pyftdi.i2c 导入 I2cController
导入时间
从导入睡眠时间开始
#常量
INA219_ADDRESS = 0x40 #默认 I2C 地址
#寄存器地址
REG_SHUNT_VOLTAGE = 0x01
REG_BUS_VOLTAGE = 0x02
REG_POWER = 0x03
REG_Current = 0x04
REG_CALIBRATION = 0x05
#特定分流电阻器和范围设置的校准值
CALIBRATION_VALUE = 4096 #示例值
#基于校准的比例因子(您可能需要调整这些)
CURRENT_LSB = 0.001 # 1 mA /位
POWER_LSB = 0.02 # 20mW/位
DEF to_signed (val):
如果 val > 32767、则返回 val - 65536否则 val
DEF READ_WORD (dev、reg):
RAW = dev.exchange ([reg]、2)
返回 int.from_bytes(raw、byteorder='big)
DEF WRITE_WORD (dev、reg、value):
数据= value.to_bytes (2、byteorder='big)
dev.write ([reg]+ list (data))
DEF MAIN():
I2C = I2cController()
i2c.configure ('FTDI://1/1')#根据您的 FTDI 器件进行调整
器件= i2c.get_port (INA219_ADDRESS)
#写入校准
WRITE_WORD (器件、REG_CALIBRATION、CALIBRATION_VALUE)
当为真时:
SHUNT_VOLTAGE_RAW = TO_SIGNED (READ_WORD (DEVICE、REG_SHUNT_VOLTAGE))
BUS_VOLTAGE_RAW = READ_WORD (DEVICE、REG_BUS_VOLTAGE)>> 3
CURRENT_RAW = TO_SIGNED (READ_WORD (DEVICE、REG_CURRENT))
POWER_RAW = READ_WORD (器件、REG_POWER)
SHUNT_VOLTAGE = SHUNT_VOLTAGE_RAW * 0.01 #mV (假设10uV/位)
BUS_VOLTAGE = BUS_VOLTAGE_RAW * 0.004 #V (4mV/位)
Current = CURRENT_RAW * CURRENT_LSB #A
功率= POWER_RAW * POWER_LSB #W
打印("总线电压:%.3f V"、bus_voltage)
打印("分流电压:%.2f mV"、shunt_voltage)
打印("当前:%.3f a"、当前)
打印("功率:%.3f W "、功率)
打印("-"* 30)
Time.sleep (1)
如果__NAME__="__MAIN__":
main()
######################################
我的总线电压、分流电压、电流功率为0。 让我知道我错过了什么。
谢谢、
Lalit
您好 Lalit、
1.请分享您的 I2C 通信示波器快照。
2.您能否确认是否可以在启动时读取默认配置寄存器值0x399F。
3.在原理图中,没有分流电阻器,所以功率和电流寄存器将为零。 此外、INA219用于高侧应用、您连接到地的正弦、Vbus 基本上为零。 此外、不知道为什么 IN-至 GND 上有 LED、因为 沿该路径的电压为零、所以它不会通电。
此致、
Mallika Senthil