I'm using an nrf52 and an OPR5005 reflective optical sensor which takes roughly 20mA. In the design I have only 30mmx30mm space, so only suitable battery is cr2032 or cr2477 so far. The question is how far I can go without switching the sensor on and off? (sensor should be always open)

EDIT : Here is my final schematic file after answers below. I decide to go with nrf24l01 and for mcu I put a stm8l also I add a load switch to on/off the sensor

Typical power consumptions for IC's:

nrf24l01 : 600nA at powerdown, 0.12mA at TX (it will only transmit from eeprom and it will do it only once when I power up device)

stm8l : 3.7uA at sleep, 0.5mA at run mode (it will wake every 25ms and will enable sensor and record the data to eeprom and will sleep again. It will take almost 5ms estimated, including settling times)

OPR5005 : 15-20mA in run mode, 12nA at sleep (leakage from load switch) final sch

  • 2
    \$\begingroup\$ No datasheet links. No schematic. No help, I'm afraid. Improve your question. \$\endgroup\$ – Transistor Sep 27 '17 at 22:07
  • 1
    \$\begingroup\$ The OPR5005 is a killer at 10-20 mA, can you explain why you can't switch it on an off in your application? \$\endgroup\$ – Jack Creasey Sep 27 '17 at 22:14
  • 1
    \$\begingroup\$ Forget reflective sensors. Use a reed switch and a magnet if you want the battery to last a long time. \$\endgroup\$ – Spehro Pefhany Sep 27 '17 at 22:19
  • \$\begingroup\$ @JackCreasey because I have to count eye blink continuously \$\endgroup\$ – Arif Balık Sep 28 '17 at 9:41

A human eye blink is almost always longer than 50 ms. If you're only counting eye blinks, you only need a few measurements during each blink—one measurement every 15 ms would be plenty. The datasheet for the OPR5005 shows typical rise and fall times of below 100 μs as easily achievable, so having the sensor on for 300 μs before each measurement should be plenty to allow it to settle.

Therefore, the sensor need only be on with a duty cycle of (300 μs / 15 ms) = 2%, which would reduce its average current consumption to (20 mA · 2%) = 400 μA.

If this was the only load on a CR2477 battery (capacity = 1 Ah), it would allow for a battery life of (1 Ah / 400 μA) = 104 days. In practice, other loads, such as the nRF52, will reduce this substantially.

  • 1
    \$\begingroup\$ Note that the Vce(sat) is the only guaranteed coupled characteristic given and it is at 100uA, which implies a 50K resistor from +5. tr & tf typically will be something like 1ms each at that resistance. So a more sophisticated circuit might be called for. But the concept is sound. \$\endgroup\$ – Spehro Pefhany Sep 28 '17 at 16:59
  • \$\begingroup\$ @SpehroPefhany Agreed. To get a reasonable performance I'd probably use a small pullup plus an op-amp, though if low resolution is acceptable one might be able to feed the unamplified signal directly to an ADC. \$\endgroup\$ – Abe Karplus Sep 28 '17 at 17:54
  • \$\begingroup\$ @AbeKarplus thanks for answer. I will come back with a schematic ASAP \$\endgroup\$ – Arif Balık Sep 29 '17 at 7:47

[The answer is more stark than the O.P. thinks.]

A CR2032 and CR2477 cells can supply only 0.2mA and 1mA continuous current, respectively. They will not be able to provide 20mA for the OPR5005 sensor to work. For are Lithium Manganese Dioxide batteries it's normal to have very low output currents.

  • 1
    \$\begingroup\$ No, actually you can get much higher currents out of CR cells without too much loss of capacity. I've had no issue taking 10 mA+ from a tiny CR1225. \$\endgroup\$ – Abe Karplus Sep 28 '17 at 6:20
  • \$\begingroup\$ @Abe Do you get 10mA pulsed or continuous? (I know it's possible to get larger pulsed currents from coin cells.) \$\endgroup\$ – Nick Alexeev Sep 28 '17 at 6:43
  • \$\begingroup\$ So what do you suggest for such an application? By the way I'm trying t count eye blink with that sensor and because of that battery is a very delicate matter. \$\endgroup\$ – Arif Balık Sep 28 '17 at 8:23
  • \$\begingroup\$ @NickAlexeev I've typically drawn that current pulsed (say 50% duty cycle, 8 kHz frequency), but drawing it continuously is also possible. I haven't measured the capacity in that case, but I don't think it's much worse. \$\endgroup\$ – Abe Karplus Sep 28 '17 at 15:31

The CR2477 has over 3 times the capacity of the CR2302 so seems a better target battery for your project. You can draw many mA from the battery if you are willing to sacrifice long use times.

Even though you are measuring eye blinks it seems it would still be possible to use a sleep mode for your MCU and turn off the LED in the OPR5005 to reduce power consumption.
If you were to come out of MCU sleep at several hundred Hz, measure eyelid open/closed status (perhaps no more than 50-100 us on time) and go back to sleep you may be able to reduce your power by almost 100:1.
If you characterize the LED/phototransistor pair then you can find more accurately the current you need to run the LED at. Perhaps this may be closer to 10 mA than 20 mA (and any gain is worthwhile).

To deal with the pulse current drawn from the battery all you need is a large value capacitor across it. The battery keeps the capacitor fully charged and will supply current far beyond the 1 mA use to measure it's load longevity. As an example folks use CR2302 with a LED strapped directly across them and get lifetimes of 10's hours even though it is a serious abuse of the battery.

Your power draw is essentially a constant current when on (dominated by the LED) so you can use a simple CC discharge form such as dV = (I*t)/C to work out the change in terminal voltage (here I'm simply ignoring the current from the battery, and initial conditions are fully charged C).

So for an MCU/LED on time of 1 ms and a terminal voltage change of say 0.2 V at 20 mA you need a minimum of 100 uf. I would fit the largest value capacitor you can across your battery given your limited space.

I assume in all of this you want to transfer the data from the (head mounted?) measuring platform to your PC. Spending most of your MCU time in sleep probably means losing your BT connection, but perhaps you can simply store the data locally for most of the time. On occasions, you could come out of sleep and power up the BT connection to transfer data.

I know it's not your chosen components, but I'd be tempted to use an NRF24L01+ in burst mode to transfer data. These are easy to initialize and provide a reliable link (retransmit) without needing connection oriented protocols.
For the MCU a small ATTiny85 might suffice, though I have no idea how much code you need to run in your MCU.

Update since Question edit....

A much better attempt at a viable circuit.

  1. C13 should be 100 uf minimum with a series R of about 270 Ohms. This will ensure that the Vbatt is not held down or rises too slowly during initial turn-on.
    The cap will take less than 100 ms to charge to a suitable voltage level, but will be at this level for the rest of the powered on time.
    You could be even more creative and short out the series resistor with another TPS22860 once the cap is charge and after your initialization runs if you felt so inclined (this would share the sensor current more with the supply than otherwise).

  2. Connect the sensor Collector to the sense GPIO with your pull-up resistor and connect the Emitter to ground. It does not need to be powered as an Emitter follower, and does not need to be switched on an off.

  3. The OPR5005 does not need to be turned on for more than 500 us at maximum.
    Let's assume that you come out of sleep every 10 ms (100 Hz), turn on the sensor for about 50 -100 us, sense the state of the eye-lid.
    If the eye-lid is closed you could sleep for say 5 ms, or at the very least power down the sensor for 5 ms.
    Next power-up or re-activation of the sensor do the same again. If the eye-lid is open (after having been closed) go back to 10 ms sleep state.


simulate this circuit – Schematic created using CircuitLab

You have a switch to turn your unit off/on (I did not show it here). With 100 uf direct across the battery supply and a high output resistance (relatively) battery the capacitance is enough to cause the supply voltage to rise slowly.
In the extreme it (as the battery is consumed and it's internal resistance rises) this may be enough to cause the MCU to misbehave on power up.
If both switches are off on power-up then the current to charge the cap is through the R1 resistor. When the cap is fully charged (you could use the A/D to test it perhaps?) then turn on the first switch, U1. Now when you turn on the second switch (U2) the R1 resistor is shorted (by U1) to share the sensor current from the cap and the battery.

  • \$\begingroup\$ Thanks for answer. I edited the question, you can check the schematic. \$\endgroup\$ – Arif Balık Sep 30 '17 at 15:01
  • \$\begingroup\$ @ArifBalık. I updated my answer. You do realize that we work on a points system here .....we don't do work for nothing. It's nice to get some reward for helping. \$\endgroup\$ – Jack Creasey Oct 1 '17 at 21:57
  • \$\begingroup\$ Here is the corrected sch . but I want to mention that C13 is close to TPS22860, should I bring it close to battery? Also I didnt quite uderstand the 2 TPS22860 concept, what I understand is connecting two ON/OFF and VOUT pins of two TPS22860 to get what? \$\endgroup\$ – Arif Balık Oct 2 '17 at 9:49
  • \$\begingroup\$ @ArifBalık You mis interpreted the changes to the schematic. The 100 uf is the supply for the TPS switch and the resistor goes to the battery. \$\endgroup\$ – Jack Creasey Oct 2 '17 at 16:33
  • \$\begingroup\$ I still didnt get it. How should I control two of those? Same signal for all? And TPS can give up to 200mA without a problem why should I make it two? \$\endgroup\$ – Arif Balık Oct 3 '17 at 7:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.