Power transient problem with Wifi Shield WLS06201P

I had an interesting problem with this shield. I am playing with a robot using this shield in the middle of my computer stack, with an Arduino Mega R3 on the bottom, this shield in the middle, and the motor shield 1.1 on the top. I found that when I tried to propel my robot, within a few seconds the robot would go haywire and the Arduino would reset. This problem exists both when powering the computer from USB and when powering from the 1117 regulator on the Motor Shield.

I got out my scope and looked at the Vcc pin on the motor shield, using the ground pin next to pin 53 of the Arduino as reference, and saw 1/2 - 1 volt dropouts lasting about 1/2msec on the Vcc line. The impulses were also present but less strong on the Vcc grove pins on the Wifi board. The impulses occurred once per second.

I turned off the “link monitor” feature of the Wifly, which “pings” the AP every second, and the impulses stopped except when the Wifly was transmitting. I also lowered the transmit power of the Wifly and the glitches became smaller.

To mostly fix, I took a Grove jumper, removed the data (yellow and white) wires, and jumpered gound and Vcc between grove connectors on the Wifly shield and the Motor Shield. The computer resets much less often now.

I am thinking of better workarounds, maybe to externally regulate 5V and feed Vcc to the stack via the Grove headers on the Wifly board. It’s hard to feed Vcc directly to the Mega since there is only one Vcc pin and feeding the Mega 5V via Vcc and USB at the same time can destroy the USB chip.

Maybe version 1.101 of the Wifly board could beef up the power traces. The Wifly module uses a lot of power, up to 185 mA - that’s 3 or 4 times what the Arduino uses! Now I know why people use Xbee…

facebook.com/video/embed?vi … 4890650282

Tying the board connectors together via their grove connectors sis not help much. In addition, I desoldered the reset switch on the motor shield and replaced it with a .05 uF disc cap. That helped more, I can run the motors in reverse at half speed now.

Next step is to put some caps at the connections to the motor itself. I put a couple of caps at the motor connection terminal block, across each motor line, but that had no effect.

I am even thinking of building a “bypass shield” - a shield with nothing but caps and zeners on the Arduino power and signal lines, along with big conductors for 5V and Ground, to be placed between the computer and the shield stack.