Cannot get MDBT42Q current draw below 95uA

Posted on
  • Hi,

    I am certain I have missed something, but have been tearing my hair out over this - I have two Espruino MDBT42Q breakout modules, as well as a bare module I got from Raytac that I flashed myself. On all of these modules, using firmwares 2v04, 2v07, 2v08, and 2v08_189, according to my current measurements (tested using both a uCurrent Gold + multimeter and a Current Ranger with its default OLED), and with a variety of power sources, I haven't been able to get the current draw below 95uA, even when I bypass the voltage regulator and directly power the modules through their VDD and GND pins.

    I've tried a variety of things, but even the following code, on Flash + Reboot, or in RAM fails to get it below this number. It also sits at this number between advertising packets when I'm not sleeping it, so maybe NRF.sleep isn't doing the right thing?

    NRF.setServices({}, {uart:false});

    Apologies in advance for missing something obvious, whatever it may be 😬

  • Have you connected anything to serial pin (D0 on MDBT40Q)? That would turn on the high speed oscillator and increase power draw.
    Also, are you connected via BLE (or any phone or computer that may connect automatically)? You have to disconnect to actually shut off radio.

  • That's odd - literally just NRF.sleep(); should be enough - and the voltage regulator is low power enough that you can get pretty low even using it. Are you sure that the code is being executed? You could check with the NRF Connect app to see if the MDBT42Q is advertising (it shouldn't be after 'sleep').

    You could also try the above. It won't sleep, but should reduce power consumption both when idle and connected

    NRF.setAdvertising({}, {interval:500, scannable:false}); // when disconnected
    NRF.setConnectionInterval(200); // for when you'r connected
  • @AkosLukacs D0 is connected to a NO switch (same as the breakout).

    @Gordon using that code, it remains largely the same (88-95uA, but with spikes for the advertising).

    When using NRF.sleep(), I do not see it show up in NRF Connect - though (unexpectedly) I also don't see anything with the same address show up when using Gordon's code snippet (it still appears correctly after a hard reset). Tested on two MDBT42Q breakouts.

    To make extra sure the code is getting executed, I flash the LED, and I verified my current measurement tool can go down to single-digit uAs (by measuring other projects).

    For giggles I also flashed Espruino to an Adafruit nRF52832 Bluefruit Feather, and with straight NRF.sleep(), I get uA readings that oscillate between 0 and 90uA about once a second which I assume is coming from all the other stuff on the board (whereas I never see a number below ~88uA on the Espruino board). Will keep experimenting!

  • Interesting, IIRC Espruino interpreter does "wake up" periodically, some timer runs out, it's documented somewhere. So short spikes in power consumption is expected.
    Tested with an MDBT42Q breakout @ v.2v08.189, but my baseline is around 5~7uA (measured by an INA226 and Espruino) .

    When did you buy the Espruino and the Raytac module? Long shot, but maybe Raytac changed something in the module, and doesn't go as low power as earlier modules did? Got mine with the Bangle kickstarter. Or maybe you uploaded something earlier to the modules that changed fuse bits?

    1 Attachment

    • mdbt_power.png
  • Ah that's super interesting - all my modules were purchased in the past month, from a mix of Adafruit and Amazon (I needed next day, so I bought the kit).

    • The official Espruino boards were just flashed up to 2.08_189 with NRF Connect
    • The bare modules were SWD/J-Flashed with espruino_2v00_mdbt42q.hex, then NRF Connect flashed up to 2.08_189

    But interestingly, I also got it running on an MDBT42V (the super tiny new one from Raytac) using the same method, and on that board I do manage to get ~20uA sleep!

  • It is strange - I see what @AkosLukacs reports - there are small spikes of power usage, but the average is extremely low.

    I wonder whether it's possible your meter is doing something like showing you the maximum power used over a period, and not the average? You could try attaching a big capacitor across it to soak up any peaks of power draw

  • My meter updates at about 5hz (whereas @AkosLukacs' spikes seem to occur every few seconds), and has been quite good at instantanteous readings so far, but given that no-one else seems to see this I'll tinker some more and report back. FWIW I flashed a second MDBT42V, and that also got the 20uA readings.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Cannot get MDBT42Q current draw below 95uA

Posted by Avatar for gmurphy @gmurphy