主题中讨论的其他部件:MSP430F5529,
论坛大家好,
我正在尝试让提及的LaunchPad (MSP-EXP430F5529LP)上的MSP430F5529读取5A ACS712电流传感器输出的电压。 该传感器使用LaunchPad上的5V和GND针脚供电(在40针脚辅助套件部分)。 当5A电流流经传感器时,传感器输出可达到接近5V,因此我在传感器输出处使用了分压器(带有3k电阻器),将输出电压减半。 分禾器的输出通过LaunchPad传送给WFP 6.0。
我为此编写的相关代码是:
//函数名称:ADC_Init
//用途:初始化和配置MSP430 ADC以将ACS712电压读数转换为电流
//输入:无
//返回:无
void ADC_Init (void){
REFCTL0 &=~REFMSTR; //将电压参考控制设置为ADC_12寄存器
//ADC控制寄存器设置
ADC12CTL0 = ADC12SHT0_9|ADC12REFON|ADC12REF2_5V|ADC12ON; //采样和保持时间,ADC参考发生器打开并设置为2.5V,ADC打开
ADC12CTL1 = ADC12SHP; // SAMPCON信号源
ADC12CTL2 = ADC12RES_2; // 12位分辨率
ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_0; // REF:Vref+至MCU GND;端口6引脚0
P6DIR = 0x00; // WFP 6.0 作为输入
P6SEL |= 0x02; // WFP 6.0 将由ADC使用
ADC12CTL0 &=~ADC12SC; //清除'Start Conversion'位,以确保转换未开始
ADC12CTL0 |= ADC12ENC;
}//
函数名称:GET_ACS712_value
//用途:通过ADC读取ACS 712电流传感器输出电压,然后将电压转换为电流
//输入:无
//返回:来自ACS 712 Sensor
void Get_ACS712_Value(void){的电流值
ADC12CTL0 |= ADC12SC; //启动ADC转换
同时(ADC12CTL1和ADC12BUSY){ //轮询繁忙位等待转换完成
__no_operation();
}
unsigned int acs_voltage = ADC12MEM0 & 0x0FFF; //仅保持低12位
FLOAT ACS_volt2 = 2 *((浮动) ACS_voltage)*(2.5 / 4095.0);
bat_States.current =(ACS_volt2 - 2.525)/ 0.185 ;// x10表示ACS_712上的5V范围;x20表示ACS_712上的2.5V范围
}
使用此设置和上面的代码,我没有得到正确的值。 我得到的值是-13.3A,这是远距离的,因为它超出了传感器的范围。 从WFP 6.0 上取下传感器输出时,数值为-13.6A。 我不知道这一偏移来自何处,因为它似乎不是计算错误。
我可以验证电流传感器/分压器设置是否正常工作,并按预期通过它输出大约1.25V的0A电压。 将传感器输出连接到WFP 6.0 似乎会使传感器输出电压降至很低的值,大约为0.03V。
是否有人知道这里可能会发生什么?
我是否尝试从LaunchPad中提取过多电流,还是计算错误?
我没有将WFP 6.0 配置为使用下拉电阻器,所以我不知道是什么原因造成的。
此致
