Para entender o funcionamento do Projeto Medidor de TDS Sensor de Condutividade da Água vamos primeiro precisar entender o que é o “TDS” e com funciona esse sensor em conjunto com Arduino, pois será essencial para dar seguimento a este projeto prático.
O TDS (Total Dissolved Solids) indica quantos miligramas de sólidos solúveis são dissolvidos em um litro de água. Em geral, quanto maior o valor de TDS, mais sólidos solúveis estão dissolvidos na água, portando menos limpa a água será. Por esse razão, o valor TDS pode ser usado como um ponto de referência para refletir a limpeza da água.
Uma caneta TDS é um equipamento amplamente utilizado para medir o valor TDS. O preço é acessível e é de fácil utilização, porém comumente não é capaz de transmitir dados para um sistema de controle para monitoramento online da qualidade da água. Em geral, os instrumentos profissionais têm alta precisão e podem enviar dados para o sistema de controle, mas o preço é caro para a pessoa comum. Para isso, existe um kit de Medidores TDS Analógicos compatível com Arduino, plug and play e de fácil utilização. Combinando com o controlador Arduino, você pode construir um detector TDS facilmente para medir o valor TDS do líquido sem precisar comprar equipamentos caros.
Este produto suporta entrada de tensão ampla de 3,3 ~ 5,5 V e saída de tensão analógica de 0 ~ 2,3 V, o que o torna compatível com sistemas ou placas de controle de 5 V ou 3,3 V. A fonte de excitação é o sinal AC, que pode efetivamente impedir a polarização da sonda e prolongar sua vida útil, enquanto isso ajuda a aumentar a estabilidade do sinal de saída. A sonda TDS é à prova d’água, podendo ser imersa em água para medição de longo tempo.
O Medidor de TDS Sensor de Condutividade da Água pode ser usado tanto em aplicações de qualidade da água, como para análise de água doméstica e hidroponia. Com ele, você pode facilmente fazer um detector TDS para refletir a limpeza da água e proteger sua saúde!
Atenção: 1. A sonda não pode ser usada em água acima de 55 graus centígrados. 2. A sonda não pode ser deixada muito perto da borda do recipiente, caso contrário afetará a leitura. 3. A cabeça e o cabo da sonda são à prova d’água, mas o conector e a placa do transmissor de sinal não são à prova d’água. Por favor, seja cuidadoso. |
Especificação do Medidor de TDS Arduino
- Placa transmissora de sinal
- Tensão de entrada: 3,3 ~ 5,5 V
- Tensão de saída: 0 ~ 2,3V
- Corrente de trabalho: 3 ~ 6mA
- Faixa de Medição TDS: 0 ~ 1000ppm
- Precisão de medição TDS: ± 10% FS (25 ℃)
- Tamanho do módulo: 42 * 32mm
- Interface do módulo: PH2.0-3P
- Interface do eletrodo: XH2.54-2P
- Sonda TDS
- Número de agulha: 2
- Comprimento total: 83 cm
- Interface de conexão: XH2.54-2P
- Cor: Preto
- Outros: Sonda à prova d’água
Visão geral do Medidor de TDS Arduino
Conheça o Medidor de TDS Sensor de Condutividade da Água em detalhes nas especificações abaixo, observe atentamente a numeração na imagem abaixo e a legenda na tabela logo abaixo:
Num | Etiqueta | Descrição |
1 | – | Potência GND (0V) |
2 | + | Potência VCC (3,3 ~ 5,5 V) |
3 | A | Saída de sinal analógico (0 ~ 2,3 V) |
4 | TDS | Conector de Sonda TDS |
5 | LED | Indicador de energia |
Tutorial Básico do Medidor de TDS Arduino
Este tutorial mostrará como medir o valor TDS da água. Por favor, leia com atenção e cuide às etapas e detalhes.
Requisitos
- Hardware
- Arduino Uno R3 (ou similar);
- Medidor de TDS Sensor de Condutividade da Água Analógico;
- Jumpers de ligação;
- Líquido testado;
- Programas
Diagrama de Ligação do Projeto Medidor de TDS Arduino
Código de Programação do Medidor de TDS Arduino
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 |
/*************************************************** DFRobot Gravity: Analog TDS Sensor / Meter For Arduino <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_TDS_Sensor_/_Meter_For_Arduino_SKU:_SEN0244> Created 2017-8-22 By Jason <jason.ling@dfrobot.com@dfrobot.com> GNU Lesser General Public License. See <http://www.gnu.org/licenses/> for details. All above must be included in any redistribution /***********Notice and Trouble shooting*************** 1. This code is tested on Arduino Uno and Leonardo with Arduino IDE 1.0.5 r2 and 1.8.2. 2. More details, please click this link: <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_TDS_Sensor_/_Meter_For_Arduino_SKU:_SEN0244> ****************************************************/ #define TdsSensorPin A1 #define VREF 5.0 // analog reference voltage(Volt) of the ADC #define SCOUNT 30 // sum of sample point int analogBuffer[SCOUNT]; // store the analog value in the array, read from ADC int analogBufferTemp[SCOUNT]; int analogBufferIndex = 0,copyIndex = 0; float averageVoltage = 0,tdsValue = 0,temperature = 25; void setup() { Serial.begin(115200); pinMode(TdsSensorPin,INPUT); } void loop() { static unsigned long analogSampleTimepoint = millis(); if(millis()-analogSampleTimepoint > 40U) //every 40 milliseconds,read the analog value from the ADC { analogSampleTimepoint = millis(); analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin); //read the analog value and store into the buffer analogBufferIndex++; if(analogBufferIndex == SCOUNT) analogBufferIndex = 0; } static unsigned long printTimepoint = millis(); if(millis()-printTimepoint > 800U) { printTimepoint = millis(); for(copyIndex=0;copyIndex<SCOUNT;copyIndex++) analogBufferTemp[copyIndex]= analogBuffer[copyIndex]; averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // read the analog value more stable by the median filtering algorithm, and convert to voltage value float compensationCoefficient=1.0+0.02*(temperature-25.0); //temperature compensation formula: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0)); float compensationVolatge=averageVoltage/compensationCoefficient; //temperature compensation tdsValue=(133.42*compensationVolatge*compensationVolatge*compensationVolatge - 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5; //convert voltage value to tds value //Serial.print("voltage:"); //Serial.print(averageVoltage,2); //Serial.print("V "); Serial.print("TDS Value:"); Serial.print(tdsValue,0); Serial.println("ppm"); } } int getMedianNum(int bArray[], int iFilterLen) { int bTab[iFilterLen]; for (byte i = 0; i<iFilterLen; i++) bTab[i] = bArray[i]; int i, j, bTemp; for (j = 0; j < iFilterLen - 1; j++) { for (i = 0; i < iFilterLen - j - 1; i++) { if (bTab[i] > bTab[i + 1]) { bTemp = bTab[i]; bTab[i] = bTab[i + 1]; bTab[i + 1] = bTemp; } } } if ((iFilterLen & 1) > 0) bTemp = bTab[(iFilterLen - 1) / 2]; else bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2; return bTemp; } |
Resultados esperados do código
Depois de carregar o código de exemplo, abra o monitor serial do Arduino IDE. Em seguida, insira a sonda TDS na água e mexa suavemente. Em seguida, espere que a leitura fique estável e você obterá o valor TDS da água.
Tutorial Avançado do Medidor de TDS Arduino
Através do tutorial básico, o valor TDS do líquido pode ser facilmente medido. No entanto, devido às diferenças individuais de diferentes sondas TDS, diferenças da placa de controle principal e nenhuma compensação de temperatura integrada, o valor medido pode ter alguns erros.
Portanto, para obter um valor TDS mais preciso, a calibração é necessária antes da medição. Além disso, é recomendável conectar um sensor de temperatura para compensação de temperatura para melhorar a precisão. Normalmente, o valor TDS é metade do valor da condutividade elétrica, ou seja: TDS = EC / 2.
O esquema elétrico é o mesmo do tutorial básico. Durante a calibração, é necessária uma solução líquida de condutividade elétrica conhecida ou valor TDS, como solução tampão padrão de 1413us/cm. Se convertido para um valor TDS, é cerca de 707 ppm. O valor TDS também pode ser medido usando uma caneta TDS se você não tiver uma solução tampão padrão.
Baixe e instale a Biblioteca de Sensores DFRobot Gravity TDS . Como instalar bibliotecas no Arduino IDE?
Código de Amostra
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 |
/*************************************************** DFRobot Gravity: Analog TDS Sensor/Meter <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_TDS_Sensor_/_Meter_For_Arduino_SKU:_SEN0244> *************************************************** This sample code shows how to read the tds value and calibrate it with the standard buffer solution. 707ppm(1413us/cm)@25^c standard buffer solution is recommended. Created 2018-1-3 By Jason <jason.ling@dfrobot.com@dfrobot.com> GNU Lesser General Public License. See <http://www.gnu.org/licenses/> for details. All above must be included in any redistribution. ****************************************************/ /***********Notice and Trouble shooting*************** 1. This code is tested on Arduino Uno with Arduino IDE 1.0.5 r2 and 1.8.2. 2. Calibration CMD: enter -> enter the calibration mode cal:tds value -> calibrate with the known tds value(25^c). e.g.cal:707 exit -> save the parameters and exit the calibration mode ****************************************************/ #include <EEPROM.h> #include "GravityTDS.h" #define TdsSensorPin A1 GravityTDS gravityTds; float temperature = 25,tdsValue = 0; void setup() { Serial.begin(115200); gravityTds.setPin(TdsSensorPin); gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC gravityTds.begin(); //initialization } void loop() { //temperature = readTemperature(); //add your temperature sensor and read it gravityTds.setTemperature(temperature); // set the temperature and execute temperature compensation gravityTds.update(); //sample and calculate tdsValue = gravityTds.getTdsValue(); // then get the value Serial.print(tdsValue,0); Serial.println("ppm"); delay(1000); } |
Etapa de calibração do Medidor TDS
- Carregou o código de amostra em sua placa controladora e, em seguida, abra o monitor serial.
- Limpe a sonda TDS e seque-a com papel absorvente. Insira a sonda na solução tampão de condutividade elétrica conhecida ou valor TDS, então mexa suavemente e espere por leituras estáveis. Se você não tiver a solução tampão padrão, uma caneta TDS também pode medir o valor TDS da solução líquida.
- Insira o comando “enter” para entrar no modo de calibração.
- Insira o comando “cal:tds value” para calibrar o sensor. Neste exemplo, eu uso a solução de buffer 707ppm, então preciso inserir o comando “cal:707”.
- Comando de entrada “exit” para salvar e sair.
- Após a calibração, você pode usar o sensor TDS em sua aplicação.
Perguntas frequentes
Q1. Esse sensor tem sensor de temperatura? Como fazer a compensação de temperatura? |
A1. Esta sonda TDS não possui sensor de temperatura, mas o algoritmo de compensação de temperatura está reservado no código da amostra. A variável de temperatura no código de amostra terá o padrão de 25 °C sem um sensor de temperatura. Você pode adicionar um sensor de temperatura à prova d’água para ler a temperatura e atualizar a variável de temperatura para fazer a compensação automática de temperatura. |
Artigo Traduzido e Adaptado do Post “SEN0244 Gravity Analog TDS Sensor Meter for Arduino”. Disponível em: https://wiki.dfrobot.com/Gravity__Analog_TDS_Sensor___Meter_For_Arduino_SKU__SEN0244