Close

New booster, new microcontroller, decades of battery life

A project log for Compact, low-power Geiger counter

A marker pen sized Geiger counter with up to 12 months battery life from 2xLR44, based on STM8L152K4 microcontroller

bleakytexBleakyTex 04/27/2024 at 16:201 Comment

Booster v2.0

I don't like the current design of the booster. Very straightforward approach, the efficiency obviously can be improved. I realized that it's better to take the feedback from transformer's primary winding; the same principle is used in photoflash chargers like LT3484. The main benefit of this implementation is that it doesn't waste energy on the feedback at all, there is no divider at the output that would be constantly trickling the energy from the capacitor. The transformer enables the use of transistors rated for lower voltages, which have better characteristics than high-voltage ones. Two ultrafast 1000V diodes and a 100nF 630V polypropylene film capacitor are used to minimize HV leakage. With all those improvements the new booster consumes 0.56 µA at normal background radiation level. Quite a step up from 8.6 µA in the previous design. 

Simulate this circuit


The solution actually was right in front of me from the very beginning. When I was doing initial research, many articles mentioned the voltage waveform on the inductor; it's a short pulse that appears at the moment when the transistor is closed and its height is equal to the output voltage if a regular inductor is used. If a transformer/autotransformer is used, the pulse amplitude is divided by the transformer's turns ratio. 

Switching waveform in a boost converter [source]


The idea is that we keep switching the transistor until the VLXI (kickback pulse of the transformer) will reach the breakdown voltage of the Zener diode and the microcontroller can detect this with a regular digital pin and stop switching. In my circuit a 33V Zener and a 1:12 transformer is used, so the booster will stop when the output voltage will be roughly 33 × 12 = 396V. Then we estimate when the voltage in the output capacitor has fallen under a certain value and restart the process again. With this approach the output voltage will fluctuate for quite a lot because after the capacitor is charged, we can only roughly estimate when to recharge it again since we don't have the means to measure the voltage at the output without turning the booster on. However, we don't have to keep the Geiger tube's voltage at exactly 400V, its operating range is from 380 to 450V, so we just need to keep the voltage within this range, which isn't too hard. 


Transformer design

The rest of the circuit revolves around the transformer, so it's gonna be the main focus of this post. I've decided to use the RM5/I, 3C90 gapless ferrite core because it's the largest core that fits in the pen form-factor and it has high inductance per turn (we need high inductance because the microcontroller can't output more than 16.384 kHz). When choosing the winding ratio in such transformer, the main trade-off is the capacitive loss in the secondary winding (loss increases with the amount of turns) versus loss in the switching transistor (high voltage transistors have higher Rds and Cout). Also we should take into account the primary saturation (can't have too few turns in primary) and how many turns can fit on the bobbin (mostly a limitation for the secondary). 


The primary shouldn't saturate

The amount of primary turns is bounded above by how many turns the secondary can fit. I've managed to fit 250 turns of 0.07 mm wire, so this will be our upper limit. The lower bound depends on the maximum peak current that the battery can handle. Since the transformer's core is a ferrite, its behavior is not linear, the current through the primary will rise linearly only up to a certain point, and when the core will saturate, the current will start ramping up very fast. I've learned this the hard way. 

Initially I just wound a 10:150 transformer, expecting primary's inductance to be 200 µH and thus a 450 mA peak current at 16.384 kHz, 50% duty drive. The saturation current was calculated here and I've got 580 mA, so I wasn't expecting the saturation to happen. I was using a 30V IRLML6346 transistor and a 1000 µF bypass capacitor to provide the energy for the transformer. The idea was to transfer as much energy per cycle as possible to minimize the CV² / 2 losses in both FET+primary and the secondary winding. The less cycles it takes to get from 0 to 400V, the lower the capacitive losses will be. Didn't work all that well... When I powered the boost converter from the battery, it was heating up. I've measured the current in primary winding and saw this (1 A/V):

The output voltage of my tinyCurrent (clone of the uCurrent) wasn't even enough to show me the full picture as the inductor current was way above 1.5 A. Simple formulas for saturation don't always work, it seems. After some searching, I've found that LTspice is capable of simulating the non-linear behavior of inductors using the Chan model, which is both accurate and easy to use. We need the following parameters for the simulation:

From the 3C90 material datasheet (magnetic properties):

From the RM5/I core datasheet (geometric parameters):

The coercive force Hc is the value of H at the point where B is zero on the bottom part of the curve. The residual flux Bs is the value of B at the point where H is zero on the top part of the curve. The rest of the values are stated the datasheet for the ferrite. Here's the LTspice simulation that I've used. Unfortunately, it cannot simulate transformers (coupled inductors) with this kind of model, so I just simulated the primary winding. I've set the number of turns to 9.6 instead of 10 because the last turn is not a full turn as the wire goes to the bobbin's pin on half of its way.

I (L1)


Looks pretty close to what I've got in practice. After some poking around I've found that 19 turns in primary creates the best balance between the peak current, transistor voltage and the number of secondary turns. The final version of the transformer has 19 turns in primary and 228 turns in secondary. I went with 1:12 turns ratio because this allows me to use a FET with low enough voltage rating and don't have too many turns in secondary at the same time. At 400V output and 3V supply such transformer will produce 3 + (400 / 12) = 36V kickback pulse. The transistor should be able to withstand this voltage. Transistors rated for above 45V don't have optimal Rds, output capacitance, and gate threshold. I'm using an SSM3K339R FET, it's rated for 40V. 

Let's simulate the 19-turn primary and the new transistor and compare it with practical results.

Blue trace — inductor current, 1mV /mA; yellow trace — battery voltage


Would you look at that, the peak current is 78.9 mA in simulation and 78.4 mA in practice. The average current is 18.2 mA which is optimal for the Li-MnO₂ battery. 


Discharge time matters too

While on the oscillogram above you can see a nice waveform of the inductor's current, it's not always like that. With the 16.384 kHz, 50% duty drive when the boost converter starts and the voltage in the output capacitor is near zero, the transformer will not have enough time to transfer into the capacitor all the energy that it had stored during the charge cycle, which will lead to an increase in primary current, up to short circuiting the battery:

Blue trace — battery current, 1mV /mA; yellow trace — battery voltage


Note that the current doesn't go to zero anymore because I've connected four 10uF, 16V, X5R capacitors in parallel with the battery to reduce the peak load on it. This reduces the resistive loss due to battery's ESR, and also prolongs the battery life since high loads reduce battery's effective capacity. Such capacitor configuration is used to achieve lower leakage through them, which was 5 nA in my case. There's a good appnote from SiLabs on this topic.

It's easy to show that the transformer's discharge time depends on the voltage at the output capacitor by expressing the time from the well-known formula for the current in the charging inductor: 

The discharge inductance is the sum of primary and secondary inductances when we're using an autotransformer:

Ldis = 122 mH

Same for the winding resistance, sum of primary and secondary:

Rdis = 26.3 Ω

Ipk = 78.4 mA as was measured on the oscillogram above

The initial voltage in the output capacitor will be equal to supply, 3V. If we plug the numbers in, we'll see that when Vout = 3V, the transformer will take 5.5 ms to fully discharge, however, when the output voltage will reach 50V, the discharge time will drop to 0.2 ms.

I didn't do the numbers when I was experimenting, I just intuitively set the PWM output to 6.5 kHz, 20% duty (30µs charge time, 0.12 ms discharge time) and this almost got rid of the current ramp-up:

Blue trace — battery current, 1mV /mA; yellow trace — battery voltage


The battery easily handles this kind of load for a short time, doesn't even fully drop out from its resting voltage. There's still some room for improvement but that's for another time. 

As for the algorithm to detect when to restart the booster, I'm not sure yet. After I did the measurements, I've found that while the tube's consumption is easy to predict by just counting its pulses, the capacitor leakage will change with environmental conditions such as temperature and humidity, so the algorithm most likely will have to estimate its leakage during each recharge.


Winding technique for the lowest losses

The capacitive loss in the secondary winding is very significant, and the transformer should be wound in such a way that keeps its capacitance at minimum. Here's what I came up with:

Each winding layer is separated with an isolation tape. The primary winding (0.224 mm wire, 19 turns) is wound in one layer on the bottom of the bobbin, and in the secondary winding (0.07 mm wire, 228 turns) the layers are wound in the same direction. The highest capacitance arrangement is when each layer is wound in opposite directions, so left to right on the first, right to left on the next. That's because the first turn of the first layer is opposite to the last turn of the next layer, so there's twice the voltage per layer between those turns. As the energy stored in the self-capacitance goes as the square of the voltage, this more than offsets the lower voltage difference at the other side of the windings. A lower capacitance is obtained by winding each layer in the same direction, returning between layers, so left to right, then left to right again. The voltage between layers becomes uniform. 

All those measures increased the conversion efficiency by 14%, resulting in total efficiency of 65% at 3V input and 400V output, which is comparable to the commercial solutions.

And here's the transformer being wound and the two booster prototypes that I've been working with.


Revisiting the tube consumption

In one of the previous articles I only estimated the tube consumption, however, I felt like I need to confirm my calculations in practice. And I also need to check how much energy we're losing in the booster's output diodes and capacitor. That's what I'll start from, in fact. 

I've connected a voltmeter with >10¹¹ Ω input resistance to the HV capacitor, started the booster, it charged the capacitor to 400V and turned off. I've measured that the voltage has dropped by 7V in 10 minutes, which is 0.0117 V/s. 

Since the current can be defined as the amount of charge transferred per unit time, we can easily calculate the leakage current by using the formula for the charge stored by a capacitor: 

I = (C × V) / 1sec

I = 100nF * 0.0117V/s = 1.17 nA

Then the battery consumption due to the HV leakage will be:

Ibat = I * (Vout/Vin) * η 

Ibat = 1.17nA * (400V / 3V) * 53% = 290 nA

While the booster's efficiency to charge the capacitor from 0 to 400V is 65%, it drops to 53% if it's recharging the capacitor from 380 to 400V, so I've used this number. 


Got the estimates for the leakage, now let's see how much the tube is consuming. I've charged the capacitor to 400V, connected the M4011 tube (yes, I've ditched the SBM-20), placed a radioactive object near the tube and the voltage dropped by 10V in 11 seconds (so the leakage is negligible). I’ve counted 299 pulses during this period. 

The charge that the capacitor had lost during that is:

Q = C × V = 100nF * 10V = 1 µC

Thus, a single pulse consumes: 

1 µC / 299 = 3.3 nC

The rule of thumb formula gives 1.6-ish nC. Good enough for me, at least it's correct within an order of magnitude.

Given that the tube produces 0.33 pulses per second (normal background radiation), consumes 3.3 nC per pulse, and has 400V at its anode, its power consumption will be:

P = V*Q*f = 400 * 0.33 * 3.3n = 0.43 µW

Given the 3V supply voltage, the battery consumption will be:

53% * (0.43 µW / 3V) = 270 nA

The total consumption of the booster, driving the M4011 tube that's exposed to a normal background radiation is 560 nA. Looks good so far, though I want to try to reduce the leakage even more. US1R diodes should leak even less than US1M for example. 


A new microcontroller

Long after I made the first prototype of this Geiger counter, I've noticed that the entire STM8 line is now marked as NRND. That, combined with the fact that we don't need a comparator and a voltage reference anymore, made me look for a new microcontroller. And I found a much better one. Behold, the RL78/L13 series from Renesas. There is also L12 series which consumes slightly less current but it also has less flash memory capacity, and I want a lot of it for the radiation logs. For the tests I've got the R5F10WLEA microcontroller and made a breakout board for it:

Since the microcontroller will spend most of the time in sleep mode, running the RTC and driving the LCD, consumption in this mode matters the most. With disabled CPU, running only the LCD and RTC, the RL78 consumes only 0.5 µA. The STM8L was consuming 2.4 µA in the same mode. Also there's no need to run the code from RAM this time, since the execution from flash consumes 4.1 µA; STM8L consumed 5.5 µA while executing from RAM. Since the microcontroller's CPU will run for <15 ms every 2 seconds, it will contribute only 31 nA to the consumption. Now to port the code to a new microcontroller. 

The microcontroller consumes 0.53 µA, the booster consumes 0.56 µA, the battery self discharge current is 1 µA (1% of capacitance per year), so the total consumption is 2.1 µA. This time I've decided to use a 950 mAh, CR1/2AA, Li-MnO₂ battery because it allows me to forget about changing the batteries entirely. Considering that the circuit can utilize up to 90% of the battery's capacity, its effective capacitance is 855 mAh. With 2.1 µA consumption from a 855 mAh battery the device will last for 46 years. Impressive, huh? Of course it won't last that long in the real world, it's impossible to predict the lifespan over such a long time since our main limitation is the battery shelf life at this point, and it can vary a lot. And I'm yet to confirm the total consumption in practice.

Discussions

farfalleflickan wrote a day ago point

Holy hell this looks awesome! Great job!

  Are you sure? yes | no