Sunday 3 August 2014

Enhancing the Enhanced

I was pleased to use one of the nice new 20 * 4 backlit LCD displays from Kanga in my newly enclosed rig, as reported last week. Having done that, it was only reasonable to re-work the Kanga VFO system to benefit from this new display (the code I produced for the Kanga VFO is at the core of my new rig's software).

Here's the System I was playing with this morning - a stack of Arduino (which happened to be a MEGA), a DDS shield (an early prototype) and a proto shield hosting a rotary encoder and some push buttons. You can see the original 16*4 LCD display and the new 20*4 unit...

I wanted to produce some code that would allow users to run either the 16*4 or the 20*4 display - which required a certain amount of juggling with the display routines. Accordingly, I've added a constant at the top of the program that the user must set to the appropriate value:

lcdWidth = 16;   or   lcdWidth = 20;

according to the display they are using. The same code then compiles to manage the display accordingly.

The somewhat congested display format of the original system is retained if the 16*4 display is chosen...

but things get a little more easy on the eye when the new display is used ...

I'm afraid the new display is REALLY difficult to do justice to in a photograph (at least with the poverty of my equipment and skills). Take it from me - it looks great in real life. Better still - look at one on the Kanga stall at a rally near you - you'll see what I mean!

I also took the opportunity to address a few other issues when I was messing with the code this morning - hopefully this is a genuine enhancement over what already was an enhancement on the original VFO system!

The code is available for download from here .

 Let me know if you have any problems / suggestions - but remember that this is offered as a free demo of what can be done, rather than a finished, polished system. You get what you pay for!

...-.- de m0xpd


  1. Hi can you help me I am new to this.I am trying to down load kanga VFO 3 ino from
    github but cant do it.
    thanks Chris

    1. To use a sketch from the GitHub repository, just click on the "Download Gist" button to the right of the Sketch. This will download a compressed version of the sketch as a .tar archive - which you will need to decompress using some kind of file extraction utility (freeware such as Express Zip will work on a Windows Machine).

      When you have extracted the files, you should see the sketch with the ".ino" file extension - clicking on it will invoke the Arduino software (which will offer to put the sketch into a folder having the same name, and run).

      If this is too difficult, just copy the text from the text window on GitHub and paste it straight into a new sketch window in the Arduino software.

  2. Hi I am going to use the vfo for a rig with a 9Mhz IF what do I change RxOffset = 0; to
    thanks Chris

    1. When the incoming RF is above your IF frequency (i.e. when you are mixing DOWN to your IF), use:
      RxOffset = IF
      (example in your case 9MHz for 10 metres and above)

      When the incoming RF is below your IF frequency (i.e. when you are mixing UP to your IF), use:
      RxOffset = 2*RF - IF
      (example for your case RxOffset = 2*7MHz - 9MHz = 5MHz for 40m).

      You COULD just stick with RxOffset = IF, but this will give sideband inversions as your RF moves above and below your IF.

      (The above are "ballpark" numbers - there will, of course, be detail adjustments to complete the alignment of your system).

      Two final "words" of advice:
      1) The Kanga VFO is offered only as an indication of what can be done with the DDS module etc - I'm neither supporting nor advocating its use any further than that!
      2) If anybody uses a digital VFO and chooses NOT to interlink it with a digital BFO, according to the methods I've been advocating in these pages, then I wish them luck!