# Low Voltage AC Source (Part 7)

Additionally, to amplifying our AC signal using an op amp, we are now going to use a push-pull stage to further increase the output power.

## Using a Push-Pull Stage

In the last parts of this project, we already implemented loads of measures to amplify our generated AC signal. However, even though we used an op amp to amplify both current and voltage of our signal, the output power of our circuit is still very limited. This is mainly because the LM358 is not able to handle higher currents on its own. To solve this issue we are going to use an external transistor push-pull stage.

A push-pull stage is a common solution for amplifying the output current of an op amp. The truth is, the LM358 already contains such a push-pull stage as output stage. It's just not powerful enough for us. If we use an external push-pull stage, we can choose the transistors according to the desired output power. For the purpose of this project, I chose to use the BC337 (NPN) and BC327 (PNP) transistors. These transistors are designed for amplifier circuits and support a continuous current of 800 mA and can dissipate 625 mW of heat without external cooling. Of course there exist more powerful transistors, but these should do the job in our case. Feel free to replace them with more powerful matched pair of transistors, if you need a higher output power.

How does a push-pull stage work? A push-pull stage consist of at least two transistors: one for pushing the output voltage up and one for pulling it down to ground. The image below shows how a push-pull stage is used in conjunction with an op amp. With the exemption of the push-pull stage itself the amplifier circuit remains the same and still has a voltage gain of 2. Instead of the op amp output, the output of the push-pull stage is now used for feedback. If the voltage in between both transistors is lower than two times the input voltage, the op amp's output voltage increases due to the positive voltage difference between its inputs. The increasing output voltage of the op amp causes the NPN transistor's conductivity to increase. It pulls the output towards the supply voltage. The NPN transistor starts to conduct as soon as its base voltage is roughly 0.7 V above its emitter voltage. Similarly, the PNP transistor starts to conduct once its base voltage is 0.7 V below its emitter voltage. This means, if the output voltage is higher than expected and the op amp's output voltage is decreased due to the negative voltage difference, the PNP transistor starts to conduct and pulls the output of the push-pull stage towards ground.

As both transistors require a base-emitter voltage of roughly 0.7 V to conduct, the output range of the op amp needs to be bigger than the peak-to-peak voltage of the amplified signal. We are going to reuse the code from the last part of this project. The minimum voltage in the generated sine wave is thus 1.5 V and the maximum voltage is 8.5 V. The maximum voltage of 8.5 V should not be an issue if we use a 12 V supply voltage. But what about the lower limit? Luckily, the 1.5 V are also within our limits. The minimum possible voltage is 1.4 V, as we need 0.7 V to turn on the external PNP transistor and another 0.7 V to turn on the transistor inside the LM358. The good news is, we don't need to adjust the code and can start right away with building the new amplifier circuit.

## Building the Circuit

For our AC source we need two amplification circuits with push-pull stage. The first one is for amplifying the sine wave signal and the second one for the artificial ground reference. The load is then connected in between these two amplifier circuits, as shown in the circuit diagram below: Once again, we can use the MCP4725 or the PWM DAC circuit to generate the sine wave signal. Choose your favorite option and build up the circuit as following: The complete circuit is getting more and more complicated, however, the additional push-pull stage is worth it. It allows us to significantly increase the output power and gives us the option to increase it even more by using more powerful transistors. As you can see I replaced the 220 Ω load resistor with a 51 Ω resistor. Thanks, to the push-pull stage the output signal remains stable.

## The Result

Let's have a look at the result. As said before, the output signal remains stable even for bigger loads. We still get a clean sine wave signal with an amplitude of 3.5 V. But what is the maximum output power of the circuit? Well, the output power is defined by the current and the heat dissipation limits of the transistors. In our case the latter is the more important measure. Our transistors allow for a maximum power dissipation of 625 mW without cooling. But, how can we calculate the power dissipation for the transistors and our load?

For the load this is quite simple. The RMS voltage of our generate sine wave is roughly 2.5 V. With this knowledge, we can simply use ohms law and calculate the current that flows through the load resistor and then calculate the power using the formula $$P = V_{RMS} \cdot I_{RMS}$$. For 51 Ω the result is 120 mW.

Calculating the power dissipation for the transistors is more difficult. As an approximation, we can multiply the voltage drop over the transistor with the current that flows through the resistor. In this approximation we don't differentiate between base and collector current. As the base current is a lot smaller than the collector current, the approximation is still good, even if we assume that all the current flows through the collector. An additional fact, that we need to acknowledge is that each transistor is only on for half of the time. For the positive half-wave the current flows from the upper-left transistor through the load and the lower-right transistor to ground. In the negative half-wave the other two transistors are active. This means we need to divide our calculated values by two to get the average dissipation.

I won't go into the details and calculate the voltage drops and average power dissipation for each transistor, instead I made a small tool that calculates these values for the given load: