Last year I wrote that Arduino was so easy, but I didn’t really follow up on that. A few days ago, RC (KE6BGN) commented that he was wondering if any progress had been made on the Arduino based VFO/BFO for the BITX40. There has been, and I have made a short video for your viewing pleasure:
This VFO will also be handy for the Bitx Easy when it’s released, as they’ll be selling a version with and without a VFO/BFO included.
Parts List
Here are the parts used to make the Arduino VFO/BFO, all available on Amazon or at QRP-Labs:
QRP-Labs Links
Si5351A synthesizer module kit
Arduino Shield Kit
Amazon Links
Arduino Starter Kit (Comes with breadboard, USB, instructions, a great deal to start Arduino with- it’s how I myself started)
16×2 LCD Display w/ I2C adapter
Rotary Encoder(s) (Any will work, this is very like what I used)
For details on how to power it, check out the the 5v Power Supply for Arduino and more
The Awful Sketch
In the video I mentioned that I didn’t want to share the sketch because it’s That Bad, but I have since changed my mind. It’s important to share our successes but even more so to share our failures or the real hacks that got us by, whether they be pretty or just pretty awful. This sketch is just awful, but it does work. The biggest struggle I had was adjusting the Upper and Lower Sideband frequencies- once I got all the math right. The uBITX sketch is heavily modified to a single conversion superhet and the tuning rates are adjusted. Features I don’t need or want have been commented out or removed altogether. If you decide to use it, please don’t hold me responsible! :p
5 comments
Skip to comment form
Hey Ryan!
I seem to recall that there once was a sketch for the BITX40, (amunters) that replaced both the VFO and the BFO in the bitx40 with an si5351 tuned using a rotary encoder.
The amunters ( https://github.com/amunters ) sketch was for the Radiuno hardware, but even that device is ridiculously simple and would easily port over to the QRP labs setup you are using.
The only thing that typically requires modification to make such a sketches work with the QRP labs si5351 module, is to change the clock frequency from default (25 MHz) to 27 MHz, which is what most of the QRP labs projects use.
I had to chuckle at your comment about the analog VFO. As you may recall I activated the analog VFO on the bitx40 I had. While I do like the quieter receiver, as you note, the drift is horrible!
Interestingly enough, I had powered the bitx40 up, just the other day, to compare it to the QCX. There is admittedly a detectable amount of digital noise in the QCX, however faint. To be sure, I am not referring to the hard noise the early Raduino generated when moving the rotary encoder. I am referring to digital noise in general. That said, I was just reading the firmware notes for QCX V 1.02 firmware, and addressing that noise was referenced.
In any event, the digital noise from a DDS is, IMHO, insignificant, when compared to the drift of the analog VFO in the bitx40. Until the VFO had “warmed up” and stabilized, there were a couple of CW stations that sounded like slide whistles LOL!. The DDS option is definitely an improvement. Still , I think that perhaps all the BITX40 ever really needed to be a better radio (in it’s class), was a stable analog VFO.
One last thing, and this is just my “2 cents”…
I’ve found that placing a small 50 ohm attenuator (~1-2 dB) pad between the si5351 output and the input on the radio, seems to improve the performance a bit. Since the bitx40 uses diode ring mixers (DRM) at 50 ohm impedance I/0, depending on the power setting used in the si5351 arduino code (there are three levels) the device can output as much as +18 dBm. That is far too hot even for DRMs, so padding it down not only drops the level, but provides a more stable impedance match to both the si5351 and, the DRM.
73!
AC7LX
The 5351A is a PLL/VCO plus a fractional divider outside the loop. It’s inherently noisy due to the architecture. As a clock generator, it was designed to meet setup and hold requirements for digital clock inputs, not the more stringent requirements of a local oscillating in a receiver.
In contrast, Direct Digital Synthesis synthesizes a sinewave point-by-point. In its simplest form, it’s a DAC, clock for the DAC, and a look-up table containing a sine wave in memory. The faster you clock through the memory, the higher the output frequency.
I owe one of the guys a tutorial on this stuff…
My apologies for the brain fart! You are absolutely correct regarding the si5351 as not being a DDS.
Indeed, I had not intended to use that term in my own comment, but when one is typing quickly, it just kinda slips in there. DDS has, unfortunately, become a somewhat far too generic term, kinda like “Xerox machine”. An affiliation I really need to clear from my brain! LOL! You are again, completely correct. The si5351 is NOT a DDS.
All that said, the si5351, when used in place of an analog VFO, is extremely cheap and, at the end of the day, when consideration of it’s noise issues are addressed, can be an affordable, practical (pragmatic?), alternative.
Hi Ryan, enjoyed your video. I have played around with various Arduino vfo projects and have a minimal hardware version, encoder mounted on rear of Nano VFO. Si5351A plugs in at right angles to Nano board (a couple of wire adds) and cable to I2C 2×16 LCD plugs to to the other side of Si board (Adafruit type). Makes for a very easy and inexpensive build and mount. Will be happy to share details and, if you could advise usb & lsb bfo frequencies and bands and associated vfo outputs needed I could have a look at knocking up a sketch if you are interested.
73, Bob GM4CID
Author
Hey Bob, thanks for the comment! It’s currently stable and working so I’m not touching the VFO at the moment… but I will at some point. The sketch for the Easy BITX looks promising as well. If you share yours on GitHub, let me know and I’d love to have a look. 73!