I have spent about 2 weeks trying to figure out what should be a very simple problem. I'm trying to control a solenoid with my Arduino Mega 2560 using a transistor. I'm desperate for assistance.

When I connect the solenoid and Arduino to the transistor, the solenoid does not turn on at all. When connected directly to my DC power source, the solenoid opens & closes just fine. Here's what I discovered:

My DC power supply sits at 16.6V / 1.8Amps. When I read the voltage across the transistor, the voltage is a correct 16.6 volts. However, the amperage is a measly 20mA. As a test, I tried connecting a 7.2V battery to the system and got the same results- 7.2V reading with the multimeter but only 20mA for the amperage. When I use the Arduino's 3.3V power supply as the source voltage, I can control an LED flawessly (but this is because the LED can noticeably illuminate at 20mA). Just so you know, I have tried switching around wires connected to Drain/Source pins just to see if anything would happen but.......nothing.

Quick question about the circuit diagram I included below: Why is there a "ground" and a "solenoid supply ground"? Aren't they the same thing? There's only two power sources- the arduino digital pin on/off and the solenoid's power supply, both of which connect to common ground.

The circuit diagram is for a NPN Junction Transistor, that is not the same as a MOSFET. They do not work in the same way.

A NPN transistor will turn on with a current flowing from the base to emitter. This will allow a bigger current to flow from the collector to emitter. The base-emitter voltage will not get much bigger than 0.7V, so an Arduino output pin through a resistor will drive it.

A MOSFET will turn on when the voltage Gate to Source gets above the threshold voltage. From your datasheet, it gives a figure for the threshold voltage of between 3 and 4.5 volts - depending on each device. You may just not have enough voltage from a 3.3 V Arduino output pin to turn your device on. The datasheet shows the device needs 10V to turn full on.

You need an intermediate transistor (NPN or a MOSFET that can be driven by a logic voltage) between the arduino and the power transistor; or change to a power NPN transistor as per the circuit diagram.

It's a "logic level" MOSFET, Vgs(th) is about 4V, which may be marginal.But, Onward.

Quote

Why is there a "ground" and a "solenoid supply ground"? Aren't they the same thing?

If the arduino and the solenoid have separate power supplies, their ground/return should be connected together.

So, what happens if you touch/connect the 1K resistor to arduino's +5 (instead of a digital output)?

Quote

Just so you know, I have tried switching around wires connected to Drain/Source pins just to see if anything would happen but.......nothing.

In this case you probably just forward biased that "internal diode". But, don't do stuff like that.

"You gotta fight -- for your right -- to party!"Don't react - Read."Who is like unto the beast? who is able to make war with him?"Hey, it's "bipolar transistor" or "junction transistor" - "BJT" is just stupid.

The Arduino digital pin should be connected to the Base of the transistor. Does the Arduino's ground need to be connected to anything then?

The arduino ground and the solenoid power supply ground should be connected together.

When I suggested:

Quote

So, what happens if you touch/connect the 1K resistor to arduino's +5 (instead of a digital output)?

I was trying to get you to check the MOSFET circuit by applying the arduino 5V to the Gate.Can you try that?

"You gotta fight -- for your right -- to party!"Don't react - Read."Who is like unto the beast? who is able to make war with him?"Hey, it's "bipolar transistor" or "junction transistor" - "BJT" is just stupid.

It appears that the transistors I have will not open up completely with the Arduino's voltage. I wanted to use Darlington arrays for simplicity, but the current I'm driving is too high for most of those.

* * * Note that with this circuit the solenoid is "on" with a digitalWrite LOW, and "off" with a digitalWrite HIGH.If that's not a constant duty solenoid get that digitalWrite HIGH done straight away. OK?

"You gotta fight -- for your right -- to party!"Don't react - Read."Who is like unto the beast? who is able to make war with him?"Hey, it's "bipolar transistor" or "junction transistor" - "BJT" is just stupid.

I'd use that circuit if it weren't for the fact that I need to power 37 solenoids. I'm thinking that I will just buy a set of new transistors and sell the old ones. I really need to get a second opinion on this next purchase.

I have used IRL640PBF mosfets to drive fair size motors with an arduino.These are logic level drive devices. Take a look at the gate threshold voltage in the datasheet, this gives a good clue to their suitability for low voltage use.

Take a look at the gate threshold voltage in the datasheet, this gives a good clue to their suitability for low voltage use.

NO!!!

The gate threshold voltage is NOT the voltage to turn on the FET, it is the voltage when the FET JUST STARTS to turn on. The IRFZ44 needs 10V on the gate to fully turn it on.It is the gate voltage quoted with the Ron figure that tells you if it is a logic level FET.