Just curious,
I have an ESP32 driven circuit that currently works using a 5v relay to switch power to a sensor. I am using a pinout that sends a high signal that switches this relay. I then have a deep sleep timer so when the deep sleep occurs the pinout signal goes low and no power is sent to sensor (saving power for a battery setup)
I thought maybe i could replace this relay with an n channel mosfet (P16NF06L) so that the relay led’s aren’t sucking power and I might save myself about 100-200 mA power.
I connected it all up and the circuit works.
However the deep sleep on the ESP32 has not sent a 0 voltage message to the pinout with voltage running through the mosfet continously once activated.
What code do I need to insert to have the pin voltage go to zero and close the gate?
Pat
yaml, logs and circuit diagram please?
Nick,
apologies.
The circuit diagram I have followed is this from Hummingbear. I know it is only a pic but essentially this circuit works great but I attempted to put a mosfet in place of the relay.
yaml is
esphome:
name: "maintankv2"
platform: esp32
board: nodemcu-32s
# Send power to sensor by enabling relay on boot
on_boot:
then:
- output.turn_on: water_sensor_power
- delay: 6s
# Deep sleep
deep_sleep:
run_duration: 4min
sleep_duration: 2min
# Enable logging
logger:
output:
- platform: gpio
pin: 19
id: water_sensor_power
inverted: false
# Enable Home Assistant API
api:
ota:
i2c:
sda: GPIO21
scl: GPIO22
scan: true
id: bus_a
ads1115:
- address: 0x48
i2c_id: bus_a
sensor:
- name: maintank
platform: ads1115
multiplexer: 'A0_GND'
update_interval: 6s
gain: 4.096
unit_of_measurement: "V"
icon: "mdi:gauge"
accuracy_decimals: 3
filters:
- median:
window_size: 11
send_every: 09
send_first_at: 04
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-178238"
password: "R4e6qBGLoo7Z"
captive_portal:
I don’t have any logs that show anything to do with the gate remaining open. They just show the readings - but only when the esp32 is not in depp sleep. I have just measured the voltage over the terminals.
Using the relay switch the voltage is 0
Using the mosfet the voltage remains at the input voltage for the sensor - 15v. I expected it to drop to 0 when the esp32 went into deep sleep - the same as the relay.
Pat
Nick
The more I read about using mosfets the more confused I get. Maybe i should just stick with my relay that works and expect to use that extra 50mA in power. I have an expected run time of about 50 days on a 3.7v lipo battery. If I tie this with a solar charger then I reckon it would be an asteroid impact that stops my battery being recharged regularly.
The mosfet discovery tour can occur later. Don’t waste your time on this. Mosfets at the moment are a bit like smoke and mirrors. I know I’ve already got the smoke part with a wrong connection lead quickly turning into this.
Pat
Did you put a pull-down resistor to mosfet’s gate? If not this can happen. When ESP goes to sleep it’s pins are more or less “floating”. Mosfets with floating (or not connected) gate tend to remain it’s previous state. Try to use a resistor, say 10k (possibly more, less…try) from G of mosfet to GND
Yeah I put a 10k resistor between gate and source. Maybe I need to go higher?
Best is to try and see. If resistor will be to large then mosfet will stay (maybe only partially) open. Even better would be to use some mosfet driver. Running mosfet on 3.3V can cause mosfet not being fully open, thus heating will occur… if your mosfet will become too hot it means it’s not fully open.