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 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?
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.
According to the datasheet for those mosfets, the maximum threshold voltage is 2V. You didn't experience any problems with the 3.3V from the Arduino pins?
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.
Can you tell us the current requirement of each solenoid? Without knowing that, it's difficult to make a recommendation for a logic level mosfet to use.
16v is the absolute maximum rating for Vgs, i.e. you must never exceed 16v between gate and source. The critical figure is the gate-source voltage at which Rds(on) is quoted. The datasheet for that mosfet quotes it at both 10v and 5v, both for Id = 8.5A, which is well above what you need.
boingaon:
So, those transistors will fully open up when the Arduino's 3.3V is applied at the gate?
No, I assumed you were using a 5v Arduino because the photo you posted looks like the edge of an Arduino Mega. Are you intending to use a 3.3V Arduino instead?
I'm using a Mega. A previous poster said that the digital I/O pins were 3.3V so I made an assumption... Now that I've check it with a multimeter, I'm reading 4.86V off the pins.
So, now that we've clarified things, you think this will work? The voltage is close to but but quite at 5V.