24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
技术专题>
使用ADS1115

技术专题

使用ADS1115


使用ADS1115

ADS1115是一款精密的16ADC,具有四个多路复用输入-您可以单独使用每个输入,也可以成对使用每个输入进行差分测量。它具有内部校准的基准,可实现高精度。

这个ads1115教程向您展示如何设置库来驱动芯片,以及如何使用不同的PGA增益设置获取读数。它还介绍了即使仅使用单电源供电的设备也能够测量负电压的方法。这使其可用作电流吸收器或电流源测量设备。

有关芯片的重要信息:

具有16位分辨率。

可以根据PGA设置检测到0.187mV7.8uV

可以采样8860 SPS

具有内部参考电压。

具有内部PGA(可编程增益放大器)。

该设备的典型精度为0.01%(但最大精度为0.15%)。该精度包括所有误差源(参考电压,增益误差,失调和噪声)。

ADS1115接线板

ADS1115详细信息

ADS1115规格

  范围

价值

  电源电压(V DD

2V05V5

  绝对最大V DD

-0.3V7V0

  测量范围

-300mVVdd + 300mV

  界面

I2C

  I2C

100kHz400kHz3.4MHz

  解析度

16位(±15位)

  数据速率

8860 SPS

  多路输入的数量

4

  有功电流

150uA(最大200uA

  掉电电流

0.5uA(最大2uA

  偏移误差[1]

±3 LSB

  积分非线性(INL[1]

1 LSB

  增益误差[1][2]@ 25°C

0.01%(典型值)0.15%(最大)

  I2C地址(可选)

0x480x490x4a0x4b

  工作温度

-40°C125°C

[1] FSR±2.048V
[2]
包括来自参考电压和PGA的所有误差。

ADS1115框图

数据表中的图片

ADS1115引脚排列

ADS1115精度

有趣的图显示了设备的真正功能,数据表中的图19所示:

总误差与输入信号

注意系统的准确性如何包括所有错误源:

获得错误,

差分输入误差

偏移误差

和噪音。

ADS1115 I2C寻址

您可以使用四个地址之一来设置ADS1115,因此可以在单个I2C总线上放置4ADS1115芯片:

    0x480x490x4a0x4b

寻址控制是不常见的,因为您只需要使用一个输入引脚作为地址控制引脚即可。

通常,您需要两个输入才能在4个地址之间切换,但是ADS1115 16ADC使用的是巧妙的方案。对单个地址输入进行连续采样,如果将其连接到GNDVDDSDASCL,则可以分别从0x480x490x4a0x4b设置地址。

ADS1115省电

连续模式

在连续转换模式下,ADS1115的静态电流高达150uA。在这种模式下,您可以让ADS11158Hz860Hz之间采样。

单发模式

ADS1115的默认模式是单次模式,该模式下器件唤醒,进行测量然后返回睡眠状态。睡眠时,该芯片仅消耗0.5uA的典型电流。由于设备在上电时进入此模式,因此不会产生启动电流的激增。

注意:命令界面在掉电模式下仍处于活动状态,因此您仍然可以从芯片中获取数据!

该芯片和模式非常适合需要精确度的电池供电设备。由于超小型封装(X2QFN)的尺寸仅为2 mm x 1.5 mm x0.4毫米

性能与噪声之间的权衡

低速平均

如果以低速运行ADS1115,则内部采样率不会降低,因为这是delta sigma转换器通过过采样操作的方式。内部振荡器设置为1MHz,并降低至ADC时钟的250kHz

在活动模式下,将连续收集样本。这些样本在内部进行平均,从而改善了噪声性能。这也节省了您的处理时间,即您不必在微控制器中执行平均。

因此,如果要获得最佳的噪声性能,请以8Hz(最低采样率)运行采样率。

低采样率的唯一缺点是设备必须连续开启,因此必须始终使用电源。如果您更关心节省功率,而又不太担心噪声性能,则可以实施突发模式操作。

高速Speed Burst模式

在微控制器的控制下,您可以实现突发模式以节省功耗。数据表建议您使用连续模式下使用功率的1/100。这样您就可以平均使用1.5uA的电流。

这类似于焦耳小偷电路,在该电路中,存储在电感器中的能量突发会在短时间内使LED产生脉冲。您可以获得足够的可用光,但平均功率降低了。

为了如上所述模拟8SPS速率,您将使ADS1115125ms1 / 125e-3 = 88 Hz拍摄一次单次信号(您可以通过微控制器代码中的计时器设置此重复率)。

您还可以将ADS1115SPS速率设置为860Hz,以获得高速捕获。当然,您可以将两次捕获之间的时间间隔更改为每秒或每小时,以进一步节省电量。

ADS1115处于低电流模式时,单次读数仅需花费1.2ms的时间,剩下的时间就不存在了。这是ad1115转换延迟,并在数据表中进行了说明。

注意: ADS1115大约需要25us上电-很好!

使用ALERT / READY引脚

ALERT / Ready引脚有两种用途。第一个是比较器阈值警报(默认模式)。第二个是“ ADC读取准备就绪警报。您必须设置一些寄存器以操作ADC就绪ALERT模式。

阈值检测

ADS1115有一个内部比较器,可将信号输出到ALERT引脚(默认模式)。您可以使用此功能自动检测超出范围的条件(由阈值寄存器设置)。COMP_QUE寄存器允许您指定断言警报之前有多少转换超出上限或下限。

ALERT引脚为开漏引脚,因此需要上拉电阻。

比较器有两个阈值(高和低)。当输入信号在阈值之间时,ALERT信号设置为高电平(窗口比较器模式)。您可以使用COMP_POL反转Alert输出信号。

ADC就绪中断信号

该引脚的另一种用途是用作ADC就绪信号。如果将引脚设置为ADC就绪信号,则可以将其馈入微控制器上的外部中断引脚,以便获取ADC读数。

检测ADC是否已完成的另一种方法是读取寄存器值(配置寄存器位15),但是由于要进行I2C事务,因此这当然会花费更多的时间。

注意:转换就绪信号是一个8us宽(高)脉冲,表示转换在下降沿可用。

要将芯片设置为转换就绪模式,请设置以下寄存器:

将高阈值寄存器的MSB设置为1
    [
例如,Hi_thresh = 0x8000]
将低阈值寄存器的MSB设置为0
    [
例如,Lo_thresh = 0x0000]
将比较器队列控制位设置为000x11以外的任何值)
    [
例如COMP_QUE [10] = 0]
   
配置寄存器&=配置寄存器0x0003; //清除b0b1

输入多路复用器

您可以使用输入多路复用器在4个单端输入0FSR或两个差分输入±FSR之间选择。但是,还有另一种MUX模式,该模式使用AIN3作为AIN0AIN1AIN2的参考作为该参考的差分输入。

您可以在下图的左侧看到MUX

从图中还不清楚,但是MUX具有3种模式:
输入信号参考地(所有4个输入都是可选的)
    AIN0
+)〜GND-),
    AIN1
+)〜GND-),
    AIN2
+) 〜GND-)。
    AIN3
+)〜GND-)。
两个差分输入:
    AIN0
+)〜AIN1-),
    AIN2
+)〜AIN3-)。
三个参考输入:
    AIN0
+)〜AIN3-),
    AIN1
+)〜AIN3-),
    AIN2
+)〜AIN3-)。
请参见数据表配置寄存器以控制此操作。

PGA增益设定

ADS1115中的增益设置寄存器确实具有标准值,例如x2 x4等(除了最大的2/3值),更容易想到满量程读数的分辨率和量程功能。数据表的排列方式是这样的-因为该器件使用内部固定的基准电压源。

您只需要选择接近所测信号的最佳范围即可(或在前面添加一个放大器来设置范围)。

您不能像其他ADC一样通过添加外部基准电压来更改FSR值。范围和分辨率如下表所示。

满量程FSR

重塑(1 LSB

  ±6411毫伏

187.5uV

  ±4096毫伏

125uV

  ±2048毫伏

62.5微伏

  ±1024毫伏

31.25uV

  ±512毫伏

15.625uV

  ±256毫伏

7.8125微伏

满量程分辨率

尽管ADS1115具有16位分辨率,但它使用二进制补码来表示一个值(MSB表示符号位)。这实际上是一个15位分辨率的ADC,能够进行负电压和正电压测量(在GNDV DD的电源范围内!

这样,从GND到正满量程电压的输入信号就具有15位的分辨率,而从GND到负满量程电压的分辨率则为15位。但是,ADS1115只能测量低于地面的-300mV

当使用差分模式和电平转换运算放大器将输入信号移至GDNV DD范围内时,才真正使用±15bit分辨率。有一个例外:

要获得±FSR,您可以使用256mV范围,或使用输入运算放大器来对输入进行电平转换和缩放,或者使用差分输入)。或者,将一个输入用作其他两个输入的参考。

注意:从上表中可以看到,15位分辨率仍然是非常准确的分辨率。

如上所述,可测量的输入电压下降到负300mV

在最低PGA增益值下,您可以使用器件的满量程分辨率(±256mV),这也适合ADS1115-300mV测量能力。

因此,即使仅使用单个电源芯片,您也可以制造一种能够测量灌电流和灌电流的电流测量设备。为此,您将使用合适的测量电阻器并对其进行差分测量。负电压能力测试结果在这里。

选择较高的PGA增益仍然可以让您以较低的分辨率测量负值。

关于PGA设置的注意事项

可编程增益设置寄存器(PGA)允许8个值,但最后3个值均提供相同的增益,因此对于PGA值为567FSR256mV

因此,共有6种可用设置,允许FSR分别为±6.144V±4.096V±2.048V±1.024V±0.512V±0.256V

输入电压范围

绝对最大电压输入为:

     -0.3V7V

测量电压范围是:

    GND-0.3VVDD + 0.3V

请记住,测量范围是固定的,因此最大可测量输入电压为±6.144V

测试负电压输入

我曾是 不确定是否可以测量负电压,尤其是使用ADS1115的单电源供电时。数据表确实表明它能够在-256mV的范围内进行测量,并且在-300mV以上的电压下不会爆炸。

事实证明这是对的,因为我通过将-5V电源小心地连接到10k电位计并调整抽头(确保其不低于-300mV)来测试输入,其值是-100mV-260mV 

这是-260mV输入的结果:

A1-260.437mV PGA6144 mv acc187.5uV

A1-260.375mV PGA4096 mv acc125uV

A1-260.375mV PGA2048 mv acc62.5uV

A1-259.969mV PGA1024 mv acc31.25uV

A1-259.234mV PGA512 mv acc15.625uV

A1-256.016mV PGA256 mv acc7.8125uV

警报/ RDY 0

这是-100mV(大约)输入的结果:

A1-104.625mV PGA6144 mv acc187.5uV

A1-104.500mV PGA4096 mv acc125uV

A1-104.500mV PGA2048 mv acc62.5uV

A1-104.531mV PGA1024 mv acc31.25uV

A1-104.484mV PGA512 mv acc15.625uV

A1-104.499mV PGA256 mv acc7.8125uV

警报/ RDY 0

对于-260mV测量,您可以看到256mVFSR达到了满量程,这是您所期望的-这是针对256mVPGA增益设置(因为260mV高于256mV的量程能力)。

您还可以看到,对于所有PGA增益,都正确测量了-100mV读数。

因此,这证实了ADS1115无需单独的电源即可读取低至-256mV最小测量能力的负电压。

注意:此输出的ADS1115 arduino代码可在页面的下方找到。

ADS1115 ADC FSR

正输出的满量程值为:

        0x7FFF

负输出的满量程值为:

        0x8000

ADC的正值是0x0001,负值是0xFFFF(负20xFFFE)。

警告:对于单端测量,在测量0V时,由于器件失调,您仍然会获得负ADC值。

差速器怎么处理?

一种 差分测量使用两个输入,一个用于低端,一个用于高端电压,因此您可以测量电路中任何一点的电压差。正常的单端测量(Ardiuno ADC)只能测量参考到地的电压。

您可以具有一组差分输入或一组差分输入(如下所示):

两个差分输入:
    AIN0
+)〜AIN1-),
    AIN2
+)〜AIN3-)。

其他配置在这里。

通常,您需要跨小而准确的电阻进行测量以确定电流。ADS1115可以测量正负电压。

差分测量是通过使用设备内的差分放大器(运算放大器)实现的瞬时测量。此测量的最大优势在于,由于跨被测元件的噪声信号相同,因此消除了共模噪声误差。因此,噪声被减去。

使用差分测量的另一个原因是,您可能希望测量未参考到地的电压,例如,电流检测电阻器未在一侧接地,而是在电路中的其他位置。这就是所谓的高端测量,即两个测量电压都远不接近零。

软件

Arduino IDE:版本1.8.9+

I2Cdev

I2Cdevlib具有ADS1115库代码以及许多其他设备的代码。

该库具有很多功能,受支持的芯片,并且可以在多个处理器上运行,但是安装涉及更多一点,因此您不能使用自动Arduino zip文件安装程序。

ADS1115 Arduino

解压缩文件(ic2devlib-master),然后导航到ic2devlib-master中的Arduino目录。将目录ADS1115I2Cdev复制到Arduino库目录(通常在Windows上):

    C\ Users \ <用户名> \ Documents \ Arduino \ libraries

库代码警告

256mV范围的常数已设置为四舍五入的值。

导航至ADC1115.h并更改以下行:

    #define ADS1115_MV_0P256 0.007813
    #define ADS1115_MV_0P256B 0.007813
    #define ADS1115_MV_0P256C 0.007813

   

    #define ADS1115_MV_0P256 0.0078125
    #define ADS1115_MV_0P256B 0.0078125
    #define ADS1115_MV_0P256C 0.0078125

硬件

组件

Arduino Uno R3

ADS1115转接板。

连接线。

100nF电容器。

1万锅。

连接数

为了进行测试,请使用Arduino Uno并按如下所示进行连接:

Arduino

ADS1115

  5

VDD

  地线

地线

  A5

SCL

  A4

SDA

  地线

地址

  2

警报

  10k锅的雨刷器。

A1

注意:将10k电位器的两端连接到5VGND
5VGND之间连接100nF电容器。 

ADS1115面包板布局

使用ADS1115Arduino示例

草图示例1

您可以使用以下程序通过轮询来测试ADS1115

要查看注册状态信息,请对ads1115.h进行编辑,以通过取消注释以下行来允许调试输出:

    //define ADS1115_SERIAL_DEBUG

在串行监视器中键入字母s以查看寄存器状态。

注意:我更改了pollAlertReadyPin()代码,以便在失败时重新初始化ads1115。打开和关闭PC时,将重置寄存器,并将队列寄存器设置为11:禁用警报就绪引脚。现在,如果发生此错误,则芯片将正确重启。

复制草图

// I2C设备类(I2Cdev)演示ADS1115类的Arduino草图

//读取

ADS1115的两个差分输入并以mV表示值的示例// // Eadf2016-03-22

//

//变更日志:

// 初始版本

//

//修改了JFM,以重新初始化和输出多个PGA分辨率,以便

//比较读数。同样,当调试处于活动状态时,串行接收's'

//输出寄存器值。

请输入搜索关键字

确定