找回密码
 立即注册
楼主: zackwu

求助4-20MA采集

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-10-27 11:45:23

12

主题

53

回帖

474

积分

中级会员

积分
474
发表于 2025-9-13 13:27:33 | 显示全部楼层
梁*** 发表于 2025-9-13 11:21
只要是电流信号,采样电阻的压降不影响设备运行,就可以使用上述方案处理。 ...

感谢回复,梁工

打算这个复用为三种采集
1:IO信号,当接24V时,负载怎么计算?会不会直接烧掉
当接0V时是直接拉低可以通过值来判断,
2:4-20MA,
3:0-190欧姆电阻,两根线,一根接0V,一根接信号,这个是怎么计算的。

还望梁工继续指点下

点评

采样电流不能再接电压,那样可能会因为大电流烧掉采样电阻,过压烧掉IO甚至单片机。  详情 回复 发表于 2025-9-13 14:00
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:215
  • 最近打卡:2025-10-30 10:24:20

83

主题

6817

回帖

1万

积分

超级版主

积分
14618
发表于 2025-9-13 14:00:11 | 显示全部楼层
zac*** 发表于 2025-9-13 13:27
感谢回复,梁工

打算这个复用为三种采集

采样电流不能再接电压,那样可能会因为大电流烧掉采样电阻,过压烧掉IO甚至单片机。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-10-27 11:45:23

12

主题

53

回帖

474

积分

中级会员

积分
474
发表于 2025-9-15 11:17:20 | 显示全部楼层
梁*** 发表于 2025-9-13 14:00
采样电流不能再接电压,那样可能会因为大电流烧掉采样电阻,过压烧掉IO甚至单片机。 ...

你好,梁工,
板子回来了,
读取反馈电压
AVREF.png


根据公式套入数据

第一步读取ADC15通道反馈的参考电压=2.518
第二步,带入计算公式 4096*20*0.125(采样电阻)/2.518(读取的参考电压) = 4066.7196
第三步,则校准系数为K=20/4066.7196=0.0049179
第四步,则计算出的理论电流 I= ADC*0.0049179 如ADC值为1000,则I=1000*0.0047179=4.7179


程序为

//adc = ADC_convert(15);        //Bandgap
//adc = ADC_convert(0);        //Bandgap
VV = ADC_convert(0);        //Bandgap
//v = (4096 * 1.19f) / adc;        //计算对应的VCC电压, 12位ADC, 2位小数(定点整数计算,扩大100倍)

//printf("ADC15=%u,  AVREF=%.3fV\n", adc, v);//接收←ADC15=1950,  AVREF=2.500V
//printf("ADC15=%u,  AVREF=%.1fmV\n", adc, v*1000);//接收←ADC15=1950,  AVREF=2499.6mV
printf("ADC15=%u,  AVREF=%.4f\n", VV, VV*0.0049179);//


得到的结果为

截图202509151113171853.jpg


现在有一个问题就是,在加载到12.6MA的时候ADC读取的数据就会突变,而4-20MA发生器给的电流是对的。

8f54abe41df071bc87893f5cba01468a.jpg


能否请梁工帮忙看一下,

点评

125欧姆采样,12.6mA采样到1.575V电压,这个电压是MCU的弱上拉启动电压,很大可能是你的ADC输入没有设置为高阻。 另外,STC32G12K128的AVREF外接了2.5V基准电压,直接使用,不需要再读15通道校准了。  详情 回复 发表于 2025-9-15 14:48
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:215
  • 最近打卡:2025-10-30 10:24:20

83

主题

6817

回帖

1万

积分

超级版主

积分
14618
发表于 2025-9-15 14:48:11 | 显示全部楼层
zac*** 发表于 2025-9-15 11:17
你好,梁工,
板子回来了,
读取反馈电压

125欧姆采样,12.6mA采样到1.575V电压,这个电压是MCU的弱上拉启动电压,很大可能是你的ADC输入没有设置为高阻。
另外,STC32G12K128的AVREF外接了2.5V基准电压,直接使用,不需要再读15通道校准了。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-10-27 11:45:23

12

主题

53

回帖

474

积分

中级会员

积分
474
发表于 2025-9-15 15:27:29 | 显示全部楼层
梁*** 发表于 2025-9-15 14:48
125欧姆采样,12.6mA采样到1.575V电压,这个电压是MCU的弱上拉启动电压,很大可能是你的ADC输入没有设置 ...

屏幕截图 2025-09-15 152705.png


专家,佩服

点评

STC8系列、STC32系列、AI8051U系列的12位ADC精度很高的(严格测试精度小于1LSB),如果应用中出现明显误差(大于0.1%),则要仔细检查程序或硬件。  详情 回复 发表于 2025-9-15 15:55
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:215
  • 最近打卡:2025-10-30 10:24:20

83

主题

6817

回帖

1万

积分

超级版主

积分
14618
发表于 2025-9-15 15:55:43 | 显示全部楼层

STC8系列、STC32系列、AI8051U系列的12位ADC精度很高的(严格测试精度小于1LSB),如果应用中出现明显误差(大于0.1%),则要仔细检查程序或硬件。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-31 09:34 , Processed in 0.118333 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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