PWM controlled DC motor using 2n3055: Is it okay? How can be inproved? + Proteus file

Thread Starter


Joined Jul 11, 2017
Hello, I am building a PWM controlled power stage for a motor.

I have created a circuit in proteus and it works, kinda cool, but, I have the feeling it has to be inproved and some questions about Integrating the signal and how the transistor 2n3055 works. I would like somebody elses opinions and corrections.

The target is to regulate the voltage of a load via PWM duty and 2n3305 transistor.


Proteus files :

A fast brief.

How to test it: Once downloaded and opened proteus file, Send characters 0 to 5 through the virtual terminal to easyly set the PWM duty, this was done like this for testing purpouses.

We work on TTL so:
Vpwm = 5v

As output a DC motor with full variable values, current will vary depending on the resistance applyed on the rotor, and voltage by the PWM.
Motor Voltage Range=0v-12v
Motor Current Range= 0A-10A


1. PWM signal.
No problems with this. An arduino creates a signal via analogWrite, ino file included in sources.

2. Integration.
In order to convert incoming signal from PWM into a integrated signal, I built up this Rc filter, I can see is not the best one because R2 is too high and its take to long to become stable.
I would like to inprove this in order to flaten the signal. Is the way Im using correct?

3. Amplification.
A Non-Inverting Operational Amplifier will amplify the voltage of the integrated signal X2 volts aprox, in order to create 0-12 volts from a 0-5 volts range.
Should I use a BC547 or TIP31 or any BJT transistor? or OPAMP is better, I think the second one is more appropiate but I may be wrong.

4. Power driver
I have to use a 2n3055 transistor because i have it, and because due to hardware settings it has to be npn.
He is able to work in the power range I need as we can see in the table above.
I reached the resistor values by empirically trying with proteus, thats why i have serious doubts about if its right.
I dont know how make it safe and be sure. It seems it works, but I dont know if this is the best way.



I would like to read your opinions and critics before I start building it, and I would be very thankful with al advises and proposals.



Joined Sep 9, 2010
You may not get much feedback without supplying the schematic directly. Many (most?) folks here don't use Proteus and plenty are unlikely to open any file form an untrusted source (meaning you).

On the overall strategy though, I have a question: Why not just use the PWM directly (not integrated) and a MOSFET to handle the current? Many motors can be controlled just fine this way. Using a BJT such as 2N3055 requires as much as 1A of base current to drive a 10A load, and your motor might need even more than this to get turning. Can your TTL signal drive that much base current? The MOSFET needs essentially zero current but you would need a logic-level MOSFET to be fully on at 5V. A normal MOSFET needs 10V or more to be fully on.


Joined Nov 30, 2010
Can't grab the schematic, but it's real simple. A black box PWM generator which produces a variable duty cycle square wave ---> through an opto-isolator which guarantees equal amplitude of each pulse--->an RC Integrator to make triangle waves --->a non-inverting op-amp with voltage gain--->a 2N3055 as an emitter follower---> with the DC motor on the emitter end.

Which seems wrong to me, as in: Why would a DC motor need an extra circuit to make triangle waves, why would anybody discard the efficiency of a square wave drive by turning it into triangle waves, and why would the motor be on the emitter side of a class A amplifier???

So, looks like a school assignment to me.