Arduino UNO驱动ADS1115模数转换模块
原文链接:https://www.yourcee.com/newsinfo/2928454.html
简介
ADS1115可对模拟量信号转换成16位的二进制数字信号,具有内部低温漂电压基准、振荡器和可编程比较器且兼容 I2C接口(4个可编程地址引脚),可编程数据采样率8-860sps,连续转换模式下150uA的低流耗。具有 一个输入多路复用器 (MUX),可实现两次差动输入测量或四次单端输入测量。内部PGA 可提供从 ±256mV 到±6.144V 的输入范围。
ADS1115模块原理图
Arduino UNO与ADS1115接线图
A0、A1采集Arduino UNO板上的5V输出引脚、A2、A3采集Arduino UNO板上的3.3V输出引脚
Arduino UNO测试代码
例程下载链接:https://github.com/DFRobot/DFRobot_ADS1115
打开如下四端模拟输入检测转换例程,下载至Arduino UNO开发板里
/*
* 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](http://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); // 0x49
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);
}
总结
ADS1115不仅可以实现四端模拟信号电压采样输入,还能实现A0(P)\A1(N),A2(P)\A3(N)两对差分输入信号电压采集,内部阀值电压设置和外部采集信号电压采样比较后中断信号输出。