12V solenoid drawing more current than it needs

12vcurrentmicrocontrollersolenoidsolenoid-valve

I'm fairly new to practical electronics so I apologize if any of this is obvious. I am currently trying to use a microcontroller to control the energizing of several 12V solenoid valves using a PC power supply to provide the 12V for the valves and 5V to power the microcontroller.

The issue I'm getting is that the valves appear to be drawing a lot more current than they require to operate. I've measured the voltage and current going through the valves and they read as 4V and 12A. They are rated at 12V and 0.5A by the manufacturer. I can't explain what the problem is or where it resides. I have verified that the proper 5V is being output from the microcontroller and the NPN BJT used for the switching has a 300-ohm resistor on its base.

Any help would be appreciated, this project has definitely lagged as a result of this issue.

Best Answer

I would guess that either you have a defective solenoid with a partially-shorted activation coil, or you've made a major wiring error somewhere, with suspicion pointing toward the latter.

The reason I'd guess you've done something very wrong is that 12 amp current. Assuming your base drive is 5 volts, a 300 ohm resistor will give you a base current in the ballpark of 10 mA. A reasonable (although slightly optimistic) gain for an NPN transistor (unless you're using a Darlington) is about 100, so I'd expect a current of 1 amp. The fact that you're seeing 12 amps indicates that something, somewhere, is very wrong, and on the basis of what you've told us I can't be any more specific.

EDIT - And, we have a winner. Two, actually. Well, three. First, you are completely misusing your Fluke. It is incapable of measuring current directly. This suggests (since your usage makes no sense) that the "12" you are reading is actually the 12 volt supply. And I have no idea what the 4 volts is. Consequently, there is no way to tell what the circuit is actually doing. Certainly if you're trying to measure current by putting your Fluke in series with the solenoid, that will explain why it doesn't work.

Second, as has been pointed out, by Bruce Abbott among others, a 2N5551 is not suited to your needs.

Third, assuming you do get a decent transistor, it can't be a single transistor, or at least not a BJT. Assuming your Arduino can supply 10 mA of current, you need to be aware that for switching purposes (such as your application) you should assume a gain of 10 to ensure good switching. This puts an upper limit of about 100 mA on your solenoid drive. You might conceivably try for 200 mA, but not much more. The solution? Use either a MOSFET (n-type in this case) or a Darlington NPN such as a TIP140 or TIP141.

END EDIT