I’m trying to design a solenoid driver board and I got a weird thing going on that I can’t understand…
Everything in the design works as intended, except that when multiple solenoid fires the exact same time the solenoids doesn’t fire correctly, i.e stutters, uneven force etc.
I think that it may be that all the MOSFET grounds are connected and that the current doesn’t really know where to go, so I want to add a resistor after the MOSFET source to push the current directly to GND. The problem is that when I add this resistor the solenoid doesn’t fire at all…
So, please - what can I do differently in my design?
Hi… Why dont you use BDX53 series transistor for driving solenoids?
When I tried to drive solenoids with BDX53 trans. I had the same problem first then I connected paralel 1N4001 diode to the solenoid coil like shown in the attachment…
You could use different darlington series transistor also…
rasmadrak:
So, please - what can I do differently in my design?
Is your power supply up to the task of driving multiple solenoids at the same time? One cause of a solenoid misfiring is the power supply not having enough current to actuate it properly. The fact that your problems arise when trying to energize multiple solenoids makes this a likely possibility.
Another problem could be in your Arduino code. Have you confirmed that your program is doing exactly what you expect it to do?
Some tips and suggestions: The resistor you have between the FET and GND is most likely unnecessary. If your solenoid is rated for the voltage you are applying to it, then you can get rid of it. If you need the resistor to limit current through the solenoid, it should be on the high side of the FET (assuming N-MOS). With a resistor on the low side of an N-channel FET, there is a voltage present that can reduce or eliminate the voltage difference between the Gate and Source. If Vgs is zero, the FET won’t conduct.
You should also put a diode around the solenoid to protect the FET from inductive kick when turning it off. This is how they are typically implemented. The diode takes the current from the solenoid and recirculates it until it dissipates so it doesn’t hammer the FET.
There is also no need to switch to a darlington transistor setup. The IRF640 is perfectly suitable for your application however there are plenty of logic level MOSFETs available with lower Rds on values which could improve efficiency.
The PSU should be able to drive multiple solenoid, it’s 7.3 A at 48VDC. I believe the solenoids draw at most 3 A each, but this is not measure yet.
Ok, so if I would like to limit the current I could simply add a resistor before the solenoid and drain. That’s good news, since I believe they can be driven with less current anyway.
Also, it seems very plausible that the voltage difference reduction is the culprit, thanks again!
The solenoids came with diodes factory installed so nothing needs to be done there, I am however looking to install capacitors to minimize sparks.
It could be the Arduino code, but it’s a very simple loop and most likely not the problem, but again - I should investigate this further.
As a sidenote, I’ve ordered a couple of IRF3707’s that should be more suitable for logic level control. But the IRF640 are working well, although they do get quite a bit warm so I had to install cooling.
Many power FETs are avalanche rated and can handle inductive spikes without damage.
The IRF640 will saturate at about 2 to 3 amps current with 5V Vgs. (See the plot of Id vs Vds.)
Grounding is critical. (With high currents you can have large voltage drops in the wires. A star ground for the 48V power would be best including the connection to the Arduino which you don’t show.)
UhClem:
2) The IRF640 will saturate at about 2 to 3 amps current with 5V Vgs. (See the plot of Id vs Vds.)
Ok, so this would explain why the switching is quite slow? Currently it takes a "long" time, 1 ms or so, to activate the solenoids.
The biggest problem is that I can’t make out the numbers from the charts, not that much of electricity experience before…
If you would please take a look at this chart, http://www.datasheetcatalog.org/datashe … rf3707.pdf, would that be more suited with an additional resistor in front of the IRF3707 to get the voltage under 30 volts?
Grounding is critical. (With high currents you can have large voltage drops in the wires. A star ground for the 48V power would be best including the connection to the Arduino which you don’t show.)
This is how it’s currently setup. There are 8 solenoid drivers, they share common ground and power (in parallell, I think. Each solenoid works independently from the rest and can be disconnected etc).
I need the fastest possible switching that can withstand the (up to) +48VDC and 7.3 A.
rasmadrak:
I tried making another version of the board without any LED’s, and it carried a more instant reaction as well.
I figure the LED’s steal a lot of the current…?
How can I create a version of the board including control LED’s. I’m not really wanting to put a LED in the +48VDC chain…
If you had used normal schematic symbols I would have known about these LEDs. The actual output voltage of a micro-controller depends on how much current it has to source/sink. With an LED load you will have less then the supply voltage on the output. (The supply could be more or less than 5V.) I checked a random ATMega (I don't know which part you are using. Check its data sheet.) and Voh (voltage output high) is a minimum 4.2V with a 5V supply and 20mA load. Try actually measuring Vgs.
Yet another reason not to use the IRF620 or to use a FET driver for it. (The IRF3707 isn’t suitable because you will exceed its 30V Vds limit. Even with a resistor because when the FET is off there is no current in the resistor and it provides no voltage drop. Keep looking. There are plenty of logic level power FETs that will work.)