I’ve been using Wixels without problem for a couple of years now, but have just managed to fry 3 in fairly quick succession. Not only is it getting expensive, but I’m no closer to working out why.
The application is a 2S lipo battery powered mobile robot (battery voltage measured at 7.9v on the last occasion). The Wixel simply performs wireless comms for an on-board 3.3v Arduino. The Arduino is powered directly from the 2S lipo via its RAW pin and works reliably.
The Wixel can only tolerate 6.5V on VIN so a Pololu S7V8A regulator is used to supply a regulated 5V from the lipo. The regulator has a 47uF capacitor between its GND and VIN mounted as close as possible, as recommended.
Aside from GND, the Wixel only has two other connections to it - P1_6 (Tx) and P1_7 (Rx), which are connected to the 3.3v Arduino’s Rx and Tx respectively via 10K current limiting resistors.
Wixel failure mode is that the green LED goes dim and the main chip starts getting hot. It still outputs 3v3 so I think the on-board regulator’s OK. Each Wixel seems to have failed on power up rather than whilst running.
The only other suspect would be current/voltage surges from a DC step up module also connected to the lipo to provide 12v. However I’ve measured VIN, Tx and Rx on a scope during ‘normal run’ and can’t see any noise. I’ve also looked at them during start up and they all ramp up smoothly over a few ms.
I am sorry that is happening. Since you are getting multiple units to be damaged in the same setup, it does seem like an issue with something in your system. Can you post pictures that clearly show all of the connections in your setup? Can you tell me specifically what your procedure is for powering up each Wixel?
OK, here’s the full schematic, everything shown:
The Wixel at the other end of the link is connected to a PC and already powered via USB. The power up sequence for the Wixel in the schematic is simply to connect the battery. Both Wixels run the vanilla wireless_serial app (nicely written, BTW).
The 10K resistors are just there to limit the Tx pin current if only one microcontroller is powered for some reason, but this isn’t a normal mode of operation.
I’m pretty stumped, the circuit’s so simple. Pieces of evidence I have to work with:
I never saw this happen when running from a bench PSU instead of the Lipo. Bench PSU was set to 9v and capable of delivering 5A.
Wixel seems to die on power up. ie. It was continuously running for 30 minutes and then dead on the next power up.
Microcontroller is fried but onboard 3v3 seems OK
I can only think of a few things:
Port pins over-voltage/current. This seems pretty unlikely given the series resistors. Also, in my experience this is more likely to damage the pin’s output transistor rather than take out the whole chip, although that’s not a rule!
Wixel port pins accidentally set to input/high impedance state and latching up. Seems even more far fetched.
Power supply problem. This seems most likely, but it’s regulated twice (via the S7V8A and then the Wixel’s on-board 3.3v regulator). I’ve checked it on the scope during multiple power-ups and run, and it rises smoothly and contains little transient noise.
I did not notice anything obviously wrong with your schematic. If you upload pictures that clearly show how everything is connected, I would be able check for anything else that could be worth considering.
You mentioned that everything was working for a couple of years. Did anything change in your system between when the Wixels were working and when they stopped working? If so, what specifically did?
Also, you might measure the VCC on your Arduino Pro Mini to make sure it really is the 3.3 V version.
I’ve used Wixels for a couple of years in all different things (battery and USB powered). This is the first time I’ve used one with the combination of a 2S lipo and that particular DC converter on the same supply rail, though.
The Arduino’s definitely outputting 3v3. Thanks for the kind offer of the picture upload, but I won’t waste your time on that as I’m pretty sure it’s hooked up correctly. I’m sure that’s been said before but it’s the same setup which worked with the bench PSU for a week - only difference is that a battery’s now connected. Do you have any experience with failure modes of that microcontroller? Would it getting hot be more likely to be the result of Vcc abuse rather than a port pin?
I’m prepared to fry one more Wixel as I’ve invested a fair amount in integrating it. I’m thinking:
- 9V TVS diode on the battery supply rail
- 5V TVS diode on the Wixel’s VIN
- 3V3 zeners + series resistors on the Rx and Tx pins
… none of which should be necessary but should theoretically make it bomb proof. I’ll then set up something to auto power cycle (ie. relay/timer) and gradually introduce each system component (Rx/Tx connections, DC/DC converter etc).
If it doesn’t fail then I won’t have understood why, but it will be solved. If does fail then at I’ll be closer to the cause, but I’ll probably give up and roll my own solution with another Arduino and an nRF24 module. I need a second microcontroller because I use it to wirelessly program the Arduino.
We briefly tried reproducing a part of your setup by powering a Wixel from an S7V8A regulator through a 2S LiPo and benchtop power supply, in cases with an electrolytic capacitor close to the regulator between VIN and GND. We turned the Wixel off and on again several times from that circuit and did not notice any obvious problems.
We do not have any particular insight into what would likely be the cause of the microcontroller on the Wixel getting hot after power-up in your system, and we do not have any recommendations on other precautions you could implement. Please let us know how everything goes.
Thanks for trying that out, very good of you. I’m sure that the problem’s at my end. I’ve still had no luck in understanding or identifying it but I have managed to cure it.
I swapped the S7V8A for a standard 5V 100mA linear regular (because that’s what I had available) and added a 5V TVS diode across its output (WIxel’s VIN to GND). I also added a 12V TVS diode on the battery power rail and protection to the port pins with 3v3 zeners and series resistors. It’s now been through more than 300 auto power cycles without problems, so one (or more) of these changes have cured it.
I’d normally only use these precautions if I were expecting nasty voltage spikes, and I’d only expect those from switching inductive loads. There are motors involved in the design but they’re not currently powered, so the main suspect would be the DC-DC converter, despite the fact it looks well behaved on the scope. If I were intending on manufacturing a million of these things I’d have to have a further look into it, but as this is only personal I’m happy to move on and inevitably have it bite me back later