简介
DFRobot I2C ADS1115 16位AD转换模块可对模拟量信号进行精确的采集与转换,通过这款AD模块,树莓派主控板就能非常方便的使用种类丰富的Gravity系列模拟量传感器,测量各类信号,感知这个世界。
树莓派(Raspberry Pi)是一种常见的主控板,功能强大。但树莓派主控板的管脚只能读取数字信号,如需读取模拟量传感器或设备的信号,只能外接一个模数转换(ADC)模块,使用起来不太方便。
DFRobot I2C ADS1115 16位AD转换模块专为树莓派和Gravity系列模拟量传感器优化设计,大大降低了树莓派主控板使用Gravity系列模拟量传感器的难度,即插即用,无需焊接,非常方便。Gravity系列传感器数量众多,种类丰富,能满足树莓派主控板对各类传感器的需求。
本模块采用16位ADC芯片ADS1115,支持3.3~5V的宽电压供电,芯片内部有精密参考电压和可编程增益调节(PGA),因此无论对微弱信号还是变化幅度较大的信号,都可进行精确的采集与转换,因此本模块也适用于各类主控板需要精密采集模拟信号的场合。
1个AD模块可读取4个通道的模拟量信号,由于板载I2C地址选择开关,因此支持2个AD模块的级联,读取8个通道的模拟量信号,足以满足各种场景的需求。
技术规格
- 供电电压(VCC):3.3~5.0V
- 模拟量信号检测范围:0~VCC
- 模拟量通道数:4
- ADC位数:16 Bit
- 工作电流:2~3mA(不包含传感器模块)
- 接口类型:Gravity I2C
- 接口电平:高电平3.3V,低电平0V
- 产品尺寸:32mm * 32mm
引脚说明
DFR0553 引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
+ | VCC | 供电电源正极(3.3~5.0V) |
- | GND | 供电电源负极(0V) |
C | SCL | I2C总线的时钟线 |
D | SDA | I2C总线的数据线 |
A | Analog In | 模拟输入通道:A0、A1、A2、A3 |
ADDR | I2C地址 | I2C地址选择开关,可左右拨动选择I2C地址 |
使用教程
请务必确认输入的模拟量信号不高于供电电压0.3V以上,即:模拟量信号 ≤ VCC+0.3V
Arduino教程
本教程将演示如何在Arduino主控板上使用这款AD模块读取4路模拟量信号。请将I2C地址开关拨到0x48处。
准备
- 硬件
- 1 x Arduino UNO控制板(或类似的控制板)
- 1 x I2C ADS1115 16位AD转换模块
- 4 x 模拟量传感器模块(如声音、电压、温度、环境光等)
- 1 x Gravity 4pin传感器连接线(或若干杜邦线)
- 软件
- Arduino IDE (1.0.x或1.8.x), 点击下载Arduino IDE
连线图
样例代码
请先下载**DFRobot_ADS1115库** 并安装。如何安装库?
注意:使用前注意代码中和拨码开关的I2C地址配置是否一致!!
I2C地址配置代码
ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0); // 0x48
/*
Arduino库中关于I2C地址的说明:
ADS1115_IIC_ADDRESS0:0x48
ADS1115_IIC_ADDRESS1:0x49
*/
样例代码
/*
* file ADS1115_ReadVoltage.ino
*
* @ https://github.com/DFRobot/DFRobot_ADS1115
*
* connect ADS1115 I2C interface with your board (please reference board compatibility)
*
* The voltage value read by A0 A1 A2 A3 is printed through the serial port.
*
* Copyright [DFRobot](https://www.dfrobot.com), 2016
* Copyright GNU Lesser General Public License
*
* version V1.0
* date 2018-01-21
*/
#include <Wire.h>
#include <DFRobot_ADS1115.h>
DFRobot_ADS1115 ads(&Wire);
void setup(void)
{
Serial.begin(115200);
ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0); // 0x48
ads.setGain(eGAIN_TWOTHIRDS); // 2/3x gain
ads.setMode(eMODE_SINGLE); // single-shot mode
ads.setRate(eRATE_128); // 128SPS (default)
ads.setOSMode(eOSMODE_SINGLE); // Set to start a single-conversion
ads.init();
}
void loop(void)
{
if (ads.checkADS1115())
{
int16_t adc0, adc1, adc2, adc3;
adc0 = ads.readVoltage(0);
Serial.print("A0:");
Serial.print(adc0);
Serial.print("mV, ");
adc1 = ads.readVoltage(1);
Serial.print("A1:");
Serial.print(adc1);
Serial.print("mV, ");
adc2 = ads.readVoltage(2);
Serial.print("A2:");
Serial.print(adc2);
Serial.print("mV, ");
adc3 = ads.readVoltage(3);
Serial.print("A3:");
Serial.print(adc3);
Serial.println("mV");
}
else
{
Serial.println("ADS1115 Disconnected!");
}
delay(1000);
}
结果
在A0~A3上,分别接入0V, 1.1V, 3.3V和5V电压,得到如下结果。
**注意:**空载时反馈电压约为550mV。
Mind+(基于Scratch3.0)图形化编程
-
下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
-
切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
-
“扩展”中选择“主控板”中的“Arduino Uno”。 "扩展"“传感器”中搜索选择“16位AD转换模块”。详细教程:Mind+基础wiki教程-加载扩展库流程
-
进行编程,程序如下图:
-
菜单“连接设备”,“上传到设备”
-
程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印
树莓派教程
本教程将演示如何在树莓派主控板上使用这款AD模块读取4路模拟量信号。请将I2C地址开关拨到0x48处。
准备
-
硬件
- 1 x 树莓派3代B型(或类似)主控板
- 1 x I2C ADS1115 16位AD转换模块
- 4 x 模拟量传感器模块(如声音、电压、温度、环境光等)
- 1 x Gravity 4pin传感器连接线(或若干杜邦线)
-
软件
接线图
安装驱动
- 1.启动树莓派的I2C接口。如已开启,可跳过该步骤。
打开终端(Terminal),键入如下指令,并回车:
sudo raspi-config
然后用上下键选择“ 5 Interfacing Options ”, 按回车进入,选择 “ P5 I2C ”, 按回车确认“ YES ”即可。重启树莓派主控板。
- 2.安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。
在终端中,依次键入如下指令,并回车:
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus git
- 3.下载驱动库,并运行。
在终端中,依次键入如下指令,并回车:
cd ~
git clone https://github.com/DFRobot/DFRobot_ADS1115
cd DFRobot_ADS1115/DFRobot_ADS1115/python/raspberrypi/examples
sudo python DFRobot_ADS1115.py
运行样例代码
在终端中,依次键入如下指令,并回车:
cd ~/DFRobot_ADS1115/DFRobot_ADS1115/python/raspberrypi/examples/
sudo python ADS1115_ReadVoltage.py
结果
在A0~A3上,分别接入0V, 1.1V, 3.3V和5V电压,得到如下结果。
**注意:**空载时反馈电压约为550mV。
常见问题
Q1. 这两个AD转换模块如何做级联?有相关样例代码吗?
A. 如需进行级联,需要将一个AD转换模块的I2C地址设置成0x48,另一个AD转换模块的I2C地址设置成0x49。两个AD转换模块同时连接到主控板的I2C总线接口上即可。
我们提供了两种平台的级联样例代码:
[Arduino的级联样例代码](https://github.com/DFRobot/DFRobot_ADS1115/blob/master/Examples/ADS1115_ReadVoltage_cascade/ADS1115_ReadVoltage_cascade.ino)
[树莓派的级联样例代码](https://github.com/DFRobot/DFRobot_ADS1115/blob/master/RaspberryPi/Python/ADS1115_ReadVoltage_cascade/ADS1115_ReadVoltage_cascade.py)
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。