[应用相关] 采样值还是和内部参考电压值时差不多?

[复制链接]
 楼主| bbapple 发表于 2018-12-2 16:30 | 显示全部楼层 |阅读模式
用的是官方的EK-LM4F232H5QD评估板
其中PD4(AIN7)外接电池进行AD采样测试,电池电压1.528-1.533V左右,当设置参考电压为内部参考电压时,采样值在1827-1924,1.528/3.3*4096=1896左右,设置为外部3V参考电压时,采样值还是和内部参考电压值时差不多?
 楼主| bbapple 发表于 2018-12-2 16:30 | 显示全部楼层
12bit的adc,在参考电压与测试电压值都在较稳定的情况下,为什么AD采样值变化如此大?采用硬件多次平均,效果也不是特别好,ad值偏差也有几十个。
unsigned long ref=0xff;
int main(void)
{
     tContext sContext;
     char cText[8];
     unsigned long ulText;
     unsigned long ulADC0_Value[3];
     FPUEnable();
FPULazyStackingEnable();
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |          SYSCTL_OSC_MAIN);
     CFAL96x64x16Init();
     GrContextInit(&sContext, &g_sCFAL96x64x16);
     GrContextForegroundSet(&sContext, ClrWhite);
     GrContextFontSet(&sContext, &g_sFontFixed6x8);
GrStringDraw(&sContext,"ADC Hands On Lab", -1,1, 5, 0);
GrStringDraw(&sContext,"----------------", -1,1, 15, 0);
GrStringDraw(&sContext,"Ad:", -1,20, 25, 0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
     GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);
ref=ADCReferenceGet(ADC0_BASE);
   ADCReferenceSet(ADC0_BASE,ADC_REF_EXT_3V);
ref=ADCReferenceGet(ADC0_BASE);
     ADCSequenceConfigure(ADC0_BASE, SEQUENCER, ADC_TRIGGER_PROCESSOR, 0);
   ADCSequenceStepConfigure(ADC0_BASE, SEQUENCER, 0, ADC_CTL_CH7 | ADC_CTL_IE
                       |ADC_CTL_END);
     ADCSequenceEnable(ADC0_BASE, SEQUENCER);
     ADCIntClear(ADC0_BASE, SEQUENCER);
     while(1)
     {
         ADCProcessorTrigger(ADC0_BASE, SEQUENCER);
         while(!ADCIntStatus(ADC0_BASE, SEQUENCER, false))
         {
         }
         ADCSequenceDataGet(ADC0_BASE, SEQUENCER, ulADC0_Value);
         usprintf(cText, " %d    ", ulADC0_Value[0]);
         GrStringDraw(&sContext, cText, -1, 45, 25, 1);
         SysCtlDelay(SysCtlClockGet() / 12);
      GrFlush(&sContext);
     }
}
handleMessage 发表于 2018-12-2 16:34 | 显示全部楼层
楼主用的是A1版本的芯片吧,A1里有个Bug,配置外部参考无效的。
zhouhuanの 发表于 2018-12-2 16:35 | 显示全部楼层
需要置PB6的AMSEL寄存器。
wanglaojii 发表于 2018-12-2 16:44 | 显示全部楼层
楼主可以加一句:
HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) |= (1 << 6);
laozhongyi 发表于 2018-12-2 16:45 | 显示全部楼层
一般的不想麻烦的都是采用内部的参考电压。。
Edisons 发表于 2018-12-2 16:50 | 显示全部楼层
最好能够使用一个滤波程序。
_gege 发表于 2018-12-2 16:53 | 显示全部楼层
你的这个电压数值是不是有基压。
Mozarts 发表于 2018-12-2 16:54 | 显示全部楼层
建议楼主上传下电路图和完整代码,有时如果用的外部分压电阻太大也会有偏差
Listate 发表于 2018-12-2 16:57 | 显示全部楼层
这个采用内部参考还是比较好的
sourceInsight 发表于 2018-12-2 16:59 | 显示全部楼层

采用外部电压的话,就需要保障外部电压的稳定性的
磨砂 发表于 2018-12-5 10:03 | 显示全部楼层
理论上应该差不多啊
晓伍 发表于 2018-12-5 10:10 | 显示全部楼层
可以设置一下软件滤波
八层楼 发表于 2018-12-5 11:37 | 显示全部楼层
外部硬件进行滤波
观海 发表于 2018-12-5 12:00 | 显示全部楼层
一直都这样 还是波动比较大啊
guanjiaer 发表于 2018-12-5 12:08 | 显示全部楼层
官方的那个好像外部电压基准不稳定吧
heimaojingzhang 发表于 2018-12-5 12:37 | 显示全部楼层
采样前进行校准了吗
labasi 发表于 2018-12-5 13:13 | 显示全部楼层
你这个波动大 还是用滤波试试
wowu 发表于 2018-12-5 14:09 | 显示全部楼层
感觉是你采集到的值 波动很大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

1811

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部