Go Down

Topic: Controlling a 5v relay, only getting 2.4v? (Read 9539 times) previous topic - next topic


Im trying to switch on a 5v relay (Huigang HRS2H-S-DC5V) using a digital pin on my Uno, and for some reason when I set the control pin high, I only get about 2.4 volts across the relay, the rest is getting burnt across the collector-emitter of a 2n3904 transistor. I have everything wired up according to http://playground.arduino.cc/uploads/Learning/relays.pdf, the only difference is that I'm using a 3904 instead of a 2222 and Relay Power+ is connected to the arduino 5v supply pin. I have tried playing around with different base resistors to no avail. What could be going on?


Check your DATASHEETS to be sure...
Small signal transistors like those vary how much voltage they allow through the collector-emitter based on how much current they get at their base. Since, I believe, Arduino's digital pins only put out something like 40mA of current, your 3904 may not be getting fully turned on. Therefore, it's letting less than full rail voltage pass through.

I would try setting up two 3904's together (like a Darlington pair) and see how much voltage that gives you....?

Good luck!


40 mA absolute maximum rating. Aim for 20 mA.

Please post technical questions on the forum, not by personal message. Thanks!

More info: http://www.gammon.com.au/electronics


40 mA absolute maximum rating. Aim for 20 mA.

Right. So the question is....will 20mA (up to 40mA) fully turn on a 3904 transistor?  And if not, what to do?
Again, I'm too lazy to check the Datasheet for ya, so find out how much current you need.

If Arduino can (safely) source ~20mA per pin, could one use more than one pin to equal required current? Say, if 60mA is needed, could one use three pins to source that to the transistor?

(I'm still a bit new to Arduino myself, so I'm sorta spit-balling here.)


Alright so I got it going, hooking up two 3904's in a darlington config seems to do the trick, and with a 1k resistor on the base of the first transistor I (should) only be drawing 5 mA, right?

If Arduino can (safely) source ~20mA per pin, could one use more than one pin to equal required current? Say, if 60mA is needed, could one use three pins to source that to the transistor?

I would think that you probably wouldn't be able to do it directly. You might be able to connect a resistor between each pin and the base, but then not only are you using three pins for one transistor but I would also worry that you could accidentally connect two output pins together, and I'm not sure how much the micro would like that.


Huigang HRS2H-S-DC5V;-


  • COIL RESISTANCE +/-10% : 120 ?

The current to drive relay : 5/120= 41.7 mA

A 2N3904 transistor's beta max value is 150 and min value is 100.  When figuring out DC current gain, the beta value is part of the formula.  In the sheet above, it is also known as as hFE.  (hFE = beta = gain for easier understanding)

The transistor drive current= 41.7/100= 0.417 mA.  Your circuit is fine. Replace an other 2N3904 or check connection might be the way to go.


I had figured that maybe the transistor was to blame, so before wiring up the darlington I tried replacing the transistor but got the same result. I have also noticed that sometimes when the pin is low, the relay buzzes quietly, what would be causing that?


don't forget diode, double check  transistor connection or change an other type one.


The problem is the 3904 was not driven into saturation. 5mA drive on the 3904 base
should have been adequate, if the relay current was 40 mA.  Possibly you had the
transistor wired backwards, so the current gain was low. Easy to do.


Don't forget that the flyback diode is absolutely required - otherwise the relay coil inductance
can easily destroy the transistor, and possibly other parts of the circuit.

I'd suggest not using a darlington for low voltage switching like this - a darlington costs at least a volt,
sometimes 2V, so your 5V supply is only 3V at the relay winding.  Or use a 6V supply, darlington
and 5V relay...  Darlington's tend to run hot because of the wasted power too.

A single switching transistor, if saturated, only costs 0.05 to 0.2V lost, shouldn't get very warm.
Make sure it has plenty of current overhead (so for a 200mA load use at least a 500mA transistor,
otherwise its hard to get good saturation).
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


I wired it up with the exact same circuit sonnyyu posted, no luck. sometimes get a very quiet tick out of the relay, but it doesnt get enough to switch over. Tried replacing with 4 other 3904s, could it be the difference between the 3904's and the 2222's thats doing it? (What exactly is the difference, anyway? From what I have read, the 2222 is just able to handle higher current, is that true?) I do have the flyback diode (1N4004) in place, and according to my tests when connected directly to 5v, the coil draws about 41-43mA.


Depending on the package metal or epoxy, the 2n2222a can handle between 500 and 800 mA through emitter-collector and the base is quite happy with 5mA to turn on fully.  You are not *burning* current in the transistor unless you wired it wrong.


Jun 28, 2013, 08:03 pm Last Edit: Jun 28, 2013, 08:30 pm by RPCoyle Reason: 1
It's such a simple circuit. seems like something must be mis-wired. make sure you don't have the transistor hooked up backwards. In bread boarding, I've done that more than once. check the ohms on your resistor, it's easy to mistake orange for red. Not much else could be wrong.


Depending on the package metal or epoxy, the 2n2222a can handle between 500 and 800 mA through emitter-collector and the base is quite happy with 5mA to turn on fully.

If the only difference between the 3904 and 2222 is power handling, I should be just fine using a 3904 for driving a 42mA relay, no?

It's such a simple circuit.

That's what's got me so f%$@#&* confused, what am I doing wrong? I have tried replacing the transistor, connecting it both ways, replacing the relay, different resistor values, reversing the diode, replacing the diode, even changing the digital pin on the arduino, but yet I still end up losing half the voltage over the transistor. The only thing that works right now is the darlington, which I'd rather not use because it uses up 2 transistors. Here's how it's all wired with just the single transistor, maybe someone will see something that I've overlooked:


What's going on at A1 ?
Can I suggest checking voltage across the left side  + / - to ensure you have 5V there?
You say you are losing 2.5V through the transistor, it's connecting to ground, so are you measuring from the E pin to ground? (after the 5V has passed through the relay coil)..?
I wonder if the current to initially pull the relay in is too great? And 42mA is the current to hold it in?

Go Up