Para quem tem algum tipo de plantação, saber a umidade do solo é algo importante. Ainda mais para criar um sistema automático que controla a umidade de acordo com a necessidade da planta. Portanto, vamos aprender a medir a umidade do solo sem utilizar nenhum sensor especial ou módulo. Até para quem não gosta da aplicação, é interessante ver como fazer a medição.


Informações base

Como medir

O solo, essencialmente, é formado por matéria orgânica e minerais. E diversos minerais são bons condutores de eletricidade. Sendo assim, é possível criar uma corrente considerável no solo entre dois pontos. E imagine que temos uma tensão aplicada em dois pontos do solo e uma corrente fluindo. Logo, teremos também uma resistência correspondente ao caminho entre os dois pontos.

Podemos dizer que, quanto maior essa resistência, quer dizer que os elétrons estão com mais ‘dificuldade’ de passar. Um solo seco (sem praticamente água nenhuma) terá uma resistência maior que um solo úmido. Isso, porque a água (sem ser água pura) contém sais minerais que auxiliam nessa condutividade. Portanto, podemos utilizar essa resistência para nos dizer quão seco está o solo ou quão úmido.

Para testar essa hipótese, peguei um multímetro e ajustei para medir resistências na faixa de 200KΩ (a faixa foi escolhida por teste e erro).

Testando a ideia

Primeiro, peguei as pontas de prova e coloquei uma bem próxima da outra (sem encostar) em um solo seco. As resistências das próprias pontas de prova podem ser desconsideradas, pois elas não passam de alguns ohms e a nossa escala está em KΩ. A imagem abaixo ilustra o resultado do que foi descrito.

umidade do solo seco resistência

Como é possível ver, o solo seco apresentou uma resistência de cerca de 53KΩ.

O próximo passo foi jogar água (cerca de 300mL). A imagem abaixo mostra o solo seco e depois molhado.

Solo seco antes de aguar

solo depois de aguar

E o resultado pode ser visto abaixo:

umidade do solo molhado

Agora com o solo já úmido, a resistência entre as duas pontas de prova caiu para cerca de 18KΩ. Esses dois valores serão úteis na hora de projetarmos o sistema para fazer a leitura da umidade do solo.

De acordo com os resultados, vemos que a ideia de medir a resistência para indicar a umidade pode ser utilizada. Temos apenas que ficar atentos a alguns detalhes que falarei abaixo.

Observações

Em relação a medição da resistência, reparei alguns problemas:

  • As pontas de prova que utilizei para a medição não mantêm um contato firme com o solo.
    • Isso pode provocar uma variação grande na medição da resistência.
    • Ou seja, na hora de fazer o projeto, é ideal utilizar alguma espécie de estaca ou algo que fique muito bem cravado no solo.
  • A posição das pontas de prova no solo fez a resistência variar consideravelmente.
    • Em um dos testes, colocando elas em pontos afastados deu uma resistência menor do que outro pontos próximos.
    • Isso pode ter sido causado pelo problema anterior, mas pode também ser algo em relação a algum corpo (raiz, semente, minhoca, buraco de minhoca) no solo atrapalhando a medição. Por isso, ajuda bastante utilizar algo que firme bem no solo e que pegue uma área maior.

É algo óbvio, mas vale lembrar: Se você irá fazer medições que fiquem no tempo, principalmente no sol, é importante preocupar com a proteção do circuito. É só pensar que, se um celular ficar direto no sol, ele pode apresentar diversas falhas, principalmente relativas ao display. Sendo assim, fazer uma caixinha já ajuda.


Construindo as soluções

Para criar um indicador da umidade, vou desenvolver dois circuitos: um apenas com transistor e outro utilizando um Arduino.

Utilizando Arduino

No post que falo sobre o LDR, expliquei um pouco sobre como ler valores de resistências utilizando divisor de tensão. Para quem não leu, vou falar rapidamente.

Nós precisamos criar um divisor de tensão, sendo que uma das resistências seria o solo, neste caso. Dessa forma, conforme a resistência do solo varia (mais úmido ou mais seco), a tensão do divisor de tensão também irá variar. Portanto, basta medir essa tensão utilizando a porta analógica do Arduino.

Circuito

Circuito para medir umidade do solo com Arduino

O circuito é bem simples. Basta ligar dois fios bem cravados no solo. Um deles você liga no 5v do Arduino e o outro você liga em outras duas partes: no pino analógico do Arduino (A0 no meu caso) e em um resistor de 47KΩ. A outra ponta do resistor deve ser ligada no GND do Arduino.

O resistor pode ser de outro valor. Usei 47KΩ por ser próximo do valor máximo que eu obtive experimentalmente. É ideal que você siga o mesmo raciocínio, pois um resistor com um valor muito distante da resistência máxima do solo vai te impedir de ter uma boa leitura da umidade do solo. Se, na hora de programar, os valores lidos não variarem muito, é recomendável um resistor de valor diferente.

Programação

A parte da programação é bem direta. É só fazer uma leitura da porta analógica – analogRead(A0) – e, com o resultado, executar a ação que você deseja.

Mas, antes, precisamos interpretar o valor lido. Para isso, considere o circuito acima. Quando o solo está seco, sua resistência é alta e quando ele está molhado, sua resistência é baixa. Quanto mais baixa for a resistência do solo no circuito, maior será a tensão no pino A0. Ou seja, quanto mais úmido estiver o solo, maior será a tensão no pino A0.

Sendo assim, é bom testar com o monitor serial qual é o valor lido pelo Arduino que indica que a terra está seca e qual é o valor lido que indica que a terra está com a umidade ideal. Feito isso, você pode criar variáveis para saber quais são os limites:

int soloSeco = 300; //Valores abaixo de 300 indicam que o solo está seco
int soloUmido = 700; //Valores acima de 700 indicam que o solo está com a umidade ideal

Os valores acima são de exemplo. No código abaixo eu criei um exemplo de como você pode utilizar o circuito.

Código de exemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int soloSeco = 300; //Valores abaixo de 300 indicam que o solo está seco
int soloUmido = 700; //Valores acima de 700 indicam que o solo está com a umidade ideal

void setup() {
  Serial.begin(9600);
}

void loop() {
  int umidade = analogRead(A0);
  if (umidade < soloSeco){
    Serial.println("O solo está seco");
    //Outras ações, como acionar um motor para aguar a terra
  }

  if (umidade > soloUmido){
    Serial.println("O solo está com a umidade ideal");
    //Outras ações, como desacionar o motor que joga água na terra
  }
}

Utilizando transistor

Para criar um medidor de umidade do solo com transistor, podemos aproveitar a variação da resistência do solo para comandar a base de um transistor. De forma que, se a terra estiver úmida o transistor conduz e aciona um LED e, se estiver seca, o LED fica apagado.

Recomendo bastante a leitura do post de como utilizar o transistor para entender os parâmetros do circuito.

Circuito

O circuito que eu desenvolvi, de acordo com os valores que obtive nas minhas experiências (52KΩ terra seca e 18KΩ terra úmida) está mostrado abaixo.

Medindo umidade do solo com transistor

Os dois resistores na base do transistor formar uma espécie de divisor de tensão que permitem ou não a chegada de tensão na base do transistor. Quando a terra está seca (alta resistência), a tensão em cima da base é pequena. E quando a terra está úmida, a tensão na base é maior e o transistor conduz.

O resistor em série com o LED ajuda a limitar a corrente que passa por ele.

Obs: O circuito acima considera um transistor com beta próximo à 100. Para o caso do circuito não funcionar corretamente, veja o tópico abaixo para adaptar o circuito.

Cálculos

Revendo o post de como usar o transistor você irá ver uma série de fórmulas que utilizei para o caso da polarização independente de β. Para inciar os cálculos, considerei uma corrente de coletor (Ic) de 20mA para uma resistência de 18KΩ (solo úmido), para acender o LED. E um β de 100 do transistor. Sendo assim, recorrendo as principais fórmulas:

Vth = Vfonte*\frac{R1}{Rsolo+R1}(1)

Rth= \frac{Rsolo*R1}{Rsolo+R1}(2)

Ib = \frac{Vth - 0,7}{Rth+Re(\beta+1)}(3)

Ic= Ib*\beta(4)

Lembrando que, neste caso, Re (resistência do emissor) é igual a 0. O que fiz foi:

  1. Calcular Ib utilizando a fórmula (4)
  2. Substituir a fórmula (1) e (2) na fórmula (3). Sendo assim, a única incógnita será R1:Ib*\frac{Rsolo*R1}{Rsolo+R1} = Vfonte*\frac{R1}{Rsolo+R1} - 0,7
  3. Com as fórmulas substituídas, resolver a equação e encontrar R1. Usar algum site online pode facilitar sua vida nessa etapa.
  4. Por fim, basta escolher um resistor comercial com valor próximo de R1 e mudar o circuito.

 

Pronto, agora você já sabe duas formas fáceis e baratas de medir a umidade da terra de suas plantas e não precisa gastar com módulos ou sensores.

Sensor de umidade capacitivo para solo