51单片机ads1115中文资料


一、ADS1115模块概述
ADS1115是德州仪器(TI)推出的一款16位高精度、低功耗模数转换器(ADC),采用I²C通信协议,具备四通道单端输入或两通道差分输入能力。其核心特性包括:
分辨率:16位二进制补码输出,满量程范围对应±6.144V(PGA增益为1时),最小分辨率为0.1875mV。
采样速率:支持8SPS至860SPS可调,满足不同场景的实时性需求。
输入范围:通过可编程增益放大器(PGA)提供±256mV至±6.144V多档量程选择,适配微弱信号与高电压信号采集。
低功耗设计:连续转换模式下功耗仅150μA,单次转换模式可进一步降低待机功耗。
集成功能:内置低漂移电压基准、比较器及数字滤波器,简化外围电路设计。
该模块广泛应用于工业自动化、医疗设备、环境监测等领域,尤其适合需要多通道、高精度信号采集的嵌入式系统。例如,在工业自动化中,可同时监测温度、压力、流量等多路传感器信号;在医疗设备中,可精确采集生理电信号。
二、硬件连接与电气特性
1. 引脚定义与功能
ADS1115采用10引脚QFN封装,关键引脚功能如下:
AIN0~AIN3:四通道模拟输入,支持单端或差分模式配置。
VDD/GND:电源输入,工作电压范围2.0V~5.5V,典型值3.3V。
SCL/SDA:I²C通信接口,支持标准(100kHz)、快速(400kHz)、高速(3.4MHz)三种模式。
ADDR:地址选择引脚,通过连接至GND、VDD、SDA或SCL,可配置四个不同I²C地址(0x48~0x4B)。
ALERT/RDY:数据就绪或比较器输出引脚,低电平有效,可用于中断触发或阈值报警。
2. 硬件连接示例
以51单片机(如STC89C52)为例,典型连接方式如下:
电源:VDD接3.3V电源,GND接地。
I²C接口:SCL接单片机P2.0,SDA接P2.1,需外接4.7kΩ上拉电阻。
地址配置:ADDR引脚接地,I²C地址为0x48(写)或0x49(读)。
模拟输入:AIN0接温度传感器输出,AIN1接压力传感器输出,AIN2~AIN3悬空或接其他信号源。
3. 电气特性参数
输入阻抗:典型值10MΩ,可直接连接高阻抗传感器。
共模抑制比(CMRR):差分模式下≥86dB,有效抑制共模噪声。
温度漂移:基准电压漂移±15ppm/°C,确保长期稳定性。
三、软件驱动与寄存器配置
1. I²C通信协议实现
51单片机需通过软件模拟I²C时序与ADS1115通信,关键步骤包括:
起始信号:SCL高电平时,SDA由高变低。
停止信号:SCL高电平时,SDA由低变高。
应答信号:每传输8位数据后,接收方需拉低SDA表示确认。
示例代码(基于C51):
void I2C_Start(void) { SDA = 1; SCL = 1; delay_us(4); SDA = 0; delay_us(4); SCL = 0; }
void I2C_WriteByte(uint8_t data) { for (uint8_t i = 0; i < 8; i++) { SDA = (data & 0x80) ? 1 : 0; data <<= 1; SCL = 1; delay_us(2); SCL = 0; delay_us(2); } SDA = 1; SCL = 1; uint8_t ack = SDA; SCL = 0; }
2. 关键寄存器配置
ADS1115通过四个16位寄存器实现功能控制与数据读取:
配置寄存器(0x01):
OS位:启动单次转换(写1触发)。
MUX[2:0]:选择输入通道(如0x00对应AIN0-GND单端模式)。
PGA[2:0]:设置增益(如0x00对应±6.144V量程)。
MODE位:选择工作模式(0为连续转换,1为单次转换)。
DR[2:0]:设置采样速率(如0x03对应64SPS)。
转换寄存器(0x00):存储最近一次转换结果,二进制补码格式。
阈值寄存器(0x02~0x03):配置比较器高低阈值,需与配置寄存器中的比较器模式配合使用。
3. 初始化与数据读取流程
初始化I²C接口:配置单片机引脚为开漏输出,并启用上拉电阻。
写入配置寄存器:设置通道、增益、采样率等参数。
启动转换:若为单次模式,需向OS位写1触发转换。
轮询DRDY引脚或查询转换寄存器:判断数据是否就绪。
读取转换结果:从转换寄存器读取16位数据,并转换为实际电压值。
示例代码(读取AIN0通道电压):
#define ADS1115_ADDR 0x48 #define CONFIG_REG 0x01 #define CONVERSION_REG 0x00
void ADS1115_Init(void) { uint8_t config_high = 0xC3; // OS=1, MUX=0, PGA=0, MODE=0, DR=3 uint8_t config_low = 0x83; // 64SPS, 传统比较器模式 I2C_Start(); I2C_WriteByte(ADS1115_ADDR << 1); // 写地址 I2C_WriteByte(CONFIG_REG); I2C_WriteByte(config_high); I2C_WriteByte(config_low); I2C_Stop(); }
float ADS1115_ReadVoltage(void) { uint8_t data[2]; I2C_Start(); I2C_WriteByte((ADS1115_ADDR << 1) | 0x01); // 读地址 I2C_WriteByte(CONVERSION_REG); I2C_Start(); I2C_WriteByte((ADS1115_ADDR << 1) | 0x01); data[0] = I2C_ReadByte(1); // 应答 data[1] = I2C_ReadByte(0); // 非应答 I2C_Stop();
int16_t raw_value = (data[0] << 8) | data[1]; float voltage = raw_value * 0.1875 / 1000.0; // 转换为伏特 return voltage; }
四、应用场景与实战案例
1. 多通道温度监测系统
需求:同时监测四个热敏电阻输出的模拟电压,并通过LCD1602显示实时温度值。
实现步骤:
将四个热敏电阻分别连接至AIN0~AIN3,并配置分压电路。
初始化ADS1115,设置增益为±6.144V,采样率为64SPS。
周期性读取四通道数据,并通过查表法将电压值转换为温度值。
将温度值显示在LCD1602上,并设置超温报警阈值。
2. 工业压力传感器数据采集
需求:采集压力传感器输出的0~5V信号,并通过串口上传至上位机。
实现步骤:
将压力传感器输出连接至AIN0,配置增益为±2.048V(通过分压电阻调整输入范围)。
初始化ADS1115,设置采样率为860SPS,启用连续转换模式。
在中断服务程序中读取转换寄存器数据,并通过UART发送至上位机。
上位机使用Python脚本解析数据并绘制实时曲线。
3. 阈值报警与中断触发
需求:监测电池电压,当电压低于3.3V时触发蜂鸣器报警。
实现步骤:
将电池电压通过分压电路连接至AIN0,配置增益为±6.144V。
初始化ADS1115,启用比较器模式,设置低阈值为0x2E80(对应3.3V)。
将ALERT/RDY引脚连接至单片机外部中断引脚,配置下降沿触发。
在中断服务程序中关闭负载电源,并通过LED提示报警状态。
五、常见问题与调试技巧
1. 通信故障排查
现象:I²C通信失败,读取数据全为0xFF。
原因:上拉电阻缺失、地址配置错误、时序不匹配。
解决:检查上拉电阻(4.7kΩ)、确认ADDR引脚连接、使用逻辑分析仪捕获I²C波形。
2. 数据异常处理
现象:读取电压值波动较大或超出量程。
原因:输入信号未适配增益、电源噪声干扰、采样率设置不当。
解决:调整PGA增益使输入信号位于量程中心、增加RC滤波电路、降低采样率。
3. 功耗优化建议
单次转换模式:在非实时性场景中,使用单次转换模式并配合低功耗单片机。
降低采样率:将采样率从860SPS降至8SPS,功耗可降低约90%。
关闭未使用通道:通过MUX位禁用未使用的输入通道,减少噪声耦合。
六、扩展功能与高级应用
1. 差分信号采集
ADS1115支持两通道差分输入(如AIN0-AIN1),适用于桥式传感器或高共模噪声环境。配置MUX[2:0]=0x01即可启用差分模式,此时输入范围为±256mV(PGA=16)至±6.144V(PGA=1)。
2. 数字滤波与平均值算法
为提高抗干扰能力,可在软件中实现滑动平均滤波:
#define SAMPLE_NUM 16 float voltage_buffer[SAMPLE_NUM]; uint8_t index = 0;
float Filter_Voltage(float new_value) { voltage_buffer[index++] = new_value; if (index >= SAMPLE_NUM) index = 0;
float sum = 0; for (uint8_t i = 0; i < SAMPLE_NUM; i++) { sum += voltage_buffer[i]; } return sum / SAMPLE_NUM; }
3. 与其他模块的协同工作
与OLED显示模块结合:通过I²C接口驱动SSD1306 OLED,实时显示多通道数据。
与无线模块集成:使用ESP8266或NRF24L01将采集数据上传至云平台。
与PID控制算法联动:根据ADS1115采集的温度/压力值,动态调整加热器或阀门开度。
ADS1115凭借其高精度、低功耗、多通道特性,成为51单片机系统中理想的ADC解决方案。通过本文的详细介绍,读者可掌握其硬件连接、寄存器配置、软件驱动及典型应用方法。未来,随着物联网与工业4.0的发展,ADS1115将在智能家居、智慧农业、智能电网等领域发挥更大作用。建议开发者结合具体需求,灵活调整增益、采样率等参数,并探索与传感器融合、边缘计算等技术的结合,以实现更智能、更高效的嵌入式系统设计。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。