Recently one of my Temperature/Humidity sensors stopped broadcasting and would not respond to commands from central station.
The sensor in question was a DHT22/Arduino Pro-Mini 3.3V/NRF24L01+LNA based one which had been running off a 3.7V – 5000 mAh Lipo with an MCP1703 3.3V 250mA low voltage-drop, low-quiescent usage regulator.
It was situated in an external building, not too far from the central receiver, but it required some power (250 mAh) for the LNA NRF24L01+ and there were no other power sources available.
The board would wake every 15 minutes, take readings, broadcast them, receive an acknowledgement, and then go back to sleep. It was built to be a very low-power device, using less than 120 uA per hour, so this should not have been a battery issue, or so I thought.
Once I retrieved the sensor, I found that the battery was not only drained, but was actually registering less than 1V. The battery had been completely emptied, and to add insult, was now no longer rechargeable. The battery had been more expensive than the rest of the sensor parts totaled together.
I soon found the nature of the problem; the soldered PCB board would occasionally develop what acted like a short and the Arduino would simple enter a crash/restart loop causing the battery to drain. I tried to find the exact problem but could not localize it using my scope or multi-meter. I couldn’t reproduce the problem while measuring, but it would almost immediately start to happen when not measuring. It was not the NRF24L01+ board itself, the microcontroller or the DHT22 and they were removed.
After a few hours of frustration, I tried my hammer, but that also didn’t fix it, although it did reduce my options to just one; building a new sensor circuit.
This time, though, I wanted to build one that would not allow the battery to discharge beyond a predefined level should a problem develop.
For a 3.7V LiPo, the recommended limit I found was in the area of 3V, but the long distance NRF24L01+ boards are sensitive to voltage drops below the 3.2V level. They become moody and somewhat unstable, so I wanted to be able to cut the battery power off at around the 3.2V level.
After some more research and trying different combinations of timer chips (555 and its low power equivalent TLC555), Op Amps, and a few transistor-based circuits, nothing meeting my requirements stood out. All suffered from too much voltage drop, cost, or other problems.
Finally, I tripped over the xxx809/810 MPU Reset ICs (MAX, STM and others) and wired up a breadboard with one and an FQP30N06 Mosfet and voilà, perfect, well almost.
Step 1: Parts List
1: STM809T MPU Reset IC (3.08V LOW)
2: STM810T MPU Reset IC(3.08V HIGH)
3: SOT23-3 Adapters ( to make 809/810s Breadboard friendly w/ Pins (Curved or Straight as prefered))
4: FQP30N06 Mosfet
5: CD4043BE NOR S/R Latch IC
6. MCP1703 3302 or MCP1825 3302 (SOT223-3 adapters here with pins for breadboarding)
7. 1uF Caps(2) or similar
8. For Diode Version
----- BAT43 Diode or similar low drop
----- 1N4148 Diode or similar high drop
9.. For Voltage Divider Version
------ 1k 1/4W Resistors (2)
------ 1K Trimmer Pots (2)
10. Breadboards (I used a few 400 pt.)
11. Dupont Cables
12. Multimeter or two ( for tuning & testing)
13. DC Power Supply (for tuning & testing)
Step 2: First Try .. STM809T / FQP30NO6
The xxx809/810 microprocessor reset circuits are low-cost, low-power supervisory devices used to monitor power supplies. They assert a reset signal whenever the VCC supply voltage drops below a preset value and keep it asserted until VCC has risen above the preset threshold for a minimum period of time. The 809s assert a LOW (~0V) while the 810s assert a HIGH digital signal.
They are available in multiple voltage settings, but for my needs, the 3.08V – STM809T in an SOT23-3 package was the ticket along with the FQP30N06 Mosfet; it has a turn-on gate voltage as low as 2V and I had some on hand.
As the 3.08V raw level was a little lower than I wanted, I added a voltage divider to allow me to control the voltage getting to the VCC pin on the STM. I added a 1K Trimmer pot for adjustment with a 1K fixed resistor as my divider and adjusted the trimmer to generate the 3.08V input around an actual 3.20 VCC level.
The STM IC RESET output goes LOW when the VCC is less than threshold thereby turning the Mosfet OFF and shutting down the voltage regulator. The STM stays HIGH when it is above that level thereby keeping the Mosfet ON and allowing the voltage regulator to generate its ~3.3V.
Part of the problem with this circuit is the nature of batteries.
Even the basic delay built into the 809/810 ICs to prevent oscillatory behavior at the detection threshold won’t help when the battery starts to recover and goes over the threshold. This causes a circuit restart followed shortly thereafter by another failure and on and on. All of this further depletes the battery and causes havoc with the sensor components (NRF24, DHT22, MCP1703 and microcontroller).
What I really wanted was the ability to set two voltage levels.
One would be the voltage cutoff level, already defined above as ~3.2V.
The second would be the turn on voltage level, here somewhat arbitrarily defined as 3.7V. A fully charged 3.7V Lipo will actually measure ~4.2V, so the 3.7V level is fairly far down the discharge path but still more than powerful enough to run the circuit for some time.
With these two levels as the starting point, I wanted a circuit to also act as a “latch”.
That is, the circuit should turn on at the higher voltage level, ~3.7V+ and remain on until the battery discharged to or below the 3.2V level. It should then disconnect the battery from the voltage regulator thereby minimizing any further drain.
In order to restart the circuit, ~3.7V would be required so any battery recovery, recharge, or replacement would have to reach the 3.7V level before the circuit would connect the power to the regulator and turn-on.
This is pretty much the definition of a “Set-Reset Latch” and, as the MPU Reset ICs are already outputting digital signals, a Logic IC seemed to be the next place to look.
Step 3: CD4043BE Set/Reset LATCH IC
The CD4043BE is a CMOS quad NOR R/S Latch with 3-state outputs that operates within my desired voltage levels. Each latch has a separate Q (digital HIGH/LOW) output and individual SET and RESET inputs.
The Q outputs are controlled by a common ENABLE input. Although the bus-sharing capabilities of this IC are not being used here, the 4043 only requires 6 connections to provide the “latching”.
3. ENABLE – (VCC)
4. SET – Start (HIGH)
5. RESET- Shutdown (HIGH)
6. Q (output) – HIGH or LOW
Step 4: The Truth Table of the NOR Latch
Step 5: Circuit: CD4043BE S/R Latch With 809T and 810T
The logic used here:
1. Connect STM809T with voltage divider to the SET (VCC level ~3.7V). The STM809 keeps the output HIGH when voltage is ABOVE the 3.08 level. This will be the “SET” digital signal.
2. Connect STM810T with voltage divider to the RESET (VCC level ~3.2V). The STM810 output goes HIGH when the voltage drops BELOW the 3.08 level. This will be the “RESET” digital signal. (STM810 Breadboard test circuit Image above.)
3. Connect Q to the FQP30N06 Gate to act as a switch and connect or disconnect GND from the MCP1703.
When 3.7V+ is present at the 809 voltage divider, the output of 3.08V+ required level will cause the 809T to output a HIGH to the SET input of the 4043. As it is not possible to have the voltage be both above 3.7 and below 3.2, the RESET signal will be kept LOW, thereby setting the LATCH and generating a HIGH on Q and then a HIGH on the Mosfet Gate. The MSP1703 is “turned ON”. (See Row 3 in the Truth Table.)
As the voltage drops, below 3.7 but above 3.2, the 809T output would go LOW and the 810T output would also remain low thereby leaving Q “latched” with a HIGH remaining on the Mosfet Gate. The MSP1703 remains “turned ON”. (See Row 1 in the Truth Table.)
As the voltage continues to drop and crosses over the 3.2V level, the 810T now generates a high on RESET of the 4043 and, as it is not possible to be both above 3.7 and below 3.2, the SET pin remains LOW. This causes Q to go LOW and resets the LATCH. The LOW on Q and therefore on the Mosfet Gate turns it OFF. The MSP1703 is “turned OFF”. (See Row 2 in the Truth Table.)
Step 6: Result: Operation Was a Success, But the Patient Died
The good news is the circuit worked as designed.
The STM809 set the Latch above 3.7V via the CD4043BE Logic IC and the STM810 reset it at ~ 3.25. The only problem; the circuit was drawing enough milliamps (5-7) to make the circuit unusable.
Even when the battery was disconnected from the regulator, the drain remained, and the battery would surely be off to that special place they go to die.
Step 7: Third Try: Replace Voltage Dividers With Diodes
Here I replaced the voltage divider connected to the VCC input of 809T with a 1N418 diode. I really only need a voltage drop of about .7V to get near my desired 3.7V voltage level, and the 1N4148 gets me to ~3.55, which is close enough.
On the 810T, I needed a smaller voltage drop so I used a BAT43 Schottky to get a smaller voltage drop. I was able to get the 810T to trigger at 3.25V which was perfect for my needs.
The really good news: 11 uA in battery drain rather than 6-7mA of the voltage divider version.