问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

探索ADS1115:用于精密项目的16位ADC

创作时间:
作者:
@小白创作中心

探索ADS1115:用于精密项目的16位ADC

引用
1
来源
1.
https://zh-cn.hwlibre.com/%E6%8E%A2%E7%B4%A2%E7%94%A8%E4%BA%8E%E7%B2%BE%E5%AF%86%E9%A1%B9%E7%9B%AE%E7%9A%84-ads1115-16-%E4%BD%8D-ADC/

ADS1115是一款16位模数转换器(ADC),以其高精度和多功能性在制造商和电子爱好者中广受欢迎。它支持I2C接口,可轻松连接到Arduino或Raspberry Pi等平台,并提供单端和差分信号测量模式。本文将详细介绍ADS1115的技术特性、工作原理及其在各种项目中的应用。

什么是ADS1115?

ADS1115是一款模拟数字转换器(ADC),能够将模拟信号转换为数字数据,使其可被Arduino、ESP8266等平台处理。该器件以16位分辨率著称,远高于大多数微控制器内置的10位ADC。

ADS1115最显著的功能之一是支持单端(4个独立通道)和差分(2个通道)信号测量。在单端模式下,最多可连接4个独立信号;而在差分模式下,可连接两对信号,从而实现负信号的测量。

ADS1115的技术特性

ADS1115集成了多项高级功能,使其成为需要高分辨率模拟测量项目的理想选择:

  • 16位分辨率:能够测量多达65,536个不同的信号电平,远高于大多数微控制器内置的10位ADC。

  • I2C接口:支持设备与微控制器之间的轻松通信。通过可配置的ADDR引脚,单个总线上最多可连接4个ADS1115。

  • 测量模式:提供单端(4个独立通道)和差分(2个通道)测量。差分模式下,噪声降低且可测量负信号。

  • 可编程增益放大器(PGA):在±6.144V至±0.256V范围内调整增益,适用于低电压测量。需要注意的是,虽然PGA允许处理高达±6.144V的电压,但不能超过器件的电源电压(通常为5V)。

  • 电压比较器:内置可编程比较器,当信号超过软件定义的阈值时,可通过ALERT引脚生成警报。

运作模式

ADS1115有两种主要操作模式:

  • 连续转换模式:设备持续获取数据,适合连续监控应用。

  • 单次拍摄模式:设备读取一次数据后进入低功耗模式,适用于电池供电项目以节省电力。

可编程增益(PGA)模式

ADS1115配备可编程增益放大器(PGA),允许调整测量范围。支持的范围从±6.144V至±0.256V,为各种应用提供灵活性。使用时需注意不要超过设备的电源电压(通常为5V)。

应用场景

  • 传感器测量:适用于需要精确读取温度、光或pH传感器等模拟传感器数据的场景。

  • 研究项目:在需要测量小电压细微变化的项目中,16位分辨率提供了必要的精度。

  • 电池监控:利用差分信号测量和内部比较器功能,可创建电池监控系统,在电压降至临界水平时发出警报。

与Arduino的连接

ADS1115通过I2C接口与Arduino连接非常简单。基本连接方式如下:

VCC (ADS1115) -> 5V (Arduino)
GND (ADS1115) -> GND (Arduino)
SCL (ADS1115) -> SCL (Arduino)
SDA (ADS1115) -> SDA (Arduino)

通过将ADDR引脚连接到GND、VDD、SDA或SCL,可选择不同的I2C地址(0x48、0x49、0x4A或0x4B),便于在项目中使用多个ADS1115。

使用Adafruit库

为了简化使用,推荐安装Adafruit库。以下是单端模式下读取四个通道的示例代码:

#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;

void setup(void) {
  Serial.begin(9600);
  ads.begin();
}

void loop(void) {
  int16_t adc0, adc1, adc2, adc3;
  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);

  Serial.print("AIN0: "); Serial.println(adc0 * 0.1875);
  Serial.print("AIN1: "); Serial.println(adc1 * 0.1875);
  Serial.print("AIN2: "); Serial.println(adc2 * 0.1875);
  Serial.print("AIN3: "); Serial.println(adc3 * 0.1875);

  delay(1000);
}

差分模式

差分模式适用于测量负电压或减少噪声。以下是A0和A1引脚之间差分读取的示例代码:

#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;

void setup(void) {
  Serial.begin(9600);
  ads.begin();
}

void loop(void) {
  int16_t results;
  results = ads.readADC_Differential_0_1();
  Serial.print("Differential: "); Serial.println(results * 0.1875);
  delay(1000);
}

总结

ADS1115不仅提供了出色的精度,而且使用简便。其I2C接口和单端/差分信号测量能力使其成为各种电子项目的理想选择。内置的电压比较器功能进一步增强了其实用性,使其非常适合监控应用。对于需要高精度模拟测量的项目,ADS1115是一个值得推荐的解决方案。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号