I have a fairly straightforward motor control system for an underwater robot, and it all worked well until we added a small DC impeller pump Gikfun DC 2.5V-6V Micro Submersible Mini Water Pump with 1m Silicone Tube (Pack of 3pcs) EK1374 - Amazon.com .
Here is a diagram of the system
The Arduino Uno controls 3 thrusters (waterproof DC motors with propellers) via 2 L298n motor controllers, 4x20 LCD display on I2C, and an Adafruit pressure sensor also on I2C. The entire system is powered by a 12V battery, with the 12V going to the Arduino Uno and to the motor controller boards.
We added a DC pump that isused intermittently, and added it the to 12V DC power, with a simple pushbutton control. When we push the button, it resets the Uno or hangs it up.
Solutions we tried: 1) Use a CastleLink BEC to power the pump motor and separate it electrically from the system - no change.
2) Keep a 5V source on the Uno through the USB cable (connect to a computer or power pack). This worked most of the time.
3) Power the pump through the spare channel on the L298n, controlling it with the switch through the Enable pin. Still messes the display and hangs up the Arduino when the button is pressed.
My guess is that there is alot of noise coming from the pump motor.
I should note that the motor is rated for 6V but we are powering it at 12V, however that has not been a problem in systems that are all analog electronics.
I have no I/O pins left on the Uno to serve as input from the pushbutton and output to the motor controller, but I feel this can be solved electrically.
Your thoughts and suggestions will be greatly appreciated!

