You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspberry Pi Pico W+ADS1115+SCT-013-000电流检测数值偏差求助

电流监测数值偏低问题排查与解决

根据你的硬件配置和代码,数值偏低(约为实际值的1/3)的核心原因集中在参数设置错误和计算逻辑上,以下是逐一排查和修正方案:

1. 核心问题:maxVoltage参数设置错误

你的SCT-013-000电流互感器变比为100A:50mA,副边串联22Ω负载电阻,当原边达到最大100A时,副边电压应为:

V_max = I副边_max × R负载 = 0.05A × 22Ω = 1.1V

但你初始化ADC时传入的maxVoltage=3,这直接导致电流计算时的比例系数错误:

  • 当前错误计算:current = (100/3) × voltage
  • 正确计算应为:current = (100/1.1) × voltage

修正方案:
将初始化代码中的maxVoltage改为1.1:

STC = ADC(STC_ADS,100,1.1,0,1)

2. 验证ADS1115的电压转换逻辑

需要确认ads1115.py中的raw_to_v函数是否正确处理了增益设置。当增益为1时,ADS1115的量程是±4.096V,每个原始采样值(16位有符号)对应的电压应为:

V_per_LSB = 4.096V / 32768 = 0.000125V (125μV)

如果库中的raw_to_v函数没有正确关联增益参数,会导致电压转换错误。可以手动验证:假设采样得到的原始有效值是8800(对应1.1V),raw_to_v(8800)应返回1.1V,若不符合则需修正库函数的转换逻辑。

3. 采样与有效值计算的优化

你的采样逻辑(累加平方值后求均方根)是正确的,但可以优化两点:

  • 采样间隔ADC_RATE=5ms,对于50Hz/60Hz交流电,120个采样点足够覆盖多个周期,无需调整。
  • 确保ADS.read_rev()返回的是A0-A1的差分采样值(有符号原始读数),若返回绝对值或单端值会导致平方累加错误。可在循环中临时打印原始值,确认范围是否符合预期(比如35A对应副边电压0.385V,原始值应为3080左右)。

4. 硬件连接的二次确认

  • 确认电流互感器副边确实串联了22Ω电阻,未误接其他阻值(比如68Ω会导致数值差约3倍,需排除)。
  • ADS1115的差分输入(A0-A1)连接正确,电流互感器两根线分别接A0和A1(接反仅影响数值正负,不影响有效值大小)。

修正后的关键代码示例

调整maxVoltage并修复main函数的错误:

def main():
    while True:
        STC.read()
        amps = STC.getAmps()
        # 处理其他逻辑

i2c = machine.I2C(1, scl=machine.Pin(15), sda=machine.Pin(14))

STC_ADS = ADS1115(i2c,address=0x48, gain=1)
# 修正maxVoltage为1.1
STC = ADC(STC_ADS,100,1.1,0,1)
sleep(1)
main()

内容的提问来源于stack exchange,提问作者captaincy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:23:20