The CPO1 – Code Practice Oscillator

This site is no longer updated. Please see my new website at



cpo1I needed a code practice oscillator to improve my skill with a straight key. An internet search turned up schematics, kits, and many links to eBay.

I had already decided I wanted to build one so I searched for circuits and kits. I found many that were based on a 555 IC, producing a square wave audio tone. I find a square wave harsh and unpleasant to listen to so I narrowed the search to circuits and kits that produced a sine wave audio tone.

After quite a bit of research and some experimenting, I came up with this schematic:schematic-cpo1

This circuit satisfies several of the criteria I had for the CPO I wanted.

  1. It produces a sine wave audio tone using a twin-t oscillator.
  2. The tone is adjustable.
  3. Power is supplied by an on-board 9 Volt battery.
  4. The unit is self contained, there are no off board connections to make (except an optional speaker).

Since it’s the first Code Practice Oscillator I’ve ever created, I call it the CPO1.

I’ve drawn the schematic to show the three main parts of the circuit. From left to right they are the twin-t oscillator (Q1), the buffer (Q2), and the amplifier (U1),

The twin-t oscillator circuit, based around a 2N3904 (Q1), creates the sine wave audio tone. Q1 is stabilized and held out of oscillation by the 1k resistor (R7). To key the oscillator the emitter of Q1 is shorted to ground through C5. There is a trimmer in the high pass portion of the twin-t notch filter that allows the frequency of the tone to be varied between about 550Hz and 1100Hz. For Morse code copy I prefer a tone in the neighborhood 750Hz.

I have noticed a bit of distortion in the audio tone generated by the twin-t. Maybe the values in the notch filter need to be optimized.  If I do another version I’ll look at that aspect more closely. For now, it gets the job done.

The signal from the twin-t oscillator is fed into another 2N3904 (Q2), which is configured as an emitter follower. Q2 buffers the signal going into the volume control pot. The buffer is intended to prevent changes in tone as the volume is adjusted. With the buffer in place there is still a slight, measurable, shift in the audio frequency as the volume pot is adjusted but I was unable to detect it audibly.

The buffered signal from Q2 is amplified by the NJM386 (similar to the LM386) amplifier IC. I chose the NJM386 because TI has shut down their fab factories for DIP ICs and the 8 pin DIP version of the LM386 is no longer produced. I wanted to stay with through hole devices on this design to make it easier for folks to build one for their own use.

The output of the amplifier connects to a 3.5mm stereo jack and a couple of pads on the PCB for speaker connections.

The circuit is powered by a 9 Volt battery. There is a polarity protection diode on board since I have a habit of fumbling with the battery connector when connecting 9 Volt batteries and I don’t always have the power switch in the off position.

One of the features I desired for my CPO was to have a unitized design. I wanted the power source, I/O, and all the controls located on one PC board so I didn’t have to have wires running to jacks or controls or have to put it in an enclosure to keep it all neat. The one exception I made was that I added some connections for an external speaker. I normally use headphones (apparently others in my household don’t appreciate hearing 750Hz sine wave audio tones). Adding the speaker connections was “free” so I put them on the PC board. If a speaker is attached, it is silenced when headphones are plugged in.

One other thing I did was to add several test points throughout the circuit. They are handy for troubleshooting but in addition, they provide convenient connection points for an oscilloscope probe so the signal can be examined at several key points.

After using the CPO1 for a while I thought maybe there was room for one more kit out there and maybe, just maybe, I could become wealthy selling code practice oscillators. To that end I’ve created a manual and put together a kit of parts.

For now, I have the kits listed on eBay here:  CPO1 Code Practice Oscillator on eBay
(all the kits I had have been sold, I’ll have more available around the middle of February, 2016)

Update March 9, 2016:
The PC Boards have been delayed.

The manual can be downloaded here: CPO1 Code Practice Oscillator Manual

If you decide to build one of these or have any questions, you can contact me at