0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADS1115-16Bit ADC调试方案

云深之无迹 来源:云深之无迹 2023-10-21 17:45 次阅读

ADC这个东西好神奇,作为模拟到数字的枢纽,值得研究。我昨天写了MCP,今天是TI的,其实手头还有别的,但是没有必要了,再写一个SPI的就全了。

Ti.ADS1115-15Bit差分ADC

MCP3421-18bit ADC 调试

之前水平不高,写的东西不太行,这篇其实是对之前的一个补充,其实15bit也没有错,因为有些条件会丢失一位。

后面有一段计算,详细的去看数据手册。

5f31d916-6fe8-11ee-939d-92fbcf53809c.png

以ADS1115的框图开始

增加增益还可以降低输入参考噪声,这在测量低电平信号时特别有用。调节PGA。

5f423680-6fe8-11ee-939d-92fbcf53809c.jpg

配置的时候需要三个字节,在编程的时候需要注意

在从机发送模式下,主机发送的第一个字节是 7 位从机地址,后跟高 R/ W位。

该字节将从设备置于发送模式并指示正在读取 ADS111x。

从机发送的下一个字节是寄存器的最高有效字节,由寄存器地址指针位 P[1:0] 指示。

该字节后面是来自主机的确认。然后,从机发送剩余的最低有效字节,随后是主机的确认。主设备可以在任何字节之后通过不确认或发出 START 或 STOP 条件来终止传输。

5f504d56-6fe8-11ee-939d-92fbcf53809c.png

A0 和 A1 的值由 ADDR 引脚决定

看我标红的地方,以前一直不理解为什么有高有低,现在我理解了,是因为这个地方两个状态都有可能,要看外部的设置。

5f596b16-6fe8-11ee-939d-92fbcf53809c.png

后面的两位就是不确定的数据位

5f64fde6-6fe8-11ee-939d-92fbcf53809c.png

这些都是

5f79a3d6-6fe8-11ee-939d-92fbcf53809c.png

中间是范围,周围两个是溢出的

5f8a4024-6fe8-11ee-939d-92fbcf53809c.png

看换算

5f956be8-6fe8-11ee-939d-92fbcf53809c.png

后面两个位是要配置的

5f9c91f2-6fe8-11ee-939d-92fbcf53809c.png

前面的位都不管,后面的位是两位,是写明要操作的寄存器

5fb969da-6fe8-11ee-939d-92fbcf53809c.png

这个读取的时候是很简单的,就是16个位

5fd62de0-6fe8-11ee-939d-92fbcf53809c.png

这个寄存器有点复杂

5fe38a4e-6fe8-11ee-939d-92fbcf53809c.png

这个是第一个OS,可写可读,上面已经说明作用了

5fece7e2-6fe8-11ee-939d-92fbcf53809c.png

这个是1115才有的多功能MUX

5ff807ee-6fe8-11ee-939d-92fbcf53809c.png

就是个多功能的开关

一个极接地,另外一个接输入,也就是构成了单端的输入,因为一段已经是确定的。

60109e26-6fe8-11ee-939d-92fbcf53809c.png

这个是PGA的功能,他的粒度是比MCP的小的

6023b25e-6fe8-11ee-939d-92fbcf53809c.png

在这里

602e23a6-6fe8-11ee-939d-92fbcf53809c.png

还是得TI,16位干到了和MCP18位一样的效果

60363866-6fe8-11ee-939d-92fbcf53809c.png

这个是一个转换速率,通过这个合理的选择可以抑制不少噪音

后面的我觉得没有什么作用,好像我没有想到有什么应用。

604f4d74-6fe8-11ee-939d-92fbcf53809c.png

其实也不是完全没有用,就是这里可以作为一个中断的引脚来节省资源

60773ac8-6fe8-11ee-939d-92fbcf53809c.png

真实的连接可能是这样的

ADS111x 的全差分电压输入非常适合连接具有较低源阻抗的差分源,例如热电偶和热敏电阻。尽管 ADS111x 可以读取双极性差分信号,但这些器件不能接受任一输入上的负电压。 这句话有点拗口,意思可能是不可以直接接负电压。单端口的情况下不可以直接接负电压。

60814856-6fe8-11ee-939d-92fbcf53809c.png

在MCP里面也是

608c7bfe-6fe8-11ee-939d-92fbcf53809c.png

单端输入不准是负数

ADS111x 在转换期间消耗瞬态电流。0.1μF 电源旁路电容器可提供电源所需的瞬时额外电流。 SDA 和 SCL 线上都需要上拉电阻,因为 I 2 C 总线驱动器是漏极开路的。这些电阻器的大小取决于总线运行速度和总线线路的电容。电阻值越高,功耗越低,但会增加总线上的转换时间,从而限制总线速度。较低阻值的电阻可实现更高的速度,但代价是功耗更高。长总线具有更高的电容,并且需要更小的上拉电阻来补偿。不要使用太小的电阻,因为总线驱动器可能无法将总线拉低。 单端信号范围从 0 V 到正电源或 +FS,以较低者为准。 负电压不能施加到这些器件,因为 ADS111x 只能接受相对于地的正电压。 ADS111x 在输入范围内不会失去线性度。 比较好玩的是这个:通过适当设置 MUX[2:0] 位,ADS1115 还允许 AIN3 作为测量的公共点。

60964b66-6fe8-11ee-939d-92fbcf53809c.png

那就是这个,注意,不是直接接地

AIN0、AIN1 和 AIN2 都可以相对于 AIN3 进行测量。在此配置中,ADS1115 通过输入运行,其中 AIN3 作为公共点。此功能提高了单端配置的可用范围,因为当GND < V (AIN3) < VDD 时允许负差分电压;然而,不提供共模噪声衰减。

60a6c392-6fe8-11ee-939d-92fbcf53809c.png

这个地我也说不明白

二极管的电流处理能力有限,并且长时间超出电源轨约 300 mV 的模拟输入电压可能会永久损坏 ADS111x。防止过压的一种方法是在输入线上放置限流电阻。ADS111x 模拟输入可承受高达 10 mA 的连续电流。

噪音什么的,我就不细说了。

噪声分量的幅度通常小于实际传感器信号。使用截止频率设置为输出数据速率或高 10 倍的一阶 RC 滤波器作为系统设计的一般良好起点。

高端的型号有引脚没有全部使用,怎么办?

浮动未使用的模拟输入,或将未使用的模拟输入连接到中间电源或 VDD。可以将未使用的模拟输入连接到 GND,但可能会产生比以前的选项更高的泄漏电流。可以直接连到VDD浮动 NC(未连接)引脚,或将 NC 引脚连接到 GND。如果未使用ALERT/RDY 输出引脚,请将该引脚悬空或使用弱上拉电阻将该引脚连接至 VDD。

60ce14a6-6fe8-11ee-939d-92fbcf53809c.png

写入配置寄存器以将 ADS111x 设置为连续转换模式,然后读取转换结果,请按以下顺序发送以下字节。

60d9047e-6fe8-11ee-939d-92fbcf53809c.png

基于电阻分流的电流测量解决方案广泛用于监测负载电流。低侧电流分流测量与总线电压无关,因为分流共模电压接近地。

60eee5e6-6fe8-11ee-939d-92fbcf53809c.png

负载电流通过测量分流电阻两端的电压来确定

61097370-6fe8-11ee-939d-92fbcf53809c.jpg

计算

对接地参考信号进行电平转换,以允许在使用单极电源时进行双向电流测量。

分流电阻器 V SHUNT两端的电压由共模电压 V CM进行电平转换

612592f8-6fe8-11ee-939d-92fbcf53809c.jpg

也就是这样的

6132240a-6fe8-11ee-939d-92fbcf53809c.png

也就是前面是控制OP在正常的工作范围里面,后面是一个放大的同相

最后面加入ADC之前是一个RC滤波,要求在ADC 差分输入电压,定义成Vcm-Vout。

分流电阻器 (R SHUNT ) 是与负载串联插入的精确电阻。

如果分流器两端的绝对压降 |V SHUNT | 占总线电压的百分比较大,则压降可能会降低整体效率和系统性能。

如果 |V分流| 太低,测量小电压降需要仔细设计并正确选择 ADC、运算放大器和精密电阻。

确保分流端子处的绝对电压不会导致违反运算放大器的输入共模电压范围要求。

由于电流流过分流电阻,分流电阻上的功耗会增加温度。为了最大限度地减少温度变化引起的测量误差,选择低漂移分流电阻。

为了最大限度地减少测量增益误差,选择具有低容差值的分流电阻。

要消除杂散接地电阻引起的误差,使用四线开尔文连接的分流电阻。

61462dce-6fe8-11ee-939d-92fbcf53809c.png

R 12 3 4来调节运放的共模电压

如果 Vout连接到 ADC 正输入 (AINP),且 Vcm连接到 ADC 负输入 (AINN),则 Vcm将作为 ADC 的共模电压出现。

如果 Vcm设置为中间电源 (Vdd / 2),则此配置允许伪差分测量并使用 ADC 的最大动态范围。

可以使用连接 VDD 和 GND 的电阻分压器(后接缓冲放大器)来生成 V CM。经典玩法

后面的滤波

61541966-6fe8-11ee-939d-92fbcf53809c.jpg

还添加了两个共模滤波电容器(Ccm1和 Ccm2),以提供高频共模噪声分量的衰减。选择比这些共模电容器至少大一个数量级 (10 倍) 的差分电容器 Cdiff ,因为这些共模电容器的不匹配会将共模噪声转换为差分噪声。

616f6dba-6fe8-11ee-939d-92fbcf53809c.png

看个RC就好了

6181a124-6fe8-11ee-939d-92fbcf53809c.png

自带的数字滤波器也是差不多

618c7126-6fe8-11ee-939d-92fbcf53809c.png

完美

61a0ce0a-6fe8-11ee-939d-92fbcf53809c.png

地址最方便就是接地了,也就是0x48的地址

61bd3a54-6fe8-11ee-939d-92fbcf53809c.png

我们对最重要的配置寄存器来一些封装吧

61e0f066-6fe8-11ee-939d-92fbcf53809c.png

最后的寄存器的样子就是这样

61eeaddc-6fe8-11ee-939d-92fbcf53809c.png

使用的时候可以这样写

6200ff28-6fe8-11ee-939d-92fbcf53809c.png

函数定义,函数名为ADS1115_init。这个函数接收三个参数

I2C_HandleTypeDef *hi2c:这是一个指向I2C句柄类型的指针,用于操作I2C设备。 uint16_t Addr:这是一个无符号16位整数,表示ADS1115设备的地址。 ADS1115_Config_t config:这是一个ADS1115配置结构体,包含了初始化ADS1115所需的配置信息。函数返回一个指向ADS1115_Handle_t类型的指针,这个指针指向一个ADS1115设备实例。通常来说,这个函数会创建一个新的ADS1115_Handle_t实例,然后使用传入的配置信息对其进行初始化,最后返回这个实例的指针。

620a94fc-6fe8-11ee-939d-92fbcf53809c.png

驱动一个ADC,重要的事情是,IIC硬件的驱动,地址的确认,相关寄存器的操作,这个就是句柄了。

62223850-6fe8-11ee-939d-92fbcf53809c.png

需要的配置的和读取的都这样设计好

6236d2a6-6fe8-11ee-939d-92fbcf53809c.png

分配内存空间,创建一个ADS1115_Handle_t类型的指针pConfig

注意最后的config,因为指针是需要传出去的。其次就是结构体是倒着看,hi2c给了等号左边的元素。

623e4aea-6fe8-11ee-939d-92fbcf53809c.png

释放一块内存

6270ec84-6fe8-11ee-939d-92fbcf53809c.png

接下来我们组装一个函数

6290f9d4-6fe8-11ee-939d-92fbcf53809c.png

channel:通道选择,通过左移6位后与config.channel进行按位或操作; pgaConfig:增益配置,通过左移3位后与config.pgaConfig进行按位或操作; operatingMode:工作模式,通过左移0位后与config.operatingMode进行按位或操作。

62a59452-6fe8-11ee-939d-92fbcf53809c.png

这个是更新配置

62b6c704-6fe8-11ee-939d-92fbcf53809c.png

我写程序的时候使用了中断

62d906f2-6fe8-11ee-939d-92fbcf53809c.png

上面的封装可以让人很方便进行配置

62e3c416-6fe8-11ee-939d-92fbcf53809c.png

中断的时候需要在it文件的里面打开

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5029

    浏览量

    117732
  • ti
    ti
    +关注

    关注

    111

    文章

    8257

    浏览量

    210928
  • adc
    adc
    +关注

    关注

    95

    文章

    5651

    浏览量

    539478
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89600

原文标题:ADS1115-16Bit ADC 调试.上

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADS1115实现ad采集和显示的程序

    新手求助,求ADS1115实现ad采集和显示的程序,在网上找到的好像没法用啊这是ADS1115_H_#ifndef ADS1115_H_#define ADS1115
    发表于 07-14 16:55

    ADS1115是什么意思呢

    内部基准、振荡器和可编程比较器且兼容 I2C 的ADS111x、超小型、低功耗 860SPS、16ADC 。在操作之前,你需要一块ads1115,一块单片机,CCS,还要会一点I
    发表于 11-29 08:11

    ADS1115简介

    ADS1115简介:ADS1115是TI生产的具有I2C接口的16ADC,内置PGA和电压基准,采样率8~860SPS可调,ALERT/RDY可作为可编程比较器的输出引脚。参数:内部
    发表于 12-10 06:02

    ADS1115是什么?怎样去使用ADS1115

    ADS1115是什么?ADS1115有哪些特性?怎样去使用ADS1115呢?
    发表于 12-14 08:08

    【ROC-RK3568-PC开发板试用体验】使用ADS1115扩展ROC-RK3568-PC开发板ADC功能

    。刚好,我手头有一个ADS1115 ADC模块,相当的不错,某宝某店家介绍如下:不吹不擂,这个ADS1115 ADC模块,那是相当的好用。一共提供了4个输入通道,
    发表于 11-15 21:21

    ADS8323,pdf (16-Bit, 500kSPS,

    The ADS8323 is a 16-bit, 500kSPS analog-to-digital converter (ADC) with an internal 2.5V reference.
    发表于 06-03 14:35 32次下载

    TI公司IIC接口16位AD模块ADS1115

    TI公司16位的AD模块ADS1115,IIC接口,四通道,本程序是基于msp430利用两个IO口模拟IIC来驱动ADS1115
    发表于 07-20 17:21 66次下载

    ads1115电压测量范围

     ADS1115 是具有16 位分辨率的高精度模数转换器(ADC),采用超小型的无引线QFN-10 封装或MSOP-10 封装。ADS1115 在设计时考虑到了精度、功耗和实现的简易
    发表于 10-23 08:42 1.5w次阅读

    基于51的ads1115详细程序介绍

     ADS1115 是具有16 位分辨率的高精度模数转换器(ADC),采用超小型的无引线QFN-10 封装或MSOP-10 封装。以下将是基于51的ads1115详细程序介绍:
    发表于 10-23 09:25 1.4w次阅读

    ads1115使用方法

    ADS1113.ADS1114 和ADS1115 是具有16 位分旁粹率的高精度模数转换器(ADC),采用超小型的无引线QFN-10 封装或MSOP-10 封装。
    发表于 10-23 10:15 4.1w次阅读

    最小的ADS1115系列16ADC处理器

    ADS1115: 工业级最小尺寸16ADC
    的头像 发表于 06-12 01:24 9111次阅读
    最小的<b class='flag-5'>ADS1115</b>系列<b class='flag-5'>16</b>位<b class='flag-5'>ADC</b>处理器

    基于MSP430F5529单片机的ADS1115

    内部基准、振荡器和可编程比较器且兼容 I2C 的ADS111x、超小型、低功耗 860SPS、16ADC 。在操作之前,你需要一块ads1115,一块单片机,CCS,还要会一点I
    发表于 11-19 18:21 18次下载
    基于MSP430F5529单片机的<b class='flag-5'>ADS1115</b>

    使用ADS1115扩展ROC-RK3568-PC开发板ADC功能

    。 刚好,我手头有一个ADS1115 ADC模块,相当的不错,某宝某店家介绍如下: 不吹不擂,这个ADS1115 ADC模块,那是相当的好用。 一共提供了4个输入通道,
    的头像 发表于 11-18 09:10 2760次阅读

    士模微推出低功耗高精度16位Sigma-Delta ADC CM1103,对标ADS1115系列

    士模微推出对标ADS1115系列的高精度低功耗Sigma-Delta ADC,精度可达16位峰峰值分辨率
    发表于 12-30 14:36 1318次阅读

    模数转换器16ADC芯片ADS1115

    TI德州仪器ADS1115是VSSOP-10和UQFN-10封装中提供的精密、低功耗、16位、I2C兼容的模数转换器(ADC)。还包含一个可编程增益放大器(PGA)和一个数字比较器。这些功能,加上广泛的工作电源范围,非常适合功率
    的头像 发表于 05-19 17:36 2585次阅读