Buenas noches a todos , tengo un problema con un sensor de humedad.
Es una sonda YL-69 con dos terminales separados adecuadamente y un módulo YL-38 que contiene un CI comparador LM393 SMD (de soldado superficial) muy estable, un led de encendido y otro de activación de salida digital
mi problema es el siguiente:
necesito medir la humedad de tierra de una maceta, los valores que necesito son:
99% cuando la tierra esta húmeda y 0% cuando esta seca
no se porque pero me lee lo contrario
o sea:
99% cuando esta seca y 0% cuando esta húmeda
¿como puedo hacer para invertir esos valores?
no se si es un problema en mi código o es el sensor
Nunca use ese sensor, pero si "99" es el valor que entrega cuando la tierra esta seca y "0" cuando esta humeda(suponiendo que así es como funciona el sensor, si las mediciones concuerdan con la humedad pero a la inversa) simplemente invertí el mapeo.
int humedad_actual=map(analogRead(5),0,1023,100,0);
Pero espera que alguien que lo haya usado te confirme que así es como realmente funciona.
Es correcto steel_series, el sensor trabaja al revés y tu solución es la que se usa.
De todas formas es un mal sensor. y a los 3 meses lucirá oxidado si lo usas permanentemente.
Debes limitar el uso y ahora me dirijo a puravida. Como haces eso? Pues conecta la alimentación del sensor a un pin que le de 5V y cuando lo hagas lees y luego de hacerlo lo apagas.
En lo personal como estaras en un medio con agua o humedad es posible un corto y que quemes ese pin asi que usa un transitor o un RELE que lo alimente. SI no sabes cómo, consulta que te diremos.
surbyte:
En lo personal como estaras en un medio con agua o humedad es posible un corto y que quemes ese pin asi que usa un transitor o un RELE que lo alimente. SI no sabes cómo, consulta que te diremos.
A mi me funciona muy bien con este Mosfet y si le das al sensor alguna pintura conductiva con algo de grafito, me están aguantando varios meses sin problemas.
surbyte:
Como haces eso? Pues conecta la alimentación del sensor a un pin que le de 5V y cuando lo hagas lees y luego de hacerlo lo apagas.
En lo personal como estaras en un medio con agua o humedad es posible un corto y que quemes ese pin asi que usa un transitor o un RELE que lo alimente. SI no sabes cómo, consulta que te diremos.
es un proyecto para mi jardín, conecto el sensor a la tierra y cuando la humedad está por debajo de lo programada activa un rele que esta conectado a una bomba de agua, probé con invertir el mapeo pero me parece que lo estoy haciendo mal ya que no se de programacion y eso juega muy en contra
steel_series:
(suponiendo que así es como funciona el sensor, si las mediciones concuerdan con la humedad pero a la inversa) simplemente invertí el mapeo.
si te fijas en el código ya probe invertir el mapeo, mi problema es que no se nada de programación y no se si lo he hecho bien, ¿puedes guiarme?
Mismo código que steel_series, indentado (algo que no se porque no hizo ninguno), A0 y A5 restaurados. Usar 14 y 19 esta bien pero no lo entiende nadie.
El delay(1500) lo pongo al final. No cambia nada pero arrancar con ese delay() que sentido tiene, en cambio si lo tiene al final del ciclo. Basicamente es lo mismo. No merece discusión.
Los parentesis en los if tampoco tienen sentido y no estan mal pero solo aporto otra forma de escribirlo para tu aprendizaje puravida.
El código es muy simple y comprendo que estas en los primeros pasos pero hay que intentar cosas por su cuenta.
Cuando no se sabe, se busca lo que no se entiende. Y si de su lectura tampoco se comprende entonces si se consulta.
Caso map... es una función que básicamente es una regla de tres simple. Pones todos los limites como quieras y la función devuelve lo que le has dicho.
La mejor solución cuando pasa eso es apartarse de tu código principal y probarla aparte y ver como se comporta haciendo cosas diferentes. Eso no modifica tu código y aprendes a usar la función que sea.
Bien, aca dejo tu código con estas pequeñeces que he corregido, para el lector que llegue
Si con digitalWrite(regarPin, HIGH) controlas un RELE te diré que esto no funcionará.
Los reles trabajan invertidos. Los que compramos (módulos celestes) se activan con LOW y desactivan con HIGH
surbyte & steel_series les agradezco de corazón no solo por la ayuda la cual me sirvió para corregir mi problema sino que también por la explicación que me dieron, me va a servir al momento de un próximo proyecto
Es importante que aprendas por tu cuenta a cometer errores y aprender de ellos.
Como te dije, si algo no funciona, lo apartas y lo trabajas por separado hasta encontrarle la vuelta.
Nunca en el mismo código porque solo te confundirá.
Un código simple con el problema o duda que tengas. Lo analizas, usas el monitor serie para saber que hace. Lo miras con delay() si quieres, asi ves los pasos, y de a poco lo entenderas y resolverás. Asi se aprende!!