Quando falamos em qualidade da água, geralmente pensamos em algo que afeta diretamente nosso dia a dia, seja na água que consumimos, na irrigação de plantas, em aquários ou em processos industriais e laboratoriais. Mas você sabia que é possível monitorar a qualidade da água de forma simples e acessível usando a eletrônica e plataformas como o Arduino?
Entre os parâmetros mais comuns para avaliar a qualidade da água está o TDS (Total Dissolved Solids), que representa a quantidade de sólidos dissolvidos, como sais, minerais e alguns compostos orgânicos. Esse dado é importante para saber, por exemplo, se a água está potável, se é adequada para cultivos hidropônicos ou se um sistema de filtragem está funcionando corretamente.

No universo maker, existem sensores específicos para realizar essa medição de maneira prática. Neste tutorial, vamos conhecer o Sensor de Condutividade da Água (TDS) e aprender como utilizá-lo com o Arduino para monitorar a qualidade da água em diferentes aplicações.
O que é TDS, condutividade e sua relação com a qualidade da água?
Quando falamos sobre qualidade da água, um dos parâmetros mais utilizados para avaliação é o TDS, sigla em inglês para Total Dissolved Solids, ou em português, Sólidos Totais Dissolvidos. Mas o que isso significa na prática?
Basicamente, o TDS representa a quantidade de substâncias dissolvidas na água, como sais, minerais, íons e até pequenas quantidades de matéria orgânica. Quanto maior a concentração dessas partículas, maior será o valor de TDS. Esse dado é essencial para avaliar se a água está dentro dos padrões adequados para consumo, cultivo ou uso em processos específicos.
E a condutividade, o que é?
A condutividade elétrica da água está diretamente relacionada ao TDS. Isso porque a água pura (como a água destilada) praticamente não conduz eletricidade. Quem faz a condução são justamente os íons dissolvidos, como sódio, cloreto, cálcio, entre outros.
De forma simples:
- Mais sais e minerais = maior condutividade = maior TDS
- Menos sais e minerais = menor condutividade = menor TDS
Por isso, o sensor de condutividade mede indiretamente o TDS, detectando a capacidade da água de conduzir corrente elétrica. A partir dessa medição, o sensor calcula um valor estimado de TDS, geralmente expresso em ppm (partes por milhão).
Aplicações da medição de TDS
O controle do TDS é fundamental em diversas aplicações, como:
- Manutenção da saúde de peixes e plantas em aquários e hidroponia;
- Verificação da eficiência de filtros e sistemas de osmose reversa;
- Monitoramento da qualidade da água em sistemas de reúso ou captação da chuva;
- Estudos educacionais sobre química da água e meio ambiente.
Saber medir TDS significa compreender melhor o que está dissolvido na água e, consequentemente, sua qualidade, pureza e adequação ao uso pretendido.
Como funciona o sensor de condutividade da água?
O Sensor de Condutividade da Água (TDS) é uma ferramenta que permite medir, de forma simples e acessível, a concentração de sólidos dissolvidos na água. Seu funcionamento é baseado no princípio da condutividade elétrica: quanto mais íons (como sais e minerais) estão dissolvidos na água, maior sua capacidade de conduzir eletricidade.
O sensor possui uma sonda com dois eletrodos, que são submersos na água. Ao aplicar uma pequena tensão alternada entre esses eletrodos, o sensor mede a quantidade de corrente que consegue passar de um eletrodo para o outro através da água.
- Quanto mais partículas carregadas (íons) estão presentes, maior será a corrente.
- O módulo converte essa informação em um sinal analógico, proporcional à condutividade da água.
Por meio de um algoritmo, esse valor é convertido em TDS (Total Dissolved Solids), geralmente exibido em ppm (partes por milhão).
O kit é composto por dois elementos principais:

Sonda de medição:
- Material resistente à corrosão.
- Pode ser submersa (parcialmente) para fazer as leituras.
- Não deve ser utilizada em líquidos muito ácidos, básicos ou com alta temperatura.
Módulo eletrônico:
- Responsável por gerar o sinal de leitura.
- Faz o condicionamento do sinal e fornece uma saída analógica.
- Possui um potenciômetro para ajuste fino, se necessário.
Especificações técnicas principais:
- Faixa de medição: 0 a 1000 ppm (recomendado até 1000 ppm para melhor precisão).
- Tensão de operação: 3.3V a 5.5V.
- Saída: Sinal analógico (0 ~ Vcc).
- Temperatura de operação: 5°C a 55°C.
- Sonda resistente à corrosão (uso apenas em líquidos relativamente limpos).
Materiais necessários para medir a qualidade da água com Arduino
Para montar este projeto de monitoramento da qualidade da água utilizando o sensor de condutividade (TDS) com Arduino, você vai precisar dos seguintes componentes:
- Sensor de Condutividade da Água (TDS)
- Arduino Uno R4 Minima
- Display LCD 16×2 com interface I2C
- Jumpers
- Cabo USB tipo C
- Recipiente com água para teste
Esquema de ligação do sensor para análise da qualidade da água
A montagem do sensor de condutividade da água com Arduino é bastante simples. O sensor utiliza uma saída analógica, que será conectada a uma das portas analógicas do Arduino. Além disso, podemos adicionar um display LCD 16×2 com interface I2C para exibir as informações em tempo real.

Código para monitoramento da qualidade da água
A seguir, você encontra o código completo que faz a leitura do valor de TDS (Total Dissolved Solids) da água e exibe as informações tanto no monitor serial quanto no display LCD 16×2 I2C.
Antes de carregar o código para o seu Arduino, você precisará instalar a biblioteca para o display LCD com I2C. Isso é bem simples:
- No Arduino IDE, vá em “Sketch” → “Incluir Biblioteca” → “Gerenciar Bibliotecas…”.
- Procure por “LiquidCrystal I2C”.
- Instale a biblioteca desenvolvida por Frank de Brabander ou similar.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
#include <Wire.h> // Comunicação I2C #include <LiquidCrystal_I2C.h> // Biblioteca do display LCD I2C /************ Configurações do Display ************/ #define LCD_ADDRESS 0x27 // Endereço I2C do LCD (padrão 0x27, ou 0x3F) #define LCD_COLUMNS 16 // Número de colunas do LCD #define LCD_ROWS 2 // Número de linhas do LCD LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS); // Inicializa LCD /************ Configurações do Sensor ************/ #define TDS_SENSOR_PIN A1 // Pino analógico conectado ao sensor TDS #define VREF 5.0 // Tensão de referência do ADC (5V no Arduino Uno) #define SAMPLES 30 // Número de amostras para cálculo da média /************ Variáveis ************/ int analogBuffer[SAMPLES]; // Buffer para armazenar leituras int analogBufferTemp[SAMPLES]; // Buffer temporário para ordenação int bufferIndex = 0; // Índice do buffer float averageVoltage = 0; // Média da tensão lida (Volts) float tdsValue = 0; // Valor de TDS (ppm) float temperature = 25.0; // Temperatura fixa para compensação (em °C) /*************************************************** * Função de Configuração ***************************************************/ void setup() { Serial.begin(115200); // Inicializa comunicação Serial pinMode(TDS_SENSOR_PIN, INPUT); // Inicializa LCD lcd.init(); lcd.backlight(); // Mensagem inicial no LCD lcd.setCursor(0, 0); lcd.print(" Leitor de TDS "); lcd.setCursor(0, 1); lcd.print(" Iniciando... "); delay(2000); lcd.clear(); } /*************************************************** * Loop Principal ***************************************************/ void loop() { // Leitura analógica a cada 40ms static unsigned long sampleTime = millis(); if (millis() - sampleTime > 40U) { sampleTime = millis(); analogBuffer[bufferIndex] = analogRead(TDS_SENSOR_PIN); bufferIndex++; if (bufferIndex == SAMPLES) bufferIndex = 0; } // Processamento e exibição a cada 800ms static unsigned long displayTime = millis(); if (millis() - displayTime > 800U) { displayTime = millis(); // Copia o buffer para o temporário for (int i = 0; i < SAMPLES; i++) { analogBufferTemp[i] = analogBuffer[i]; } // Cálculo da tensão média (filtrada) averageVoltage = getMedianValue(analogBufferTemp, SAMPLES) * (VREF / 1024.0); // Compensação de temperatura float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0); float compensatedVoltage = averageVoltage / compensationCoefficient; // Conversão da tensão para TDS (ppm) tdsValue = (133.42 * compensatedVoltage * compensatedVoltage * compensatedVoltage - 255.86 * compensatedVoltage * compensatedVoltage + 857.39 * compensatedVoltage) * 0.5; // Envia dados para o Serial Monitor Serial.print("Tensao: "); Serial.print(averageVoltage, 2); Serial.print(" V | TDS: "); Serial.print(tdsValue, 0); Serial.println(" ppm"); // Atualiza o LCD atualizarLCD(); } } /*************************************************** * Função: atualizarLCD * Descrição: Atualiza as informações no LCD ***************************************************/ void atualizarLCD() { lcd.clear(); // Linha 1: TDS em ppm lcd.setCursor(3, 0); lcd.print("TDS:"); lcd.print(tdsValue, 0); lcd.print("ppm"); // Linha 2: Tensao e Temp lcd.setCursor(2, 1); lcd.print("V:"); lcd.print(averageVoltage, 2); lcd.print(" T:"); lcd.print(temperature, 0); lcd.print("C"); } /*************************************************** * Função: getMedianValue * Descrição: Calcula a mediana de um array ***************************************************/ int getMedianValue(int array[], int length) { int tempArray[length]; // Copia os dados para ordenação for (int i = 0; i < length; i++) { tempArray[i] = array[i]; } // Ordenação Bubble Sort for (int j = 0; j < length - 1; j++) { for (int i = 0; i < length - j - 1; i++) { if (tempArray[i] > tempArray[i + 1]) { int temp = tempArray[i]; tempArray[i] = tempArray[i + 1]; tempArray[i + 1] = temp; } } } // Retorna a mediana if (length % 2 == 0) { return (tempArray[length / 2] + tempArray[length / 2 - 1]) / 2; } else { return tempArray[length / 2]; } } |
Como interpretar os resultados da qualidade da água?
Ao executar o projeto, o valor de TDS (Total Dissolved Solids) aparecerá no Monitor Serial e no display LCD em ppm (partes por milhão). Esse valor representa a quantidade de sólidos dissolvidos na água, como sais, minerais e outros compostos inorgânicos.
| TDS (ppm) | Qualidade da Água | Observação |
| 0 – 50 | Água extremamente pura | Usada em laboratórios, indústria ou osmose reversa. |
| 51 – 150 | Água muito limpa | Ideal para consumo humano e aquários sensíveis. |
| 151 – 300 | Água potável | Dentro dos padrões de potabilidade. |
| 301 – 500 | Aceitável | Potável, mas pode conter mais sais e minerais. |
| >500 | Água imprópria | Pode não ser recomendada para consumo; excesso de minerais, poluição ou contaminação. |
Observação: Cada país possui uma legislação específica sobre os limites de TDS para consumo humano. No Brasil, segundo a Portaria GM/MS nº 888/2021, o limite máximo recomendado para água potável é de 500 ppm.
O que significa um TDS alto ou baixo?
- TDS muito baixo (abaixo de 50 ppm): indica água extremamente pura, com poucos ou nenhum mineral. Isso não é necessariamente ideal para consumo, já que nosso corpo precisa de alguns sais minerais presentes na água.
- TDS alto (acima de 500 ppm): pode indicar excesso de sais, minerais, metais pesados ou até contaminações químicas.
Importante entender:
- O sensor TDS mede condutividade elétrica, que é convertida em TDS com base em uma fórmula de aproximação.
- Ele não detecta contaminantes biológicos, como bactérias ou vírus.
- Também não identifica substâncias não condutivas, como óleos ou alguns poluentes orgânicos.
Cuidados com o sensor de condutividade
- Apenas a sonda vai na água. Nunca submerja o módulo eletrônico, apenas os eletrodos (a ponta do sensor).
- Use em líquidos limpos. Evite sujeiras, óleo ou resíduos que possam se depositar nos eletrodos e afetar a leitura.
- Limpeza regular. Após o uso, enxágue a sonda com água destilada ou água limpa para remover resíduos que possam afetar as medições futuras.
- Não use para imersão permanente (se não for projetado para isso). O sensor é indicado principalmente para medições pontuais. Se deseja usar continuamente, verifique se o modelo é adequado ou proteja os componentes.
- Evite água quente. A maioria dos sensores TDS funciona bem em temperaturas entre 5°C e 55°C. Acima disso, pode haver danos ou leituras imprecisas.
Conclusão
O sensor de condutividade da água (TDS) é uma ferramenta extremamente útil para quem deseja monitorar a qualidade da água de forma simples e acessível. Seja em projetos de hidroponia, aquaponia, aquários, laboratórios educativos ou até no uso doméstico, ele permite uma análise rápida dos sólidos dissolvidos na água, ajudando a entender se a água está dentro dos padrões adequados para cada aplicação.
Apesar de ser um sensor simples, ele é uma excelente porta de entrada para estudos sobre a qualidade da água, sustentabilidade e controle de ambientes. E claro, tudo isso com a praticidade e facilidade do ecossistema Arduino. Sempre que possível, complemente sua análise com outros sensores, como de pH e temperatura, para uma visão ainda mais completa da qualidade da água.
Ficou com alguma dúvida, tem sugestões ou quer compartilhar sua experiência conosco? Escreva aqui nos comentários, vamos adorar ler! E não se esqueça de nos seguir no Instagram para ver mais conteúdos como esse.
Olá Rosana, tudo bem?
Tive a oportunidade de ler o seu conteúdo sobre o sensor de condutividade da água (TDS) e achei a abordagem muito interessante e inspiradora. Estou iniciando um trabalho em uma linha semelhante e gostei bastante da forma como você apresentou a utilidade prática desse tipo de sensor, além da importância de complementá-lo com outras medições.
Gostaria de entrar em contato com você para trocar algumas ideias e, se possível, aprender um pouco mais com sua experiência. Acredito que essa troca possa ser bastante enriquecedora para o desenvolvimento do meu projeto.
Desde já agradeço pela atenção e parabenizo pelo excelente trabalho compartilhado.
Att: Fernando Canossa