Go Down

Topic: Capacitiva Sensor de humedad para Arduino (resuelto) (Read 453 times) previous topic - next topic

Adrian_E

Hola, tengo una consulta que hacerles quiero adquirir un par de estos sensores de humedad de suelo
sensor



por lo que lei son utilizable con arduino y son mejores que los resistivos, la pregunta es, se conectan directo al arduino y se lee con analogRead(); como por ejemplo los potenciometros, o precisan algo mas

Esfinterman

Hola!! Según veo en el enlace que proporcionas en el que el vendedor detalla ciertas partes del sensor, éste ofrece una salida de 0 a 3v y la salida es analógica. A no ser que no lo haya detallado o explicado debidamente, podrás usar perfectamente ese sensor directo a la entrada analógica. Eso sí, ten en cuenta que, como la salida máxima es de 3v en analógico, no vas a llegar a un valor máximo del pin, a 1023. Tendrás que escribir un poco de código (no mucho) para convertir esos 3v en el máximo y poder tener una referencia visual porcentual. Bueno, esto lo digo teniendo en cuenta que usas una placa Arduino de 5v, porque si la usas de 3,3v estarás más cerca, obviamente, del 100%. ;)

Adrian_E

deberia usar la funcion   como por ejemplo y = map(x, 1, 50, 50, -100);?

Esfinterman

Deberás usar map, correcto!! ;) Para ello, deberás obtener la lectura más alta y la lectura más baja. Si sumergido en agua te da una lectura baja, con baja humedad te tendrá que dar una lectura alta. Para probar el caso de poca humedad, pon el sensor en la boca de un aireador de aire acondicionado con el frío al máximo. El aire frío que sale lo hace con muy baja humedad. ;)

cotarejo

Si exacto, para leer necesitas usar la función analogRead(0) "siendo 0 el pin analógico al que está conectado el sensor"

por ejemplo:

Code: [Select]

void setup() {
  Serial.begin(9600); // open serial port, set the baud rate as 9600 bps
}
void loop() {
  int val = analogRead(0); //connect sensor to Analog 0


Si luego quieres, puedes ver el valor que arroja el sensor y el valor que daría convirtiéndolo con map() para que tengas un porcentaje... por ejemplo tal que así:

Code: [Select]

void setup() {
  Serial.begin(9600); // open serial port, set the baud rate as 9600 bps
}
void loop() {
  int val = analogRead(0); //connect sensor to Analog 0

  int finporcentaje = map(val, 0, 1023, 100, 0);

  Serial.print("Valor del sensor capacitivo: ");
  Serial.print(val);
  Serial.print(" ");
  Serial.print("Porcentaje del sensor capacitivo: ");
  Serial.print(finporcentaje);
  Serial.println("%");

  delay(1000);
}


Suerte!

Adrian_E


Go Up