PWM DC Motor control circuit
I’ve decided to start posting some of my makings again. Not sure what it is about January, but here we are.
I picked up a few 12v DC motors with the idea of making a variable speed controller for them. DC motors lend themselves to it, by doing PWM and/or lowering the voltage. I may eventually make a variable voltage driver, but in my experiments, PWM works better, since the higher voltage puts more current and therefore more torque while it’s on.
Here’s the circuit:
This circuit switches ground on/off. The motor/pump should be connected to the +voltage , and the motor ground to the MGND line. Should work with just about any input voltage. I’ve used it at +5 and +12v. Different voltage will need different values for R3, if you have an LED.
The output is out-of-phase with the PWM input. The PWM fet should be a fast switching type, and the other FET should be a power FET. I used IRFZ34N for the power fet, and VN1304 for the switching FET (ignore the part # in the schematic, that was just to get the correct pinout)
R1, Q3, D1, Q2 form a gate driver circuit for the Power FET. When the PWM pulses high, the power fet is turned off. This means the motor is out of phase (opposite) with the PWM input
R1 prevents too much power from going from +12v to GND when the gate is pulled low
D2 is a flywheel diode, to contain any back EMF generated by the motor.
R3, LED1 are just an indicator, and is optional. R3 just sets the current on the LED.
C1 is optional and may smooth the PWM signal out, if desired.
C2 will smooth out the load on the power source. Recommended to keep it.
I have tested this on 12v motors, and it works great! I do recommend a heatsink on the power fet.
I used an arduino to drive a PWM pulse, and used a potentiometer to vary the speed.