Chega de Ruído: Domine a Leitura Analógica com a Z-S3 ADS e o ADS1115

Seja bem-vindo de volta ao ecossistema Zion! Se você curtiu a versatilidade da Z-S3 V1, prepare-se para elevar o nível dos seus projetos de instrumentação com a Z-S3 ADS. Essa placa combina o poder de processamento do ESP32-S3 com a precisão cirúrgica do conversor analógico-digital (ADC) ADS1115 integrado via I2C. Hoje vamos configurar esse “monstro” da precisão e ler sinais analógicos com uma qualidade que o ADC nativo do ESP32 jamais conseguiria entregar.

O que você vai precisar:

  • Placa Z-S3 ADS
  • Cabo USB-C de boa qualidade (dados e energia)
  • Um potenciômetro ou qualquer sensor analógico (para teste)
  • Computador com Arduino IDE instalada

Passo 1: Preparando o Terreno (Bibliotecas)

A configuração da placa na IDE é a mesma da Z-S3 V1 (ESP32S3 Dev Module, USB CDC On Boot). Porém, para conversar com o chip ADS1115, precisamos da biblioteca oficial.

  1. Abra a Arduino IDE e vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
  2. Busque por “Adafruit ADS1X15“.
  3. Clique em Instalar (instale também as dependências se a IDE perguntar).

Projeto: Voltímetro de Alta Precisão (Single-Ended)

A Z-S3 ADS já possui o chip ADS1115 conectado internamente ao barramento I2C do ESP32-S3. Vamos ler o canal 0 (A0) em modo Single-Ended (comparando a tensão de entrada com o GND).

Nota Técnica: O ADS1115 é sensível. A tensão máxima que você pode ler depende do Ganho (PGA) configurado. No código abaixo, usaremos o ganho padrão que permite ler até 6.144V (seguro para sensores de 3.3V ou 5V).

Copie o código abaixo e cole na sua IDE:

/*
  Leitura de Precisão Z-S3 ADS (ADS1115 Interno)
  Canal: A0 (Single-Ended)
  Interface: I2C
*/

#include <Wire.h>
#include <Adafruit_ADS1X15.h>

// Definição dos pinos I2C da Z-S3 ADS
// Verifique o pinout da sua placa se for diferente do padrão abaixo
#define I2C_SDA 37  // SDA padrão das placas Zion
#define I2C_SCL 38  // SCL padrão das placas Zion hardware)

// Criação do objeto ADS1115 (endereço padrão 0x48)
Adafruit_ADS1115 ads;

void setup() {
  Serial.begin(115200);
  
  // Aguarda a Serial (útil para USB nativa do S3)
  while (!Serial) delay(10);

  Serial.println("Inicializando Z-S3 ADS System...");

  // Inicializa o I2C nos pinos corretos da placa
  Wire.begin(I2C_SDA, I2C_SCL);

  // Inicia o ADS1115
  if (!ads.begin()) {
    Serial.println("Falha ao encontrar o chip ADS1115!");
    Serial.println("Verifique se os pinos SDA/SCL estao corretos.");
    while (1);
  }

  // Configuração do Ganho (PGA)
  // GAIN_TWOTHIRDS: +/- 6.144V (1 bit = 0.1875mV)
  ads.setGain(GAIN_TWOTHIRDS);  
  
  Serial.println("ADS1115 encontrado e configurado!");
}

void loop() {
  int16_t adc0; // Variável para armazenar o valor bruto (16 bits)
  float volts0; // Variável para a tensão calculada

  // Lê o canal 0 (A0)
  adc0 = ads.readADC_SingleEnded(0);
  
  // Converte para Volts
  volts0 = ads.computeVolts(adc0);

  // Exibe no Monitor Serial
  Serial.print("Leitura Bruta (A0): "); 
  Serial.print(adc0);
  Serial.print("\tTensao: "); 
  Serial.print(volts0, 4); // 4 casas decimais de precisão
  Serial.println(" V");

  delay(500); // Atualiza a cada meio segundo
}

Entendendo o Código

  • Wire.begin(I2C_SDA, I2C_SCL): Como o ADS1115 é um componente interno, é crucial definir onde ele está “soldado” no ESP32-S3. A placa Z-S3ADS usa o SDA no pino 37 e o SCL no pino 38.
  • ads.setGain(...): O “pulo do gato”. O ADS1115 permite amplificar sinais pequenos. Se você estiver lendo um sinal muito baixo (ex: milivolts de um termopar), você pode aumentar o ganho para ter mais resolução.
  • ads.computeVolts(...): A biblioteca já faz a matemática chata para converter os bits em Volts reais baseados no ganho escolhido.

Hora do Teste

  1. Conecte um potenciômetro:
    • Perna 1: 3.3V
    • Perna 3: GND
    • Perna do meio (Sinal): Conecte ao pino A0 do ADS1115 na placa.
  2. Faça o Upload.
  3. Abra o Monitor Serial (Ctrl+Shift+M).

Gire o potenciômetro e observe a estabilidade da leitura. Diferente do ADC nativo que “flutua” bastante, você verá na Z-S3 ADS uma leitura sólida e com 4 casas decimais de resolução útil.

Gostou da precisão? Nas próximas postagens, vamos ensinar como usar o modo Diferencial (A0-A1) para medir células de carga ou shunts de corrente com precisão industrial usando sua Z-S3 ADS!


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *