(sorry for the wall of text, I tried to give as much Info as possible)

I am pretty new to electronics and am working on a project regarding controlling the flow of a pump (BLDC based). End goal: Apply a sinusoidal supply around a variable DC offset with variable amplitude (at least +-4V) and frequency (0-10 Hz, low Freq). One big hurdle is definetly the pump... The manufacturer only provides a very short explaination of the electrical aspects of the pump. Unfortunately, I HAVE to use this model.. Datasheet (I am using M400-S180): https://docs.rs-online.com/9836/0900766b8162656f.pdf. Currently I am using the XR2206 kit for the modulated sine wave. It has a DC Bias of 6V with an Amplitude of +-4V (8Vpp). But it only gives out 20 mA which is not enough to power the pump (I measured the internal Resistance of the pump: 2V - 0,09 A - 22 Ohms, so I guess it needs at least 0,1 A to start). So I wanted to use an bjt common collector amplifier (PNP) to boost the current. I watched some videos and tried to calculate the right resistor values. Basically I assumed Beta=10 and wanted Ie=200mA so Ib=20mA.I am not sure how to calculate Resistances with AC so I assumed to use Vrms? Vmax=10V -> Vrms=7V, R1=7V/20mA = 350 Ohms (used 330). R2=7V/200mA= 35 Ohms. At the time I did not have 35 Ohms at hand so I used the next smallest, 17.5 Ohms so double the current.

enter image description here

It worked okayish. The pump started and amp/freq modulation was possible via the XR2206. But the max Vpp changed from 8 Vpp (+-4V) to 3 Vpp (+-1.5V) and also the 17,5 Ohm resistor got pretty hot because of the large current. Also, the Vrms of the Output was only 5V. I am not quite sure why the amp dropped but maybe its because of the difference in output impedance of circuit and input impedance of the pump? (I am honestly a quite a bit confused by impedances so this could be complete rubbish). Also the circuit was not so good designed as I found out through more videos.

I now tried on using a two stage amplifier: Common Emitter (NPN 2N3904) + Common Collector (PNP BC640). I used a better more stable circuit and calculated the Common Emitter circuit values. C1=10uF (AC coupling, I tested with an Osci so no calculation here). According to the tutorials I_R1 = I_R2 >>I_B and I_C = I_E. I wanted V_E = 0.6V. V_B = V_BE+V_E = 1.2V. I_E = 50mA and Beta = 100 according to the Datasheet of the NPN, so I_B = I_E/100. I_R1 should be some 50 times higher than I_B (so we have a stable amplification), I_R1 = 0,012A. Lastly R1 = 1000Ohms, R2 = 100Ohms. V_E=1/2 Supply = 600mV, and with I_E = 50mA; R_E = 10Ohms.

enter image description here

Vpp_out=10V from Vpp_in=8V. I could not test it with the pump because the current was not amplified yet. So I now tried combining both amplifier with a new Common Collector circuit. Spoilers: It did not work. So I left the Common Emitter as was and said I wanted I_E2 to be at least 120mA. R7 = 12V/120mA = 100Ohms. I_B2 = I_E2/100 = 1,2mA. I_R3 = I_B2*50 = 60mA. R_3+R_4 = 12v/60mA = 200Ohms. Oh.. pretty low, so I settled for I_R3 = 48mA, R3+R4 = 250Ohms so R3 = 220 Ohms R4 = 47 Ohms.

enter image description here

Well as I already teasered it did not work. Amp Modulation was reduced to +-1V (2Vpp). The pump did turn on but the whole circuit drew more than the 120mA calculated, It was around 300mA. Since then I have tried numerous simulations on LTSpice so I dont have to build up/down circuits every 10 mins but until now no success. Can anyone suggest me a direction where I can head to or point out the flaws in my circuit/calc? Does anyone have a clue why the amplitude of the sine wave dropped? Also: Sorry for the Variable-formatting, pretty messy!

  • \$\begingroup\$ Why the discrete transistor amplifiers? In my view using an opamp based amplifier is much more easy to design and will give a more predictable result. \$\endgroup\$ Commented Oct 26, 2020 at 10:29
  • \$\begingroup\$ No particular reason. I just searched for an amplifier circuit and invested myself for transistors. In your opinion, would an op-amp based amplifier be better suited in order to get the characteristics for the pump/bldc motor? \$\endgroup\$
    – MagoAbd
    Commented Oct 26, 2020 at 12:40
  • \$\begingroup\$ @Bimpelrekkie I researched opamp based current amplifier and tbh my search was not very fruitful. Could you recommend some links where a beginner could start? \$\endgroup\$
    – MagoAbd
    Commented Oct 26, 2020 at 14:18
  • \$\begingroup\$ This is a good read when starting with opamps: web.mit.edu/6.101/www/reference/op_amps_everyone.pdf \$\endgroup\$ Commented Oct 26, 2020 at 14:19
  • \$\begingroup\$ Thanks a lot @Bimpelrekkie! \$\endgroup\$
    – MagoAbd
    Commented Oct 26, 2020 at 14:28

2 Answers 2


My understanding of your requirement is to provide a voltage across a motor which varies sinusoidally between 2V and 10V, with a frequency between 0 to 10Hz.

That's not too hard. Of all the circuits you have tried, the first one is the most promising. Later iterations either diminish output current capability (or in other words increase output resistance), in some way, or fall short of increasing output current sufficiently.

You goal is to derive 1A from a signal able to source/sink only 20mA. That's a gain of 50. Most modern bipolar signal transistors are likely to have such gain, but there are a few issues. Here are some thoughts to ponder:

  1. Just because a transistor has enough current gain does not mean that it's always able to provide "50 times base current" in the collector/emitter path. You'll need a transistor with significantly greater gain than 50.

  2. The transistor will dissipate a lot of power itself. Essentially, you need a transistor capable of dissipating the same amount of power as the load.

  3. You don't want to load the XR2206 to breaking point. Ideally you want to draw less than 20mA.

When you consider using opamps, you'll find ones that can output 1A, but they are expensive, and probably overkill for such a simple application. The main use you would have for using an opamp is for better output control. For example, an opamp could help you correct mean value or amplitude. Even then, you probably wouldn't rely on the opamp to actually drive the motor, for the same reason you can't drive the motor with the XR2206; output resistance is too high. I'll show you how to use the opamp later.

Getting back to driving the motor, I propose that you use a darlington pair, either by combining a signal PNP transistor (like a 2N3906) with a power transistor (such as the TIP32), or by using a pre-packaged unit such as the TIP127. It may be used in the configuration you described first, in common collector configuration, also known as "emitter follower":


simulate this circuit – Schematic created using CircuitLab

This will provide a current gain of over 1000, relieving your oscillator of a lot of work, and being an emitter follower, the emitter (connected to the motor) potential will vary with the input, having unity gain. There's a drawback; the emitter will be 1.4V higher in potential than the base, meaning that if you feed this circuit with a +6.0V ± 4.0V signal, what will actually appear at the emitter will be +7.4V ± 4.0V.

Note that you should include D1, to protect the transistor from any EMF spike that occurs when the motor is unpowered and spinning down. R1 is probably not necessary, given the large load, but I recommended including it to help Q1 switch off quicker, and to keep leakage current through Q1 from switching on Q2.

There are a few ways to mitigate the output offset problem. The first is to use a sziklai pair (instead of darlington), which would reduce the offset down to only +0.7V. The second would be to offset the signal explicitly yourself, by -0.7V, with a silicon diode and resistor. Here I combine those two ideas into a single circuit, which is the one I recommend you use:


simulate this circuit

The voltage at the collector of Q2 is a better copy of the input, being shifted down 0.7V by D2, and then up again by a similar amount by the sziklai pair.

It's still not perfect though. This circuit would never be put in the same room as an audio system, because the output is a better copy, not a good copy. To improve even further, we can use an opamp to almost completely eliminate any distortion, and any offset, without the need for D2:


simulate this circuit

We placed the sziklai pair driver inside the feedback loop of a voltage follower, and consequently the output voltage (Q2's emitter) is exactly the same as the input. There are some additional passive components, which keep the circuit behaving well, and protect the opamp. R1 and C1 are a low pass filter, helping to prevent high frequency oscillations that could occur with particularly nasty loads, like motors, and keep any noise and voltage spikes that the motor might produce away from the opamp's input. R2 just makes sure that the opamp isn't over-stressed when the sziklai pair's base demands too much current, which could happen if the load isn't well behaved.

I haven't tested this circuit, so I can't vouch for its performance, but the principles are sound. I see no reason why it wouldn't perform well, and others here can point out possible failings or improvements.

I mentioned briefly before that the main pass transistor will get hot. The reason is that it's always passing current, say 500mA, and it always has, on average, 6V across it. That makes it dissipate \$P=500mA \times 6V = 3W\$ of power. It's something you have to live with for linear systems like these. You will almost certainly need a beefy heatsink on that transistor, and may even require a fan to cool it.


The load on the amplifier (first transistor) collector cannot be larger than 47 ohms.

Thus the maximum gain cannot be larger than 47/10, at the largest.


View that first transistor as being a voltage_controlled current generator.

The load on that first transistor collector is what converts the collector current back into a voltage.

The various paralleled resistances on that collector are

  • 47 ohms to ground

  • 220 to rail on the collector of first transistor

  • 220 to rail on base of 2nd transistor

  • R_early of the first transistor

  • R_in (approximatly beta * Rload) of 2nd transistor

And all these in parallel can only be LESS than the smallest, which is 47 ohms

  • \$\begingroup\$ Could you explain how you came to this? Do you mean that my "final load", i.e. the pump, cannot be higher than 47 ohms or the that 2nd amplifier circuit cannot have a total resistance larger than 47 ohms? And how do I use this constraint in my circuit design? \$\endgroup\$
    – MagoAbd
    Commented Oct 26, 2020 at 12:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.