
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.
- Abra a Arduino IDE e vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
- Busque por “Adafruit ADS1X15“.
- 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
- Conecte um potenciômetro:
- Perna 1: 3.3V
- Perna 3: GND
- Perna do meio (Sinal): Conecte ao pino A0 do ADS1115 na placa.
- Faça o Upload.
- 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!
