TI论坛
直播中

绝代双骄

12年用户 1106经验值
私信 关注
[问答]

ADS1115使用AIN2,AIN3差分采集电压,负电压采集的值是0x8000~0xFFFF,为什么输出电压值一直是65535?


  • 看数据手册是可以采集负电压的,并且说正电压采集的值是0~0x7FFF,负电压采集的值是0x8000~0xFFFF,负电压输出的值是补码,需要取反加1得到电压值,但是为什么输出电压值一直是65535是配置不对还是怎么回事,参考的代码百度文库搜索“基于51的ads1115程序”,现在调试了两天了都没调试出来,大家有遇到这个问题的吗,谢谢各位!!!!

回帖(2)

李娟

昨天 10:07
 我估计是你的理解有误吧
INPUT SIGNAL, VIN   (AINP – AINN)
负电压是表示 AINP 低于 AINN 端的电压 (上面的减法的结果是负)
举报

贾桂林

昨天 18:06
首先,我们需要了解ADS1115的工作原理和配置。ADS1115是一款16位模数转换器(ADC),支持差分输入和单端输入。在差分输入模式下,AIN2和AIN3可以作为一对差分输入通道。根据您的描述,您正在使用AIN2和AIN3进行差分采集电压。

在差分输入模式下,ADS1115的输出范围是0x0000到0xFFFF。其中,0x0000表示-VFS(全量程负电压),0x7FFF表示0V,0x8000表示VFS(全量程正电压),0xFFFF表示-VFS。因此,负电压的输出值范围是0x8000到0xFFFF。

您提到的问题是在负电压采集时,输出电压值一直是65535(0xFFFF)。这可能是因为您的代码没有正确处理负电压的补码转换。根据数据手册,负电压输出的值是补码,需要取反加1得到电压值。以下是处理负电压补码的步骤:

1. 读取ADC值(假设为adc_value)。
2. 检查adc_value是否大于0x7FFF(即负电压)。
3. 如果adc_value大于0x7FFF,执行补码转换:
   a. 取反adc_value(即0xFFFF - adc_value)。
   b. 加1。
4. 将转换后的值用于计算电压值。

请检查您的代码,确保正确处理负电压的补码转换。如果您仍然遇到问题,请提供您的代码片段,以便我们进一步分析和解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分