jwd 发表于 2025-7-4 16:22:55

ADC采集电压信号不对的问题请教

请教各位大虾,我使用AICube生成的,现在采集的res变量不对,我实际测量电压是4.5V左右;请问可能是那里出错了?

国芯人工智能 发表于 2025-7-4 16:23:00

您好,感谢您的提问。关于您在使用AICube生成的ADC采集电压信号时遇到的res变量异常问题,以下从可能原因、排查思路及建议进行专业分析:

首先,需明确ADC(模数转换器)采集电压信号的基本原理:ADC将模拟电压信号转换为数字数值,其输出值与输入电压成线性关系,具体取决于参考电压(Vref)、分辨率(如12位、16位)以及采样精度。若实际测量电压为45V,而ADC采集结果不准确,可能存在以下几个方面的问题:

1. 参考电压设置错误
   ADC的转换结果依赖于参考电压(Vref)。若Vref配置错误(例如应为5V却误设为3.3V),会导致采集结果偏离真实值。请检查代码或配置中是否正确设置了参考电压。

2. 输入电压超出ADC量程
   若ADC的输入范围为0-5V,而实际电压为45V,则会因过压导致ADC饱和或损坏。请确认所用ADC芯片的输入电压范围,并确保信号调理电路(如分压、衰减)能够将电压限制在安全范围内。

3. 信号调理电路设计不当
   未经处理的高电压直接接入ADC可能导致损坏或读数异常。建议通过电阻分压、运算放大器等电路对电压进行适当衰减,确保其符合ADC输入要求。

4. ADC通道配置错误
   检查代码中是否正确配置了ADC通道,包括引脚选择、采样时间、分辨率等参数。若通道配置错误,可能导致读取到错误的引脚或无效数据。

5. 软件算法或数据处理问题
   AICube生成的代码可能存在逻辑错误或未正确处理ADC原始数据。建议检查res变量的计算方式,确认是否进行了正确的校准和单位换算(如将ADC值转换为实际电压值)。

6. 硬件连接或干扰问题
   检查ADC模块与电源、地线的连接是否稳定,是否存在噪声干扰。建议使用屏蔽线并确保接地良好,必要时增加滤波电容以提高信号质量。

7. ADC芯片本身故障或型号不匹配
   若上述步骤均无异常,可能是ADC芯片损坏或型号不兼容。可尝试更换芯片或验证其规格书中的参数是否符合应用需求。

综上所述,建议您按照以下步骤进行排查:
1. 核对ADC参考电压及输入范围;
2. 检查信号调理电路设计;
3. 验证ADC通道配置及代码逻辑;
4. 测试硬件连接与抗干扰能力;
5. 必要时更换ADC模块进行对比测试。

如仍无法定位问题,建议提供更详细的硬件配置、代码片段及实测数据,以便进一步分析。希望以上建议对您有所帮助,祝调试顺利!

[本文内容由国芯人工智能辅助生成,仅供参考]

DebugLab 发表于 2025-7-5 00:58:51

注意数据类型和强制类型转换
以USB转双串口工具为例
使用USB CDC发送BGV、ADC_RES_CH15、VREF
可以观察到切换跳线后VREF(接VCC)电压变化



void main(void)
{
    //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
    // 在此添加用户主函数初始化代码
      unsigned int BGV;
      unsigned int CH15;
      unsigned int VREF;
    //<<AICUBE_USER_MAIN_INITIAL_END>>

    SYS_Init();

    //<<AICUBE_USER_MAIN_CODE_BEGIN>>
    // 在此添加主函数中运行一次的用户代码
      BGV=((unsigned int)CHIPID7<<8)+(unsigned int)CHIPID8;
    //<<AICUBE_USER_MAIN_CODE_END>>

    while (1)
    {
      //<<AICUBE_USER_MAIN_LOOP_BEGIN>>
      // 在此添加主函数中用户主循环代码
                CH15=ADC_Convert(15);
                VREF=(unsigned int)((unsigned long)BGV*4096UL/(unsigned long)CH15);
                printf("BGV=%dmV CH15=%d Vref=%dmV\r\n",BGV,CH15,VREF);
                delay_ms(1000);
      //<<AICUBE_USER_MAIN_LOOP_END>>
    }
}


DebugLab 发表于 2025-7-5 01:09:19

缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VREF电压,无法直接算出VCC电压
测量其他通道,可直接使用外部基准,不需要反推VREF

jwd 发表于 2025-7-5 06:24:41

DebugLab 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...

使用的是试验箱

jwd 发表于 2025-7-5 07:04:20

DebugLab 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...

谢谢啊,我又看了下原理图,stc32的试验箱是有2.5V的基准,AI8051的是电源电压

jwd 发表于 2025-7-5 10:11:26

DebugLab 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...
大师,再请教一下,我现在用stc32的试验箱,计算出来的值和实际值有差距,实际测试电源电压是4.5V左右,请问我那里处理得不对吗?参考电压是2.496V

DebugLab 发表于 2025-7-5 12:00:52

jwd 发表于 2025-7-5 10:11
大师,再请教一下,我现在用stc32的试验箱,计算出来的值和实际值有差距,实际测试电源电压是4.5V左右,请 ...
使用我的程序试一下
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18917&pid=175153

jwd 发表于 2025-7-5 14:46:51

DebugLab 发表于 2025-7-5 12:00
使用我的程序试一下
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18917&pid=175 ...

我用你的下载到stc8h8k64u的开发板结果差不多;我大概知道是咋回事了,因为我现在用的是stc32的试验箱,有VREF,所以不对,但是请问这种如何计算电源电压呢?

DebugLab 发表于 2025-7-5 15:09:58

jwd 发表于 2025-7-5 14:46
我用你的下载到stc8h8k64u的开发板结果差不多;我大概知道是咋回事了,因为我现在用的是stc32的试验箱, ...

VREF接VCC才可以直接算出电源电压
否则
电源电压需要电阻分压后接ADC通道
页: [1] 2
查看完整版本: ADC采集电压信号不对的问题请教