Problem with Uno driving a pump with an external power source and relay.

Hi,

i have a bench PSU supplying 12v to a breadboard rail, from which i step down to 5.5v in order to run a capacitive moisture sensor and pump (via a relay). I plan to use the 12V rail to power the Uno eventualy.

The symptom of the problem is that there's no voltage at the relay output when the switch is closed, i've quadruple-checked wires and connections, swapped out both relay and pump but no joy.

Everything has a common ground, picture attached.

Component list :

Uno R3.
LCD 1602 Keypad shield.
LM2596 to step down from 12V to 5V.
5V 10A/250VAC Relay.

Please excuse my bad paint skillz and thanks for any help :slight_smile:

You’ve provided no details of the pump.

Your diagram is incomplete, it shows no 12V supply, nor a 12V to 5.5V converter.

It does show there’s no connection between Arduino ground and the rest of the system.

Thanks Mark, updated diagram showing the proper connections now linked in OP.
The pump is a diaphragm pump, 3-5.5V, 100-200mA, typically drawing 190mA when on at 5.5V.
I feel there's no need to show the supply since i mentioned in the post that it's a bench supply going to the breadboard, then being stepped down to 5.5V by this LM2596 :

OP’s image

Confirm pump GND will not be Connected to Arduino GND.

Pump should have snubbing across its terminals.

Thanks larryd, corrected diagram :

(i had drawn some ground connections in error), pump is taking ground from common ground on the breadboard.

How to insert images into a post so we don't have to download them.

groundFungus:

How to insert images into a post so we don't have to download them.

Thanks groundFungus, OP updated.

Confirm pump GND will not be Connected to Arduino GND.

Pump should have snubbing across its terminals.

Your pump should use an isolated power supply, isolated from the Arduino power supply.

Thanks again for your time larryd.

"Confirm pump GND will not be Connected to Arduino GND."

I thought from what i've read that i had to have a common ground, so in this case i shouldn't? What's the reasoning there, i only have experience of small, simple circuits.

"Pump should have snubbing across its terminals."

Thanks for that, i'll look into it.

"Your pump should use an isolated power supply, isolated from the Arduino power supply."

The pump is getting power from a bench PSU and the Uno is powered from an AC adapter, so is the Uno-pump connected ground the reason they aren't isolated?

Is your relay on a module like this? What is the relay's coil voltage?

Thanks JCA34F,

looks very similar, mine is a 5V relay : ICQUANZX 5PCS KY-019 5V One Channel Relay Module Board Shield For PIC AVR DSP ARM for arduino Relay: Amazon.co.uk: Business, Industry & Science

commonground:
I thought from what i've read that i had to have a common ground, so in this case i shouldn't? What's the reasoning there, i only have experience of small, simple circuits.

You're using a relay to manage switching the pump on and off. One of the things that does for you is to isolate the Arduino from the high voltage spikes that occur when you turn the pump off. It may be electrically noisy when running too.

Your common ground between the pump and the arduino is defeating that protection - get rid of it.

Thanks wildbill.

This Uno won't power via Vin/GND, no matter which GND pin i try or using either the bench PSU or a fresh (tested) 9V battery so i've ordered another board because that doesn't seem right.

Thanks for help so far, i'll post again when i've tested with new board.

This Uno won't power via Vin/GND

It is possible that electrical noise and high voltage spikes from the pump has permanently damaged the Arduino. This is a very serious problem, good to learn how to deal with it early on!

For brushed D.C. motors use a kickback diode and a capacitor across the motor terminals, as shown below:

Thanks jremington, my nanos should arrive today and i'll carry on.

Problem solved, turns out that the sensor readings varied wildly when relay and pump hooked up so i just had to change variable limits in code and all good now, thanks for help and advice.