This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS112C04:ADS112C04不工作(烧录)

Guru**** 682950 points
Other Parts Discussed in Thread: ADS1115, ADS112C04
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1321925/ads112c04-ads112c04-not-working-burning

器件型号:ADS112C04
主题中讨论的其他器件:ADS1115

你好。 我遇到了 我们使用 ADS112C04芯片制作的 ADC 模块问题。 附件为所述模块的原理图和 PCB 设计。 该器件从 ADS1115模块汲取灵感、添加了二极管、用于防止输入电压超出限值(-0.3V 和5.3v)。  

该模块能够与通过运行 Wire.beginTransmission(address 进行验证的微控制器(ESP32模块)进行通信。 但是、随着添加的更多命令(即 RESET、START、rreg 和 wreg)、IC 开始不能正常工作、最终会冒烟。 所用代码见附件。 目标是使用内部基准电压在2ksps 条件下执行连续转换。

#include <Wire.h>

int address=0x40;

int decimalResolution=6;
int interruptPin = 36;

int initialTime=0;
int nowTime=0;
volatile bool rdy=false;

void setup() {
  Serial.begin(115200);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), adsReady, FALLING);
  
  Wire.begin();
  if(ADS_begin()){
  Serial.println("Iz alive! Iz alive");
  }
  else{
  Serial.println("Dedz");  
  }

  ADS_reset();
  ADS_requestADC();
  
  Serial.println(ADS_readRegister(address,0x20),BIN);
  Serial.println(ADS_readRegister(address,0x24),BIN);
  Serial.println(ADS_readRegister(address,0x28),BIN);
  Serial.println(ADS_readRegister(address,0x2C),BIN);

  ADS_start();
  
  initialTime=micros();
  Serial.println(ADS_readRegister(address,0x28),BIN);
}

void loop() {
  if (rdy == true)
    {
    rdy=false;
    int voltageRecord = ADS_readData(address);
    nowTime = micros();
    int timeRecord = (nowTime - initialTime)/1000;
    
    String dataInstance=String(timeRecord,decimalResolution)+","+String(voltageRecord,decimalResolution);
    Serial.println(dataInstance);
    }
}

bool ADS_begin()
{
  if (! ADS_isConnected()) return false;
  return true;
}


bool ADS_isConnected()
{
  Wire.beginTransmission(address);
  return (Wire.endTransmission() == 0);
}

void ADS_start(){
  Wire.beginTransmission(address);
  Wire.write((uint8_t)0x08);
  Wire.endTransmission();
}

void ADS_reset(){
  Wire.beginTransmission(address);
  Wire.write((uint8_t)0x06);
  Wire.endTransmission();
}

void ADS_requestADC()
{
  //  write to register is needed in continuous mode as other flags can be changed
  uint16_t config_1 = 0x00;                  //  bit 7-4 Input multiplexer config
  config_1 |= 0x00;                          //  bit 3-1 Gain
  config_1 |= 0x00;                          //  bit 0 PGA enable
  
  uint16_t config_2 = 0x40;                 //  bit 7-5 Data rate
  config_2 |= 0x00;                         //  bit 4 Opeating mode
  config_2 |= 0x08;                         //  bit 3 conversion mode
  config_2 |= 0x00;                         //  bit 2-1 voltage reference
  config_2 |= 0x00;                         //  bit 0 temperature sensor mode
  
  Serial.println(ADS_writeRegister(address, config_1, config_2));
}

bool ADS_writeRegister(uint8_t address, uint16_t config_1, uint16_t config_2)
{
  Wire.beginTransmission(address);
  Wire.write((uint8_t)0x40);
  Wire.write((uint8_t)config_1);

  Wire.write((uint8_t)0x44);
  Wire.write((uint8_t)config_2);
  
  return (Wire.endTransmission() == 0);
}

int ADS_readRegister(uint8_t address,uint8_t reg_map)
{
  uint16_t value=0;
  
  Wire.beginTransmission(address);
  Wire.write((uint8_t)reg_map);
  Wire.endTransmission();

  Wire.requestFrom((int) address, 1);
  value=Wire.read();

  return value;
}

int ADS_readData(uint8_t address)
{
  uint16_t value=0;
  int rv=0;
  
  Wire.beginTransmission(address);
  Wire.write((uint8_t)0x10);
  Wire.endTransmission();

  rv=Wire.requestFrom((int) address, 2);

  if (rv == 2)
  {
    value = Wire.read() << 8;
    value += Wire.read();
    return value;
  }
}

void adsReady()
{
  rdy = true;
}

我不确定这是硬件问题还是软件问题。 想知道我们哪里出了问题。 但我怀疑 这个问题与 IC 的 RESET 引脚连接到 VDD 时调用的 RESET 命令有关。 烟似乎来自这个引脚。 在修复模块之前、希望验证我的怀疑。

非常感谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我怀疑 这个问题与 IC 的 RESET 引脚连接到 VDD 时调用的 RESET 命令有关。

    大多数软件问题不会导致我们的零件开始吸烟,这很可能是硬件问题。 您是否在器件的电源和输入引脚上使用了示波器? 这是检查是否在任何一个引脚上没有施加过大电压的好方法。 您为器件提供什么电压?  L1和 L2是什么种类的组件? 如果高电感值导致电源引脚上出现电压尖峰可能会损坏器件、我不会感到意外。

    确保您没有意外地交换连接。 此时您可能还损坏了器件、因此请记住、即使您找到并修复了该问题、您仍可能会注意到此器件上有烟雾和燃烧。

    如果您还有任何问题、请告诉我、

    列维德弗里斯