0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > 51单片机ads1115中文资料

51单片机ads1115中文资料

来源:
2025-05-13
类别:基础知识
eye 20
文章创建人 拍明芯城

一、ADS1115模块概述

ADS1115是德州仪器(TI)推出的一款16位高精度、低功耗模数转换器(ADC),采用I²C通信协议,具备四通道单端输入或两通道差分输入能力。其核心特性包括:

  • 分辨率:16位二进制补码输出,满量程范围对应±6.144V(PGA增益为1时),最小分辨率为0.1875mV。

  • 采样速率:支持8SPS至860SPS可调,满足不同场景的实时性需求。

  • 输入范围:通过可编程增益放大器(PGA)提供±256mV至±6.144V多档量程选择,适配微弱信号与高电压信号采集。

  • 低功耗设计:连续转换模式下功耗仅150μA,单次转换模式可进一步降低待机功耗。

  • 集成功能:内置低漂移电压基准、比较器及数字滤波器,简化外围电路设计。

该模块广泛应用于工业自动化、医疗设备、环境监测等领域,尤其适合需要多通道、高精度信号采集的嵌入式系统。例如,在工业自动化中,可同时监测温度、压力、流量等多路传感器信号;在医疗设备中,可精确采集生理电信号。

image.png

二、硬件连接与电气特性

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. 初始化与数据读取流程

  1. 初始化I²C接口:配置单片机引脚为开漏输出,并启用上拉电阻。

  2. 写入配置寄存器:设置通道、增益、采样率等参数。

  3. 启动转换:若为单次模式,需向OS位写1触发转换。

  4. 轮询DRDY引脚或查询转换寄存器:判断数据是否就绪。

  5. 读取转换结果:从转换寄存器读取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显示实时温度值。
实现步骤

  1. 将四个热敏电阻分别连接至AIN0~AIN3,并配置分压电路。

  2. 初始化ADS1115,设置增益为±6.144V,采样率为64SPS。

  3. 周期性读取四通道数据,并通过查表法将电压值转换为温度值。

  4. 将温度值显示在LCD1602上,并设置超温报警阈值。

2. 工业压力传感器数据采集

需求:采集压力传感器输出的0~5V信号,并通过串口上传至上位机。
实现步骤

  1. 将压力传感器输出连接至AIN0,配置增益为±2.048V(通过分压电阻调整输入范围)。

  2. 初始化ADS1115,设置采样率为860SPS,启用连续转换模式。

  3. 在中断服务程序中读取转换寄存器数据,并通过UART发送至上位机。

  4. 上位机使用Python脚本解析数据并绘制实时曲线。

3. 阈值报警与中断触发

需求:监测电池电压,当电压低于3.3V时触发蜂鸣器报警。
实现步骤

  1. 将电池电压通过分压电路连接至AIN0,配置增益为±6.144V。

  2. 初始化ADS1115,启用比较器模式,设置低阈值为0x2E80(对应3.3V)。

  3. 将ALERT/RDY引脚连接至单片机外部中断引脚,配置下降沿触发。

  4. 在中断服务程序中关闭负载电源,并通过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)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

下一篇: tic12400中文文档
标签: 51单片机 ads1115

相关资讯

资讯推荐
云母电容公司_云母电容生产厂商

云母电容公司_云母电容生产厂商

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告