ADS1115 16-BIT ADC 16位ADC高精度数模转换器

来自Duinopeak_COM
跳转至: 导航搜索

英文

产品简介

当你手上的微控制器没有模数转换器的时候,比如STC51单片机,或当您想要一个高精度ADC转换器的时候,这款ADS1115小板是你一个非常不错的选择。在860采样/每秒时,ADS1115芯片能够提供16位的精度,通过I2C和主控板通信,4个单信号输入入通道或者把A0和A1 A2和A3当作两组差分信号输入端。最大的好处还不仅如此,这款小板甚至还包括一个可编程增益放大器,最大能够放大到16倍,以帮助放大更小的单通道的模拟/差压信号。我们选择它,另外一个很大的理由是因为这块小板的工作电压能够在一个较宽的范围内工作:3.3~5V,而且它使用起来非常的方便。


Duinopeak ads1115 16bitADC 1.pngDuinopeak ads1115 16bitADC.jpg

特征

  • 尺寸:
  • 重量:
  • 简单易用
  • 可级联
  • 坚固可靠
  • 检测:×××
  • 内部低漂移参考电压
  • 内部晶振
  • 内部可编程增益放大器,放大倍数 ×16
  • I2C接口:地址选择引脚
  • 4个普通信号输入或者2个差分输入
  • 可编程比较器
  • 这块小板使用了I2C,7位地址0x48-0x4B,可通过跳帽选择

技术参数

  • 宽供电电压: 3.3V ~5V
  • 低功耗:在持续工作模式下是150µA,另外能够进入休眠模式
  • I2C接口
  • 编程速率: 8SPS到860SPS

应用示例

下面我们将使用ADS1115 16位ADC模块与ADXL335模拟量输出加速度模块,来看看这个16位精度ADC模块的强大功能。ADXL335测量的X,Y,Z轴模拟输出量连接Arduino主控板的A0,A1,A2; ADS1115 16位ADC模块的SCL,SDA两线接Arduino主控的SCL,SDA;然后给ADS1115 16位ADC模块和ADXL335模拟量输出加速度模块供上5V电源;接线图如下:


16bitADC connect ADXL335.jpg 16bitADC connect ADXL335 2.jpg

接下来是下载程序到Arduino主控板中,首先下载*16位ADC数模转换器Arduino主程序和库文件,然后把库文件复制, 然后放到Arduino IDE下的libraries文件夹下,打开Arduino IDE,点击"文件”->“示例”->“Adafruit_ADS1x15”->“siglended”,如下图所示:
Arduino compiler1.JPG
打开程序,编译,选好串口端号,下载到Arduino主控板中,打开串口显示窗口,设置波特率为9600,得到了加速度模块的X,Y,Z轴的模拟量数据,如下图:
Arduino compiler2.JPG16bitADC Arduino compiler3.JPG


 #include <Wire.h>
#include <Adafruit_ADS1015.h>

 Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
//Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */

void setup(void) 
{
  Serial.begin(9600);
  Serial.println("Hello!");
  
  Serial.println("Getting single-ended readings from AIN0..3");
  Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
  
  // The ADC input range (or gain) can be changed via the following
  // functions, but be careful never to exceed VDD +0.3V max, or to
  // exceed the upper and lower limits if you adjust the input range!
  // Setting these values incorrectly may destroy your ADC!
  //                                                                ADS1015  ADS1115
  //                                                                -------  -------
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  // ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  
  ads.begin();
}

void loop(void) 
{
  int16_t adc0, adc1, adc2, adc3;

  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);
  Serial.print("AIN0: "); Serial.println(adc0);
  Serial.print("AIN1: "); Serial.println(adc1);
  Serial.print("AIN2: "); Serial.println(adc2);
  Serial.print("AIN3: "); Serial.println(adc3);
  Serial.println(" ");
  
  delay(1000);
}

资源

购买

支持

如果你有什么困难或者好的点子, 你可以来我们的DuinoPeak论坛参与讨论.

外部链接

链接到外部网页将会给你提供更多应用创意,文档/数据表或软件库

视频