Embedded & BLEField engagement

Negligible impact is not a promise about the sensor. It is a guarantee about the topology.

Embedded firmware lead.
0.04
microamp-hours per read
850
milliamp-hour coin cell
0
models in it
always-on railnever switchesI2C pull-upstied to the wrong railMCU and radiothe sensorstill poweredpower gateopen, supply cut×current arrives through the data pinsthe fix is topological: take the pull-ups from the regulated rail,so the bus goes down with the part. 0.04 microamp-hours per read, measured.
The power gate cuts the sensor's supply rail, and the sensor stays awake anyway. Current arrives through the I2C pull-ups, which are tied to a rail that never switches off, so the bus back-powers the part through its own data pins. Choosing a lower-power sensor changes nothing here, because nothing here is about the sensor.
What was at stake

One Bluetooth Low Energy product, running on a constrained system-on-chip and its radio stack, powered by a coin cell. Part of the work was adding an I2C humidity sensor to the existing device without spending the battery. On a device like this the hard parts are the power topology and keeping the link alive under the radio stack. A blocking wait or a back-powering path costs battery life or drops the connection, silently, and nothing in the logs explains why.

How this works

On a coin cell, the current you cannot see decides the battery life.

A coin-cell device spends almost its whole life asleep. It wakes briefly to take a reading or exchange a few packets over Bluetooth Low Energy, then sleeps again. Battery life is therefore governed less by what the device draws when busy than by what it draws when it is meant to be doing nothing. A sleep current that is slightly too high, multiplied by every hour of the device's life, can outweigh all the busy moments put together. The quantities involved are small enough that a bench multimeter cannot resolve them, which is why measuring them takes a precision power analyser.

The usual way to save power on a sensor is to gate it: switch off its supply when it is not needed. Electricity, though, follows every path available to it. An I2C bus uses pull-up resistors to hold its two lines high when nobody is driving them. If those pull-ups are connected to a supply that stays on, and the gated sensor is still connected to the bus, current flows from the pull-ups into the sensor's pins and through its internal protection structures. The sensor ends up partly powered through its data lines. Its supply is off and it keeps drawing current anyway. This is back-powering, and it makes a gate that looks correct on the schematic achieve nothing.

The radio adds a second constraint, shaped by time. A Bluetooth Low Energy connection is a schedule of brief exchanges at agreed moments. The radio stack has to be ready for each of them, and if it misses enough in a row the link is declared lost. Firmware that waits in a loop for a slow sensor to finish its measurement can hold the processor through one of those moments. Nothing crashes and nothing is logged. The connection simply drops.

Both failures are paths, one electrical and one in time, and neither is fixed by choosing a better part. There is no model in this system. It is circuit topology, scheduling and arithmetic.

  1. Connection event served
    the link is healthy
  2. Firmware starts a measurement
    the sensor needs time to finish
  3. Firmware waits in place
    the processor is held
  4. Next connection event arrives
    the radio stack cannot run
  5. Events missed in a row
    the peer stops hearing the device
  6. Link declared lost
    and nothing in the logs says why
The fix splits the read into a start and a later collection, so the stack runs in between.
FigureHow waiting for a sensor drops a radio link. A Bluetooth Low Energy connection survives on brief exchanges at agreed moments. Firmware that holds the processor while a measurement completes makes the stack miss them, and enough misses end the connection without a single error.
The constraint

Adding a humidity sensor to a coin-cell device sounds like an exercise in choosing a part. It turned on two paths that no choice of part touches. The first is electrical: a power-gated sensor that shares I2C pull-ups with an always-on bus is fed through those pull-ups, so it never actually turns off. The second is in time: a blocking wait for the measurement holds off the radio stack, and the link drops. A lower-power sensor fixes neither.

Where it usually breaks

Low-power designs leak through paths that are not on the block diagram.

Low-power design is usually taught as part selection: pick the sensor with the lowest sleep current, the regulator with the lowest quiescent draw, and gate whatever you can. Those choices matter, and they are what a datasheet-driven review checks. The failures that actually drain coin cells tend to sit between the parts, in paths through shared pull-ups, protection diodes, floating inputs and peripherals that were never fully switched off.

Radio links fail in a similar, quieter way. Bluetooth Low Energy stacks need the processor at specific moments, and code that holds the processor too long in the wrong place makes the stack miss them. The resulting disconnects are intermittent, depend on load and timing, and rarely produce an error that points at the cause. Both kinds of failure are invisible to ordinary instruments and ordinary logs, which is why they survive into shipped products.

01

Back-powering through the bus

A gated peripheral stays partly powered through pull-ups on a rail that never switches off. Its supply is off and its current is not.

02

The gate that only cut the signal

Firmware stops talking to a peripheral and treats it as off. The peripheral keeps drawing, because its power never went away.

03

The blocking wait

Firmware waits in place for a slow measurement and the radio stack misses its moment. The link drops with nothing in the logs.

04

The invisible current

Sleep current is checked with a bench multimeter that cannot resolve it, and a reading of nothing is taken as fact.

05

The revision that undid the fix

A later board change moves a pull-up back to an always-on rail. The firmware is unchanged, the failure returns, and nothing reports it.

Sensor supply gated
looks correct on the schematic
Pull-ups on the always-on rail
hold the bus lines high at all times
Current into the sensor's pins
through its internal protection structures
Firmware stops reading
the sensor is treated as off
Multimeter shows nothing
the current is too small for it to resolve
The failure point
A sensor that never turns off
its supply is gated and it keeps drawing current through the bus
No line of code is wrong.
No part is wrong.
The path is wrong.
The fix is in the topology, so a later board revision can undo it without touching the firmware.
FigureBack-powering, traced. Every element here would pass its own review. The current flows along a path that crosses several of them, which is why looking at any one element never finds it.
The fork

The reflex, and the fix.

Road not taken

Gate the sensor and cut the signal

Pull

It reads as the correct low-power move, and it is exactly what a design driven by datasheets produces.

Why not

The shared pull-ups back-power the gated sensor through the bus, so it keeps drawing current, and a blocking read starves the radio stack and drops the connection. The gate looks right on the schematic and does nothing.

Road taken

Fix the topology

Accepted

Pull-ups fed from the regulated rail, a non-blocking read so the radio stack is never starved, and a gating arrangement that genuinely isolates the sensor.

Bought

Negligible impact as a property of the circuit, which a line in a specification can never provide on its own.

Decision

Treat it as a topology problem, because both failures are paths and neither is a part.

How it was built
01Power gate
›
02I2C bus
›
03Non-blocking read
›
04Radio stack
›
05Coin cell
01

Pull-ups from the regulated rail

Pull-ups on an always-on bus feed a gated sensor through its data lines. Moving them to the regulated rail is what makes the gate actually switch the sensor off.

02

A read that never blocks

Waiting in place for the measurement keeps the processor away from the radio stack, and the link drops. The read is restructured so the stack always gets its turn.

03

Coin-cell arithmetic as the design frame

A single sensor read costs roughly 0.04 microamp-hours against an 850 milliamp-hour coin cell. That concrete pair turns negligible impact from a reassurance into a sum anyone can check.

04

Measured with an instrument that can see it

A precision power analyser was used where a bench multimeter is blind, because the currents that decide this design sit below what ordinary instruments resolve.

Inside the key decisions

What each choice cost, and what it bought.

AMoving the pull-ups to the regulated rail

The tempting fix for a sensor that draws too much is a lower-power sensor. That would have spent money and changed nothing, because the current was arriving through the bus. Feeding the pull-ups from the regulated rail means the bus lines lose their supply along with the sensor, so gating it actually isolates it. It cost a change at the board level, which is harder to make than a change in firmware, and it removed the drain at its source.

BRestructuring the read around the radio

A blocking read is the simplest code to write: start the measurement, wait, collect the result. On this device that wait starved the radio stack. Making the read non-blocking meant splitting it into a start and a later collection, with the stack free to run in between. The code is less linear and harder to follow. In exchange the link stays up under measurement load, and the failure it prevents is one that would never have left a trace in the logs.

CTurning negligible into arithmetic

Negligible impact is a phrase that tends to survive review because nobody can disprove it. Pinning it to figures, roughly 0.04 microamp-hours per read against an 850 milliamp-hour cell, made it something anyone could check and anyone could break. That exposed the claim to scrutiny it might not have survived. Once checked, it held, and it now holds as a sum and not as an assurance.

DMeasuring below what a multimeter sees

A bench multimeter is quick and already on the desk, and at these currents it reports nothing useful. A precision power analyser took more setup and a more careful method. It was the only way the back-powering current, or the effect of fixing it, could be seen at all. Without it the design would have rested on assumption.

Gate the sensor, cut the signal
Sensor supply switched off
the schematic looks right
Pull-ups left on the always-on rail
the sensor is fed through the bus
Measurement waits in place
the radio stack is starved
Cell drains, link drops
and nothing is logged
Fix the topology
Pull-ups fed from the regulated rail
gating now isolates the sensor
Read split into start and collect
the stack runs in between
Measured on a power analyser
the current is seen, never assumed
Negligible impact, by construction
a property of the circuit
Same sensor, same firmware goal. Two paths changed.
Neither fix involved choosing a different part.
FigureThe two designs side by side. Both gate the sensor and both read it. Only the right-hand one closes the electrical path and the timing path that made the left-hand one drain the cell and drop the link.
How it was measured

A single headline number hides where a system fails. This work was scored on the dimensions that actually decide whether it holds in production, measured on real, held-out cases rather than the demo path.

Measured current with the sensor gatedLink stability under measurement loadCoin-cell life against the budgetBehavior on the terminal SDK branch
0.04 µAh
Energy cost of one sensor read
850 mAh
Capacity of the coin cell
pull-ups on the regulated railnon-blocking readmeasured with a power analyser
The figure is true of the topology as built, and only of that topology.
FigureThe arithmetic that makes negligible a checkable claim. One sensor read costs roughly 0.04 microamp-hours against an 850 milliamp-hour coin cell. That comparison only holds when nothing else is draining the cell, which is why the topology fixes come before the sum.
figures

Presented as one engagement rather than as separate clients. The sensor and radio work described here belongs to a single programme.

What it produces
Without this discipline

A design that gates the sensor, cuts the signal and claims negligible impact, while the cell drains quietly through the pull-ups and the connection drops under load.

This system

Delivered firmware for the product, with the back-powering and non-blocking-read analysis as the decisive detail, and coin-cell arithmetic that turned negligible impact from a promise into a guarantee about the topology.

pull-ups from the regulated railnon-blocking readmeasured with a power analyzerarithmetic, not assurance
The operating envelope

What it owns, and what it hands to a person.

Handled with confidence
Coin-cell budgets on the assessed topology
I2C sensor integration under the radio stack
Design for low-cost board houses
Flagged for review
Board revisions that change the power topology
Parts outside the assessed family
Out of scope by design
Budgets that assume a rechargeable supply
The honest limit

The guarantee covers the topology as built. A later board revision that moves the pull-ups back to the always-on rail brings the same failure back with no code change and no error, which is why the finding is written down as a topology rule and not as a fixed defect.

What it generalizes to

When a specification promises negligible impact, ask which circuit makes it true. A promise about a component is not a guarantee about a system, and the difference is usually a path nobody drew.

What to take from this

Battery life on a sleeping device is decided by what it draws while idle. Measure idle current with an instrument that can actually resolve it.

Switching off a peripheral's supply does not switch it off if its data lines are held high from a rail that stays on. Trace every path into the part.

A blocking wait in firmware can starve a radio stack and drop a link with no error. Structure slow operations so the stack always gets its turn.

Turn a claim like negligible impact into a sum with real figures. Arithmetic can be checked, and an adjective cannot.

A fix that lives in the board topology can be undone by a later revision with no code change. Write it down as a rule the next revision has to respect.

How we engage

You have a system like this one.
Tell us where it stands.

Whether it is failing, not yet built, or about to meet a scale it has never seen, we can tell you what we see.

Start a conversation
mostafa@opulion.dev · Response within 24 hours · By inquiry