Gravity: I2C ADS1115 16-Bit ADC模块

简介

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传感器连接线(或若干杜邦线)
  • 软件

连线图

样例代码

请先下载**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。

ADS1115_result_Arduino.png

Mind+(基于Scratch3.0)图形化编程

  1. 下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

  2. 切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程

  3. “扩展”中选择“主控板”中的“Arduino Uno”。 "扩展"“传感器”中搜索选择“16位AD转换模块”。详细教程:Mind+基础wiki教程-加载扩展库流程

  4. 进行编程,程序如下图:

  5. 菜单“连接设备”,“上传到设备”

  6. 程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印

树莓派教程

本教程将演示如何在树莓派主控板上使用这款AD模块读取4路模拟量信号。请将I2C地址开关拨到0x48处。

准备

接线图

安装驱动

  • 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)

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接