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.

[参考译文] AFE4300:如何提高数据价值?

Guru**** 2535750 points
Other Parts Discussed in Thread: AFE4300

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/715094/afe4300-how-to-improve-data-value

器件型号:AFE4300

嘿、我使用 AFE4300测量 BCM。

我使用 RC 系列进行测试、测试电阻为464欧姆和 105.6 nF

我的值具有不同的误差百分比、有时大约为0.02%、有时在 FWR 模式下为1.xx%、有时为20.xx%

我尚未添加导线和试验电路板的电阻、但例如、1根导线的电阻为0.3欧姆6*0.3 = 1.8欧姆导线的最大电阻+~ 1欧姆(例如)试验电路板的电阻

如何改进以减少2%的误差

第二个问题是、每次在同一会话中测量时、还是在重新引导/重置后、我都需要校准系统。 我的意思是、我给电路板加电并校准一次、然后我将在单/连续模式 BCM 下进行测量、测量前是否需要再次校准?

我的代码是

uint16_t FWR_Read (uint32_t input_mask、uint8_t freq、uint8_t delay)
{
set_frequency (freq、false);
nrf_drv_gpioote_in_event_enable (DRDY_PIN、TRUE);//启用引脚 IRQ
write_register (VSENSE_MUX、INPUT_MASK);//选择 VSENSE RN1-RP0
WRITE_register (ISW_MUX、INPUT_MASK);//选择 IOUT RN1-RP0

nrf_delay_ms (delay*1000);
uint16_t 结果;
while (真)
{
如果(dflag = 1)// IRQ 引脚从高电平变为低电平 dflag 变为1
{
Dflag = 0;
结果= READ_register (ADC_DATA_RESULT);//*(1.7/32768.0);
结果=(结果>= 32768)? 结果- 65536:结果;
中断;
}
}
返回结果;
}

void set_frequency (uint8_t freq、bool set_iq_DEMOD)
{
WRITE_REGISTER (BCM_DAC_FREQ、FREQ);
}
afe4300_RESET ();
nrf_DELAY_ms (100);
WRITE_REGISTER1 (ADC_CONTROL_REGISTER1、 0x4130);//差分测量模式、32SPS
WRITE_register (MISC_REGISTER1、0x0000);
WRITE_register (MISC_REGISTER2、 0xFFFF);
WRITE_REGISTER (DEVICE_CONTROL1、0x0006);//为 BCM 信号链
WRITE_register (ISW_MUX、0x0408);
WRITE_register (VSENSE_MUX、0x0408);
WRITE_REGISE_MODE_ENABLE、 0x0000);
WRITE_register (weight_scale_control、0x0000);
WRITE_register (BCM_DAC_FREQ、0x0032); //0x0040
WRITE_REGISTER2 (DEVICE_CONTROL2、0x0000);
WRITE_register (ADC_CONTROL_REGISTER2、0x0063);// ADC 选择 BCM-I 输出
WRITE_REGISTER3、0x0030)的输出;

R1 = FWR_READ (0x0201、50、0.5);
R2 = FWR_Read (0x0202、50、0.5);

双斜率=(ry - Rx)/(R2 - R1);
双偏移= Rx -(slope * R1);

uint16_t z_code = FWR_Read (0x0408、50、0.5);

双 Z = SLOPE * z_code + offset;
double Z_comp = sqrt (pow (RC_R、2)+(1 / pow ((2 * PI *(50 * 1000)* RC_C)、2)));
double err = 100 - Z * 100 / Z_comp; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ivan、

    提高精度的几点、
    1) 1)尝试其他激励频率。
    2) 2)检查基准电阻器的输出是否在运行过程中也发生变化。

    校准例程应在每个上电周期后、激励频率等信号参数发生任何变化后执行。

    此致、
    Prabin