打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ADS1115 Data Sheet数据手册阅读笔记

这几天一直和ADS1115较劲,把阅读数据手册的要点记录一下,便于以后再使用着有新点子的时候查阅。

一、等效阻抗

差分输入的等效阻抗,便于以后和指针电压表测量结果对比

二、PGA量程

放大倍率和量程选择

三、ADDR设置

当多个ADS1115一起使用时的地址

四、读写寄存器

四个寄存器地址

五、DIY芯片

如果使用这个系列的裸片,外围只要3个电阻一个电容就够了

六、一个有用的图

手册最后配了一个比较有价值的电流监测,换个OPA可以单电源供电

七、Arduino自由了

回到Arduino IDE,可以不再使用现成的ADS1115库了,阿达水果Adafruits有海量的模块驱动库

/* 仅使用Arduino下的I2C wire库驱动ADS1115 */

#include <Wire.h>  //提供I2C支持
#define ASD1115 0x48
//ADS1115的ADDR接GND时的地址为0X48

unsigned int val = 0;
byte writeBuf[3];
byte buffer[3];

const float VPS = 4.096 / 32768.0;
//量程为其他数值时,需要改动,例如0.256/32768.0等

void setup()   {
  Serial.begin(9600);
  Wire.begin(); //启动I2C

  writeBuf[0] = 1;  //配置寄存器1
  writeBuf[1] = 0b00000010;
  //0x02,差分在A0和A1间,量程4.096,连续转换
  /* bit 15:
    For a write status:
    0 : No effect
    1 : Begin a single conversion (when in power-down mode)
    For a read status:
    0 : Device is currently performing a conversion
    1 : Device is not currently performing a conversion
  */
  // Bits 14-12 input selection:
  /*
    000 : AIN P = AIN0 and AIN N = AIN1 (default)
    001 : AIN P = AIN0 and AIN N = AIN3
    010 : AIN P = AIN1 and AIN N = AIN3
    011 : AIN P = AIN2 and AIN N = AIN3
    100 : AIN P = AIN0 and AIN N = GND
    101 : AIN P = AIN1 and AIN N = GND
    110 : AIN P = AIN2 and AIN N = GND
    111 : AIN P = AIN3 and AIN N = GND
  */
  // Bits 11-9 Amp gain.
  /*
    000 : FS = ±6.144V
    001 : FS = ±4.096V
    010 : FS = ±2.048V(default)
    011 : FS = ±1.024V
    100 : FS = ±0.512V
    101 : FS = ±0.256V
    110 : FS = ±0.256V
    111 : FS = ±0.256V
  */
  // Bit 8 Operational mode of the ADS1115.
  /*
    0 : Continuous conversion mode
    1 : Power-down single-shot mode (default)
  */
  writeBuf[2] = 0b10000101;
  // bits 7-0,0x85,采样率设置
  // Bits 7-5 data rate default to 100 for 128SPS
  /*
    000 : 8SPS
    001 : 16SPS
    010 : 32SPS
    011 : 64SPS
    100 : 128SPS(default)
    101 : 250SPS
    110 : 475SPS
    111 : 860SPS
  */
  // Bits 4-0  comparator functions see spec sheet.
  //数据手册第19页
  Wire.beginTransmission(ASD1115);
  Wire.write(writeBuf[0]);
  Wire.write(writeBuf[1]);
  Wire.write(writeBuf[2]);
  Wire.endTransmission();
  delay(500);
}

void loop() {
  buffer[0] = 0;
  Wire.beginTransmission(ASD1115);
  Wire.write(buffer[0]);
  Wire.endTransmission();

  Wire.requestFrom(ASD1115, 2);
  buffer[1] = Wire.read();
  buffer[2] = Wire.read();
  Wire.endTransmission();

  val = buffer[1] << 8 | buffer[2];
  //获取寄存器数据
  if (val > 32768) //如果是负电压
  {
    val = 65535 - val;
    Serial.println(-1 * (float)val * VPS);
    Serial.println(-1 * val);
  }
  else {
    Serial.println(val * VPS);
    Serial.println(val);
  }
  // just an indicator
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Ti.ADS1115-15Bit差分ADC
x264_validate_levels
ain
H264视频编码成MP4文件
18b20
硬边 GND 中灰渐变镜
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服