24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 使用(yòng)ADS1115
技术专题
使用(yòng)ADS1115
使用(yòng)ADS1115
ADS1115是一款精密的16位ADC,具有(yǒu)四个多(duō)路复用(yòng)输入-您可(kě)以单独使用(yòng)每个输入,也可(kě)以成对使用(yòng)每个输入进行差分(fēn)测量。它具有(yǒu)内部校准的基准,可(kě)实现高精度。
这个ads1115教程向您展示如何设置库来驱动芯片,以及如何使用(yòng)不同的PGA增益设置获取读数。它还介绍了即使仅使用(yòng)单電(diàn)源供電(diàn)的设备也能(néng)够测量负電(diàn)压的方法。这使其可(kě)用(yòng)作電(diàn)流吸收器或電(diàn)流源测量设备。
有(yǒu)关芯片的重要信息:
具有(yǒu)16位分(fēn)辨率。
可(kě)以根据PGA设置检测到0.187mV至7.8uV。
可(kě)以采样8到860 SPS。
具有(yǒu)内部参考電(diàn)压。
具有(yǒu)内部PGA(可(kě)编程增益放大器)。
该设备的典型精度為(wèi)0.01%(但最大精度為(wèi)0.15%)。该精度包括所有(yǒu)误差源(参考電(diàn)压,增益误差,失调和噪声)。
ADS1115接線(xiàn)板
ADS1115详细信息
ADS1115规格
范围 |
价值 |
電(diàn)源電(diàn)压(V DD) |
2V0〜5V5 |
绝对最大V DD |
-0.3V〜7V0 |
测量范围 |
-300mV〜Vdd + 300mV |
界面 |
I2C |
I2C率 |
100kHz,400kHz,3.4MHz |
解析度 |
16位(±15位) |
数据速率 |
8〜860 SPS |
多(duō)路输入的数量 |
4 |
有(yǒu)功電(diàn)流 |
〜150uA(最大200uA) |
掉電(diàn)電(diàn)流 |
0.5uA(最大2uA) |
偏移误差[1] |
±3 LSB |
积分(fēn)非線(xiàn)性(INL)[1] |
1 LSB |
增益误差[1],[2],@ 25°C |
0.01%(典型值)0.15%(最大) |
I2C地址(可(kě)选) |
0x48、0x49、0x4a,0x4b |
工作温度 |
-40°C〜125°C |
[1]
FSR±2.048V
[2]包括来自参考電(diàn)压和PGA的所有(yǒu)误差。
ADS1115框图
数据表中的图片
ADS1115引脚排列
ADS1115精度
有(yǒu)趣的图显示了设备的真正功能(néng),数据表中的图19所示:
总误差与输入信号
注意系统的准确性如何包括所有(yǒu)错误源:
获得错误,
差分(fēn)输入误差
偏移误差
和噪音。
ADS1115 I2C寻址
您可(kě)以使用(yòng)四个地址之一来设置ADS1115,因此可(kě)以在单个I2C总線(xiàn)上放置4个ADS1115芯片:
0x48、0x49、0x4a,0x4b。
寻址控制是不常见的,因為(wèi)您只需要使用(yòng)一个输入引脚作為(wèi)地址控制引脚即可(kě)。
通常,您需要两个输入才能(néng)在4个地址之间切换,但是ADS1115 16位ADC使用(yòng)的是巧妙的方案。对单个地址输入进行连续采样,如果将其连接到GND,VDD,SDA或SCL,则可(kě)以分(fēn)别从0x48、0x49、0x4a和0x4b设置地址。
ADS1115省電(diàn)
连续模式
在连续转换模式下,ADS1115的静态電(diàn)流高达150uA。在这种模式下,您可(kě)以让ADS1115在8Hz至860Hz之间采样。
单发模式
ADS1115的默认模式是单次模式,该模式下器件唤醒,进行测量然后返回睡眠状态。睡眠时,该芯片仅消耗0.5uA的典型電(diàn)流。由于设备在上電(diàn)时进入此模式,因此不会产生启动電(diàn)流的激增。
注意:命令界面在掉電(diàn)模式下仍处于活动状态,因此您仍然可(kě)以从芯片中获取数据!
该芯片和模式非常适合需要精确度的電(diàn)池供電(diàn)设备。由于超小(xiǎo)型封装(X2QFN)的尺寸仅為(wèi)2 mm x 1.5 mm x?0.4毫米
性能(néng)与噪声之间的权衡
低速平均
如果以低速运行ADS1115,则内部采样率不会降低,因為(wèi)这是delta sigma转换器通过过采样操作的方式。内部振荡器设置為(wèi)1MHz,并降低至ADC时钟的250kHz。
在活动模式下,将连续收集样本。这些样本在内部进行平均,从而改善了噪声性能(néng)。这也节省了您的处理(lǐ)时间,即您不必在微控制器中执行平均。
因此,如果要获得最佳的噪声性能(néng),请以8Hz(最低采样率)运行采样率。
低采样率的唯一缺点是设备必须连续开启,因此必须始终使用(yòng)電(diàn)源。如果您更关心节省功率,而又(yòu)不太担心噪声性能(néng),则可(kě)以实施突发模式操作。
高速Speed Burst模式
在微控制器的控制下,您可(kě)以实现突发模式以节省功耗。数据表建议您使用(yòng)连续模式下使用(yòng)功率的1/100。这样您就可(kě)以平均使用(yòng)1.5uA的電(diàn)流。
这类似于焦耳小(xiǎo)偷電(diàn)路,在该電(diàn)路中,存储在電(diàn)感器中的能(néng)量突发会在短时间内使LED产生脉冲。您可(kě)以获得足够的可(kě)用(yòng)光,但平均功率降低了。
為(wèi)了如上所述模拟8SPS速率,您将使ADS1115每125ms(1 / 125e-3 = 8)8 Hz拍摄一次单次信号(您可(kě)以通过微控制器代码中的计时器设置此重复率)。
您还可(kě)以将ADS1115的SPS速率设置為(wèi)860Hz,以获得高速捕获。当然,您可(kě)以将两次捕获之间的时间间隔更改為(wèi)每秒(miǎo)或每小(xiǎo)时,以进一步节省電(diàn)量。
ADS1115处于低電(diàn)流模式时,单次读数仅需花(huā)费1.2ms的时间,剩下的时间就不存在了。这是ad1115转换延迟,并在数据表中进行了说明。
注意: ADS1115大约需要25us上電(diàn)-很(hěn)好!
使用(yòng)ALERT / READY引脚
ALERT / Ready引脚有(yǒu)两种用(yòng)途。第一个是“比较器阈值”警报(默认模式)。第二个是“ ADC读取准备就绪”警报。您必须设置一些寄存器以操作ADC就绪ALERT模式。
阈值检测
ADS1115有(yǒu)一个内部比较器,可(kě)将信号输出到ALERT引脚(默认模式)。您可(kě)以使用(yòng)此功能(néng)自动检测超出范围的条件(由阈值寄存器设置)。COMP_QUE寄存器允许您指定断言警报之前有(yǒu)多(duō)少转换超出上限或下限。
ALERT引脚為(wèi)开漏引脚,因此需要上拉電(diàn)阻。
比较器有(yǒu)两个阈值(高和低)。当输入信号在阈值之间时,ALERT信号设置為(wèi)高電(diàn)平(窗口比较器模式)。您可(kě)以使用(yòng)COMP_POL反转Alert输出信号。
ADC就绪中断信号
该引脚的另一种用(yòng)途是用(yòng)作ADC就绪信号。如果将引脚设置為(wèi)ADC就绪信号,则可(kě)以将其馈入微控制器上的外部中断引脚,以便获取ADC读数。
检测ADC是否已完成的另一种方法是读取寄存器值(配置寄存器位15),但是由于要进行I2C事務(wù),因此这当然会花(huā)费更多(duō)的时间。
注意:转换就绪信号是一个8us宽(高)脉冲,表示转换在下降沿可(kě)用(yòng)。
要将芯片设置為(wèi)转换就绪模式,请设置以下寄存器:
将高阈值寄存器的MSB设置為(wèi)1
[例如,Hi_thresh = 0x8000]。
将低阈值寄存器的MSB设置為(wèi)0
[例如,Lo_thresh = 0x0000]。
将比较器队列控制位设置為(wèi)00(0x11以外的任何值)
[例如COMP_QUE [1:0] = 0]。
配置寄存器&=配置寄存器0x0003; //清除b0,b1。
输入多(duō)路复用(yòng)器
您可(kě)以使用(yòng)输入多(duō)路复用(yòng)器在4个单端输入0〜FSR或两个差分(fēn)输入±FSR之间选择。但是,还有(yǒu)另一种MUX模式,该模式使用(yòng)AIN3作為(wèi)AIN0,AIN1和AIN2的参考作為(wèi)该参考的差分(fēn)输入。
您可(kě)以在下图的左侧看到MUX:
从图中还不清楚,但是MUX具有(yǒu)3种模式:
输入信号参考地(所有(yǒu)4个输入都是可(kě)选的)
AIN0(+)〜GND(-),
AIN1(+)〜GND(-),
AIN2(+) 〜GND(-)。
AIN3(+)〜GND(-)。
两个差分(fēn)输入:
AIN0(+)〜AIN1(-),
AIN2(+)〜AIN3(-)。
三个参考输入:
AIN0(+)〜AIN3(-),
AIN1(+)〜AIN3(-),
AIN2(+)〜AIN3(-)。
请参见数据表“配置寄存器”以控制此操作。
PGA增益设定
ADS1115中的增益设置寄存器确实具有(yǒu)标准值,例如x2 x4等(除了最大的2/3值),更容易想到满量程读数的分(fēn)辨率和量程功能(néng)。数据表的排列方式是这样的-因為(wèi)该器件使用(yòng)内部固定的基准電(diàn)压源。
您只需要选择接近所测信号的最佳范围即可(kě)(或在前面添加一个放大器来设置范围)。
您不能(néng)像其他(tā)ADC一样通过添加外部基准電(diàn)压来更改FSR值。范围和分(fēn)辨率如下表所示。
满量程FSR |
重塑(1 LSB) |
±6411毫伏 |
187.5uV |
±4096毫伏 |
125uV的 |
±2048毫伏 |
62.5微伏 |
±1024毫伏 |
31.25uV |
±512毫伏 |
15.625uV |
±256毫伏 |
7.8125微伏 |
满量程分(fēn)辨率
尽管ADS1115具有(yǒu)16位分(fēn)辨率,但它使用(yòng)二进制补码来表示一个值(MSB表示符号位)。这实际上是一个15位分(fēn)辨率的ADC,能(néng)够进行负電(diàn)压和正電(diàn)压测量(在GND至V DD的電(diàn)源范围内!
这样,从GND到正满量程電(diàn)压的输入信号就具有(yǒu)15位的分(fēn)辨率,而从GND到负满量程電(diàn)压的分(fēn)辨率则為(wèi)15位。但是,ADS1115只能(néng)测量低于地面的-300mV。
当使用(yòng)差分(fēn)模式和電(diàn)平转换运算放大器将输入信号移至GDN至V DD范围内时,才真正使用(yòng)±15bit分(fēn)辨率。有(yǒu)一个例外:
要获得±FSR,您可(kě)以使用(yòng)256mV范围,或使用(yòng)输入运算放大器来对输入进行電(diàn)平转换和缩放,或者使用(yòng)差分(fēn)输入)。或者,将一个输入用(yòng)作其他(tā)两个输入的参考。
注意:从上表中可(kě)以看到,15位分(fēn)辨率仍然是非常准确的分(fēn)辨率。
如上所述,可(kě)测量的输入電(diàn)压下降到负300mV。
在最低PGA增益值下,您可(kě)以使用(yòng)器件的满量程分(fēn)辨率(±256mV),这也适合ADS1115的-300mV测量能(néng)力。
因此,即使仅使用(yòng)单个電(diàn)源芯片,您也可(kě)以制造一种能(néng)够测量灌電(diàn)流和灌電(diàn)流的電(diàn)流测量设备。為(wèi)此,您将使用(yòng)合适的测量電(diàn)阻器并对其进行差分(fēn)测量。负電(diàn)压能(néng)力测试结果在这里。
选择较高的PGA增益仍然可(kě)以让您以较低的分(fēn)辨率测量负值。
关于PGA设置的注意事项
可(kě)编程增益设置寄存器(PGA)允许8个值,但最后3个值均提供相同的增益,因此对于PGA值為(wèi)5、6和7的FSR為(wèi)256mV。
因此,共有(yǒu)6种可(kě)用(yòng)设置,允许FSR分(fēn)别為(wèi)±6.144V,±4.096V,±2.048V,±1.024V,±0.512V,±0.256V。
输入電(diàn)压范围
绝对最大電(diàn)压输入為(wèi):
-0.3V〜7V
测量電(diàn)压范围是:
GND-0.3V〜VDD + 0.3V。
请记住,测量范围是固定的,因此最大可(kě)测量输入電(diàn)压為(wèi)±6.144V。
测试负電(diàn)压输入
我曾是 不确定是否可(kě)以测量负電(diàn)压,尤其是使用(yòng)ADS1115的单電(diàn)源供電(diàn)时。数据表确实表明它能(néng)够在-256mV的范围内进行测量,并且在-300mV以上的電(diàn)压下不会爆炸。
事实证明这是对的,因為(wèi)我通过将-5V電(diàn)源小(xiǎo)心地连接到10k電(diàn)位计并调整抽头(确保其不低于-300mV)来测试输入,其值是-100mV,-260mV
这是-260mV输入的结果:
A1:-260.437mV PGA:6144 mv acc:187.5uV
A1:-260.375mV PGA:4096 mv acc:125uV
A1:-260.375mV PGA:2048 mv acc:62.5uV
A1:-259.969mV PGA:1024 mv acc:31.25uV
A1:-259.234mV PGA:512 mv acc:15.625uV
A1:-256.016mV PGA:256 mv acc:7.8125uV
警报/ RDY 0
这是-100mV(大约)输入的结果:
A1:-104.625mV PGA:6144 mv acc:187.5uV
A1:-104.500mV PGA:4096 mv acc:125uV
A1:-104.500mV PGA:2048 mv acc:62.5uV
A1:-104.531mV PGA:1024 mv acc:31.25uV
A1:-104.484mV PGA:512 mv acc:15.625uV
A1:-104.499mV PGA:256 mv acc:7.8125uV
警报/ RDY 0
对于-260mV测量,您可(kě)以看到256mV的FSR达到了满量程,这是您所期望的-这是针对256mV的PGA增益设置(因為(wèi)260mV高于256mV的量程能(néng)力)。
您还可(kě)以看到,对于所有(yǒu)PGA增益,都正确测量了-100mV读数。
因此,这证实了ADS1115无需单独的電(diàn)源即可(kě)读取低至-256mV最小(xiǎo)测量能(néng)力的负電(diàn)压。
注意:此输出的ADS1115 arduino代码可(kě)在页面的下方找到。
ADS1115 ADC FSR
正输出的满量程值為(wèi):
0x7FFF
负输出的满量程值為(wèi):
0x8000
ADC的正值是0x0001,负值是0xFFFF(负2是0xFFFE)。
警告:对于单端测量,在测量0V时,由于器件失调,您仍然会获得负ADC值。
差速器怎么处理(lǐ)?
一种 差分(fēn)测量使用(yòng)两个输入,一个用(yòng)于低端,一个用(yòng)于高端電(diàn)压,因此您可(kě)以测量電(diàn)路中任何一点的電(diàn)压差。正常的单端测量(Ardiuno ADC)只能(néng)测量参考到地的電(diàn)压。
您可(kě)以具有(yǒu)一组差分(fēn)输入或一组差分(fēn)输入(如下所示):
两个差分(fēn)输入:
AIN0(+)〜AIN1(-),
AIN2(+)〜AIN3(-)。
其他(tā)配置在这里。
通常,您需要跨小(xiǎo)而准确的電(diàn)阻进行测量以确定電(diàn)流。ADS1115可(kě)以测量正负電(diàn)压。
差分(fēn)测量是通过使用(yòng)设备内的差分(fēn)放大器(运算放大器)实现的瞬时测量。此测量的最大优势在于,由于跨被测元件的噪声信号相同,因此消除了共模噪声误差。因此,噪声被减去。
使用(yòng)差分(fēn)测量的另一个原因是,您可(kě)能(néng)希望测量未参考到地的電(diàn)压,例如,電(diàn)流检测電(diàn)阻器未在一侧接地,而是在電(diàn)路中的其他(tā)位置。这就是所谓的高端测量,即两个测量電(diàn)压都遠(yuǎn)不接近零。
软件
Arduino IDE:版本1.8.9+
I2Cdev库
I2Cdevlib具有(yǒu)ADS1115库代码以及许多(duō)其他(tā)设备的代码。
该库具有(yǒu)很(hěn)多(duō)功能(néng),受支持的芯片,并且可(kě)以在多(duō)个处理(lǐ)器上运行,但是安装涉及更多(duō)一点,因此您不能(néng)使用(yòng)自动Arduino zip文(wén)件安装程序。
ADS1115 Arduino库
解压缩文(wén)件(ic2devlib-master),然后导航到ic2devlib-master中的Arduino目录。将目录ADS1115和I2Cdev复制到Arduino库目录(通常在Windows上):
C:\ Users \ <用(yòng)户名> \ Documents \ Arduino \ libraries
库代码警告
256mV范围的常数已设置為(wèi)四舍五入的值。
导航至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转接板。
连接線(xiàn)。
100nF電(diàn)容器。
1万锅。
连接数
為(wèi)了进行测试,请使用(yòng)Arduino Uno并按如下所示进行连接:
Arduino的 |
ADS1115 |
5伏 |
VDD |
地線(xiàn) |
地線(xiàn) |
A5 |
SCL |
A4 |
SDA |
地線(xiàn) |
地址 |
2个 |
警报 |
10k锅的雨刷器。 |
A1 |
注意:将10k電(diàn)位器的两端连接到5V和GND。
在5V和GND之间连接100nF電(diàn)容器。
ADS1115面包板布局
使用(yòng)ADS1115的Arduino示例
草(cǎo)图示例1
您可(kě)以使用(yòng)以下程序通过轮询来测试ADS1115:
要查看注册状态信息,请对ads1115.h进行编辑,以通过取消注释以下行来允许调试输出:
//#define ADS1115_SERIAL_DEBUG
在串行监视器中键入字母s以查看寄存器状态。
注意:我更改了pollAlertReadyPin()代码,以便在失败时重新(xīn)初始化ads1115。打开和关闭PC时,将重置寄存器,并将队列寄存器设置為(wèi)11:禁用(yòng)警报就绪引脚。现在,如果发生此错误,则芯片将正确重启。
复制草(cǎo)图
// I2C设备类(I2Cdev)演示ADS1115类的Arduino草(cǎo)图
//读取
ADS1115的两个差分(fēn)输入并以mV表示值的示例// // Eadf(2016-03-22)
//
//变更日志(zhì):
// 初始版本
//
//修改了JFM,以重新(xīn)初始化和输出多(duō)个PGA分(fēn)辨率,以便
//比较读数。同样,当调试处于活动状态时,串行接收's'
//输出寄存器值。