August 20, 2016:
Revised: v1.0

Tiny Multi-channel Module for an Aviation Receiver

A 10-channel preset tuning module for a voltage tuned aviation band kit receiver.
Aviation receiver with channel selection board


I recently purchased one of those low cost aviation band receiver kits from a Chinese seller on the internet. This receiver design has been around for many years, from a variety of suppliers. However, the more recent Chinese-made kits have added some improvements. One type, the version I purchased for less than $US20 including delivery (to the UK), features front end VHF filter coils directly printed on the PCB. This avoids the need for any difficult coil winding or filter alignment. Another version of the design, from other Chinese suppliers, uses standard coils which the vendors claim gives better sensitivity. Some reviews suggest actual results are similar.

Some additional, and most important, changes in these new kits compared with the original 25 year old design have been made around the internal power supply rails in the receiver. The new kits feature much better voltage regulation, more RF bypassing, and better RF isolation. These new kits are also more compact than the original older versions.

Here's a photo of the assembled board:

 Figure 1 : Aviation band receiver with printed circuit coils in the front-end bandpass filter

The kit contained good quality parts. No parts were missing, although I had to download the PDF assembly instructions and schematic from the seller's website. The receiver went together quickly and easily. Alignment was equally fast and simple. All that was required was to adjust the tuning coil to give the required tuning range (The little green plastic component with a brass screw in the middle of the PCB), then adjust the IF transformer (The component with the blue coloured adjustment at centre left of the PCB in Figure 1) to give the best received signal strength.

The receiver worked immediately without any difficulties. Most importantly, there were no suggestions of instability or erratic operation. That’s in stark contrast to the original version of this receiver that I’ve have also used. Those older designs could be quite touchy.

The basic receiver design, however, retains one obvious limitation in common with the older versions. Tuning is done using a standard potentiometer. Its 270 degrees of rotation tunes the receiver across up to 30MHz of the aviation band. That’s a very fast tuning rate.

Also, there is no indication what frequency you are receiving. In a similar receiver (which I will describe elsewhere on my website in due course), I replaced the standard analog first oscillator with a direct digital synthesis (DDS) oscillator and an LCD display to resolve the problem. This time, however, I wanted to try a cheaper and easier approach. Aside from wanting to see what the new Chinese kit was like to build and use, this was the main reason for purchasing this kit.

Channel Tuning

As I mentioned, this kit receiver’s tuning control uses a standard potentiometer. This control adjusts the DC voltage which is connected to a variable capacitor “varicap” diode. That changes the capacitance of the varicap which, along with a small variable inductor, form a resonant circuit. This determines the received frequency.

Replacing the single turn pot with a 10-turn pot can provide a more precise tuning control, but these 10-turn pots are quite tedious to tune if you wish to change between different aviation frequencies, especially in the absence of a frequency display.

Since aviation uses a series of fixed channel frequencies in most locations, another approach is to replace the single turn tuning pot with a set of multiturn preset resistors connected with a rotary switch. Each preset resistor can be set to give a specific voltage would then tune the receiver’s oscillator to a specific local channel frequency. Four channels would be enough for most situations, but up to ten channels would be useful. However, this would require a large number of parts, and the final result could be quite expensive. It would also require extra space for a PCB to contain the added parts and front panel space for the switch.

I decided to try an alternative method, using a microcontroller to generate the required preset channel voltages directly. These DC voltages can be generated using the internal pulse-width modulated (PWM) digital to analog converters (DAC) found on these chips. I could then select any one of a number of channels in turn quite easily using a simple pushbutton.

Figure 2 : Channel selection control board during software development next to the receiver

Of course, there are some challenges with such an approach. First, to be able to tune the receiver to any 25kHz channel across the 30MHz-wide aviation band requires 10 or 11 bit DAC resolution, and ideally 12 bit resolution. That’s beyond the usual 8-bit resolution range of the PWM DAC systems typically available on most low cost microcontrollers.

Fortunately, the ATtiny family includes several devices with both 8 and 16-bit PWM outputs. However, while a 16-bit PWM output looks attractive, a potential problem is the maximum PWM clock speed when generating such a high resolution output. It’s typically around 120Hz if the standard 8 MHz internal clock is used. Filtering the resulting PWM output to remove such a low frequency PWM clock to give the desired DC output is the first challenge, as is the resulting step-time response.

Once again, there are some available solutions. One approach is to use a special synchronized filter on the 16-bit PWM output (See reference 1). This solution is a little more complex, and it also requires an extra I/O pin. However, it certainly delivers excellent performance. An alternative approach is to combine two 8-bit PWM outputs, an idea suggested by the same design engineer a few years earlier (See reference 2). It’s a little easier to implement and requires fewer parts, so I decided to try this method.

A further problem which also has to be considered is the output voltage range available from PWM outputs. Typically, these are limited to the supply voltage of the microcontroller, usually 3.3V or 5V. However, most varicap tuning circuits require far higher voltage ranges, often up to 8V or even as high as 32V. The solution for this is to add a buffer stage to the design.

Finally, there’s the question of a display. Ideally, we should have a digital display showing the selected frequency. Since I wanted this to be a simple design, I decided to just use a 7-segment LED display to show the selected channel. Additional buttons would allow me to set the required output varicap tuning voltage for each receiver channel.

Design Description

The 14-pin ATtiny84 microcontroller has two independent PWM outputs, and it has (just!) enough pins to also support the required pushbuttons and drive the LED display. One PWM output is limited to 8-bits, but the other PWM output can operate in a number of modes from 8-bits to full 16-bit PWM. These two 8-bit PWM outputs can operate at up to 32kHz from the internal 8MHz internal clock. This 32kHz PWM clock allowed me to use very simple RC-based filtering to convert the PWM output into the required DC tuning voltage.

The resistors on the ATtiny84’s PWM outputs (3k9 and 1M) are chosen because they have a 256:1 ratio, required with this method. The subsequent passive RC components provide the simple low pass filtering. The low leakage 1uF capacitor I used is probably a bit of an overkill; A 330nF or 470nF MKT type would also be fine here, and would also speed up the channel to channel tuning time, currently around 200 – 300mS.  Although this tuning time might appear lengthy, it is not a problem in this application where most of the time is spent listening on one or two active aviation channels. It’s also the reason I didn’t consider implementing a channel scan feature.

A low cost rail-to-rail op amp completes the design. This allows the DC output from the filtered PWM outputs to be scaled to the appropriate voltage for tuning the receiver, in this case for the maximum varicap voltage of 8V.

There is one remaining I/O pin free at this point, the Reset pin. I could have reduced the parts count (by two diodes) by directly connecting the Down button to this pin. This requires setting the fuses to remove the reset function from this pin. However, doing this would then require the use of a special HV programmer during development. To avoid that, I added the two diodes and removed that hassle. 

The resulting schematic is shown below.

 Figure 3 : Channel selection control board schematic - The board is powered from the receiver


The channel tuning module was built on a small piece of prototyping board. The tall narrow board shape matches the dimensions of the kit receiver board. It’s a tight squeeze, but it’s just large enough to hold the display and its dropper resistors, the ATtiny84, the LMC662 op-amp, and the TS2950 low-voltage-drop 5V low current regulator.

You can see a close-up of the board adjacent.

Figure 4 : All of the components fit onto a small piece of prototyping board which fits alongside the receiver PCB


As usual, I used Bascom-AVR to write the software. It’s a Basic-like language which is ideal for such simple tasks. The ZIP file available in the Download section below includes the commented source code for those wanting to look at my awful software in more detail, or for others wanting to change it for their own applications. The ZIP file also contains the HEX file for direct programming of the chip.

The receiver’s ten channel memory requires the use of the ATtiny84’s internal SRAM and EEPROM. The SRAM holds the channel tuning data while the receiver is turned on. The EEPROM memory allows the tuning settings to be safely saved when the power is turned off. The data is recovered from EEPROM and copied into SRAM when power is applied.

The ATtiny84’s EEPROM can be programmed in two ways; You can use a standard programmer to directly program the tuning data into the EEPROM by copying the contents of the EEP file
into the EEPROM (That file is found in the ZIP file in the Download section below). This is normally done just once, when you build the receiver. This example file sets up a series of preset voltages across the aviation band. It’s an optional method because it is also possible to just use the front panel Up and Down tuning buttons to program the  EEPROM memory. If this latter method is chosen, the board will initially start up the first time with every channel set to 0V (Actually, they will all set to about 75mV, the typical ground rail voltage limit when using the suggested LMC662 op-amp). Most folk will probably just use the Up/Down buttons method.

To explain what is going on in the software, let’s look at how the receiver is normally used with this module installed.

The “Channel” button selects the required channel. Each press of the button selects the next of the ten available channels, starting (at power up) from channel 1. Channel 10 is displayed as “0”. A further push of the button selects channel 1 again.

When the desired channel has been selected, the software recalls the 16-bit tuning data required for the two 8-bit PWM outputs from SRAM. This 16-bit value is immediately loaded as two 8-bit values into the two PWM registers. When the two PWM outputs are combined via the two resistors (3k9 and 1M), filtered, and scaled via the opamp buffer, the output voltage then changes to the new value required for that channel.

The tuning voltage can also be adjusted by the user, if necessary, whenever a channel has been selected, using the Up and Down buttons. Pressing the Up button will increase the output voltage, slowly at first. However, the longer the switch is pressed, the faster the output voltage will increase. This makes setting a channel to another frequency several MHz away somewhat faster. Similarly, pressing the Down button will decrease the output voltage. Together, they allow any voltage to be selected in (approximately) 3mV increments across the 8V output range.

I use a digital voltmeter to monitor the output voltage on pin 1 of the op-amp when I’m doing this adjustment. To save time, I first used the normal single turn tuning pot supplied with the kit to find all of the aviation channels in my area. I then measured and recorded the voltages on the varicap for each channel. Those values were used to calculate the DAC values initially programmed into the EEPROM.

Whenever either the Up or Down button has been pressed, even briefly, a background timer is started. The ATtiny84 will wait for about 10 seconds after the last button has been released, just in case the user wishes to carry out further Up/Down fine tuning, before writing the new value to EEPROM. By waiting, multiple writes to the EEPROM can be minimised. According to the datasheet, any ATtiny EEPROM memory location is limited to a maximum of 100,000 writes. While it’s highly unlikely anyone would ever get close to this limit in a channel-based receiver like this, this programming approach minimizes the number of write cycles.

To show the user that this data write to EEPROM had been done, the display briefly shows “P” (for “Programming”). The display then reverts back to displaying the current channel number. It does not matter if the user has subsequently changed channel to another channel within this 10 second window. The software keeps track of this and updates the correct memory with its new value.

Programming the ATtiny84 with the Software

The ATtiny84 has four types of programmable memory:

Flash memory is programmed by the Intel Hex formatted HEX file using a standard programmer such as the widely available USBasp programmer and programming software such as Khazama or Extreme Burner.
The current version of this software occupies less than 2k of flash memory. As a result, the smaller compatible (and similarly priced) ATtiny24 and ATtiny44 chips can also be used in this design.

Fuses are also programmed using the same programmer and programming software using the appropriately labelled tabs in Extreme or Khazama. The settings in this case are:

As noted earlier, I have also provided an example EEP file in the ZIP file available from the Download section below. This is set with a series of voltages spread across the tuning range, just as an example. Again, this file may beprogrammed into the device using Extreme or Khazama via the appropriate tab in the program.

In this design, the flash, fuses and EEPROM may be programmed in any order.

Installation in the Receiver

Remove the tuning potentiometer W1, resistors R21 and R26, and capacitor CP11 from the receiver. (See Figure 5) The component part numbers refer to those marked on the kit PCB.

 Figure 5 : The tuning potentiometer and several other parts are removed as part of this modification

Next, temporarily remove the headphone socket (J3) from the PCB. (See Figure 6) This allows us to make some minor changes to allow an internal speaker to be fitted to the receiver. The speaker will then be automatically muted whenever an external speaker or headphones are plugged into this socket.

 Figure 6 : The headphone socket is temporarily removed ...

Cut the top-side PCB tracks as shown in Figure 7.

Figure 7 : ... to allow changes for the internal speaker and automatic muting for headphones

Now refit the headphone socket (J3) back into the PCB.

Add new jumpers and wiring for the speaker on the solder-side of the PCB as shown in Figure 8. The blue and yellow wires going away to the right of the photo go to a new 8 ohm 1W 50mm diameter speaker which will be mounted into the new receiver case.

Figure 8 : New wiring is added for the internal speaker

The new channel selection control board can now be wired into the receiver. Place it next to the main receiver board as shown in Figure 9. There are just three connections from this board to the receiver; The 8V supply (Red wire in Figure 9) is wired to +8V using the PCB through-hole previously used by R26. The ground wire (Green wire in Figure 9) can be connected to ground using the PCB through-hole previously used by R21. The third (white) wire is the varicap tuning voltage. This goes to the PCB through-hole previously used by the + terminal of CP11. These connections can all be seen in Figure 9 below.

Figure 9 : Connecting the new board requires the addition of only three wires

Receiver Enclosure and Knobs

I wanted to give this receiver a slightly different appearance to the usual bland rectangular box. I also had to allow sufficient space for the additional control board. All of these enclosure parts were all printed on my 3D printer using standard PLA filament printed in 0.2mm layers.

There are five STL-formatted files which are all available for download below. These include the main case, the back panel,  the knob, pushbutton caps, and back panel washers. Two knobs are required.

I designed the case with DesignSpark Mechanical while the knobs are a design obtained from Thingiverse and modified slightly in scale to suit the squelch and volume control shafts.

Figure 10 : 3D printed case and rear cover. The rear panel holes are for the antenna and DC sockets.

Figure 11 : The knobs, pushbutton caps and back panel washers are also 3D printed

The receiver board just slides into place. I allowed a little extra space in the slots for slight variations in PCB dimensions. Before fitting, insert the three pushbutton caps through the front panel. The control board can thn be mounted using the 7-segment LED hole as a guide. Before hot-gluing the board in place, check the three pushbuttons are all operating correctly.

Now mount the speaker, again using hot-glue. The speaker I used ia a 50mm (2") diameter flat speaker. With the space inside the receiver  enclosure, this speaker delivers a good audio level.

The enclosure is completed by adding the front panel artwork. It is also available for download below.

Figure 12 : The front panel artwork was printed onto paper using a colour laser printer, covered with transparent adhesive film, and glued to the enclosure. Channel details can be added with a marker pen.


There is probably little more that needs to be explained. In normal use, the Channel (CH) button is pressed to select the required channel.

If a channel frequency needs adjustment, press the Up and Down Set buttons to adjust the varicap voltage which, in turn, changes the received frequency. Once correctly tuned, leave the Set buttons alone for about ten seconds, and a "P" (programming) will appear on the LED display. This indicates the new data has been written to the channel EEPROM memory.

Volume and Squelch controls operate as usual. Inserting headphones will mute the internal speaker.

Final Comments

There are a few “enhancements” which could be made to this simple design. For example, the up/down buttons could be replaced by a rotary encoder (and some additional software!) to provide a continuous tuning function.

There is an obstacle to this enhancement: The RC filtering on the simple DAC limits the tuning speed with such an arrangement, and this may prove to be too slow in practice. However, most rotary encoders come with an integrated pushbutton (Pressing the knob inwards on such controls usually closes the internal switch contacts). That switch could be used to select between coarse and fine tuning steps to give a more responsive control. I have not done any work to test this idea, however.

It’s also possible to add more memories, but that would need a processor with more pins as well as a larger display, or possibly a change to an LCD display of some type.

This basic hardware used in this design has some other possible applications, some of which I may explore in future. For example, it’s possible to use a nearly identical circuit and much of the existing software to adjust the voltage and current settings in a variable power supply. For that application, I could probably use a reduced 10-bit DAC resolution. In turn, that would permit faster adjustment of voltage and current, very desirable in a variable power supply.

Figure 13 : The rear view of the receiver shows the back panel  which provides access to the antenna and DC power connectors. It is mounted using four 2.5mm self-tapping screws. I added 3D printed cup washers to improve the overall appearance.


1.    Stephen Woodward, “Fast-settling synchronous-PWM-DAC filter has almost no ripple”, EDN, May 01, 2008
2.    Stephen Woodward, “Combine two 8-bit outputs to make one 16-bit DAC,” EDN, Sept 30, 2004


Software: This ZIP file includes the Bascom-AVR source code, the EEP file, and the HEX file for direct programming of the ATtiny24, 44 or 84 chips (Any of these devices may be used)

3D Files: This ZIP file contains all of the industry-standard STL files for the case, back cover, knob, button caps and cup washers.

Panel Artwork: The JPG file for the front panel artwork

Want to go back to the main page? Click here to return directly.