Olá pessoal, espero que alguem tenha passado por isso e saiba responder
Estou com um desses sensores de Higrometro para monitorar o solo, por hora eu estou fazendo alguns textes, porém vejo que o sensor não é fiél.
Eu configuro ele de 0 a 100%, porém durante o monitoramento eu deixo ele 100% submerso na agua, e ele tem variações, em vez de ficar no 100, ele fica variando os numeros.
Mesmo as vezes quando tiro totalmente do solo ele buga e fica no 100%.
Alguem sabe me dizer qual pode ser o problema? se esta na programação (duvido) ou na qualidade dos sensores?
Esse sensor eu comprei pelo aliexpress. sei que não devo esperar muito deles, porém a instabilidade é muito grande.
Alguem passou por isso? sabe como contornar a situação?
Para quem quiser ver o codigo, ele esta funcionando bem, consegui calibrar, porém a instabilidade do sensor atrapalha
const int pinoSensor1 = A0; //PINO UTILIZADO PELO SENSOR
const int pinoSensor2 = A1;
int valorLido1; //VARIÁVEL QUE ARMAZENA O PERCENTUAL DE UMIDADE DO SOLO
int valorLido2;
int analogSoloSeco1 = 800; //VALOR MEDIDO COM O SOLO SECO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int analogSoloMolhado1 = 390; //VALOR MEDIDO COM O SOLO MOLHADO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int percSoloSeco1 = 0; //MENOR PERCENTUAL DO SOLO SECO (0% - NÃO ALTERAR)
int percSoloMolhado1 = 100; //MAIOR PERCENTUAL DO SOLO MOLHADO (100% - NÃO ALTERAR)
int analogSoloSeco2 = 900; //VALOR MEDIDO COM O SOLO SECO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int analogSoloMolhado2 = 390; //VALOR MEDIDO COM O SOLO MOLHADO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int percSoloSeco2 = 0; //MENOR PERCENTUAL DO SOLO SECO (0% - NÃO ALTERAR)
int percSoloMolhado2 = 100; //MAIOR PERCENTUAL DO SOLO MOLHADO (100% - NÃO ALTERAR)
void setup(){
Serial.begin(9600); //INICIALIZA A SERIAL
Serial.println("Lendo a umidade do solo..."); //IMPRIME O TEXTO NO MONITOR SERIAL
delay(2000); //INTERVALO DE 2 SEGUNDOS
}
void loop(){
valorLido1 = constrain(analogRead(pinoSensor1),analogSoloMolhado1,analogSoloSeco1); //MANTÉM valorLido DENTRO DO INTERVALO (ENTRE analogSoloMolhado E analogSoloSeco)
valorLido1 = map(valorLido1,analogSoloMolhado1,analogSoloSeco1,percSoloMolhado1,percSoloSeco1); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS
Serial.print("Umidade do solo Orquidea: "); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.print(valorLido1); //IMPRIME NO MONITOR SERIAL O PERCENTUAL DE UMIDADE DO SOLO
Serial.println("%"); //IMPRIME O CARACTERE NO MONITOR SERIAL
valorLido2 = constrain(analogRead(pinoSensor2),analogSoloMolhado2,analogSoloSeco2); //MANTÉM valorLido DENTRO DO INTERVALO (ENTRE analogSoloMolhado E analogSoloSeco)
valorLido2 = map(valorLido2,analogSoloMolhado2,analogSoloSeco2,percSoloMolhado2,percSoloSeco2); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS
Serial.print("Umidade do solo Margarida: "); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.print(valorLido2); //IMPRIME NO MONITOR SERIAL O PERCENTUAL DE UMIDADE DO SOLO
Serial.println("%"); //IMPRIME O CARACTERE NO MONITOR SERIAL
delay(500); //INTERVALO DE 1 SEGUNDO
}