一、ACS724 datasheet相关内容
ACS724不同的型号有着不同的量程和精度,我调试使用的是ACS724LLCTR-50AB-T,量程范围是-50~50A,测量精度是40mV/A(ADC采集电压每变化40mV电压,电流对应变化1A)
ACS724LLCTR-50AB-T参考以下信息:
需要注意的是,电流为零时传感器的输出,对于双向器件,它理论上保持在0.5 × VCC,对于单向器件,它保持在0.1 × VCC。
二、原理图设计
我采用5V供电,根据选型相关内容可以得知,当电流为0时,Vout理论值时Vcc*0.5 = 2.5V。并且在ADC处做了一个分压,VIOUT1 = 1/3 * VIOUT,以免电压过高烧坏主控芯片。
三、程序调试
void adc_test(void)
{
uint16_t i;
float ADC_ConvertedValueLocal[NOFCHANEL],temp,data,cur;
for(i = 0;i < 500;i++)
{
ADC_ConvertedValueLocal[0] =(float) ADC_ConvertedValue[0]/4096*3.3*3;
temp = ADC_ConvertedValueLocal[0] + temp;
delay_ms(10);
}
printf("\r\n temp value = %f V \r\n",temp);
data = (float)temp /500;
printf("\r\n data value = %f V \r\n",data);
cur = (data - 2.5 - 0.065) / 0.04;
printf("\r\n cur value = %f A \r\n",cur);
temp = 0;
delay_ms(1000);
printf("\r\n\r\n");
}
我测试的实验条件是负载24V、0~3A。芯片在测试电流前需要校准,我的供电5V不是精确的5V,实际测得的电压为5.1V左右,因此校准需要减去一个0.065~0.07的值才能比较准确。校准根据实际情况做数据处理即可,实际测得的电流精确度与规格书的误差是差不多的。