How to control Sensor VCC from arduino pins

Hi,

I have a light sensor (TEMT600), BMP280 to control temperature, pressure and an accelerometer. All three are connected to Arduino pro mini running at 3.3v. The entire setup is connected to a 3.7v 500mAh battery.

Arduino goes to sleep and wakes every 60 seconds. Now, I need a way to turn on the sensors only when Arduino is awake, get the readings for a few milliseconds and then go back to sleep.

Few of the solutions I have found while researching are :

  1. Transistor (PNP or NPN) : These seem to be a solution, but they pull power while working. The gate and source voltage is 3.3v and sensors work at 3.3v. I don't expect to lose a lot of juice while using the transistor.

  2. MOSFET (P type and N type) : These seem to be the obvious solution on some of the solutions. But I am still not sure if I need to use a P type or a N type. Also, all the solutions found, the gate is controlled by 3.3v arduino pin while the drain or source is 5v or 12v. In my scenario, the voltage is only 3.3v across.

  3. Optoisolators: Not sure if this works, but to what I have read, these not only help in isolating the sensors, but can also be used as a switch.

Can someone help me with a solution to this? I need to lose little power while controlling the sensors VCC from an Arduino pin.

Thanks,
Praveen

Start by researching - and post here the links for - the datasheets for each device specifying the standby currents and operation modes.

Then we will know whether it is even worth attempting to shut down these devices or whether it is sufficient to power them from an Arduino pin.

Normally that's not something you want to do for an IC. It can cause weird and wonderful phantom power issues.

But in this case, the TEMT6000 is just a photo transistor with a resistor in series. That modules can be connected to an IO pin and turned on/off directly.

The BMP280 has a very low power consumption. When sampling @ 1Hz it's (typ.) 2,8uA. And it even gets better when you put it in sleep mode where it consumes just 0,1uA. So no real need to turn it off, that solution probably takes more power.

Only thing that does consume power are the pull ups on the I2C bus. On a lot of BMP280 breakout's you can disable them. That way you can add external (switchable) pull ups.

septillion:
Normally that's not something you want to do for an IC. It can cause weird and wonderful phantom power issues.

But in this case, the TEMT6000 is just a photo transistor with a resistor in series. That modules can be connected to an IO pin and turned on/off directly.

The BMP280 has a very low power consumption. When sampling @ 1Hz it's (typ.) 2,8uA. And it even gets better when you put it in sleep mode where it consumes just 0,1uA. So no real need to turn it off, that solution probably takes more power.

Only thing that does consume power are the pull ups on the I2C bus. On a lot of BMP280 breakout's you can disable them. That way you can add external (switchable) pull ups.

Thank you. I will go with solution of powering up all sensors from IO pin. I have one free analog pin (A2) which I will send power to all the sensors. Once powered on, will wait for a few milli seconds and then turn it back off.

Regarding the pull-up, I have designed a custom board and I will further connect the VCC of pull up to the same A2 pin so that the pull-up is also enabled when pin goes high.

Hope this solution does the trick. Any idea if the pull-up takes too much current?

septillion:
Only thing that does consume power are the pull ups on the I2C bus...

Please explain.
The SDA and SCL lines are HIGH on an idling I2C bus, so no voltage across any pull up.
Leo..

praveen_khm:
I will go with solution of powering up all sensors from IO pin.

Don't! Only do that for the TEMT6000 . Just put the BMP280 to bed.

And yeah, I2C idle state is HIGH so current consumption should be neglectable.