Three-output Portable si5351a RF Test Oscillator
with Keypad and AM Capability
This
started out to be a simple circuit to try out a few ideas but it slowly
transformed over time into an AM-capable RF generator with three
simultaneous adjustable RF outputs in a compact portable
USB-rechargable battery-powered package.

Introduction
Most
si5351a oscillator designs I’ve seen are quite simple. Most feature
just one or two oscillator outputs. Also, they almost all appear to use
code derived from one or two software libraries.
There
seem to be relatively few new or novel designs. I’d like to think my
website bucks that trend, and this design is aimed at continuing
that approach. My latest si5351a design might be called a signal
generator by some. Really, I’d prefer to call it a test oscillator
since, in the absence of multiple types of modulation and a variable
output attenuator, it doesn’t really have all of the features of a true
signal generator. For that, you'd have to look at my other designs such
as my full-featured signal generator published in Silicon Chip magazine in June and July 2019.
Given this is more of a test oscillator, it does have a wide range of features which include:
Three (3) simultaneous oscillator outputs | Full range tuning on any output! |
Coverage from 5kHz to 290MHz | Most designs stop around 150MHz or less |
Selectable tuning steps from 1Hz to 1MHz | Selected by pushing on the tuning encoder knob |
Selectable quadrature mode | Few designs deliver selectable quadrature operation where two outputs can be set into phase quadrature (90o) from about 3.5 – 290MHz |
Keypad and rotary encoder frequency tuning | Flexible user tuning |
Keypad selects output level and RF on/off | Most designs have a fixed output level |
Unmodulated (CW) output or AM modulation | Yes, AM with the si5351a! |
Portable battery-powered operation | USB port for recharging |
A small OLED display shows the configuration simultaneously for all
three oscillator outputs.You can see an example in the picture to the
right. Each output (A, B or C) is shown with its frequency and output
level.
The little box on the left edge shows the currently
selected oscillator - The keypad or tuning knob will change this
oscillator. All outputs continue to operate.
The filled square on the right hand edge of each line shows the output is on. If the box is not filled, then the output is off.
The
signal generator is packaged in a compact 3D-printed enclosure along
with a rechargeable 18650 Li-Ion cell and USB socket for charging to
allow portable operation.
A Little Background
They
say the road to Hell is paved with good intentions. This design began
with an idea, my "good intention", to build a simple si5351a ‘test
bed’. I wanted to try out some software ideas I had for this little
chip as quickly and as easily as possible. With that as the starting
point, some early success fuelled a few other ideas. Almost as quickly,
those were implemented. In turn, they started to generate yet more
ideas with a life of their own.
The real catalyst, however,
came from another project. I’ve been designing a new antenna analyser.
Previous antenna analyser designs here on my website are now a bit
elderly and I wanted an updated version with a nice graphical display.
I started with an AD9850 DDS oscillator but several problems with that
approach led me to look at using the si5351a. Of course, harmonics from
the si5351a’s square wave oscillator outputs are an obvious problem.
The inherent 3rd and 5th (and higher) harmonics from its square wave
outputs give rise to significant measurement problems with simple RF
bridges. I managed to sort those issues out, and the resulting analyser
with its compact colour LCD has turned out to be the basis of a useful
test instrument. Work on that continues…
When I’d got most
things working on the analyser, I wasn’t convinced that my si5351a
software routines were optimised. I wrote the original si5351a code
quite quickly over a couple of weekends several years ago. Despite its
tiny size, it’s actually a relatively complicated little chip inside
with a number of features which are not particularly described in the
datasheet (although I have no real complaints), nor are they explained
anywhere clearly enough for me. So, to better figure all this out, I
decided to build my ‘test bed’. “This won’t take long,” I thought
to myself.
Yeah, right! Off down that well-travelled road I went.
Design Description
Because
the si5351a is a 3.3V device, everything here is designed around that
voltage. That led to the selection of a 3.3V compatible 128 x 64 pixel
OLED display. The ATmega328 processor can run from that voltage too,
albeit with clock speeds below its maximum of 20MHz. I planned to use
the processor’s internal 8MHz RC clock anyway, so that was not a
problem. The ATmega328 is found on most Arduino boards but almost all
Arduinos run from 5V so I couldn’t built this off the Arduino hardware
platform. Anyway, keeping to a supply voltage of 3.3V simplified
everything and reduced the parts count.
I added a simple
keypad for control but, during construction, I also added a rotary
encoder. I thought it might be useful for some tests. As you will see
from the schematic and the board photo, the resulting design is very
simple.
Here is the schematic:

(Right-click with your mouse to see a full-size image)
The
schematic probably looks more complex than is actually the case. The
ATmega328 processor does the hard work, and it handles the keypad and
encoder, and controls the I2C two-wire bus. The display and the si5351a
share the I2C bus. Each has a different I2C address to allow the
ATmega328 to selectively manage each device independently.
The
power supply section is arguably more complex, circuit-wise, than the
signal generator section. The heart of the power supply is, of course,
the single Li-Ion 18650 cell. It was recycled from an old laptop
battery. It’s claimed 2000mAH capacity allows the generator to be used
nearly continuously for several days before needing to be recharged.
The current required for this design is minimal, only about 30mA, so
it’s certainly possible to use other smaller Li-Ion cells.
The
battery drives a low cost 5V boost converter module which is, in turn,
regulated back to 3.3V by a small 78L33 regulator. This approach
extends the operating life of the generator and reduces the noise on
the RF output. Another cheap module allows the battery to be recharged
via a standard USB charger.
The picture below shows the
final version of the prototype I built. There are very few parts to be
seen. The only sections not shown here are the two modules for the
18650 Li-Ion battery and the battery itself.

I’ve
not bothered designing a PCB layout (Well, not yet...), but if there is
sufficient
interest, it would not take long to design. I would be tempted to
design the PCB for edge-mounted SMA connectors rather than the BNC
connectors I've used in the version described here. SMA connectors
appear to be swiftly becoming a
standard for ham test equipment. The small connectors and matching
terminated and unterminated coax cables used with those
connectors are available very cheaply from the usual Asian sources.
Those thin cables and smaller connectors would have made this unit even
easier to use on the test bench.
However, to balance that, the BNC connectors I used here are easier to
use in the
field. Let me know what you think (My email address is on the main page
of the website)
Incidentally, the notches that can be seen
cut out in the corners and along the edge of the prototyping board were
cut to clear the pillars in the printed case where the front and back
case panels are screwed together.
Feature Creep - Stuff gets Added
As
I tried out different ideas with this ‘test-bed’, the software began to
take on a life of its own. A few extra pushbuttons initially were added along with
a bit more code, then another pushbutton was added, and… Well, let’s just say
that from a really simple initial idea, this design got a great deal
more complex than was ever originally intended.
The original plan was to have a platform to allow me to directly enter a frequency
from the keypad for just one output. Then I (logically) extended the software
to allow it to handle a variety of frequency entry formats because I
find it hard to recall a specific entry method months after I've
designed the software. So I've allowed for a variety of approaches.
Then I added some software to allow me to set any of the three outputs.
Then... Well, look, it just kept growing!
Like this:
I began to test the
frequency range of the Si5351a chip. I encountered some interesting problems
so I added some software to get around them. Then, one day, as I went over that software, I realized
I could quite easily get all three outputs operating simultaneously, so the
software expanded again.
Since the chip also supports different
output levels, I added the ability to set the output level of each
output using the keypad, and to turn any output on and off. Those features looked
useful. That led to experimenting with quadrature outputs. Another
pushbutton and more software.
Despite all this, the hardware remained the same. It was only when I added the Li-Ion battery,
also adding the two cheap Chinese modules for regulation and charging, did the overall complexity increase.
Three-Output Signal Generator Applications
I’m
sure there are doubts that applications actually exist where three
signal generator outputs could be required simultaneously. Well, it's
actually more common than you might imagine.
Here’s one example. I built a small receiver. Here is a much-simplified block diagram of that receiver:

I
built all of the receiver except for the VFO and the BFO. These were to
be
connected to one of my Si5351a oscillator designs. To initially test
this receiver, I set Output A of my new test-bed signal generator to
the
receiver test frequency (3.700 MHz) and connected that output to a wire
located near the RF input of the receiver. Output B of the generator
was then set to the BFO frequency (8.4501 MHz) to match the 8.45MHz IF
amplifier/filter stage, and I connected that output to the second
mixer. Output C was then set to 12.15MHz for the VFO frequency required
(i.e. 3.70 + 8.45) and I connected that third output to the first
mixer.
I was then able to confirm the operation of the
receiver, make some minor alignment adjustments, and I was able to
verify the exact
VFO and BFO oscillator frequencies and levels required in the final
receiver. Ordinarily, this would have required three separate signal
generators if this new three-output test-bed signal generator had not
been available.
Software
As
usual, I wrote the software for this design in Bascom-AVR, the
Basic-like compiled language for the Atmel AVR processors. It’s really
easy to use. Variable names
are selected to reflect their function. I also find it quite easy to
add comments into the source code as it is being written. These brief
notes added to most lines of the software allow me to remind myself (and others) of what I am trying to do.
I
can go back to old Bascom software months, or even years, later without
much difficulty should modifications or extra features be required. Or,
more commonly, if someone asks me a question about some old software.
Bascom
also seems to be a reasonably efficient compiler. Writing
the software in assembler would naturally result in more compact code, but it
would certainly be harder to write initially, and to maintain and extend
later.
I
have provided the compiled HEX code below as a free
download. I can also provide the source code for those wanting to adapt
the software for their own personal use. Just email me and confirm in
your email to me
that the source code will only be used for your own non-commercial
use. (If you want it for a club project, let me know in your email, and
we can sort that out quickly, almost certainly free of charge).
If
you do decide you wish to make changes to the software, just remember that Bascom-AVR comes in two
varieties. There is a ‘freeware’ version available, but it cannot
generate output HEX-code files greater than 4k bytes. The software for
this project exceeds that limit by a very substantial margin so the
full (paid) version of Bascom-AVR is essential if you intend to make
changes. It’s not particularly expensive, but it is something to bear
in mind before you decide to undertake any further changes yourself.
Inside the Si5351a
If
you just want to know how to build and use this signal generator, just
jump over this section. On the other hand, if you are curious about how
this chip really works, then read on.
The Si5351a is
different to other digital clock generators and DDS oscillators I’ve
used. Output frequencies are all generated from its 25MHz crystal,
first by multiplying the crystal frequency up to the sub-GHz range
using a phase locked loop (PLL), then divided the PLL’s VCO frequency
down again using a programmable fractional ‘multisynth’ divider.
Finally, this frequency can (optionally) be further divided with a
conventional digital divider. These last dividers are only needed if
output frequencies are less than 1MHz.
Here is a diagram, courtesy of Silicon Labs, showing the internal sections of a standard Si5351a chip.

At
first glance, there don’t seem to be enough blocks to go around. In the
standard version of this si5351a chip that almost everyone uses, the
reference crystal oscillator section feeds two PLL multipliers (PLLA
and PLLB). Either of these two PLLs is then able to feed any of the
three PLL dividers (called Multisynth 0, 1 and 2). These each may then
be connected to one of three digital dividers (R0, R1 and R2).
Ideally,
you’d logically expect to have one PLL for each MSx/Rx combination but
the chip only has two PLLs. In the standard chip, the three multisynths
must be fed either from PLLA or PLLB. Spot the problem?
Look at
it this way: To generate a frequency precisely on Output A (shown as
CLK0 on the diagram above), we connect PLLA to MS0 which then connects
directly to Output A, or goes via R0 if the required frequency is below
1MHz. For Output B (OUT1 on the diagram), we can use PLLB and MS1 and,
optionally, R1. Finally, for the third output (Output C or OUT2 on the
diagram), we can use….. Well, yes, we’ve just run out of PLLs. PLLA and
PLLB are both already in use. That leaves the third output, at first
glance, unable to be used. And, based on what I’ve seen of other
designs, it appears that’s what most of the other designers believe
too. It’s probably the reason why most si5351a oscillator designs you
see only feature one or two usable outputs.
But, if you
carefully read the datasheet and the application note (which has some
errors, by the way), and then use the design tools available from the
Silicon Labs website, and, finally, analyse all of this stuff with some
maths, then you will discover three important things:
1. It’s possible for one PLL to drive more than one multisynth, even all three, if necessary.
2. It’s possible to achieve a full range of output frequencies from all three oscillators simultaneously.
3.
As others have pointed out, it’s also possible to make the si5351a
operate at much higher frequencies than those described in the
datasheet. I’ve managed to reach just under 300MHz with most of the
chips I use, and 316MHz with a couple of my chips.
So, in
short, the software in this design allows Outputs A, B and C to each
independently generate any frequency from 5kHz all the way up to
290MHz. Keyboard entry or rotary dial, your choice.
The key to achieving this lies in understanding the way the PLLs and the multisynths operate.
Inside the PLL and Multisynth Blocks
The
PLL is responsible for multiplying the reference crystal frequency up
into the 600 – 900MHz range. The subsequent MS divides this frequency
down again to a lower frequency. The PLL multiplier and MS divider have
similar structures in which the value of the fractional multiplier or
divider respectively is represented by a fixed integer combined with a
fractional value i.e. a+b/c where a, b and c are all integers.
The
reference frequency (in my case, 25MHz) is multiplied up in frequency
by one of the two PLLs. The frequency at the output of the multiplier =
reference frequency * (a+b/c) where values of (a+b/c) are between
(15+0/1048575) and (90+0/1048575) where b=0 to 1048575. If you do the
calculations, each PLL’s output frequency can range between 600 –
900MHz. In practice, the chip can support a wider range than this.
Just
to complicate matters still further, the numerical values loaded into
the chip’s registers to generate the required frequencies are not these
numbers i.e. a, b and c. Instead, the values loaded chop and scatter
portions of the digital equivalents of a, b and c across a variety of
different registers.
Next, the Multisynth (MS) divides the
selected PLL frequency. The MS divide value = 4, 6, 8, or any value
between (8+1/1048575) to (900+0/1). As noted earlier, this follows a
similar “j+k/m” structure to that in the PLL. Finally, the additional
optional divider stage (Rx) can divide the output frequency of this
stage down still further by using preset integer values. This is
required if you want output frequencies below 1MHz.
Let’s
pause here for a moment. While it’s possible to program all of these
values independently in a multiplier and divider to achieve any desired
frequency within the range of the chip, more detailed analysis shows
that a full range of output frequencies can actually be achieved by
using a few less complex configurations. Specifically, if the
output of the PLL is preset to, say, 875MHz, then the numerical
adjustment range of the subsequent MS divider stage allows any output
frequency to be generated from just less than 1MHz up to 109.375MHz
with very fine Hz-level resolution. Phew! Things just got much simpler.
However, if a frequency higher than 109MHz is required,
this approach is not satisfactory. We must swap the previous
arrangement i.e. It is possible to fix the values programmed into the
MS, locking it to a value of 4 or 6, for example, and then just vary
the values programmed into the PLL. Then the output frequency of the MS
stage can span from 100 to about 300MHz. Tuning resolution is not quite
as good as the earlier arrangement, but it’s suitable for most
applications and tests in that range.
My software is written
around this two-step simplified approach. By locking one of the two
PLLs to a fixed value from 600-900MHz, the subsequent one, two or three
MS stages can be programmed to give three independent outputs from 1MHz
to 109MHz, or as low as about 5kHz with the use of the additional
divider stage (R0, R1 or R2 respectively). This leaves the second PLL
free. Any of the MS blocks may then be set to 4 or 6, and then we can
use the variable output of the second PLL to give outputs from 100 to
300MHz.
(For the experts following along here, yes, I do
fully appreciate that there are performance benefits from the use of
more complex calculations to determine the optimal parameter settings,
but, frankly, the benefits appear minimal when weighed up against the
additional software complexity necessary to determine these values)
There’s
just one ‘gotcha’ with this approach. Since the second PLL is only able
to generate frequencies accurately between 109 and 300MHz when coupled
with one MS (since the associated MS divider stage must be fixed to
divide by a value of either 4 or 6), only one output of the three may
be set above 109MHz, the frequency where the oscillator operating mode
changes. You can set two outputs above this frequency, but the maths
and functionality means only the most recently programmed output will
be correct.
One exception: If you operate the first two
outputs in quadrature, both outputs will have the same accurate
frequency, and the third output may be set, accurately, anywhere below
109MHz.
While I could have written the software to constrain
one output to operation above 109MHz, it made more sense to allow the
user to use the three oscillators as they see fit while keeping this
limitation in mind.
Or, putting this another way:

Construction
As
the photos show, I built my signal generator using prototyping board.
These boards can be obtained for a few cents each from the usual
sources in the depths of Southern China. The power supply modules were
wired in separately inside the enclosure. The photo shows the layout
fairly clearly. The simplicity of the design and the limited number of
parts required led me to use this approach. I’ve not designed a PCB to
date, but I can do so if there is sufficient demand.
I built
this generator with BNC connectors. As a result, and because this
generator is quite light, when I connect a typical set of BNC cables to
it, it tends to move all over my bench because of those coax cables.
All of the recent equipment coming out of China seems to be fitted with
SMA connectors. Based on my experience with this signal generator, I
can see the practical sense in doing that. SMA cables are much lighter.
The shielding from the thinner coax remains acceptable so there’s no
problem from that issue. As a result, more and more of my gear is using
SMA connectors. And they are cheaper too.
The enclosure I
built is 3D printed. I designed the enclosure using DesignSpark
Mechanical, freeware available online. I find this 3D design software
very easy to use, even for a relatively complex enclosure like this.
The top helf of the case is shown below. (The featureless base that
fits under this not shown here)

The
enclosure is printed using PLA filament. The STL file for it is also
available for download at the foot of this page. The top panel includes
cutouts for the display, switches, rotary encoder and power LED.
There’s also a cutout for the optional programming connector. (This
hole is normally covered over by the front panel label)
Along
the right-hand edge, cutouts for BNC sockets and the USB charger
connector can be seen. The 18650 battery fits under the left-hand end
of the cover. The overall shape and size makes it very comfortable to
hold and use.

The
available files also include the STL files for the pushbutton extender
caps that allow the pushbuttons mounted on the prototype board to
be operated. These sit in the front panel and self-centre on top of
each pushbutton. The files include two different pushbutton cap files
because PCB-mounted pushbuttons are made at different heights.
Finally,
I designed the front panel artwork in CorelDraw which I then printed
onto plain paper with a colour printer. I cut out the various holes for
switches, display and the rotary encoder with a sharp hobby knife, then
covered the resulting print with clear self-adhesive plastic film. This
was then glued into place on the front of the 3D printed top cover
using spray adhesive.
The panel artwork file is also available from the download section below.
While
the artwork requires holes to be cut out for the buttons, OLED display
and rotary encoder, it is not necessary to cut them out for the
programming socket or power LED. I cut out the cover in my case for the
programming connector to allow me to further develop the software, but
you may not wish to do this. In addition, the LED shines nicely through
the artwork so a hole is not required for the LED.

The tuning knob was also designed by me and printed on my 3D printer. It’s nothing elegant, but it’s cheap and effective.
Programming the ATmega328
I used
my USBasp programmer to program the chip. It just plugs directly innto
the 6-pin connector on the board and into the USB connector on my
computer. I use one of several Windows-based applications available for
programming AVR family chips with th USBasp programmer, typically
either Khazama or Extreme Burner. The HEX file for the signal generator
is available for download below.
If you need the source code
for your own development of this software, please send me an email.
Please confirm in the email that the software will only be for your
personal non-commercial use. This is due to some parties copying and
selling my software while also removing any mention of me as the
original source of the software. The HEX
code is available for downloading in the section at the
bottom of this (long) webpage - for non-commercial use, of course.
Once the HEX code has been programmed into the memory of your ATmega328, the fuse
bits of the device also need to be programmed. These configure such
things as reset and clock options. These should be set, as follows: High: 0d9h (1101 1001)
Low: 0e2h (1110 0010)
Extended: 0FFh (1111 1111)
Lock: 0FFh (1111 1111)
IMPORTANT: If you program the ATmega328 in-circuit using the 6-pin connector shown in the schematic above then your programmer MUST
be set to program with a supply rail of 3.3V. That's the maximum
voltage of the Si5351a and OLED display which share the processor's
supply rail. Alternatvely, you can program the ATmega328 externally via
an adapter on your programmer using your programmer's usual 5V supply.
Operation
After
turning the oscillator on with the sliding SPST power switch mounted on
the left-hand side of the unit, there is a short delay while the
processor starts and the display and Si5351a are both initialized.
When this is completed, the green LED is turned on. It is mounted on the front
panel in the hole located just above the tuning control. This
power-up and initialisation process takes less than a second.
Both
keypad
and the rotary dial are always active. The tuning control will adjust
the currently selected oscillator’s frequency in steps set by the step
selection switch. That switch is integrated into the rotary encoder.
The next step size is selected by briefly pressing down on the
tuning knob. Each press allows selection of the next tuning step from a
selection of 1, 10, and 100Hz, 1, 10 and 100kHz, 1MHz and 10MHz.
There are a further five basic functions that can be selected using the keypad:
- Frequency
- Oscillator
- Output level
- RF output control, and
- Quadrature mode
Frequency
To select a frequency for the currently selected oscillator, press Freq
then the desired value. Up to nine digits can be entered (e.g.
123456789 which is 123.456789 MHz) with values between 2.5kHz and
300MHz. The decimal point key is marked DP. Values entered outside this
range will be ignored and the generator will return the oscillator
frequency to its current setting.
There are a number of ways the software will accept a frequency value entry from the keypad. Some examples include:
Oscillator
The
signal generator always starts from power-up with oscillator 1 selected
(Output A). To change the currently selected oscillator, press the Osc#
key followed by 1, 2 or 3. Pressing 1 selects the first oscillator
(Output A), 2 selects Output B, and 3 selects Output C. Other digits
are ignored until a valid key value is detected. e.g.
Osc# 4 5 8 3
Digits
4, 5 and 8 are simply ignored. Nothing happens, and no change appears
on the display. However, when the digit 3 is entered, the software
recognizes this as first valid digit seen. The generator will then
select Output C and indicate that new selection on the display.
Output Level
To
change the output level of the currently selected oscillator, press the
Level key followed by 1, 2, 3 or 4. Pressing 1 sets the output of the
selected oscillator to 2mA, 2 sets the output to 4mA, 3 sets it to 6mA
and 4 sets it to 8mA. (The output level is adjusted in the Si5351a by setting the
output buffer current in software)
Other digits are ignored until a valid key value is detected.
Based
on measurements made with my 100MHz bandwidth oscilloscope using a
20MHz or 50MHz output from the Si5351a connected to a 50 ohm load,
the following output levels were observed:
RF Output Control
Pressing the RF key turns the output of the selected oscillator from on to off or from off to on depending on its current state.
Quadrature Mode
Pressing
the Q key sets the second oscillator (Output B) to the same frequency
as the first oscillator (Output A) and then offsets the phase of
oscillator 2 (Output B) by 90o from Output A (i.e. Phase quadrature). A
small letter ‘Q’ will appear on the display. Note: Quadrature operation
is only possible in the si5351a at frequencies above 7MHz.
Adjusting
the current oscillator frequency using the rotary encoder knob, for
example, will now change both oscillator 1 (Output A) and oscillator 2
(Output B) at the same time, keeping the two outputs on the same
frequency and in phase quadrature.
Pressing the Q key again
will turn off the quadrature mode. Aside from the ‘Q’ symbol
disappearing, there is not other immediate effect on output frequencies
or phase shift. However, Oscillator 1 (Output A) and oscillator 2
(Output B) can now be adjusted separately again, and phase quadrature
operation is no longer enabled.
Selecting the second
oscillator (Output B) will now allow its frequency to be adjusted
independently again, either via the Freq key or via the rotary encoder
knob.
Quadrature mode is also turned off if the user turns
off the output of either Oscillator 1 (Output A) or Oscillator 2
(Output B) with the RF key. Logically, if either output is turned off,
phase quadrature mode is no longer operational.
AM Modulation
The test-bed signal
generator produces (up to) three unmodulated
('CW') outputs. Once built, it turned
out to be surprisingly easy to produce an amplitude modulated output
signal without any extra components.
The spectrum of an AM
signal consists of a carrier and two sidebands. Each sideband is
equally offset on either side of the carrier by the required modulation
frequency. For example, a 4MHz AM signal with 1kHz modulation is made
up of a 4MHz carrier, one (upper) sideband located at 4.001MHz, and one
(lower) sideband at 3.999 MHz. This diagram may help explain things.

For
a perfect 100% modulated AM signal, the output level of each sideband
will be one-half that of the carrier i.e. Each sideband will be 6 dB
below the level of the carrier. The approach described here does not
generate an AM signal with that level of precision. However, the AM signal
produced is none-the-less a perfectly useful near-equivalent.
Here’s how to do it (easily):
Let’s
say we want an AM signal on 4.0MHz. Begin by setting Output A to 4.0MHz
and then set Output B to 4.001MHz. That's 1kHz above the frequency of Output A. Push a short length of hookup wire into each
of these two output connectors and twist them together a little. Place this
slightly twisted pair of wires near a shortwave receiver set to 4MHz.
You will now hear a very nicely 1kHz modulated 4MHz signal.
For
the purists out there, yes, this arrangement only generates the carrier
plus one of the two sidebands required for a perfect ‘textbook’ AM
signal. However, one sideband is enough to generate AM and make this
work.
Of
course, if you want the ‘textbook’ signal, set Output A to
4.0MHz, Output B to 4.001MHz, and Output C to 3.999MHz. That’s easily
achieved with this signal generator. Three short lengths of wire will
be needed this time. While there is little difference in the
theoretical output signal, one thing you may notice is a slow changing
modulation depth in the received AM signal when monitored on a
receiver. This is due to a small phase difference between Output B and
Output C. So, for testing, it's probably best to use the "single
carrier + single-sideband" version described earlier.
All told, I think this is a rather neat little feature. I’ve
not seen this method described anywhere for the si5351a. It turns out,
then, that the Si5351a chip is, potentially, a tiny AM transmitter in
disguise!
I’ve not added a dedicated ‘AM’ button for this function, but if there is a demand, I’ll add it to the software and hardware.
Oh,
it's also possible to produce 'two-tone' AM. I've not seen that in any
regular signal generator, nor do I see any application. Despite that,
here's an example for a 1kHz and a 400Hz pair of modulating tones.
Set
Output A to the carrier frequency (e.g. 4.0MHz), Output B to 4.001MHz
(4.0MHz + 1kHz AM modulation tone), and Output C to 3.9996 (i.e. 4.0MHz
- 400Hz modulation tone). Use three wires, one per output, slightly
twisted together, and you'll now you'll hear the two modulating tones
(1kHz and 400Hz).
FM Modulation
You
want to generate FM? Well, that’s a little more complicated. It’s
possible to do it with the Si5351a with additional hardware. For now,
you’re probably better off using my other signal generator design.
Final Comments
This
test-bed signal source has turned out to be far more useful than I originally
expected. It's most certainly been a 'test bed' for a number of ideas, and it’s also proven to
be useful as a quick, basic signal source on my bench and in the
field. The internal battery has proven to be extremely useful.
The
battery seems to last
for weeks, even months, before needing to be recharged, depending on
use. This little signal generator draws very little current. To
recharge it,
just plug in a standard USB-type charger. The LEDs on the USB
charger
module fitted into the signal gnerator tell you when the charge is
complete. Mine go from red (charging) to blue (Ready). I can see
them clearly
through the 3D printed case.
I’ve not included a battery
meter. I've not needed it to date. Maybe that’s another feature to
consider adding in future. Let me know.
Downloads:
Software (includes ready-to-program HEX file): Click here to download software
Front panel artwork: FrontPanel
Enclosure and Pushbuttons: Industry-standard STL-format files Click here to download
Knob: Industry-standard STL-format file Click here to download the knob
ALL of the above downloads with one click: Click here to download all of these items
Want to go back to the main page? Click
here to
return directly.