ADS1115 16位 ADC 模块详解:特性、引脚、Arduino 与树莓派接口指南
您是否正在开发汽车电子、高精度仪器、电池监测或需要将微弱模拟信号高精度数字化的项目?ADS1115 —— 这款 16 位、低功耗、带可编程增益放大器(PGA)的 I²C 接口 ADC,正是您的理想选择。
本文将从器件架构、关键参数、引脚定义、Arduino 与树莓派接口实战、负电压测量能力等维度全面解析,帮您快速集成高精度采集链路。
ADS1115 是什么?
ADS1115 是 TI 推出的16 位 Δ-Σ 模数转换器,内置基准基准源、振荡器、PGA 与输入多路复用器,通过 I²C 接口(标准/快速/高速模式)与主控通信。单电源 2.0V~5.5V 工作,极低功耗(连续转换模式典型 150 μA),支持单次转换自动休眠模式,极适合电池供电场景。
ADS1115 模块实物
图片来源:Wikimedia Commons
核心工作机制
- 转换率:8~860 SPS 可编程(配置寄存器 DR 位设定)
- PGA 可编程增益:2/3×, 1×, 2×, 4×, 8×, 16× 对应满量程 ±6.144V ~ ±0.256V,可测量超供电轨信号(输入钳位在 VDD+0.3V/GND-0.3V)
- 输入多路复用:4 路单端(AIN0~AIN3)或 2 路差分(AIN0-AIN1, AIN2-AIN3)
- I²C 地址:ADDR 引脚接 GND/VDD/SDA/SCL 对应 0x48/0x49/0x4A/0x4B,单总线可挂 4 片
- 数据格式:16 位有符号补码,正满度 32767,负满度 -32768
- 报警/比较器:可配置阈值触发 ALERT/RDY 引脚
ADS1115 关键特性一览
- 超小尺寸:2.0 × 1.5 × 0.4 mm (WSON-10) / 模块板约 15×20 mm
- 单次/连续转换模式,上电自动初始化
- 基准源内置,外部基准可选
- 转换率可编程:8, 16, 32, 64, 128, 250, 475, 860 SPS
- 静态电流:<1 μA(掉电模式),150 μA(连续 860 SPS)
- 工作温度:-40°C ~ +125°C
- I²C 时序:标准 100 kHz、快速 400 kHz、高速 3.4 MHz
引脚配置(模块常见 10Pin 排针)
| 引脚 | 功能 | 说明 |
|---|---|---|
| VDD | 电源正 | 2.0V~5.5V,建议 3.3V/5V |
| GND | 电源地 | 系统地 |
| SCL | I²C 时钟 | 需外接上拉电阻(4.7kΩ) |
| SDA | I²C 数据 | 需外接上拉电阻(4.7kΩ) |
| ADDR | 地址选择 | 接 GND=0x48, VDD=0x49, SDA=0x4A, SCL=0x4B |
| ALRT | 报警/就绪 | 可配置为转换就绪或阈值比较输出 |
| A0~A3 | 模拟输入 | 4路单端或2路差分 |
ADS1115 与 Arduino 接口实战
工程师正在连接 ADS1115 与 Arduino
Arduino 与 ADS1115 接线图
硬件清单
- ADS1115 模块 ×1
- Arduino Nano/Uno ×1
- 面包板 ×1
- 杜邦线 若干
- I²C LCD1602(可选,用于脱机显示)
Arduino Nano
步骤 1:原理图接线
- ADS1115 VDD → Arduino 5V (或 3.3V),GND → GND
- SCL → A5 (Uno/Nano) / D21 (Mega),SDA → A4 / D20
- ADDR → GND(固定地址 0x48,最常用)
- 待测信号接 A0~A3(单端接地参考,差分接两通道)
步骤 2:串口打印读取代码(单端模式)
安装库:Arduino IDE → 库管理器搜索 “Adafruit ADS1X15” 安装。
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads(0x48);
void setup() {
Serial.begin(9600);
ads.setGain(GAIN_ONE); // ±4.096V, 1 bit = 0.125 mV
ads.begin();
}
void loop() {
for (uint8_t i = 0; i < 4; i++) {
int16_t raw = ads.readADC_SingleEnded(i);
float voltage = raw * 0.125F / 1000.0F; // mV → V
Serial.print("A"); Serial.print(i); Serial.print(": ");
Serial.print(raw); Serial.print(" (");
Serial.print(voltage, 3); Serial.println(" V)");
}
Serial.println("---");
delay(1000);
}
打开串口监视器 9600 波特率,即可看到 4 通道实时电压值。
步骤 3:I²C LCD 显示读数
安装 LiquidCrystal_I2C 库,初始化 LCD 地址(常见 0x27/0x3F),在 loop 中将电压字符串写入 LCD。代码结构同上,仅将 Serial.print 替换为 lcd.print 并设置光标位置。
ADS1115 与树莓派接口实战
ADS1115 与树莓派 I²C 连接
步骤 1:硬件接线
- ADS1115 VDD → 树莓派 3.3V (Pin 1),GND → GND (Pin 6/9/14/20/25/30/34/39)
- SDA → GPIO 2 (Pin 3),SCL → GPIO 3 (Pin 5)
- ADDR → GND(地址 0x48)
步骤 2:启用 I²C 并安装 Python 库
sudo raspi-config→ Interface Options → I2C → Enable → Finish → 重启- 安装依赖:
sudo apt update && sudo apt install -y python3-pip python3-smbus i2c-tools - 检测设备:
i2cdetect -y 1应显示 0x48 - 安装 Adafruit 库(推荐源码安装获取例程):
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git cd Adafruit_Python_ADS1x15 sudo python3 setup.py install
步骤 3:Python 读取示例
import time
import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115(address=0x48, busnum=1)
GAIN = 1 # ±4.096V
print("Reading ADS1115 channels 0-3...")
while True:
for i in range(4):
raw = adc.read_adc(i, gain=GAIN)
voltage = raw * 0.125 / 1000.0
print(f"A{i}: {raw:6d} ({voltage:.3f} V)")
print("-" * 30)
time.sleep(1)
步骤 4:从 PyPI 安装(可选)
pip3 install adafruit-ads1x15(注意:PyPI 版不含例程,需另行下载示例代码)。
ADS1115 能测量负电压吗?
能。 ADS1115 采用差分输入架构,单电源供电下仍可测量负向差分电压(AINx - AINy < 0)。输出为有符号 16 位补码,负电压对应负数码值。单端模式下输入钳位在 GND-0.3V,不可直接测负压;需改用差分模式(如 AIN0-AIN1,A0 接信号,A1 接地)测量相对地的负电压。
结语
ADS1115 凭借 16 位高分辨率、可编程 PGA、I²C 易用接口与极低功耗,成为电池监测、传感器信号调理、精密仪器、工业采集的首选 ADC。本文提供了从硬件接线到 Arduino/树莓派软件实战的完整指引。如需更高通道数(ADS1118/ADS1119)、更高速率(ADS1115 860 SPS 上限)或同步采样方案,欢迎咨询我们获取选型建议。
工业技术
- Arduino Mega 2560 接 NEO-6M GPS 模块完整教程
- Blynk + Arduino 读取 DHT11 温湿度数据教程
- 无需编程:用 Arduino 和 Octoblu Tentacle 构建 IoT 设备
- ADXL345 三轴加速度计 Arduino 姿态追踪教程
- 旋转编码器原理与 Arduino 实战:从基础到步进电机控制
- PIR人体红外传感器:工作原理与Arduino集成指南
- 使用Arduino和A4988驱动器掌握步进电机控制:分步指南
- 工业物联网推动智能仓储趋势落地
- 为何重型机械定期维护至关重要
- Arduino 入门指南:硬件架构、编程核心与首个 LED 实战
- 掌握边缘 AI 推理:获取可落地洞察的实战指南
- Eagle vs Altium:PCB设计软件功能深度对比与选型指南