# Logic-Level Converter: How high is the power consumption?

Regarding the following schematic for a bi-directional logic level converter, can someone explain how to calculate power consumption? Can I use pullup resistors with higher values, e.g. 1M? I need such a converter in my circuit, but the device is battery operated and should therefore consume as little power as possible.

LV1 is connected to a digital pin of an Arduino Pro Mini 3.3V. LV is connected to 3.3V. HV1 is connected to a Water Flow Sensor. HV is connected to 5V.

• this has nothing to do with DC-DC-converters --> I removed the tag
– Curd
Commented Jan 31, 2018 at 12:56
• Why are you using a bi-direction logic level convertor to receive a signal from a sensor? Commented Jan 31, 2018 at 14:31
• You mean because I could use an uni-directional LLC (voltage divider)? Wouldn't that consume more/comparable amount of current? Commented Jan 31, 2018 at 14:38

The power consumption is easy to estimate: P=U²/R. As it stands currently, R3 will burn 1.1mW and R4 2.5mW. The MOSFET consumption can be neglected.

But this will be consumed only when the logic level is low. If the logic level is high, this circuit consumes virtually no power at all.

Therefore, you must also consider the logic level duty cycle of the lines. And if, as I suspect, this is used to translate I2C bus lines (which standby at logic level high), this simply depends on the length of the frames and the rate at which you send them. If you send one frame every other second, you can probably just ignore the power consumption of this altogether. If you keep sending frames continuously (which is bad), you may consider 50% duty cycle (divide the power by two).

So the main power consumption factor here is not the resistor value but the amount of communication needed between both devices. I would therefore really try to reduce it as much as I can, eventually even by modifying the protocol if possible.

Now, if everything has been done at this level and you still need to reduce power consumption, you can indeed use higher value resistors. But the highest value you can use depend on the kind of bus (which you didn't specify) and the devices specifications. If it is an I2C bus, you can use this application note from TI to size the resistor (but if it is something else, the information given there will still be useful).

• Thanks for your answer. Sadly, I do not have much regarding device specifications, since it is a cheap chinese flow sensor (not I2C). This one: media.digikey.com/pdf/Data%20Sheets/DFRobot%20PDFs/… -- the "Output Pulse Duty Ratio" of the sensor is 50% +/- 10%. -- The sensor will be switched on through a nmos once every 24 hours for approx. 30 seconds. Commented Jan 31, 2018 at 14:26
• It seems the sensor output is push-pull. So why do you even need a pullup? And why a bidirectional level translator? Mmmh. You should have put the datasheet in the question. Now, this is a bad case of X-Y problem.
– dim
Commented Jan 31, 2018 at 15:00
• I'd like to keep a more general design in case I want to hook up something else than a water flow sensor to the arduino. Why can't / shouldn't I do that? Commented Jan 31, 2018 at 15:14
• What you probably should have done is not assuming the logic level shifter you shown was the right solution for your needs. Actually, I wouldn't use that. In your case, I would use a regular, unidirectional 5V to 3.3V buffer with low static consumption and no pullups. Something like SN74LV1T34. It consumes 1µA. You can't do less than this.
– dim
Commented Jan 31, 2018 at 15:20
• Sorry, I'm only an electronics hobbyist, therefore it's sometimes not easy to think the way you should think when making a circuit ;) -- can you suggest a 5V to 3.3V buffer which I can get on the cheap from aliexpress? Or can you tell me for what I have to look if I'm searching for such a buffer? Apart from your suggestion, I only found ICs which are huge and dual/triple/quad bus buffers. Commented Jan 31, 2018 at 15:45