找回密码
 立即注册
查看: 180|回复: 10

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

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 2025-7-4 16:22:55 | 显示全部楼层 |阅读模式
请教各位大虾,我使用AICube生成的,现在采集的res变量不对,我实际测量电压是4.5V左右;请问可能是那里出错了?
截图202507041620262250.jpg
截图202507041622502074.jpg
回复

使用道具 举报 送花

3

主题

2105

回帖

1058

积分

等待验证会员

积分
1058
发表于 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模块进行对比测试。

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

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5791

回帖

1万

积分

超级版主

DebugLab

积分
10398
发表于 2025-7-5 00:58:51 | 显示全部楼层
注意数据类型和强制类型转换
以USB转双串口工具为例
使用USB CDC发送BGV、ADC_RES_CH15、VREF
可以观察到切换跳线后VREF(接VCC)电压变化
截图202507050054004087.jpg
截图202507050101547574.jpg
截图202507050052484836.jpg
  1. void main(void)
  2. {
  3.     //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
  4.     // 在此添加用户主函数初始化代码  
  5.         unsigned int BGV;
  6.         unsigned int CH15;
  7.         unsigned int VREF;
  8.     //<<AICUBE_USER_MAIN_INITIAL_END>>
  9.     SYS_Init();
  10.     //<<AICUBE_USER_MAIN_CODE_BEGIN>>
  11.     // 在此添加主函数中运行一次的用户代码
  12.         BGV=((unsigned int)CHIPID7<<8)+(unsigned int)CHIPID8;
  13.     //<<AICUBE_USER_MAIN_CODE_END>>
  14.     while (1)
  15.     {
  16.         //<<AICUBE_USER_MAIN_LOOP_BEGIN>>
  17.         // 在此添加主函数中用户主循环代码  
  18.                 CH15=ADC_Convert(15);
  19.                 VREF=(unsigned int)((unsigned long)BGV*4096UL/(unsigned long)CH15);
  20.                 printf("BGV=%dmV CH15=%d Vref=%dmV\r\n",BGV,CH15,VREF);
  21.                 delay_ms(1000);
  22.         //<<AICUBE_USER_MAIN_LOOP_END>>
  23.     }
  24. }
复制代码
CDC发送VREF.zip (48.25 KB, 下载次数: 7)


DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5791

回帖

1万

积分

超级版主

DebugLab

积分
10398
发表于 2025-7-5 01:09:19 | 显示全部楼层
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VREF电压,无法直接算出VCC电压
测量其他通道,可直接使用外部基准,不需要反推VREF
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 2025-7-5 06:24:41 | 显示全部楼层
Debu*** 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...

使用的是试验箱
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 2025-7-5 07:04:20 | 显示全部楼层
Debu*** 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 2025-7-5 10:11:26 | 显示全部楼层
Debu*** 发表于 2025-7-5 01:09
缺少原理图,看你的电压怀疑外部接了2.5V基准
如接了2.5V基准,这个值应该是没有问题的
按此公式算出的是VR ...

大师,再请教一下,我现在用stc32的试验箱,计算出来的值和实际值有差距,实际测试电源电压是4.5V左右,请问我那里处理得不对吗?参考电压是2.496V

截图202507051009275031.jpg
截图202507051010338964.jpg

点评

使用我的程序试一下 https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18917&pid=175153  详情 回复 发表于 2025-7-5 12:00
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5791

回帖

1万

积分

超级版主

DebugLab

积分
10398
发表于 2025-7-5 12:00:52 | 显示全部楼层
jw*** 发表于 2025-7-5 10:11
大师,再请教一下,我现在用stc32的试验箱,计算出来的值和实际值有差距,实际测试电源电压是4.5V左右,请 ...

使用我的程序试一下
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18917&pid=175153
截图202507051201177401.jpg
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 2025-7-5 14:46:51 | 显示全部楼层
Debu*** 发表于 2025-7-5 12:00
使用我的程序试一下
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18917&pid=175 ...

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

点评

VREF接VCC才可以直接算出电源电压 否则 电源电压需要电阻分压后接ADC通道  详情 回复 发表于 2025-7-5 15:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5791

回帖

1万

积分

超级版主

DebugLab

积分
10398
发表于 2025-7-5 15:09:58 | 显示全部楼层
jw*** 发表于 2025-7-5 14:46
我用你的下载到stc8h8k64u的开发板结果差不多;我大概知道是咋回事了,因为我现在用的是stc32的试验箱, ...

VREF接VCC才可以直接算出电源电压
否则
电源电压需要电阻分压后接ADC通道
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 20:18 , Processed in 0.152257 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表