【STM32L151】STM32+ACS722的电流检测问题求教

2019-07-14 19:02发布

各位大神好,本人现在在做一个STM32L151+ACS722电流检测的项目。但ACS722芯片网上案例较少,测下来会遇到采样的电压不准确的问题.

我的项目会有五个等级的电流传到ACS中,传入芯片的最大电流等级0.27A,最小等级电流才0.09A。我用示波器测量了下,ACS722出来的电压是基于1.66V左右,50HZ的正弦交流电压,峰峰值才100mV内的电压。我采样由ACS722传出来的电压,然后写了个方均根算法计算一个周期内的电压有效值,程序中未启用DMA,但测量下来发现五个等级对应的有效值几乎差不多,不清楚是什么原因,程序和示波器截图见下
这是我ADC配置,单通道采样,精度2的12次方,不采用DMA,AC采样频率是16MHZ,转换周期4Cycles。

void ADC_Config(u8 ADC_Channel)
{
        ADC_InitTypeDef ADC_InitStructure;                                                                                                                        //

        RCC_HSICmd(ENABLE);                                             //
        
        while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);            //

        ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;          //
        
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;                   //
        
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;              //
        
        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//
        
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;          //
        
        ADC_InitStructure.ADC_NbrOfConversion = 1;                      //
        
        ADC_Init(ADC1, &ADC_InitStructure);                             //
        
        ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1 ,ADC_SampleTime_4Cycles);//
        
        ADC_DelaySelectionConfig(ADC1, ADC_DelayLength_Freeze);

  /* Enable ADC1 Power Down during Delay */
        ADC_PowerDownCmd(ADC1, ADC_PowerDown_Idle_Delay, ENABLE);      //
        
        ADC_Cmd(ADC1,ENABLE);                                          //
        
  while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET)
  {
  }

}

IMG_8866.JPG
IMG_8873.JPG
IMG_8865.JPG
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Woodstockers
1楼-- · 2019-07-14 22:54
 精彩回答 2  元偷偷看……
Woodstockers
2楼-- · 2019-07-15 03:26
求大神解答啊 不胜感激
Woodstockers
3楼-- · 2019-07-15 05:41
我又去百度了下非正弦周期交流电压的有效值计算,好像我之前有效值算法有问题,那么现在按照正确的计算公式,我这个案例中直流分量在1.66V,也就是说我这个案例的有效值²=1.66²+[(u1-1.66)²+(u2-1.66)²+...+(un-1.66)²]/n,其中u1,u2...un为我采样点压的瞬时值,不晓得这样理解正确与否。。。。

一周热门 更多>