XIAO S3 low performance voltage regulator

Thanks a lot for your answers @msfujino !

It’s the Ultra Low Power co-processor (present in eps32’s s2/s3 and c6). It runs in parallel with the main CPU and can run during deep sleep. But for the sake this question, you can just consider it as some load (<1mA) which exists during deep sleep.

See ULP RISC-V Coprocessor Programming - ESP32-S3 - — ESP-IDF Programming Guide latest documentation for details.

I can share the full esp-idf project if you are willing to test it. If you could measure the current during deep sleep while running the project we could conclude whether there is a problem with my hardware.

I did! :slight_smile: (although with 3.7v), it’s on the power consumption table I shared above (Through Battery pads at 3.7 + Deep sleep entries indicate: 30uA for the Xiao and 36uA for the AdaFruit).

I measured again at 3.8v but I didn’t see a considerable difference. So, there is a 3x current difference with what you measured in deep sleep.

This is what I get from PPK2 when injecting 3.8v on the battery pads with a 100ms zoom:

There are peaks every 12ms, I was attributing those peaks to the regulator, but now I am not sure. 12ms seems too wide, so clearly something’s up.

I could attribute it to a software problem but that doesn’t explain why the same view (with exactly the same code), when injecting 3.3v (actually, injecting 3.38V) directly to the 3v3 PIN is:

15uA seems very reasonable.

Note also that, unlike my other boards, the Xiao seems to be using a 0.1 version of the chip (as shown by the flashing tool) as opposed to the Adafruit board (and another Waveshare board I have) which use version 0.2 of the chip. Maybe this has something to do with it? Could you share your chip revision?

Sure I just did! Here are the results:

Note that a variable resistor was used (since I didn’t have fixed resistors for all the values you supplied and I don’t own an electronic load) so the results won’t be super precise:

I added an extra measurement with a 1971 Ω resistor

I get a steady voltage of ~3.75V from the PPK2 during all the tests except for when the 1971 Ω resistor is used, where I get 3.796V

1 Like

Sure thing! In fact my use case entails using the ULP during deep sleep, which should consume very little power. Honest question, why did you infer I expected to do any heavy lifting from the device?

Hi there,
Bringing the receipts he does, :ninja: LOL :+1:
I can add that if you attach with a clamp to the bottom it will indeed reduce the heat felt on the MCU when using the camera I feel extending the life and improve the performance as well.
I also think it’s under designed for the expected performance we need from this MCU IMO…
seems as soon as you LOAD it down things go Toasty pretty fast. :face_with_peeking_eye:
HTH
GL :slight_smile: PJ
:v:

more current = more voltage drop

Forget this, my XIAO S3 has a revision 0.2 chip, I mistook it for the revision of the QT Py.

Also, I now realize that I mistakenly measured the deep USB power while the charging LED was on (it turns off after a few seconds).

Leaving us at

However, that still doesn’t explain the difference when using the battery pads (which should result in the charger being off) if anything, it should be consuming less than 340uA and definitely not 625.

1 Like

OK, mystery solved. I redid the battery pad soldering and the power consumption went down to a reasonable value. I triple checked it when I did it the first time, but my guess is the cables may have been touching the GPIO pin pads. This is the final result:

I wish that the battery pads were on the top side of the board and I also wish I had reched the soldering earlier. I spent a week trying to figure this one out.

Anyways, the conclusion is that the Xiao has a great power consumption during deep sleep, comparable to the QT Py S3 but way cheaper in both space and price since it comes with the charger bundled in.

1 Like

HI fons and every one,
I am glad that the problem was resolved while I was sleeping!.

I would like to review a few things.

OK, mystery solved. I redid the battery pad soldering and the power consumption went down to a reasonable value. I triple checked it when I did it the first time, but my guess is the cables may have been touching the GPIO pin pads.

I actually suspected the wiring problem when I first saw the photos of fons soldering, but I decided that fons was experienced in electronics and didn’t point it out. I regret that. Here is a picture of my soldering for reference. I use thin leads and glue them in place so they don’t move.

However, that still doesn’t explain the difference when using the battery pads

I think the reason why the sleep current is 30uA when powered from the battery pad is due to the leakage current of the LMBR4010. According to the datasheet, it is 8uA at 25C, but it easily doubles if the temperature rises even slightly. There is also a large individual variation (confirmed with 3 pieces). If the current increases significantly when the can is warmed by warm air, I think the diode is the cause.

I started the experiment with a large load current because I saw the efficiency graph posted by fons and mistakenly thought that there was a problem with the efficiency at mA load. However, I am glad that I recognized the problem of heat generation in the ESP as a result.

1 Like

I’ve also realized that temperature is playing a big role.

During my tests I was turning on the main CPU periodically and connecting to Wifi. This raised the temperature of the CPU (or other components like @msfujino has pointed out), which apparently causes the board to consume more power.

To isolate the issue I have let the board cool, modified the code to stop waking up the CPU periodically (but leaving the ULP on) and hit the board (very unscientifically) with a blow dryer to raise its temperature. This is the power consumption profile:

It’s interesting how the power consumption doesn’t recover further after 10 mins (I guess that before hitting the board with the blow dryer it didn’t reach the baseline).

After having the board on for a while (with the periodic wakeups of the main CPU) the “Deep-sleep + ULP” consumption raises to 340 from the 250 I meassured at XIAO S3 low performance voltage regulator - #12 by fons

I still need to investigate, but it would suck if the diode is to blame for the extra 90uA

I think the only way to confirm this is to open the can and replace the diode.
I have replaced the diode as shown in the link below.

Shutdown current of LoRa-E5 mini, from 72uA to 3uA by replacing LDO and Diode - #2 by msfujino

I am still mastering TTH soldering but … so SMD is going to be a challenge, but I will see what I can do.

I just happen to have ordered a cheapo heat station from Aliexpress which should be here in about a month.

BTW, do you also recommend the GS1010 for the S3?

There is a comparison of the leakage currents of diodes. If the current does not flow enough to worry about forward voltage drop, it is better to use a silicon diode than a Schottky diode. As you can see from the characteristics table, the characteristics of the GS1010 silicon diode are overwhelming. If you want to use a Schottky diode, you may choose SBR1U200, which is called SuperBarrierRectifire with low leakage current.
I think GS1010 is available, but there is no reason to stick with it.

The link below has a picture of the inside of an ESP32C3, not of an S3 or C6, but it may help. The Schottky diodes are marked “KV”.

XIAO ESP32C3 and I2S. How to? - #21 by Rob_Fowler

That (and your other answers) was very very helpful. Thanks!!

I am about to source the diode to attempt replacing it but … the GS1010 comes in sod123 and the diode on the Xiao s3 is sod882.

I am totally new to surface mount soldering it seems they are not compatible. Am I right?

Nexperia seems to have sod882 low leakage current diodes, but they are only rated for 200mA.

I selected GS1010 because LoRa-E5 I replaced used relatively large component, but it is certainly too big for ESP32S3_XIAO.
You have seen the internal picture of the C3, but it is made with a larger land, so that larger diode can be mounted. I don’t know what S3 is like, but I think it would be better to look at the inside of S3 before selecting components, larger components may be able to be mounted there than in SOD882.
For SOD882, CTS05F40 might work.

Superb post, Informative and helpful!

I still need to replace the diode and see if/how the power consumption improves but I must say that the Nordic PPK2 isn’t as great as I thought for measuring power consumption.

Sure, it is one order of magnitude cheaper than the next option but it turns out that the measurements are all over the place between PPK2 versions. In my particular use case, some versions measure 600uA and some others (e.g. the latest one right now) measures around 200uA (which is what I expected). Let’s hope it was a temporary bug.

I believe I upgraded the PPK2 version while doing this tests so I am not sure anymore whether the soldering was really the culprit.

Also, it currently resets after a few hours in Mac/linux, so I can’t do long terms measurements :S . I will stick with it for now though since I don’t want to spend $700 in the next best option.

BTW @msfujino , have you tried using UV PCB glue to secure and insulate the battery wires?

It has given me such a headache that I am considering to use it instead of hot glue. It should have a smaller footprint and should insulate the pins better, shouldn’t it?

I have read elsewhere that people use “pogo pins” too but my projects involve existing boards and I am not sure how to attach them.