Estoy trabajando en un sensor de proximidad para mi garaje y estoy usando un sensor ultrasónico HC-SR04 para medir la distancia. El microcontrolador que estoy usando para controlarlo todo es un PIC16F88. Tengo una primera versión que funciona perfectamente bien, la distancia es precisa y consistente.
Sin embargo, estoy planeando encender el proyecto desde una batería (no estoy seguro de qué tipo de batería todavía), y por eso me gustaría reducir el consumo de energía tanto como sea posible. En estado inactivo, el sensor de distancia consume aproximadamente 3 mA, lo cual es demasiado. Comencé a modificar el proyecto para usar el modo de suspensión del PIC, esta parte funciona bien.
Ahora estoy intentando alimentar el HC-SR04 desde un pin del PIC y un MOSFET (2N7000). Tengo el sensor conectado de la siguiente manera:
- Vcc: + 5V
- Trig: Pin de salida del PIC
- Echo: Pin de entrada del PIC
- Gnd: Drenaje de MOSFET
El MOSFET está conectado como:
- Drain: Gnd pin del HC-SR04
- Fuente: Gnd del circuito
- Puerta: pin de salida del PIC
La lógica de mi programa C es la siguiente:
- Aplique el nivel lógico 1 a la puerta del MOSFET
- medir la distancia
- Aplique el nivel lógico 0 a la puerta del MOSFET
- Ponga el PIC a dormir un poco (unos 500 ms)
- Repetir
El problema es que las distancias medidas no son consistentes en absoluto. Parece variar alrededor de la distancia correcta, pero va de 10 a 20 centímetros por encima y por debajo de la distancia real. Si conecto la puerta del MOSFET a + 5V, entonces funciona perfectamente bien y tengo distancias consistentes y correctas. Intenté esperar hasta 500 ms después de configurar la compuerta a + 5 V antes de medir la distancia, pero no la reparó.
¿Alguien ha experimentado algo similar o tiene una idea de lo que podría intentar alimentar el HC-SR04 de esta manera?
¡Gracias por tu ayuda!