Going back in time: “Old school” transceiver for 20 meters with 20 watts of output

"Old school" SSB transceiver for 14MHz by DK7IH (2018)

Hi again! This project directly “beams” you back to the “Good ol’ 80s” when there was no stuff like “DDS, “OLED” or even “SDR” or other modern technology we today use to build our radios.

I designed this transceiver using the “old school” techniques because in a German QRP forum on the internet some hams originated a “Back to the roots”-movement which I thought was a great idea. So I too went back in time 3 decades and constructed a radio like I did it in the eighties at the beginning of my “homebrew career”. That meant: No digital stuff, just a simple VFO but (and that is new) higher rf output power because condx are fairly low on the hf bands currently.

I later presented this radio at an annual German convention of homebrewing hams called the “Black Forest Meeting” named by the place where it is held the beginning of October each year.

To give you an impression, that’s how the radio looks from the outside. Pretty “old school”, isn’t it?

“Old school” SSB transceiver for 14MHz by DK7IH (2018)

The main design objectives were very simple:

  • Compact in size (even without using SMD components),
  • Analog VFO with vernier drive (1:10 gear) and variable capacitor,
  • No digital stuff (=> no digital noise!),
  • RF Output in the range from 15 to 20 watts pep in SSB,
  • Single conversion superhet (9MHz interfrequency)
  • No “save as many components as possible”-design.

First the block diagram giving you the basic structure of this radio::

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – basic outline

The VFO

I decided to use an analog VFO in this project due to three reasons:

  1. It’s really old style,
  2. it is much less prone to produce any unwanted “birdies”, and
  3. phase noise performance usually is better than most of the digital ways to generate a signal.

For the VFO I chose the Hartley design characterized by a tapped coil. This type uses less critical components than a comparable Colpitts circuit thus reducing number of parts (2 caps in this case that are avoided) which might lead to unwanted frequency changes (drift).

How to build a VFO that is really stable

Lots of pages have been written about this topic. This another one. First, be aware of the fact that it is not possible to build a VFO that has the same frequency stability like a modern digital system. This is because these systems are all crystal controlled. But it is possible to achieve a drift of some dozen Hertz within an hour or so which is absolutely sufficient for having even a longer QSO.

The main problem is based on physics, or thermodynamics to say more exactly. All material expands when heated and contracts when ambient temperature decreases. OK, some exceptions exist, water below 4°C is the commonly known example of them.

Avoiding thermal runaway

Heat is the problem in such a circuit. It comes from the interior of the components when current flows through them and from the outside, for example when the transceiver is exposed to sunlight or placed near another source of thermal energy. Also heating of the final rf amplifier stages may contribute to heating the cabinet inside. The electronic parts forming the central strucure of the tuned circuit exert the main influence connected to thermal runaway of the frequency that is generated.

The general approach is: When we can’t avoid physical effects we must choose components that change their values in such a way to compensate the changing of the values of the other parts. That means we have to look carefully on temperature coefficients of the varoius components we intend to build into our VFO.

Choosing the “right” components for your VFO

Choosing advantageous components is crucial for frequency stability. So I did some brief research to find out more about temperature coefficients of coils of various types and available capacitors. Here are some of the outcomes.

Explanation of syntax: If a relation is negative, a minus sign (“-“) is given. In this case the value (C or L) decreases when temperaure increases. A plus sign (“+”) indicates a positive coefficient. When the relation of value change by temperature change is weak (that means no intense changing of the value when heated), there is only one “-“-sign. The more “-“-signs you have, the higher this respective ratio is. The same applies for “+”-signs to indicate a positive relation.

Capacitors:

  • Ceramic capacitors: —
  • Polystyrene capacitor: –
  • NP0 (C0G) capacitor: no measurable effect

Inductors:

  • Air coil on polystyrene coil former: +++
  • Coil wound on T50-6 yellow toroid: +

Based on this short survey, the best combination would be NP0- and Polystyrene caps together with an inductor wound on an T50-6 (yellow) core. Hopefully their temperature behavoiur will compensate more or less and lead to best stability. Hint: On the photos appearing later in this text you will see an air coil wound on a TOKO style coil former that has been used because it does not need so much space.

The VFO circuit

I finally chose the Hartley circuit for my VFO. There it is:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – VFO

VFO Circuit explanation

Starting from the left you can see the tapped coil (here 60 turns tapped at 10 turns from the bottom end) on a 5.5 mm TOKO style coil former without any core. In parallel there are various capacitors (polystyrene and NP0 mixed) to build up the total capcity. It is common use to spread the total capacity needed to various single capacitors because it has turned out that the effects of temperature change are less significant if you use more (and therefore smaller) single capacitors.

A 100k resistor is used to pull the gate to ground and therefore provides a correct bias at the FET’s gate. The 1N914 diode is a so called “clamp” diode that has been installed to stabilize (and therefore reduce) the rf voltage in order to avoid excessive rf voltage coming to the FET’S gate which would lead to distortion. This diode has a negative side effect, but that an be accepeted for a VFO in the rf bands: It slightly increases phase noise because it works as a regulator. With some the designs you can see this diode in reverse position, don’t worry, the regulating effect takes place either.

To ensure the oscillator to produce radio waves, in-phase feedback between gate and source is generated via the tap you can see with the coil. A tap of about 1/6 of the whole number of windings provides enough feedback voltage to let the oscillator start by its inherent thermal noise and generate clear sine waves afterwards. Putting the tap too close to the “hot end” will cause distortion because the amount of energy coupled back to the gate will be too high. Also instabilites are probable because of excessive drive power to the gate of the FET.

On top of the tuned circuit there is a varactor diode that is used to be controlled by a positive voltage to form a RIT (receiver independend tuning) control circuit. It is very loosely coupled to the tuned circuit to minimze temperature effects and because only 1 or 2 kHz “swing” is needed. The generation of the RIT voltage will be described later in this text.

The main tuning capacitor

An air capacitor is mandatory here! You can either use a ready made one from the surplus market. But to keep it as small as possible I built my own by dismanteling one of old variable capacitors formerly used for homemade AM radios. Use a small drill to remove the rivets, dismantle the capacitor completely and rebuild it again as an air capacitor (get rid of the plastic dielectric interlayers!) by using M2-screws and nuts. Youl will have evenings of endless fun with this game! 😉

Buffering and amplifying the Signal

The second stage with another FET is very loosely coupled to the source of the first FET. This is made to minimize effects of load changes to the frequency. This stage is a so called “source follower” giving a very low impedance signal to the final stage that is responsible for the amplification of the signal to a level of 2 to 3 volts pp which you will need for the rx mixer that has been designed as a dual-gate-MOSFET mixer (see receiver chapter later!).

DC voltage in the VFO

Voltage stabilization is crucial for best performance of this critical part of the radio. Supply voltage changes always lead to frequency changes. So a two-level buffering is common use here. The first (and most critical) stage is buffered twice (10V voltage regulator integrated circuit 78L10 and subsequently by a 6.2V zener diode) whereas the buffer and the amplifier stages are supplied with 10V regulated DC voltage only.

Ambient thermal isolation

To avoid the VFO being affected by interior thermal convection (flow of warm air inside the cabinet) it is recommended to shield the VFO from the rest of the transceiver. I do not recommend using metal sheets as walls here because these form other unwanted capacities that will lead to thermal effects on the generated frequency. Metal also is a good conductor for thermal energy, so you might run counter to your goals. My thermal insulation therefore is made of simple cardboard.

The Local Oscillator (LO)

This oscillator is much more uncritical than the VFO because it is crystal controlled. The purpose of the LO is to supply a carrier signal for the SSB modulator. Due to the fact that there are two sidebands we theoretically can use this LO must be switched to either one of two possible frequencies. In case of an interfrequency of 9MHz (9000kHz) these are: 9001.5 kHz for the first sideband and 8998.5 kHz for the second sideband. Please note that I did not write “USB” or “LSB” because the frequencies forming each sideband might be changed because of the frequency plan of the transceiver where by mixing with the VFO frequency the sideband might be inverted depending on if you add or substract the VFO frequency from the 9MHz-SSB signal.

There are several possibilities to produce these two frequencies:

  1. Using two different oscillators each equipped with a single crystal,
  2. switching two crystals with one osillator,
  3. using a variabale capacitor or a coil to “pull” one crystal to the desiered frequency.

Discussion:

  1. This method means high effort but surely is the most exact one because there are no influences of the unneeded choice to the other crystal currently on duty.
  2. Is the worst idea because the unswitched crystal is highly prone to influence the freqeuncy of the switched one because they are linked to parasetic capacities within the wiring, the switch and so on. Forget this one espacially when using the internal oscillator of a NE602/SA612!
  3. This to my point of view is the best compromise between circuit simplicity and function. You can see this way of sideband switching in my transceiver.

This is my local oscillator:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – Local Oscillator (LO)

It is a simple Colpitts circuit where in-phase feedback and feedback voltage control are achieved  by a series of two identical capacitors. A simple switch,  a capacitor (90pF max.) and a coil (4 to 8uH max.) that are either connected to the base of the transistor via the 9MHz crystal determine the sidband freqeuncy of the oscillator. Signal is taken out via the collector.

The Receiver

The receiver will be presented step-by-step starting with the front end stage:

The RF Preamp

This stage is connected to the antenna relay. It provides an amount of basic amplification for the antenna signals. But that is not the main purpose. Noise figure improves significantly if you use a stage with low inherent noise. Thus a dual-.gate MOSFET is installed here. This semiconductor is also used to control stage gain because gate 2 of the MOSFET is connected to the AGC chain of the transceiver. About 12 dB gain swing are possible here. Stage gain is about 15dB.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – RX PREAMP

Note the position of the primary and secondary windings of the input and the output coil. To avoid self-oscillation the output (drain) of the MOSFET is connected to the untuned part of the LC circuit. Coils must be shielded and should be equipped with ferrite heads (in the photo the piece in left bottom corner).

The Receiver’s Mixer

In this stage also a dual-gate MOSFET is used. This type of mixers provides good capabilities to cope with high signal levels without producing unwanted signals (high IMD3), gives some dB of gain and is low-noise also.

One “disadvantage”, if you want to say so, is that it needs a little bit of higher VFO drive (about 2 to 3 volts pp). Gate 2 bias is generated via the voltage drop on the source line. The tuned circuit in drain line is adjusted to the desired interfrequency. See the schematic for the exact winding data and parallel capacitor.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – RX MIXER

The SSB Filter section

Transmitter and receiver share the same SSB filter in this transceiver. So some sort of switching is recommended even if circuits exist that go without one. I used a high quality relay made by Teledyne that I bought in a 10-piece bundle for low price (1€ each!) via a well-known internet marketplace. Caution: Some SMD-relay I tested prior to building this rig were disastrous concerning signal isolation between terminals. To avoid any disappointment or frustration  I recommend testing a relay before you finally install it.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – SSB FILTER

All connections to the rest of the circuit must be made with shielded cable. I found an interesting alternative: I sometimes design my own very thin shielded “cable” with brass tubing (1 mm inside diameter) where I put insulated cable inside. The brass tube is connected to GND on the Veroboard. You can not bend these tubes but longer lines can be interrupted for a short piece so that the “bend” can be made by putting two parts of tubing in 90° degree angle for example.

The IF Amplifier

This one might look familiar to you. It is a simple “remake” of the front-end stage. The one remarkable thing is the secondary of the output transformer. This coil has 4 windings (prim. 16 turns). The secondary is center tapped (2 + 2 turns). This is because the product detector (SSB demodulator) has a symmetric input. Very important in this stage is the 100uF capacitor in VDD line. This cap prevents the stage from AF resonating and self-oscillations on the VDD line and makes the receiver much more “quiet”.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – IF AMP

The SSB demodulator

This stage is probably the most “old-school” part of the whole transceiver. It uses an old CA3028A differential amplifier as mixer circuit:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – PROD DET

You won’t be able to buy large amounts of this IC anymore. And if you get one, the prices are close to or beyond a rip-off. But there is an alternative. You can build your own “IC”. Watch this page where all the information you need is provided!

Signal input goes to the paired transistors forming the amplifier stages. LO is fed into the line transistor that is used to set the current of the differential amplifier thus providing a switching and therefore superposition of the two signals.

The output circuit is made of an audio transformer formerly used in the final audio amp  of old AM radios (coil resistance is about 300Ω each side). The 2.2nF capacitors eliminate remainders of the rf signals and “ground” the terminals of the AF transformer.

Audio amplifier

This final receiver part consists of two stages: An audio preamplifier with a bipolar transistor and a final amp with a TBA820M integrated circuit.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – AUDIO AMPS

The two caps 0.22 and 0.1uF determine how the higher frequency components in the audio signal are cut off. The higher the total value the more the higher frequency components of the audio signal will be limited due to the equation XC=1/(2*PI*f*C).

Tr1, which is a universal purpose NPN transistor, provides high gain. Thus a 10k resistor is installed to form a voltage divider with the audio gain potentiometer.

In the final stage I use a TBA820M ic (8-pin DIL version). This one is more linear than the well-known LM386 that you usually can find in this place and it is not so prone to self-oscillation. The cap aside the 100uF in the top left corner of the schematic is not marked, its value is 0.1uF.

Loudspeaker impedance is 8Ω.

The AGC

Automatic gain control makes listening to signals much more comfortable. AGC voltage is audio derived, like in my other transceivers. The circuit also is nearly the same:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) –

Due to the very high gain of the product detector this stage is directly connected to this circuit and not to the AF preamp. A potentiometer is used to set the threshold of the AGC onset.

Next stage is a simple audio preamplifier followed by a “Greinacher Circuit” serving as voltage doubler and providing DC voltage proportional to the audio signal level. A dc amplifier with another NPN transistor lets its collector voltage drop as soon as it is fed with significant dc input voltage. Thus this voltage decreases and so it can be used to control gate 2 of the MOSFETs in the various receiver stages that are equipped with tetrodes.

The S-Meter is connected to the emmitter of the final transistor. If conductivity in the transistor rises, the emmitter becomes more positive and the S-Meter needle is deflected proportionally. The 220Ω potentiometer in the emmitter line must be set in accordance to the respective S-Meter you are using. One shortcoming should be mentioned: If you have a not so sensitive meter then the value of the pot can be set to nearly 100Ω or above. This will prevent the collector from dropping to nearly 0V in case there is a strong signal and hence reduce the maximum dB you can get from the AGC chain.

The Transmitter

The transmitter section is designed for an output level of about 20 watts and uses 4 stages all equipped with bipolar transistors. The last stage is a push-pull stage, the 3 low-power stages are single ended. I prefer push-pull for the last stage (if possible)  because this circuit inherently does not create even harmonics thus simplifying output filtering.

The first parts of the transmitter to be shown here are the microphone amplifier, the SSB-generator and the TX mixer:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) -MIC AMP

The mic amp is simple but provides enough gain and good linearity for using an old-style dynamic microphone. It works in common emmitter mode and has gain of about 15 to 20 dB.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – SSB GEN

The audio signal amplified by the microphone amplifier is fed into PIN1 (Input 1) of an NE602/SA612 mixer IC which is the simpliest way to generate a DSB signal with a Gilbert cell. LO input is fed to PIN7 and should be in the range of 200 to 300mVpp. Thus a 12pF cap has been installed to limit LO voltage going to input at PIN7.

Carrier suppression is around 45dB when LO offset frequency is correctly set for each of the two sidebands and LO voltage is not much higher than the 300mVpp mentioned before.

The DSB signal produced by this mixer goes on to the SSB filter relay and filter that has been described before. The use of shielded cable is mandatory, too.

The TX Mixer

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TX MIXER

You won’t be able to recognize many differences if you compare this TX mixer to the DSB generator. In fact, there are none.

The 14MHz Band Pass Filter

Next is the band pass filter that consists of 2 coupled tuned LC circuits for 14MHz. They are also wound on TOKO style coil formers. Data can be found in the schematic underneath.

It is important to also install the ferrite heads that are provided with most of the coil formers and to use the shield “metal cans” that are also standard for these coils. This is to prevent stray coupling of rf energy into the first stage of the power amplifier strip and therefore preventing self-oscillation of the transmitter strip.

For proper adjustment set the transmit frequency to about half of the frequency swing ((i. e. to about 14.200 kHz) and tune for max. output.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) -BPF

If you modulate with a two-tone signal to the mic amp you should see about 500mVpp by the output of the BPF when the chain is fully driven.

The Preamplifier

We start with the low power end of the power transmitter section. A bipolar rf type transistor is the center part of this stage.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TX PREAMP

This one is a standard circuit and has been “trimmed” for maximum linearity in order to reduce distortion to a minimum (which is also true for the following stages). You can see the well understood 2 master ways of achieving max. linearity in an amplifier stage:

  • Negative feedback between collector and base (i)
  • Emmitter degeneration (II)

Explanation:

i) The first measure goes along with the 2.7kΩ resistor between collector and base of the transistor. This resistor provides positive dc bias voltage to the base and leads 90° out-of-phase ac voltage to the transistor’s input. This reduces gain and therefore distortion. But due to the fact that the whole transmitter strip has plenty of gain, this loss in gain is not a serious problem.

ii) The 10Ω resistor in the emmitter line is not bypassed by a capacitor. This stabilizes the circuit. When the current through transistor increases the emmitter voltage will rise (according to Ohm’s law) and the voltage between collector and emmitter drops. This reduces voltage difference between base and emmitter and hence also reduces gain.

The coupling to the next stage is done by a capacitor of 0.1uF. This causes some impedance mismatch. But that is as well not a big problem because the gain reduction here helps to prevent the whole transmitter from unwanted oscillations by diminishing overall gain.

The Predriver

This stage is somehow a copy of the stage before but allows more current to flow through the stage. It is also operated in class “A” mode and uses the same methods to maximize linearity like the preamp stage.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TX PREDRIVER

You can use a 2N3866 transistor here which is available. But any other rf power transistor for driver stages (2SC1973 etc.) will also do the job well. A heatsink is recommended even if stage current ist not that high. T1 should be a toroid, a “pig-nose” core in this place to my experience is not the best choice. The 10uH RFCs are ready made ones but you can also wind 20 turns of 0.4mm enameled wire to a FT37-43 toroid core.

RF output of this stage could be measured as 100mW into a 50Ω load.

The Main Driver

This stage has an old 2SC2078 CB transistor and is operated in class “AB” mode. An alternative could be a 2N3553 that is available on ebay for example. A heatsink is neccessary for whatever type you use.

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TX DRIVER

Correctly set bias for “AB” operation is ensured by the 1kΩ resistor from VDD to the bias circuit. The 1kΩ resistor limits the current whereas the diode works as a stabilizing element (thermistor). It must be connected directly to the case of the transistor ensuring good thermal contact. If the temperature of the devices rises the resistance of the diode will decrease. Hence current through the diode increases thus reducing the part of the current that can pass through the base-emmiter line of the 2SC2078. Quiescent current is stabilized and thermal runaway is prevented.

The rf output is uncommonly terminated with a low-pass-filter. This is because I first intended to build the transceiver for an output level of about 4 watts. But then I had the idea that the space still available on the veroboard could be used by another amplifier definitely leaving the QRP power level. So I left the circuit how it first was and just added the final amplifier stage.

Output of this driver stage now ist set to 1 watt into a 50Ω resistor.

The Final RF Amplifier

Now let’s go for the power machine in this transceiver:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TX POWER AMP

2 rf power transistors 2SC1969 by Eleflow provide up to 20 watts of rf power. Bias for such a high power stage can not be set by a simple resistor. Here a line transistor (BD137) serves as current control. Diodes D1 and D2 (1N4002 or equ.) follow the same purpose like the single one in the stage described before. They must be mounted with excellent thermal contact to each of the 2 power devices which ensures secured protection against thermal runaway. The transistors also must be connected to a large heatsink. I use Aluminium metal strips (2mm thickness) to connect them to the back wall of the cabinet.

RF is fed into the power transistors via a network of 8.2Ω  resistors and two 22uH rf chokes that seperate the rf line from the dc bias line letting only dc pass. This method makes construction of the input transformer easier. Winding ratio is 4 turns primary, 2 turns secondary. This is because the input impedance of the stage ist fairly low (aorund some ohms).

The output transformer is a homemade “pig-nose” of 6 toroids FT50-43, where 3 toroids are stacked (using 2-component glue) and 2 of these stacks are glued in parallel (see picture at the end of this text for details!). Winding ratio is  1 + 1 (primary center tapped) to 4 on secondary.

Quiescent current of this stage should be set to about 100mA.

A low-pass-filter terminates this stage and is connected to the antenna relay.

In addition you find a section to measure rf power. This is again the so called “Greinacher-Circuit” which doubles the voltage and serves as a charge pump. The dc output of this circuit directly leads to the S-Meter indicating output power of the transmitter.

Performance

First the spectrum of the signal with the transmitter fully driven to 20 watts output power with a two-tone-signal:

IMD3 is about 28dB below signal peak which I think is acceptable.

Amplitude diagram is as follows:

2-Tone-Signal Amplitude
2-Tone-Signal Amplitude

Max. radio frequency voltage is 90.4Vpp which calculates to about 20 watts of rf power (P=(Vpp/(2*SQR(2)))²/50Ω).

Power switch board and RIT voltage

A 12V relay with two pairs of contact sets is the heart of this unit. DC power is lead to TX, RX and permanent supply via the respective power lines.

RIT voltage generation is a little bit more complicated. When the RIT switch is in “OFF” position, RIT voltage always is taken from the fixed voltage divider that is formed of the two 4.7k resistors either when on receive or transmit mode.

If RIT is “ON” then there are two possibilities: When on receive mode, RIT voltage is gained from the 10k lin. potentiometer in the front panel. When on transmit mode RIT again is taken from the fixed voltage divider.

There is also a false polarity protection diode. This can be any silicon type with max. current >= 5 A.

"Old school" SSB transceiver for 14MHz by DK7IH (2018) - TR SWITCH RIT
“Old school” SSB transceiver for 14MHz by DK7IH (2018) – TR SWITCH RIT

Mechanics

The construction is sandwich style made of 2 layers:

“Old school” SSB transceiver for 14MHz by DK7IH (2018) -Inside View – VFO, LO, RX, SSB generator, TX mixer etc.
“Old school” SSB transceiver for 14MHz by DK7IH (2018) -Inside View TX and switchboard

OK, that’s the story. Thanks for joining me on the trip to the past! 😉

73 de Peter.

Advertisements

Shrinking a QRP transceiver to (nearly) the size of a pack of cigarettes

The challenge started some weeks ago, when John, ZL2TCA, commented to this blog

you next challange is to build a rig into a cigerette packet size case.

My problem: I don’t smoke, have never smoked and probably never will. 😉 But I have a new transceiver for 20 meters, that might come close to the dimensions of a pack of “cancer sticks”.

DK7IH pocket sized qrp transceiver 20-4 a
DK7IH pocket sized QRP transceiver 20-4

The transceiver is nearly the same circuit as applied with the “Micro 20-III” but uses a single ended final amplifier instead of a push-pull circuit. I hope to find time the next days to publish an article on this rig featuring full description of the radio. Currently I’m in the IOTA contest and working stations from all over Europe.

73 de Peter

Reviewing and improving the semi-automatic antenna tuner

Foreword

When I built the semi automatic tuner two years ago I did not take into account some possible shortcomings the device could suffer from. The first of these I noticed when I exceeded power levels of about more or less than 50 watts. In some cases there was rf incoupling leading the microcontroller to fail so that the relay setting was invalid for the given combination of frequency and antenna. The next point was that the algorithm to set the capacitor was far from being optimized. And, as I found out, the maximum inductance I had inlcuded was far too high. On the other hand the lowest indcutance was to big to ensure very fine tuning. So this was revised, too by stepping the inductors more carefully.

The consequence then was a complete reconstruction of the tuner trying to avoid the problems from rf stray energy being coupled into the microcontroller and improving the software and hardware.

Abstract

Thsi article describes a microcontroller driven semi-automatic antenna tuner capable of handling power levels up to 150 watts. The device is a low pass filter tuner manually tuned by setting the optimized L/C combination by hand and then storing the values into the EEPROM of the mictrocontroller to recall them later (seperately for each band from 80 to 10 meters including WARC bands). The tuner ist designed to couple long wire antennas (i. e. longer than half a wavelength) in the frequency range from about 3 MHz to 30 MHz. The antennas can be balanced or non-balanced.

The device uses 7 coils wound on iron powder toroids and a variable capacitor controlled by a motor with a reduction drive and a a device that detects the current turning angle of the rotator.

Also integrated you will find a measurement section to give the current standing wave ratio and put out this on the display.

General layout

The tuner consists of two main parts:

  • The microcontroller unit
  • The RF unit containing the tuning coils and the variable capacitor.

Let’s see the schematic first:

DK7IH semi automatic antenna tuner V2 (schematic)
DK7IH semi automatic antenna tuner V2 (Schematic FULL SIZE)

Circuit description

Starting on the left side, you see the microcontroller unit equipped with an 8-bit AVR microcontroller (ATMega16 or similar). The user interface is very simple and made of 6 push buttons. These are connected to GND via switchable individual resistors leading to the ADC3 input of the cntroller. The pull up resistor for ADC3 is activated thus forming a voltage divider and thus an individual ADC value for each push button to be recognized by the software. This is done because it saves control lines and controller ports to a wide extent.

The LCD is a two line 16 characters LCD.

Output ports are connected to ULN2003 driver ICs. These ICs contain a driver capable to handle up to 30V DC including a clamp diode so this IC can drive mtors and relays directly. There are capacitors of 0.1uF connected to the port lines to minimize rf coupling effects.

The RF board is made of 7 coils wound on T68-2 toroids with the inductances given in the schematic:

  • L1: 0.1uH: 4 turns,
  • L2: 0.25uH: 7 turns,
  • L3: 0.5uH: 9 turns,
  • L4: 1uH: 13 turns,
  • L5: 2uH: 19 turns,
  • L6: 4uH: 26 turns,
  • L7: 8uH: 37 turns.

Wire gauge is 0.4mm. The inductors are shortened by a 12V relay each if neccessary. So you can (by binary calculation) set any value from 0.1 uH to close to 16uH.

An output transformer is used to give a balanced out for e. g. doublet antenns. It is 10 turns bifilar on a 2.5 cm toroid ferrite core of No. 43 material. If you use a non-balanced antenna you can leave out this transformer.

The capacitor in my construction is a 200pF max. butterfly capacitor with air as dielectric.  The advantage of a butterfly type is that it needs only 90° angle to turn it from minimum to maximum capacity. The motor (a 5V dc version) is connected via a 240:1 gear drive by TAMIYA. The motor is pulse driven so it can be directly connected to 12 Volts with running danger to damage it.

The drive has two outlets providing one axle at each side of the drive. To one of the axles I connected the capacitor, the other one connects to a potentiometer to report the current swing angle to the microcontroller. This allows precise feedback of the capacitor’s current position which is essential for setting it to the desired value. The value of this variable resistor does not really matter since it is only a simple voltage divider. Anything between 1k and 10k should fit. Make sure that you use a piece that is easy to turn to minimize friction. To connect the axles I used PVC tubing with an inside diameter of 3 mm.

Also included is a measurement section to give the user a current reading of VSWR. The coupler can be anything you should regard as proper. I used a strip power coupler from an old CB radio. But other systems should also work.

To compensate losses when tuning low frequencies I added a DC amplifier based on an operational dual system amplifier (LM358). There is no means to reduce sensitivity. This is done by regulating the input power of the driving transmitter. The software will give you a readout for FWD and REF power in the range from 0 to 999. Tune to maxmimun FWD and minimum REF energy and everything will be alright! 😉

Practical aspects

To minimize RF couping into the microcontroller I seperated the control board from the RF board by putting it on a seperate veroboard with an aluminium shielding underneath:

DK7IH semi automatic antenna tuner V2 (inside view)
DK7IH semi automatic antenna tuner V2 (inside view)

The RF board is mounted to the bottom of the case, here with dismantled controller board. The controller board is sited on top of the package.

DK7IH semi automatic antenna tuner V2 (inside view)
DK7IH semi automatic antenna tuner V2 (inside view)

On the right side there is the variable butterfly capacitor, on the board, centered you can see the motor plus the reduction drive. On the left side of this there is a small potentiometer that forms the turning angele detector. To connect this to the ADC of the controller it is highly recommended to use shielded cable!

To come to an end, here is the deveice positioned under the roof window of my shack directly connected to the ladder line:

DK7IH semi automatic antenna tuner V
DK7IH semi automatic antenna tuner V”

Thanks for reading and enjoy your radio! 73 de Peter (DK7IH)

The software

(Apology for having some comments in German. I have been using this code for centuries! 😉

/*****************************************************************/
/*              Antennatuner with ATMega 16 V2                   */
/*  ************************************************************ */
/*  Microcontroller:  ATMEL AVR ATmega16, 8 MHz                  */
/*                                                               */
/*  Compiler:         GCC (GNU AVR C-Compiler)                   */
/*  Author:           Peter Rachow DK7IH                         */
/*  Last cahnge:      2018-07-27                                 */
/*****************************************************************/

/*    PORTS */
// O U T P U T 
// LCD 
// RS      = PD2
// E       = PD3
// D4...D7 = PD4..PD7

//Coil relays: PC0...PC6
//Motor drive on/off: PD1
//Motor direction relay: PD0
//Extra capacitor 200pF: PC7 (not yet!)

//I N P U T
//ADC0: SWR-Meter 0
//ADC1: SWR-Meter 1
//ADC2:
//ADC3: Keys
//ADC4: Potentiometer for Capacitor position

#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/eeprom.h>
#include <util/delay.h>

int main(void);

#define LCD_INST 0x00
#define LCD_DATA 0x01

#define MAXCAP 220
#define CAPDELAY 10
#define MAXBANDS 7

void lcd_write(char, unsigned char);
void set_rs(char);
void set_e(char);
void lcd_init(void);
void lcd_cls(void);
void lcd_line_cls(int);
void lcd_putchar(int, int, unsigned char);
void lcd_putstring(int, int, char*);
int lcd_putnumber(int, int, long, int);
void lcd_display_test(void);

//BAND DISPLAY & MISC
void show_band(int);
void show_meter(int, int, int);
void define_chars(void);

//Coils & Cpas
void set_coils(int);
void set_cap(int);
void rotate_cap(int);
int get_cap(void);

//ADC
int get_adc(int);
int get_keys(void);

//Delay
void wait_ms(int);

//String
int int2str(long, int, char *, int);
int stringlen(char *);


long runsecs = 0;

/**************************************/
/* Funktionen und Prozeduren fuer LCD */
/**************************************/
// LCD 
// RS      = PD2
// E       = PD3
// D4...D7 = PD4..PD7

/* Ein Byte (Befehl bzw. Zeichen) zum Display senden */
void lcd_write(char lcdmode, unsigned char value)
{
    int x = 16, t1;
	
    set_e(0); 

    if(!lcdmode)
	{
        set_rs(0);    //RS=0 => INST
	}	
    else
	{
        set_rs(1);    // RS=1 => DATA
	}	

    wait_ms(4);
	
    //Hi nibble
    set_e(1);
	for(t1 = 0; t1 < 4; t1++)
	{
	    if(value & x)
	    {
	       PORTD |= x;
	    }
        else	
	    {
           PORTD &= ~(x);
	    }  
		
		x <<= 1;
	}	
	set_e(0);
	
	x = 16;

	// Lo nibble
	set_e(1);
	for(t1 = 0; t1 < 4; t1++)
	{
	    if((value & 0x0F) * 16 & x)
	    {
	       PORTD |= x;
	    }
        else	
	    {
           PORTD &= ~(x);
	    }  
		
		x <<= 1;
	}
    set_e(0);

}

//RS
void set_rs(char status) //PD2  
{
    if(status)
	{
        PORTD |= 4;
	}	
    else
	{
	    PORTD &= ~(4);
	}	
}

//E
void set_e(char status)  //PD3
{
    if(status)
	{
        PORTD |= 8;
	}	
    else
	{
	    PORTD &= ~(8);
	}	
}

/* Ein Zeichen (Char) zum Display senden, dieses in */
/* Zeile row und Spalte col positionieren           */
void lcd_putchar(int row, int col, unsigned char ch)
{
    lcd_write(LCD_INST, col + 128 + row * 0x40);
    lcd_write(LCD_DATA, ch);
}


/* Eine Zeichenkette direkt in das LCD schreiben */
/* Parameter: Startposition, Zeile und Pointer   */
void lcd_putstring(int row, int col, char *s)
{
    unsigned char t1;

    for(t1 = col; *(s); t1++)
	{
        lcd_putchar(row, t1, *(s++));
	}	
}


/* Display loeschen */
void lcd_cls(void)
{
    lcd_write(LCD_INST, 1);
}


/* LCD-Display initialisieren */
void lcd_init(void)
{
    /* Grundeinstellungen: 2 Zeilen, 5x7 Matrix, 4 Bit */
    lcd_write(LCD_INST, 40);
    lcd_write(LCD_INST, 40);
    lcd_write(LCD_INST, 40);

    //MAtrix 5*7
    lcd_write(LCD_INST, 8);

    /* Display on, Cursor off, Blink off */
    lcd_write(LCD_INST, 12);

    /* Entrymode !cursoincrease + !displayshifted */
    lcd_write(LCD_INST, 4);
	
	//4-Bit-Mode
    lcd_write(LCD_INST, 2);	
	
	lcd_cls();
}


//Write number with given amount on digits to LCD
int lcd_putnumber(int col, int row, long num, int dec)
{
    char *numstr = malloc(32);
    int l = 0;
    if(numstr != NULL)
    {
        int2str(num, dec, numstr, 16);
        lcd_putstring(col, row, numstr);
        l = stringlen(numstr);
        free(numstr);
        return l;
      
    } 
    return 0;
}


void lcd_line_cls(int ln)
{
    int t1;
	
	for(t1 = 0; t1 < 15; t1++)
	{
	    lcd_putchar(ln, t1, 32);
	}
}	
/*****************************************/
//           STRING FUNCTIONS
/*****************************************/
//INT 2 ASC
int int2str(long num, int dec, char *buf, int buflen)
{
    int i, c, xp = 0, neg = 0;
    long n, dd = 1E09;

    if(!num)
	{
	    *buf++ = '0';
		*buf = 0;
		return 1;
	}	
		
    if(num < 0)
    {
     	neg = 1;
	    n = num * -1;
    }
    else
    {
	    n = num;
    }

    //Fill buffer with \0
    for(i = 0; i < 12; i++)
    {
	    *(buf + i) = 0;
    }

    c = 9; //Max. number of displayable digits
    while(dd)
    {
	    i = n / dd;
	    n = n - i * dd;
	
	    *(buf + 9 - c + xp) = i + 48;
	    dd /= 10;
	    if(c == dec && dec)
	    {
	        *(buf + 9 - c + ++xp) = '.';
	    }
	    c--;
    }

    //Search for 1st char different from '0'
    i = 0;
    while(*(buf + i) == 48)
    {
	    *(buf + i++) = 32;
    }

    //Add minus-sign if neccessary
    if(neg)
    {
	    *(buf + --i) = '-';
    }

    //Eleminate leading spaces
    c = 0;
    while(*(buf + i))
    {
	    *(buf + c++) = *(buf + i++);
    }
    *(buf + c) = 0;
	
	return c;
}

//STRLEN
int stringlen(char *s)
{
   int t1 = 0;

   while(*(s + t1++));

   return (t1 - 1);
}


//BAND DISPLAY
void show_band(int b)
{

    char *band_str[] = {"80m", "40m", "30m", "20m", "17m", "15m", "12m", "10m"};
    lcd_putstring(0, 13, band_str[b]);
}

//Meter (max. value = 25)
void show_meter(int value, int value_old, int pos)
{
	#define MAXBLOCKS 4
    int v1, v2, v3, i1;
	
    //Clear meter (5 chars) if new value > old value
    if(value < value_old)
    {
        for(i1 = 0; i1 < MAXBLOCKS; i1++)
        {
	        lcd_putchar(1, i1 + pos * 6, 32);
        }
	}
			
	v1 = (int) value / MAXBLOCKS; //Full blocks, 5 cols each
    v2 = value - v1 * MAXBLOCKS;  //Rest
	if(v1 > MAXBLOCKS)
	{
		v1 = MAXBLOCKS;
	}
	
	if(value >= value_old)
	{
	    v3 = (int) value_old / MAXBLOCKS; //Full blocks, 5 cols each, already drawn
	}
	else
	{  
		v3 = 0;
	}	    
	
	//Full blocks	
	for(i1 = v3; i1 < v1; i1++)
	{
	    lcd_putchar(1, i1 + pos * 6, 4); 
	}
	
	//Rest
	if(i1 < MAXBLOCKS)
	{
		if(v2)
	    {
	        lcd_putchar(1, i1 + pos * 6, v2 - 1);
	    }
        else
        {
            lcd_putchar(1, i1 + pos * 6, ' ');
        }
	}
}

//PROGRAM CUNSTOM CHARS FOR S-SMETER
void define_chars(void)
{
    int i1;
	unsigned char adr = 64;
						  
	unsigned char b1[] = {0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, //S-Meter blocks 
	                      0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
						  0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00,
						  0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00,
						  0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
						  	0x0,0x0,0x4,0xe,0x4,0x0,0x0, 0, //+
						  	0x4,0xe,0x4,0x0,0x4,0xe,0x4,0, //++
						  0x00, 0x01, 0x02, 0x12, 0x0A, 0x04, 0x00, 0x00  //Tick
						  
						  };					  
	//Dummy operation!
	lcd_write(LCD_INST, 0);
	lcd_write(LCD_DATA, 0);

    //Load data into CGRAM
	for(i1 = 0; i1 < 64; i1++)  
	{
	    lcd_write(LCD_INST, adr++);
		lcd_write(LCD_DATA, b1[i1]);
	}
}		


/////////////////////////////////////
//
// C O I L S & C A P S
//
/////////////////////////////////////
void set_coils(int pattern)
{
    int unsigned t1, x = 1, p = pattern;
    
    //Inductance in uH  * 100
    int i0[] = {10, 25, 50, 100, 200, 400, 800}, i1 = 0;
    
    //lcd_putstring(0, 10, "    ");
    //lcd_putnumber(0, 10, p, -1, -1, 'l', 0);
    
    for(t1 = 0; t1 < 7; t1++)
    {
		if(p & x)
        {
            PORTC &= ~(x);      
            i1 += i0[t1];
        }
        else
        {    
            PORTC |= x;
        }
        x <<= 1;
     }       
     lcd_putstring(0, 0, "       ");
     lcd_putstring(0, lcd_putnumber(0, 0, i1, 2), "uH");
}

void set_cap(int cap)
{
               
    if(cap < 0 ||cap > MAXCAP)
    {
		return;
	}
	
	lcd_putstring(0, lcd_putnumber(0, 7, cap, -1) + 7, "pF");
	wait_ms(500);
	/*	
    lcd_putnumber(0, 0, get_adc(4), -1, -1, 'l', 0);
    lcd_putnumber(0, 8, cap, -1, -1, 'l', 0);
    lcd_putnumber(1, 0, (int) adc0, -1, -1, 'l', 0);	
    */       
    
    while(get_cap() > cap)
    {
		rotate_cap(0);
		lcd_putstring(0, 7, "      ");
        lcd_putstring(0, lcd_putnumber(0, 7, get_cap(), -1) + 7, "pF");
        if(get_keys() == 5 || get_keys() == 6) //Quit if band QSY key is pressed
        {
			return;
		}	
    }
    
    while(get_cap() < cap)
    {
		rotate_cap(1);
		lcd_putstring(0, 7, "      ");
        lcd_putstring(0, lcd_putnumber(0, 7, get_cap(), -1) + 7, "pF");
        if(get_keys() == 5 || get_keys() == 6) //Quit if band QSY key is pressed
        {
			return;
		}	
    }
        
    

}

//Measure real cap val from sensor
int get_cap(void)
{
	double val = (double) (get_adc(4) - 384) * MAXCAP / 256;
	
	return (int) val;
}
	
void rotate_cap(int direction)
{
	if(direction)
	{
		PORTD &= ~(1); //RelayOFF      
	}
	else
	{
	    PORTD |= 1;   //Relay ON	
	}	
	
	PORTD |= 2;   //Motor ON
	wait_ms(CAPDELAY);
	PORTD &= ~(2);  //Motor OFF      
	wait_ms(CAPDELAY);
}	


ISR(TIMER1_OVF_vect)   	   // Timer1 Überlauf
{ 
    runsecs++;
    TCNT1 = 57724;	  
} 

//***************************************************
//                      ADC
//***************************************************

int get_adc(int adcmode)
{
    int adc_val = 0;
	
	
	ADMUX = (ADMUX &~(0x1F)) | (adcmode & 0x1F);     // Kanal adcmode aktivieren PA0=TUNE
    wait_ms(3);
	
    ADCSRA |= (1<<ADSC);
	wait_ms(3);
	
	adc_val = ADCL;
    adc_val += ADCH * 256;   
	
	while(ADCSRA & (1<<ADSC));
	
	return adc_val;
}	

//Read keys via ADC0
int get_keys(void)
{

    int key_value[] = {18, 22, 29, 43, 74, 132};  
       	
    int t1;
    int adcval = get_adc(3);
        
    //TEST display of ADC value 
    /*
    lcd_cls();
    lcd_putnumber(0, 0, get_adc(3), -1, -1, 'l', 0);
    return 0;    	
    */
    
    for(t1 = 0; t1 < 6; t1++)
    {
        if(adcval > key_value[t1] - 2 && adcval < key_value[t1] + 2)
        {
			 return t1 + 1;     
        }
    }
    
    return 0;
}

/***************************************************/
/* Wartezeit in Millisekunden bei fck = 8.000 MHz  */
/***************************************************/
void wait_ms(int ms)
{
  int t1, t2;

  for(t1 = 0; t1 < ms; t1++)
    for(t2 = 0; t2 < 137 * 8; t2++)
      asm volatile ("nop" ::);
}

int main()
{
	int t1;
	int key;     //Keystroke
	int adc_val; //Value of ADC
    int i = 65;  //L
    int band = 0;
    int l1 = 0, c1 = 0;
    
    //Standard values for DK7IH antenna
    //L=      - (128), 8uH(64), 4uH(32), 2uH(16), 1uH(8), 0.5uH(4), 0.25uH(2), 0.125uH(1)
    int std_l [] = {65, 33, 12, 8, 6, 4, 3, 2, 1};
    int std_c [] = {172, 41, 75, 110, 88, 55, 33, 17};
    
    //Meter data
    int s0, s1;
    int s0_old = -1, s1_old = -1;
    int s0off, s1off;
    int loopcnt0 = 0;;
        
    int ok = 0;
    long runsecs2 = 0;
	
	/* Set ports */
    /* OUTPUT */
    DDRB = 0x1F; //Relays 1.55 of cap switching
    DDRC = 0x7F; //Relays for coils             
    DDRD = 0xFF; //LCD data on PD4...PD7
                 //LCD RS:PD2, E:PD3
                 //PD0, PD1: Relay 6 and 7 of cap switches
    
    PORTA = 0x08; //Pullup resistor for keys' input   
    
    //Display
    lcd_init();
	wait_ms(500);
	lcd_cls();
	lcd_putstring(0, 0, " DK7IH Antenna");				
	lcd_putstring(1, 0, " Tuner Ver. 2.0");				
	wait_ms(500);
	lcd_cls();
			
	//Watchdog abschalten
	WDTCR = 0;
	WDTCR = 0;
    	
	//ADC initialisieren
    ADMUX = (1<<REFS0);     // Referenz = AVCC
    ADCSRA = (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN); //Frequenzvorteiler 64 u. //ADC einschalten
	ADCSRA |= (1<<ADSC); //Eine Wandlung vornehmen
	while (ADCSRA & (1<<ADSC)); //Eine Wandlung abwarten
    adc_val = ADCL;
    adc_val += ADCH * 256;   //Wert auslesen
	adc_val = 0;
	
	//Timer 1
	TCCR1A = 0;                      // normal mode, keine PWM Ausgänge
    TCCR1B = (1<<CS12) + (1<<CS10) ;   // start Timer mit Systemtakt, Prescaler = /1024
	                                    //Auslösung des Overflow alle Sekunde sec.
    TIMSK = (1<<TOIE1);   // overflow aktivieren.
	TCNT1 = 57724;        //Startwert für Sekundentakt

    //Define custom chars for meter
    //define_chars();

    //Load standard data if eeprom cell empty
    for(t1 = 0; t1 < 8; t1++)
    {
		if(eeprom_read_byte((uint8_t*)(t1 * 2)) == 255)
		{ 
			eeprom_write_byte((uint8_t*)(t1 * 2), std_l[t1]);
			eeprom_write_byte((uint8_t*)(t1 * 2 + 1), std_c[t1]);
		}
	}		
				
		
    //Get recent data           		
   	band = eeprom_read_byte((uint8_t*)32);
   	if(band < 0 || band > MAXBANDS)
	{
	    band = 3;
	}
	show_band(band);
	
	l1 = eeprom_read_byte((uint8_t*)(band * 2));
	if(l1 >= 0 && l1 < 128)
	{
		set_coils(l1);
	}
	else
	{
		set_coils(65);
		lcd_line_cls(1);
		lcd_putstring(0, 0, " -x-uH");
		wait_ms(1000);
	}
	c1 = eeprom_read_byte((uint8_t*)(band * 2) + 1);	
	if(c1 >= 0 && c1 < MAXCAP)
	{
		set_cap(c1);
	}
	else
	{
		set_cap(110);
		lcd_line_cls(1);
		lcd_putstring(0, 0, " -x-pF");
		wait_ms(1000);
	}	
    sei();

    show_band(band);
    
    //Calculate 0-offset of swr meter
    s0off = get_adc(0);
    s1off = get_adc(1);
    
    for(;;) 
	{
		key = get_keys();
		if(i > 0 && key == 2)
		{
			i--;
		    set_coils(i);
		    wait_ms(50);
		}    
		
		if(i < 127 && key == 1)
		{
			i++;
		    set_coils(i);
		    wait_ms(50);
		}    
				
		while(get_cap() > 0 && key == 4) //C(-)
		{
			rotate_cap(0);
		    lcd_putstring(0, 7, "      ");
            lcd_putstring(0, lcd_putnumber(0, 7, get_cap(), -1) + 7, "pF");     
            wait_ms(100);
            key = get_keys();
		}    
		
		while(get_cap() < MAXCAP && key == 3) //C(+)
		{
			rotate_cap(1);
		    lcd_putstring(0, 7, "      ");
            lcd_putstring(0, lcd_putnumber(0, 7, get_cap(), -1) + 7, "pF");     
            wait_ms(100);
            key = get_keys();
		}    

        if(band > 0 && key == 6)         //Band (-)
        {
			band--;
		
			while(!eeprom_is_ready());
		    eeprom_write_byte((uint8_t*)32, band);
										
			lcd_putstring(1, 0, "Recalling.");
				
			l1 = eeprom_read_byte((uint8_t*)(band * 2));
			c1 = eeprom_read_byte((uint8_t*)(band * 2 + 1));

	        if(l1 >= 0 && l1 < 128)
	        {
		        set_coils(l1);
		        i = l1;
	        }
	        else
	        {
		        set_coils(65);
		        lcd_putstring(0, 0, " -x-uH");
		    }    
									
														
			if(c1 >= 0 && c1 <= MAXCAP)
			{
			    set_cap(c1);
			}	
			else
			{
				lcd_putstring(0, 7, "-x-pF");
			}	
				
			show_band(band);
			lcd_putstring(1, 0, "             ");
			while(get_keys());
		}
		
        
        if(key == 5) //Band (+)
		{
		    show_band(band);
			lcd_line_cls(1);
			
		    runsecs2 = runsecs;
			ok = 0;
			lcd_putstring(1, 0, "Waiting....");
			while(get_keys() == 5 && !ok)
			{
			    
			    lcd_putnumber(1, 10, 3 - (runsecs - runsecs2), -1);
				if(runsecs - runsecs2 > 2)
				{
				    ok = 1;
				}	
			}	
			
			if(runsecs > runsecs2 + 1) //Key has been pressed for longer than a second, new values for current band to be set
			{                          //Also store values in EEPROM 
			    while(!eeprom_is_ready());
				eeprom_write_byte((uint8_t*)(band * 2), i); 
				
			    while(!eeprom_is_ready());
				eeprom_write_byte((uint8_t*)(band * 2 + 1), get_cap());
				
				while(!eeprom_is_ready());
				eeprom_write_byte((uint8_t*)32, band);
								
	            lcd_line_cls(1);
				lcd_putstring(1, 0, "Stored.");				
				wait_ms(1000);
				lcd_line_cls(1);
			}
            else	
			{
			    if(band < MAXBANDS) //Change band 1 up
				{
				    band++;
				}
                				
				while(!eeprom_is_ready());
				eeprom_write_byte((uint8_t*)32, band);
				
				show_band(band);
				
				lcd_putstring(1, 0, "Recalling.");
				
			    l1 = eeprom_read_byte((uint8_t*)(band * 2));
				c1 = eeprom_read_byte((uint8_t*)(band * 2 + 1));
								
	            if(l1 >= 0 && l1 < 128)
	            {
		            set_coils(l1);
		            i = l1;
	            }
	            else
	            {
		            set_coils(65);
		            lcd_putstring(0, 0, " -x-uH");
		            wait_ms(1000);
		        }    
									
														
			    if(c1 >= 0 && c1 <= MAXCAP)
			    {
			        set_cap(c1);
			    }	
			    else
			    {
				     lcd_putstring(0, 7, "-x-pF");
			    }	
			    lcd_putstring(1, 0, "             ");
			}	
		}
		
		//Meter check
        if(loopcnt0++ > 10)
        { 
            
            s0 = get_adc(0) - s0off;
            s1 = get_adc(1) - s1off;
            
            if(s0 != s0_old)
            {
				if(s0 > 999)
				{
					s0 = 999;
				}	
				lcd_putstring(1, 0, "FWD:    "); 
				lcd_putnumber(1, 4, s0, -1);
				s0_old = s0;
			}
			
			if(s1 != s1_old)
            {
				if(s1 > 999)
				{
					s1 = 999;
				}
				lcd_putstring(1, 8, "REF:     "); 
				lcd_putnumber(1, 12, s1, -1);
				s1_old = s1;
			}	
            
            loopcnt0 = 0;
        }    
        
	}
	return 0;
}


 

A Micro Multibander – Step by step (Part III): The Receiver (Overview)

Work is in progress. The recent weeks I finished all the 6 modules that are going to be the receiver:

  • Band pass filter section
  • Relay switches for switching the BPFs
  • RF preamp, RX mixer and IF preamp
  • IF main amp
  • Product detector and AF amp section
  • AGC unit

Mounted together to an aluminium carrier board it looks like this:

Receiver board for Micro Multiband QRP SSB TRX (C) DK7IH 2018
Receiver board for Micro Multiband QRP SSB TRX (C) DK7IH 2018

On the picture the board is not equipped with the neccessary wiring yet to give the reader more sight on the single circuits. Next I will draw a schematic of each board to point out the used circuitry for those who want to build this or a similar receiver.

First test are promising so far, the receiver is sensitive, has a very low noise figure (due to dual gate MOSFETs in the preamp and the two main IF amp stages) and has shown no problems to cope with high out-of-band broadcaster signals on the 40 meter band which is due to the SBL-3 mixer I have used that has a good IM3 performance..

Thanks for watching an 73 de Peter (DK7IH)

My “Vintage Style QRP Transceiver” on YouTube

This transceiver was built to celebrate my 30 years anniversary in homebrewing QRP transceivers. The 14MHz rig was designed building an SSB transceiver like I did in the 80s. The only exception was, that this one uses SMD technology whereas in 1987 I used thru-hole components. But the rest is original 80s-style:

  • VFO instead of DDS
  • Standard S-Meter for TX and RX instead of OLED
  • Dynamic mic instead of electret mike

Have fun watching!

73 de Peter (DK7IH)

A very compact SSB transceiver for 40 Meters with 50 watts of output power (Product detector, AF, AGC)

The demodulator section of the transceiver’s receiver starts with the product detector, which is made of another SA602. To get more audio volume a preamplifier has been added before the LM386 follows.

Homemade SSB amateur radio transceiver 40 meters (SSB demodulator, AF, AGC section)
Homemade SSB amateur radio transceiver 40 meters (SSB demodulator, AF, AGC section)

The AGC section hast got 2 crucial components: One resistor (this case 100k) and an electrolytic capacitor (in this case 100uF): They determine the time ramp for the AGC regulation curve. This means they define the response and decay time for the AGC and thus should be made easily changable for example by putting them into socket strips.

Hint: In certain cases it can be useful to add a potentiometer to give you control on the audio input of the AGC preamplifier.

Thanks for watching!

73 de Peter

“Give me FIVE!” – A QRP SSB multiband transceiver for 5 bands with 10 Watts output power

I owned an old ATLAS 215 RF transceiver once. This unit was destroyed because by a momentary laps of reason.  I put 12 V DC to it with wrong polarity. Sh..! Since this very sad day I’ve always wanted a new 5 bander rig. OK, I could have bought one. Money is not the big problem. But, as a passionate homebrewer, I thought to myself: “Why not building a 5 band trx instead of the monoband rigs that I’ve built so far?“. This decision was made in summer 2015. Now, in late autoumn, this rig s nearly completely finished.

5 band multi band QRP SSB transceiver - 10 Watts output (C) Peter Rachow (DK7IH)
5 band multi band QRP SSB transceiver – 10 Watts output (C) Peter Rachow (DK7IH)

So, let’s tell the whole story…

General aspects

Building a multi band rig is, as you might conceive, much more complicated than setting up a monobander. Seems sensible. So, first I went through literature to avoid fulminant project failure which is more probable when making serious mistakes that can easily be avoided by careful planning.

What to read? First, “Solid state design for the radio amateur” by Hayward and DeMaw is still a very useful book. Even when sometimes people mail me and say “Oh boy, why are you always bulding all those nostalgia radios with old style components like the ‘741’? Boy, today, SDR is the standard!“. My simple answer then is: “No, it is NOT!“.

To learn more about multi band QRP transceivers I also browsed the web for similar projects. There are some, but often there is no full cicuitry given. Here are two sites that might be interesting: M0DGQ and  VK3EPW.

So, after some days of conceiving, I finally had the basic concept in mind. Mixing the modern times (DDS and microcontrollers) with the old style of QRP homebrewing. And what about “SDR”? Sorry, not on the agenda. Based on these prerequisites, here are the main ideas for this radio:

  • DDS controlled by microcontroller
  • Colored graphic LCD
  • 5 ham bands (80, 40, 20, 15 and 10 meters) to be covered
  • SSB only
  • 10 Watts out, transmitter equipped with bipolar transistors in push-pull mode (lots of CB-types still on my stock or replaced e. g. by ELEFLOW types)
  • Single conversion superhet receiver with AGC and high dynamic range (diode ring mixer). Must be able to deal with high signal levels on the lower ham bands.
  • Compact size to make the radio fit for portable, outdoor and holiday use (flight!)
  • Using “The usual suspects” like NE602, MC1496, LM386, MC1350 to be involved.

To avoid any fuss in recevier and ssb generation design I have again picked up the single-conversion principle that has successfully been applied in my former transceivers which uses only one interfrequency (IF). One of the reasons for this, besides circuit simplicity, is the fact, that a single conversion superhet produces less “birdies” than a double conversion one. Birdies are a particular problem when you use DDS frequency generation. Every DDS produces spurii that can be received with more or less intense signal strength in your own receiver. So I was not keen on having more than the inevitable number of self-reception signals by adding a second interfrequency.

Mechanical considerations

I love to build rigs that are compact and neat. I don’t like the bulky boxes only capable for home use. To make this fairly complex radio not too large, I found that sandwich design would be the best way to save space and make the transceiver friendly for building and service.

Based on the “sandwich-idea”, the rig consists of three different layers:

  • Transmitter board
  • Switch board with final low pass filters (centered between the two others)
  • Receiver board

All boards are connected from the laterals by a homemade plug system so that the single Verobaords can be removed and reinstalled into and from the assembly quickly. Here’s an overview picture showing this construction method:

5 band 10 watts QRP SSB transceiver, sandwich construction ( (C) 2016 Peter Rachow - DK7IH)
5 band 10 watts QRP SSB transceiver, sandwich construction ( (C) 2016 Peter Rachow  (DK7IH)

In the middle of the sandwich you can recognize the switching unit from where the plugs are lead to the receiver and transmitter board. The idea behind this on one hand makes the transceiver very compact. On the other hand it is very service friendly. It takes only 1 or 2 minutes for example getting the transmitter board out for changing a component. Pull the side connectors, remove 4 board screws + 3 screws at the rear-mounted heat sink and take out the board. Remounting the board takes some seconds more. But there is no need to disconnect and reconnect an endless number of cables each time you perform a modification. All lines are connected by the side-plugs. And that’s it! One shortcoming should be mentioned: When I built the rig there was a little bit more effort concerning wiring. But it pays!

As board No. 4 the DDS-VFO together with the microcontroller and the LCD have been put behind the front panel.

VFO and LO frequency considerations

In this transceiver the interfrequency (IF) is 10 MHz which is based on the fact that respective crystals can cheaply be purchased in larger quantities to build appropriate ladder filters with. I bought about 50 pieces for around 10 Euros. But other crystal frequencies are also possible. For example computer crystals of 9,832 kHz, standard 9,000 kHz xtals or others in the same frequency region can be used. Taking your IF between 8 and 12 MHz might be the best choice in my opinion.

Hint: Before choosing the final IF and purchasing crytals or ready-made filters it is highly recommended to do some basic calculations to ensure that none of the harmonics either of the VFO or the LO falls into the desired receiving band going together with a certain set of frequencies generated by the two oscillators.

So watch out where the frequencies of VFO and LO are located in the radio frequency spectrum! A spreadsheet software is extremely useful for this purpose, because you can change the IF quickly and see at first glance what you will get out when the DDS is about to generate the needed frequency to bring you to the desired band. Also keep harmonics in mind!

And also keep in mind that the image frequency on every band should not fall into shortwave broadcast bands (e. g. the 49m-band!)  where strong commercial stations may appear. OK, sometimes this can’t be avoided but it’s worth thinking of it before you start to build.

As said before, my rig uses a DDS system for obtaining versatile VFO functionality (equipped with an AD9850 made by Analog Devices). To get “a feeling” for this chip I first used one of those AD9850 modules available from China on ebay for e few bucks. The problem: They are more or less crap. at least for RF use. I don’t know what chips they install there, but the board was cheaper than buying a single AD9850 on the free market. No more questions. These boards produce a large number of spurii (aka “birdies”). A much greater number than I ever encountered with my last rigs using an AD9835 DDS chip that is nearly spurii-free. So I decided to buy some surplus original AD9850 chips and a breakout board to which I soldered the DDS chip and tried my own DDS board. It worked from the start. But there are also some spurii so I changed the AD9850 DDS to an AD9834 which is similar to the AD9835 from my other rigs. The AD9834 can be overclocked to about 100 MHz which makes him a candidate to substitude the AD9850 in the DDS. In the end I decided to use a more professional DDS by Analog Devices and came to the AD9951 that is also used in Kenwood’s TS590 transceiver. This one, as you might gues, worked best. Here is the description of this optimized DDS vfo.

Realizing the Transceiver

The DDS-VFO, the microcontroller and the colored LCD

Please note that the AD9850-based DDS has been replaced by an AD9951-system. Read the article here!

For a long time I have owned some colored LCD cellphone displays from a dive computer project that I had completed some years before. These boards are equipped with an ATMega128 micorocontroller which is capable to deliver enough capacity and calculation power even for extended software. So why not using this surplus material?

First, here’s the scheme of this unit:

AT Mega 128, AD9835, D072 Display Modul for 5 band QRP SSB transceiver (C) 2015 Peter Rachow (DK7IH)
AT Mega 128, AD9850, D072 Display Modul for 5 band QRP SSB transceiver (C) 2015 Peter Rachow (DK7IH)

Here’s an older picture of the practical realization of this DDS-VFO (running an older version of the software) with the LCD built in behind the front panel of my transceiver:

DDS VFO + colored LCD (by DK7IH)
DDS VFO + colored LCD (by DK7IH)

Why is using a DDS really cool?

What always was a problem in “pre-DDS”-times was to switch the VFO to the desired band. With the old 80/20-meter transceiver concept this was not a big problem, the 5-MHz-VFO did the job on either band. But it things were more complicated when you wanted to cover the other ham bands with only one VFO. Some basic concepts were switiching the coils and/or capacitors or bulding a superheterodyne VFO that mixed a basic VFO signal to the desired frequency. Lots of birdies included, sometimes at least.

With an appropriate DDS no superheterodyne or LC-switching circuitry is required to get the wanted  VFO signal for each band. The AD9850 is capable of being clocked with 125 MHz maximum rate. The AD9951 can be clocked to 500 MHz even if 400MHz are nominal by the manufacturer. Due to physical reasons (Nyquist frequency) the highest frequency you can get out of such a DDS is about one third of the clock oscillator frequency what in the first case means about 40 MHz. So you can easily recognize that you can get all the VFO sigs from the one DDS you need to drive an rf transceiver without that VFO fuss well known in the older times. In my rig I achieved to stay very much below the margin of 40 MHz because output voltage due to the frequency calaculation you can see underneath. Keep in mind: Signal quality of the DDS decreases significantly the closer you get to its maximum frequency. Among other reasons this is due to the fact that a low-pass filter is switched to the output of the DDS. I recommend to stay at least 5 to 10 times lower than Nyquist freqeuncy if possible.

Frequency calculations

For the two lower bands (80 and 40 meters) the operating frequency is calculated by the following scheme:

f = fif – fVFO (I)

For the upper three bands (20, 15 and 10 meters) another equation is used:

f = fif + fVFO (II)

Two effects are desired by using this scheme:

First, there is no requirement to switch the local oscillator because it is always on the “right” sideband. The sideband relay in my rig is without current except from those times when you want to use the “wrong” sideband. Second, the maximum frequency the DDS has to produce is about 19 MHz (for the 10-meter band). This will result in sufficient output voltage out of the DDS chip to drive the TX mixer (SA602) properly. For the receiver I use a diode ring mixer, which requires about 7 dBm injection level. Therefore an additional amplifier is required. The DDS can not drive the diode balanced mixer without amplification! In my AD9951 DDS an additional amplifier has been installed, please look there.

The Microcontroller

Now let’s look at the microcontroller unit. This time I used a pre-manufactured circuit board that contains a colored LCD together with an ATMega128 µC to do all the digital work. The board is an “D072” produced by German based manufacturer display3000.com. The board has nearly all the ports of the installed ATMega128 to be accessed by the developer. Only some lines of PORT B are reserved for the LCD SPI signals. But due to the fact that the ATMega128 has got plenty of available ports that is not a problem at all.

The cellphone display can be run in 2 different modes. Either you can use 256 or 65536 colors. Because of performance reasons I decided that 256 colors are enough because only one byte per pixel needs to be transferred in this mode. In high color mode on the other hand each pixel contains 2 bytes of data which makes data transfer a bit slower. This mode is mainly for showing photos on the 2.1″ display which I didn’t intend to do.

All neccessary auxiliary moduls are also present on the D072-board including voltage regulators, charge pump and positive/negative power supply for the LCD, the MAX232 chip used for serial communication purposes and so on. Even a PWM modul is installed to make the display light controlable by software. All what you have got to do is to connect the various ports of the microcontroller to your application. These are the DDS chip, some sensors for measurement issues using the AT’s ADC, switches and so on. This is the reason why I drew only the relevant lines for my transceiver to the schematic above.

The AD9850 DDS and its refinements

Please note that the AD9850-based DDS has been replaced by an AD9951-system. Read the article here!

As I mentioned above, DDS is a nice thing. I only had to find a DDS chip that could cover the  frequency range from 3 to about 20 MHz used for my rig. I first chose the AD9850 by Analog Devices.

But some experiments were neccessary to optimize the VFO circuit. First, to increase output voltage, I used a symmetric output with a trifilar wound transformer.

DDS for multi band transceiver (DK7IH 2015)
DDS for multi band transceiver (DK7IH 2015)

Balanced output to my experience is recommended when using Analog’s DDS chips that supply 2 output ports. Use  a simple output transformer (e. g. on an Amidon FT37-43-core, trifilar wound). The transformer is followed by an amplifier. See the full scheme for this one! A low pass filter in between these two sections improves waveform and eliminates harmonics. The signal then is fed into the TX and RX mixers simultaneously. The DDS now puts out 2 Volts p-p on from 3 to 20 MHz giving a pure sine wave with flat signal levelling over the full frequency span.

Hint: If you own a spectrum analyzer you can write a simple test program to produce sine waves over the whole frequency an check the flatness of your DDS this way.

DDS and amplifier for QRP SBB multi band transceiver (C) 2015 DK7IH
DDS and amplifier for QRP SBB multi band transceiver (C) 2015 DK7IH

Band switching

The main thing that makes a multiband transceiver much more complex than a monobander is the neccessity to switch frequency related filters in certain parts of the circuit even if broadband designs are widely applied. There are three sections in which band switching must take place in my rig:

In the receiver section:

  • At the front end.

In the transmitter section:

  • At the output of the transmit mixer before first amplifier, and
  • after the final stage where the low-pass filters for each band are selected.

At the low power end of the chains (front end and tx mixer) where signal levels don’t exceed 1 or 2 volts p-p several ways of switching are theoretically possible:

  1. Diodes as switching elements
  2. IC-Multiplexers
  3. Miniature relays

Method 1 usually involves stray capacities, so signal seperation is far from being overwhelming. Effective decoupling is a big problem with this on the other hand cheap and handy method.

Alternative 2 ensures very much a higher level of signal seperation but depends on the availability of the respective ICs needed like the 74HC4052 (a multiplexer IC) for example

Because of the fact that from a former model railraod project I still had a large bunch of 5V coil voltage OMRON relays, I decided to use these. Most relays normally tend to have good RF decoupling capabilities because capacities of the unswitched contact pairs are in the 1..2 pF region or even lower. That is absolutely OK for rf designs! Check the data sheet for exact data before buying a certain relay model.

In my transceiver the 3 relays sets for each band (receiver front end, TX mixer output and low-pass filter after final amplifier stage) are connected in series and are driven directly by 12 volts by a simple switching transistor directly controlled by a port line from the microcontroller using a small transistor driver stage (see circuit of microcontroller board). Each relay gets about 4 volts of coil voltage (then drawing about 40 mA) which is more than enough because my OMRON relays start reliable switching from a coil voltage of about 3.3 V. So the transceiver theoretically can be operated down to 10 Volts DC without any danger that the band relays might not switch correctly.

Band switch drivers

The drivers for each band that drive 3 series switched relays per band are controlled by one seperate port of the controller (Ports PE3 to PE7). PE3 is for 80 meters, PE4 for 40 and so on. BC547 transistors are enough because the 5V Omron PCB relays draw about 35  mA. Max. collector current for a BC547 is 100mA.

Measurement section for “environmental” data

A lot of values are detected with sensors in this rig. Several voltage dividers are visible on the upper left part of the scheme. They measure:

  • Power supply voltage
  • Temperature of the TX final stage heat sink
  • RX signal level derived from the AGC
  • RIT voltage

The signals are fed into the various PORTS of the ADC of the µC. Check for the software code that will be soon postet for details.

The transmitter

I have to admit, I underestimated the diffculties that I was going to face when constructing a 3 to 30 MHz broadband QRP amplifier with a power output level of about 10 watts on all the five bands covered. I read a lot of stuff in advance, particularly the ARRL library, to get aquainted with the basics of designing linear broadband amplifiers for rf.

To make clear what I’m talking about, here’s the final and full circuit after hours and hours of testing, improving, testing, conceiving, improving…. 😉

A 5 bands 10 Watts multi band SSQ QRP transceiver: The full transmitter section including broadband linear amplifier from 3 to 30 MHz (C) Peter Rachow (DK7IH) 2015
A 5 bands 10 Watts multi band SSQ QRP transceiver: The full transmitter section including broadband linear amplifier from 3 to 30 MHz (C) Peter Rachow (DK7IH) 2015

The mere power amplifier strip has, as you can see, got 4 stages:

  • Preamp
  • Predriver
  • Driver (push-pull)
  • Final amp (push-pull)

The design is capable of delivering about 20 watts of rf power but I wanted to run it within a well defined distance from its limits to ensure top signal quality. On the other hand I had kept in mind that a broadband design always offers significantly lower overall gain than a monoband amplifier. So there should always be a certain amount of gain in reserve.

You may ask why I used 2 push-pull stages. The answer is: Due to the fact that they are operated in class AB-mode I wanted to keep linearity as high as possible. Class AB amplifiers have got a relatively low standing current (bias) and therefore a higher degree of efficiency than class A.  The transistor gets only a low quiescent base current, so linearity lacks compared to class A. But it does not get far as hot as his class A brother.

The solution to the bias-problem is the push-pull circuit. Each transistor of the pair now only amplifies one of the half-waves of the duty cycle. These are seperated by the input transformer and are put together again by the output transformer:

Principles of class AB mode SSB push-pull linear amplifier
Principles of class AB mode SSB push-pull linear amplifier

So, in contrast to a class A amp which has to  be biased for amplfiying the positive half-wave AND the negative share of the waveform and thus needs a much higher bias current, the push-pull design can be operated with lower bias because it has to amplify only one part of the wave cycle which is now split by polarity into two transistors.

And, because a push-pull amp offers built-in even-harmonics suppression, the production of overtones is limited by this circuit without the need for filters.

After the amp was finisehd I did a lot of research using my old HP8558B spectrum analyzer and found that harmonic suppression is excellent as well as third order products are if you don’t use the full power capabilities of the amplifier strip.

How to make an amp broadband

The main problem with transistor amplifiers (mainly those designed for rf purposes) is the gain-vs-frequency problem. When increasing the operating frequency of such an amplifier you’re about to lose 3 dbs of gain per octave. This means, you get high amplification rates on 80 meters and a very much lower one on 10 meters. Not very nice if you want to achieve a comparable amount of gain on all the bands the transceiver is going to cover.

Next topic: I use CB transistors with a relatively high transition frequency (ft) of about 150 MHz or even higher. This means on 80 and 40 meters you can expect tremendous gain. A strong tendency towards self-oscillation and instabilties is one outcome of this situation. But on the other hand for 15 and 10 meters this high ft is a must!

So, a lot of potential problems ware waiting for the ambitious radio constructor. But, no need to get desperate: There are various cures for the various problems. To make the amp stable and clean I applied the following techniques:

  1. Amplifier stages are coupled by relatively low valued capacitors,
Coupling transistor stages with capacitors
Coupling transistor stages with capacitors

My first mistake before bypassing correctly was to try to bring monoband concepts to a broadband amplifier. Adequate emitter bypassing was one of these. First I used large capacitors in the range of 0.1µF. Much too much, as I found out later. OK, a high valued emitter bypass capacitor hands you back a lot of gain but unfortunately not equally distributed over the frequency span. It’s much better to reduce the value of the emitter bypass capacitors down to some nanofarads. You may ask: “Why is this the case?” Simple answer: The resistance of a capacitor for alternating current is given by

XC = 1/(2*Pi*f*C)

Low value capacitors thus prefer higher frequencies and attenuate the lower ones.

2. The same is true for the emitters bypasses:

Emitter bypassing
Emitter bypassing

The bypass capacitors lets ac flow unresitedly over the paralleled resistor.

3. In addition, negative feedback is applied to the 3 of the 4 stages to reduce gain when the operating frequency is low:

Negative feedback in a transistor amplifier stage
Negative feedback in a transistor amplifier stage

A certain amount of rf energy floats back to the base but is 180° out of phase thus compensating input energy.

4. Emitter degeneration also helps to get gain constant AND lowers distortion:

Emitter degeneration in a transistor amplifier stage
Emitter degeneration in a transistor amplifier stage

The unbypassed capacitors causes a voltage drop when emitter-collector current rises. Therefore the voltage between base and emitter lowers (base is biased to a fixed value), the gain decreases.

But, as I said before, all these measures cost a certain amount of gain. That’s why I use a 4 stage amplifier rather than a one with only three stages. The effort, by the way, paid. The waveform of the two-tone test is absolutely top on all the 5 bands. But it was a hard way to go there!

Crucial mistakes and their correction

When I tested the first version of the amplifier, I was deeply disappointed. The signals were bad, distortion was a severe problem. Also I had lots of parasetics particularly on the higher bands and self-oscillation occured as soon as I started to increase the drive coming from the tx mixer. One of the reasons for this was improper shielding of the band filter section that follows the TX mixer. I will talk about this in a later post.

By the way, don’t ask me, if the amp was “flat”. No, it wasn’t. Definetely NOT! That was the point when I began to hate this  project. 😉 But then (instead of giving up) I started thinking of what I could have done wrong. Step by step I got closer to my  goal…

Construction methods for the test procedures: “Plug and pray!”

To enable me to change the “critical” components like emitter bypass capacitors very fast without taking the soldering iron into my hand I use SIP socket strips:

Experimenting techniques: Socket strips for quick change of components
Experimenting techniques: Socket strips for quick change of components

Advantage: You can run endless tests without being endangered to seriously damage the solder pads of your Veroboard! The needed numbers of pins are cut from the strip with a coping saw or a mini cut-off wheel. Once soldered they remain in the board till the end of days. Disadvantage: If your component has thin wires, these will fall out off the socket. But for 98% of my components this works fine!

Components prone for being optimized by this method are:

  • Coupling capacitors
  • Emitter bypassing capacitors
  • Emitter resistors
  • Negative feedback resistors and/or capacitors (whatever you have!)

Optimize your rf transformers!

RF amplifiers in high-power stages (i. e. above the Milliwatt level) usually use transformers for coupling rf energy from one stage to the next. They hereby can serve as impedance transformers, because input impedances of trasistor stages are often in the range of only some ohms whereas the output impedances of the previous stages are 4 to 10 times higher. I own a large number of my favourite Amidon toroid cores so that I can produce a variety of test transformers that can be soldered quickly to soldering nails. Again this is to avoid the repeated soldering process ruining my Veroboards:

Soldering transformers to ensure that frequent resoldering won't damage your PCB
Demonstration how to solder rf transformers to a Veroboard. Using soldering nails to ensure that copper pads on the Veroboard won’t be damaged by frequent resoldering.

By methods like these and 2 months of steady improvement I finally got the transmitter working the way I wanted it to have.

Measurement results at the completed unit:

  • Output power in two-tone-test: 10 Watts at 11.9 V DC power supply
  • Carrier suppression: greater than 50dB
  • IMD3 products: 36dB (measured at 14,200 kHz)

Spectral analysis of output signal (f=14,200 MHz):

Spectral analysis of output signal of transmitter at 14MHz. Left picture p.out=10 Watts.  Right picture amp is overdriven. Vertical division 10db each.
Spectral analysis of output signal of transmitter at 14MHz. Left picture p.out=10 Watts. Right picture amp is overdriven. Vertical division 10db each.

The receiver

Now it’s time to discuss the receiver section of my 5 band QRP SSB transceiver. The main objectives for the receiver were:

  • Must be able to deal with high signal levels particularly on the 80- and 40-meter-band.
  • Must be able to seperate strong out of band signals (broadcaster etc.).
  • Must be able to seperate strong in band neighbourhood signals.
  • Must have high dynamic range.

Here’s a brief description of the various stages of the receiver board:

  • 5 relay switched 3 pole band pass filters make up the front end,
  • followed by dual gate MOSFET-preamplifier and a
  • diode ring mixer equipped with a diplexer,
  • IF preamp with bipolar transistor,
  • IF main amp with IC (good ol’ MC1350),
  • product detector with 2 diodes,
  • AF preamp with bipolar transistor,
  • AF final with LM386.

As usual, here’s the circuit first:

Receiver section for 5 band qrp transceiver by DK7IH (Peter Rachow)
Receiver section for 5 band qrp transceiver by DK7IH (Peter Rachow)

Some words concerning the various sections of the circuit:

The front end

On the left you can see 5 relay switched band pass filters. To ensure maximum out-of-band signal suppression I chose 3 pole filters. The effort is a little bit higher, I have to concede, but it’s absolutely worth. No intermodulation or other interference by strong broadcasters close to ham bands (particularly on 40 meters!) occurs.

The filter coils are wound on TOKO style coil formers of this kind. The relays are OMRON G6A-234P pcb relays. They are designed for 5  V coil voltage. Due to the fact that my rig needs 3 sections of relay switched circuitry (rx front end, band filter past the tx mixer and low pass filter past the exciter) I switched the corresponding relays for one band in series. They then are driven by 12 volts controlled by the ATMega128 driving my DDS system. The wiring of the relays is a little bit more complicated as if I had them switched in parallel but in the end this was a nice way of recycling a larger bunch of these relays that I still had on stock from a former model railroad project. 😉

Past the front end filters next stage is the well-known dual gate MOSFET rf preamp controlled by AGC.

The Mixer

The amplifier terminates broadband style (toroid transformer) putting its rf energy into a diode ring mixer which by definition is a balanced mixer circuit. The DDS VFO signal is injected on the other side of the mixer. Please note that you need a preamplfier if you run that mixer type by a DDS because the outputlevel of a DDS (if not amplified) does not suffice the 7 dbm a diode ring mixer needs for proper operation. Therefore I’ve included a small signal amp with a bipolar transistor.

To minimze spurs in your receiver it is of maximum improtance that this VFO amp works 100% linear. Keep an eye on not overdriving the amplifier! Any signal level beyond linear operation condition produces spurious emmissions. If available check the output with a spectrum analyzer! Reduce input voltage by inserting a voltage divider made of resistors (not capacitors!) if input level is too high!

A diode ring mixer also needs to be accurately terminated to 50 Ohms for optimized performance. Thus I’ve added a diplexer after the mixer which ensures an adequate termination of the mixer on the IF frequency.

IF and AF stages

Next steps are an IF preamplifier (which is connected to a manual gain control potentiometer sited in the front panel), a ladder filter with about 2.4 kHz width and the IF main amp equipped with MC1350 by Motorola. The IF amplifier IC is connected to the AGC strip at the end of the receiver section.

The succeeding diode based product detector is fed by the amplified IF and by the carrier oscillator which is also sited on the receiver circuit board.

An audio preamp and the LM 386 as the power amp do the final job of amplifiing of the audio signal together to loudspeaker level.

The audio-derived AGC circuit is the same like in my hand-held transceiver. Two dc outputs are available. One delivers increasing voltage when signal strength is rising, the other decreases voltage under the same condition. The first one is about to control the MC1350, the later one is for the dual gate MOSFET that can be found in the receiver’s front end.

Here, for the final, is an overview of the receiver board in my 5 band QRP SSB transceiver. Thanks for reading!

Receiver section for 5 band qrp transceiver by DK7IH (Peter Rachow)
Receiver section for 5 band qrp transceiver by DK7IH (Peter Rachow)

First QSOs went very fine on 20 meters where my antenna is tuned to. Let’s see what the rig will show the next weeks, I’ll keep you informed. Please watch later posts on this blog that will show adaptions and modifications of this rig. 😉

73 de Peter (DK7IH) and thanks for reading!