Nano 33 BLE Damage: Consuming High Current

Hi all,

(All of this is right before I managed to also accidentally break the USB connector off the board, but never mind that…)

I am feeling rather frustrated with myself because it looks like I may have damaged my Nano BLE (Rev 2), and I’d just like to understand the failure mode so I can hopefully avoid it in the future.

I’m working on a battery + solar powered remote sensor project (monitoring wood moisture and environmental-type things in a “solar kiln”, a sun-warmed outdoor enclosure for drying firewood at an accelerated rate). I’ve been experimenting with all kinds of circuit modifications using the Nano 33 BLE on a breadboard and in general I’ve been having a really fun time with it.

Last night I started my first experiments with a MOSFET to use as a switch to enable/disable the current in a voltage divider circuit that monitors the LiPo battery voltage (e.g. charge level), so as to be able to reduce current consumption from that part of the circuit to only the times when I’m actually taking a reading and thus extend the overall battery life of the application. Before introducing the MOSFET, the average current consumption of the whole circuit seemed to be around 10mA (though my INA219 seems to report somewhat different data).

At some points during the MOSFET experiment I noticed much higher current than expected running through the circuit (perhaps up to 500mA at one point… I know, ouch…), along with noticeable heat in some of the components and at times a faint burning smell. Of course I unplugged the voltage source as soon as I noticed these abnormalities but I imagine the damage would have been done quite quickly. I believe part of what led to some of my errors was not realizing (“learning?”) that the MOSFET can apparently retain capacitance/voltage at the gate even when the gate is disconnected. Specifically, it looks like I can start with no current flow in the MOSFET (drain-to-source), then add a “pull-up” resistor to pull the gate high and initiate current flow from drain to source, but then even after disconnecting the pull-up resistor the current appeared to continue flowing. Of course I must have also made another wiring mistake to account for the super high current flow and damage, but this is what led me to start understanding that the MOSFET can retain its gate “setting” even when the gate pin is floating or disconnected.

The board actually still appears to be functioning correctly (in terms of software), but I am seeing the strange behavior that the typical current consumption is now around 100mA. That might be OK just for experimentation of certain kinds, but I don’t want to risk damaging other components if this is a liability. It appears to boot up and load sketches just as normal. In specific, in this project I have cut the USB power jumper and have been applying 3.3V to the corresponding pin from a voltage regulator in order to power the board efficiently. So I’ve tried to remove all other potentially problematic aspects of the circuit besides this 3.3V input and it appears that the current consumption is still high through that input, but not through other circuit sections like the digital / analog pins.

Can anyone offer some insight as to what might have happened internally in the Nano 33 to explain the high current draw but continued functionality of the device, along with any words of wisdom or advice that can help me combat the guilt I’m feeling about damaging the board? The money isn’t really an issue (these things are delightfully cheap), I just don’t want to be burning out high quality devices like this in order to learn about electronics.

Thanks in advance for any insights you can offer about the likely problem or how to proceed with renewed confidence and joy in this fascinating hobby!

Best,
Daniel

Can you provide a wiring diagram with all connection (including every single power line and Vcc as well of the exact type of the components that were connected)?

Did you have a series resistor between gate and the pin of the Arduino to limit the current? This assumes that the mosfet is controlled from the Arduino.

1 Like

Hi, thanks so much for the reply! Please find below two diagrams: Circuit A and Circuit B. Unfortunately I basically unplugged/removed everything in frustration after discovering the problem, but I'm pretty sure these are how the applicable circuits were wired at the time.

Circuit A is how I think the voltage divider should be wired up with the MOSFET. Circuit B is something I think I did unwisely while experimenting with the MOSFET configuration (looks to me like it creates a resistor-less circuit from Vcc to Ground when the gate is pulled high). But this high current in theory would not have flown through the Arduino, so I wonder if it does or doesn't explain the failure?

Yes, I do have a resistor (220 ohms) between the digital pin of the Arduino and the MOSFET gate. During experimentation, I believe I manually disconnected and switched R2 (10K ohm pull-down resistor) from Gate<->Ground to Gate<->Vcc to test if I could "manually" toggle the gate/MOSFET "open" before having the Arduino do it digitally/programatically.


Appreciate any insights or thoughts you can offer about what might have happened to the unit!

Best,
Daniel

I'm not much of an electronics engineer. I suggested to show the circuit so others could advise.

Circuit B caused a short circuit in the mosfet (when you made pin D2 high) but I guess you already know that; the mosfet might not have survived. I however don't think that that took down the Nano.

1 Like

One very good way of damaging electronic components, including processors, is to change the wiring of them when they are powered up. It sounds like that is what you were doing.

2 Likes

Yes. The gate effectively forms a capacitor with both the source and the drain. It'll hold a bit of charge (in the nC range), but this will leak/dissipate away.

PS: I'd recommend using a MOSFET symbol in your schematic instead of a BJT.

1 Like

Thanks for the heads-up! I was indeed doing that.

If possible, could you please elaborate on the specific reason(s) why this approach is problematic? I understand that ideally the whole circuit should be powered down and up between every change, but when it comes to practical experimentation, I end up wanting to try to balance convenience and time when it comes to making modifications that I (probably erroneously) think are relatively low-risk.

Is it that a momentary error in touching components or wires together / creating connectivity that shouldn't exist is prone to causing instantaneous damage, or is there a more concrete electrical phenomenon at work (some kind of capacitance, current shifts, impedance differences, or something like that?) that would not occur if a circuit was powered up "cleanly" every time and without runtime modification... or, I imagine, the combination of both of the above reasons? I would just like to know if the risks have more to do with my attention, knowledge, and dexterity in making real-time modifications vs. an innate risk that pertains to how electricity will flow through the circuit as sections are added/removed/connected/disconnected, so that I can make an informed decision about risk vs. convenience when it comes to this habit.

For a concrete example, circuit B above was improperly designed and should never have been powered up, but I think I would have made that same error no matter whether I was configuring it "live" or with the power off (and I believe when it came to changing the location of the voltage divider relative to the MOSFET's drain/source, I probably did make that change with the power off). On the other hand, I likely tried to convert the resistor (R2) connected to the gate from a pull-down to a pull-up with the circuit live by moving the other end from ground to a voltage source, but I'm not sure if this action (or even the poor design of circuit B itself) could directly explain the damage to the Arduino.

Thanks in advance!

Thanks for that! It looks like I fell victim to an incorrect user submission for this component on EasyEDA - please see the screenshot below for the component definition I used. I guess it's "no one's" fault XD... jk. I should have verified that the symbol was correct for the component; I will make sure to learn the differences and use the proper ones in the future! Thank you!

Yes! voltage transients can easily be large enough to "instantly damage" or outright kill your micro. Not to mention the chance of making an incorrect connection.

Definitely not "low risk"
more like:
doyafeellucky

1 Like

FYI:

INA219

I dont see a 5V supply

Or, from experience, become a slow killer. In the line of "Pfffew, I did something wrong but it survived; three months later, what-the-heck, it stopped working".

One experience (at home) was with lightning hitting a computer (and connected embroidery machine) via the phone-line. The other one (at work) was ESD; we had the equipment to find hotspots in ICs and could see the issue.

3 Likes

Right now I’m mimicking a LiPo battery connected to the BQ24074 with a USB dongle that I have set to output a steady 3.65V from my laptop, which is connected to the LiPo +/- pins on that charging board. In the “deployed” version of the project, it’s an actual LiPo battery instead and a solar panel connected also to the BQ24074 that charges the battery and/or helps power the circuit (or a DC or USB input can also be used there). The board is spec’d to output a maximum of 4.4V from Out +/-, so right now it’s supplying the same 3.65V from there, which the LDO then drops to 3.3V (technically like 3.284V I think) for the voltage supply to the Arduino.

From my tests so far, this regulator has been reliable in keeping that voltage steady at 3.3V, and if the input voltage drops below 3.3V, it looks like the LDO provides about 40mV less than its input, and the Arduino seems to be able to hobble along with lower voltages on the 3.3V pin all the way down to around 1.75V where it finally peters out. Does this answer your question/concern about a 5V supply?

Very good to know, thank you!!

No not really. As your issue seems to relate to something taking too much current it would be useful if your schematic showed how the power supply is connected.

Also - why mess about with a mosfet switch? Just use a high resistance divider network to measure the voltage without drawing a lot of current.

You can use something like this
image

The continuous drain is about 4V /40M = 0.1uA which I'm betting is less than the self-discharge of your battery.

Again knowing exactly what you are using (hint - a link) would be a help.

I'm sorry, apparently I've done a very poor job of giving the information that's relevant to my question.

I'm using this https://www.amazon.com/dp/B07RXZ52KR plugged in to my computer via USB-C. It has three terminals. One is labeled "OUT + (V)", and that is connected with a red jumper wire to the rail of my breadboard that corresponds to the "LiPo +" pin on the bq24074. A second terminal is labeled "OUT - (A)", and that is connected with a black jumper wire to the rail of my breadboard that corresponds to the "LiPo GND" pin on the bq24074. There is a third terminal, "COM", which is not connected to anything.

Here's a photo of the current setup in real life (there are some components of the circuit not fully re-wired yet relative to when the original Arduino was damaged, and some unused jumpers on the breadboard, so I apologize if those are relevant and if I have wasted your time in general with my question):

I'm too stupid to know how to diagram it properly (and I could not find the USB device in the EasyEDA component library because it seems to be a sort of no-name Chinese product with very little in the way of documentation or even a model number), so I've placed images of the USB device and a photo of a MacBook Pro on my updated schematic as follows:

The laptop and USB power converter are not drawn to scale. I'm not sure if the power source of the laptop and beyond is relevant or not; let me know if it should be included as well.

I messed about with a MOSFET switch because I wanted to learn how to dynamically turn on and off a portion of a circuit (any circuit) using programming/electricity and to be able to only enable said portion of the circuit when needed. In this specific case, it's the measurement of the voltage of the LiPo battery, which again is not pictured or connected in this diagram because I had not yet wired up the actual battery for measurement or the wire from the divider junction to an analog input until I confirmed that the voltages that would be wired to the Arduino's analog input would be at the expected level -- I was interested in first using a multimeter to monitor what the voltage was at the resistor divider junction over time relative to what state the MOSFET was in, or relative to what the digital output of the Arduino was set to that was connected to the gate pin of the MOSFET.

Is the MOSFET absolutely necessary, cost efficient, or even a true efficiency improvement? Probably not. Is it the ideal component for the job? Probably not; it sounds like a BJT might have been a more standard choice for switching at this current and voltage level, but I believe this particular MOSFET met my criteria of something readily available with fast shipping and for a good price on Amazon. Could I have used higher-value resistors than what I have right now to reduce the total current draw of that portion of the circuit and still get workable or reasonably accurate/consistent values from the analog measurement, to the point that I would save more electricity by my choice of resistors than by dynamically turning on/off the circuit using a MOSFET? Probably. Do I want to learn how to use a MOSFET and/or a BJT for my own education and in order to be able to apply it to other parts of the circuit as well, so that when my Nano is in its lowest power state and not measuring anything, I can disable any unused things as desired like the battery sensor, wood moisture sensors, display controller, etc...? Yes.

Is this entire project either necessary or practical? Not really, I'm just the kind of person who enjoys learning and tinkering and experimenting with things that are new to me. I could just spend fifteen seconds to slap a mercury thermometer in the solar kiln with some hot glue, take occasional moisture measurements of the wood manually using an off-the-shelf wood moisture meter, and be done with it. That would save me lots of money, time, and electricity compared to what I'm doing here. Instead, I enjoy the idea of building some funky custom doodad (hopefully with a custom PCB that I will also learn how to create) that helps populate pretty graphs that I can monitor through a web browser, a customized display on my TIDBYT, and some cool eInk displays on the front of the unit to have a totally excessive but (to me) fun and novel system that is complete overkill for measuring and quantifying the effectiveness of the solar kiln and to indicate when the wood is ready (dry enough) to burn.

Thanks for the diagram and suggestion. I have seen capacitors used in this type of configuration before but I don't fully understand what the effect is, other than that I think it has something to do with reducing noise in the output voltage (Ain). I don't know what CR means. You're right, the drain of this particular suggested circuit is probably negligible relative to the rest of the system or to my battery's self-discharge rate. I don't know if the combined drain of all components/circuits I would like to be able to disable as needed is negligible relative to the rest of the system, hence part of my desire to learn about how to use a MOSFET as a switch. Will it be technically necessary or even more efficient to do this in the final product? I have no idea yet. I don't yet know how many (or few) hours of sunlight I will get over a particular time period in the darkest parts of a year in foreseeable weather conditions, which is what I believe would ultimately factor in to whether dynamically disabling or enabling certain circuit elements would be necessary in order for the average rate of charge from the solar panel over time to exceed the average power consumption of the whole circuit over time. To help deal with any deficiencies in sunlight for limited periods of time, I could also simply add more battery capacity to the whole system and then probably all of this would be irrelevant.

Thanks for your feedback.

Is this also what you used to determine the presently higher current draw of the bare Nano BLE? Have you cross-checked this measurement? You could put something like a 0.1Ohm shunt on the power input of your board and measure the voltage across this with a decent multimeter.

Yes, because you are shorting VCC and GND when the mosfet is on, and this is not good. It produces a big current that can damage everything in its way.
This can't work, at least as in the schematic. The mosfet should be between the voltage divider and GND.

And I would say, start with the most basic circuit first. And for learning how to use a mosfet as a switch, start with a basic circuit using the mosfet to switch an LED on and off. Then try also with a BJT.

After that, what you want to do is a "switchable voltage divider", google for it. You will see that it is also a bit tricky.
And at the end, a voltage divider with high resistors will need a couple of years to drain the battery. A battery in the drawer will self discharge faster.

1 Like

Makes sense and agreed; schematic B is clearly a bad circuit. The high current through the MOSFET makes sense to me there, though I’m still not clear on how this may have led the Arduino to consume high current now through the 3.3V input (even though it seems to otherwise function normally), since AFAIK the high current would not have traveled there. But I dunno, transient voltages or something? :man_shrugging:

Thanks. I thought I was keeping this about as simple as I could/should while still having the Arduino be able to control the gate dynamically (just basically substituting a multimeter voltage reading in the divider for an LED turning on, and also trying to detect differences in average current consumption over time), but perhaps I should have started with a fixed high or low voltage on the gate and taken my measurements without the Arduino involved at all at the start.

I do look forward to experimenting with / learning about a BJT too, once I can find a suitable component that I can get quickly and cheaply. Thank you also very much for the direction towards a switchable voltage divider, I will definitely research that! Assuming it’s a way to accomplish a similar thing (perhaps without specialized components), I’d love to learn how to construct that. Even if it would not be applicable to disabling other parts of the circuit as needed, it sounds like a great thing to understand and know how to build.

As amazing as the ecosystem for electronics education is, I’m definitely still finding it a bit tricky to determine and source the right collections of components to have on hand to handle these various tasks so as to not need to order something for every single change to a circuit design (then wait a few agonizing days for shipping), and yet to also not pay out the nose for a whole bunch of components that I would never have any use for. RIP brick-and-mortar electronics stores… totally understandable that they no longer exist, but a bummer nonetheless. (Fry’s, I’m looking at you! Yes, your business would have crumbled regardless, but you really didn’t need to take back that broken toaster for a full cash refund and then try to resell it as new-in-box XD).

The assortment of resistors and capacitors that came in a variety pack I got from Amazon have certainly started to prove useful for this project though; I think I basically built an impoverished man’s oscilloscope using some capacitors, the Arduino’s PWM functionality, and cranking down the delays in concert with the ridiculously awesome Serial Plotter feature, all in the name of trying to detect any difference between a piece of wood being connected to my circuit vs. not… low-pass filters and some shenanigans like that. But that’s a story for another impedance differential, another time, and another chip… (MCP6002, I’m ready for you!).

Well, you applied 3.3v to the GND pin of the board. And depending of the rest of the wiring maybe some amount of current went through the board.
But don't worry, as you said, they are cheap. And to overcome your 'supply problems', order a couple of things of each type every time :slight_smile:

1 Like

Gotcha! Sounds like we may not know exactly what is busted, but definitely seems like 3.3V on GND of the Arduino could cause something wacky to happen.

Most of the ICs that I do find on Amazon with fast shipping and reasonable prices are like 10 pieces for $10-20, which seems like a nice balance. And likewise, yes, as far as the Arduinos go, I already ordered two when I ordered a replacement. Turns out one of those had a box that was not properly sealed and the other is exhibiting a strange behavior (different thread here), so I may need to do even more exchanges from Amazon. I should probably implement an exponential re-ordering algorithm, haha! Thank you!