29 March 2013

Developing a HF transceiver around an Arduino

As you probably know, the Arduino platform is a very useful toy for development of electronic gizmos, and after I saw the Myriad RF project I started thinking how a small portable HF transceiver could be developed around the versatility the Arduino provides. The idea is to keep in line with the Arduino philosophy and level of knowledge, so the end product should be fairly simple and affordable, but still offering alot of fun.

These are my targets:
- 8-band SSB transceiver (LSB: 80m/40m, USB: 20m/17m/15m/12m/11m/10m)
- weight: 500 grams
- output: 10W
- sensitivity: 0.5uV
- consumption: 400mA@13.8V standby / 2.5A@13.8V TX
- display: mode, frequency, step, supply voltage, S-meter, SWR
- encoder VFO with 2 selectable steps
- bandswitch button





Right away, the BITX concept seemed like a good match as the RF part of the Arduino: it is a simple and very popular HF transceiver, the performance is decent, there is a ton of documentation and the schematic and inner workings are easy to understand even to the less experienced in RF constructions. Plus, less complexity means smaller necessary space, and it might be perfect for portable QRP operations, wich is another interest of mine.



The "BITX" board is basically the main BITX multiband board that includes AGC / S-meter output; the front panel is made out of a 16x2 HD44780 LCD and 74HCT164 shift registers (to use less Arduino pins), a rotary encoder, 2 push-buttons, a volume knob and microphone and speaker outputs. The PA & BPF board will include a 10 Watt RD16HHF1 amplifier and 8 bandpass filters, and the "Arduino" board besides the Arduino includes an AD9850 DDS module, the kind you find very cheap on eBay. It replaces the original BITX VFO, can generate frequencies from 0 to 40MHz, needs 4 wires for control and a +5V supply from the Arduino board.



I am still working on the concept a bit, but I have the heart of it already working, the Arduino + encoder and buttons + AD9850.


This is the most power-hungry section on recieve and takes 185mA with these settings, leaving about 215mA for the reciever. The low-pass filter in the AD9850 module is centered around 70MHz, wich means it's useless in this application and needs to be redone. At 28MHz the strongest DDS spur is at -50dBc, wich isn't really great, so I decided to have the VFO work below the recieved signal when over 10MHz and above the recieved signal when below 10MHz, this way the spectrum image will also flip so no other adjustment is necessary to switch between LSB and USB when below / above 10MHz. Thsi will also keep the DDS frequency lower (19.7MHz is the highest, in order to get a 10MHz IF from a 29.7MHz signal), where it is cleaner.

I will continue to work on this project and I will publish detailed schematics and firmware; everything is open source, well documented, easily accesible and allows alot of customisation, plus in the end the Arduino's MCU can be ported to a customised PCB to make everything more compact.

6 comments:

  1. Brilliant!!! This should result in a great radio.
    Can you please publish the "sketch", I do like the way you control the AD9850.
    73
    Andrew
    VK4JAM

    ReplyDelete
  2. Great, waiting for your good work,
    73
    VU2SPF (Ex vu3seg)

    ReplyDelete
  3. Very good work. I wish I can get the code from you for interfacing the DDR AD 9850 and Arduino ATmega 328 with Hitachi LCD (16 X 2) and a rotary encoder so that I can have a full band HF VFO which can serve as a foundation for many future projects. Kindly send me the full code in PDF or word format as my computer is having a problem opening .INO extensions. Thanks in advance for your time.
    73
    DE
    (Pravinkumar)
    AB9XC
    Email: ab9xc@yahoo.com

    ReplyDelete
  4. Beautiful Job kept it up
    de vu3kd

    ReplyDelete
  5. What a cool development!!!
    Please contact me, I want to work in somthing like this.
    Congrats!!
    Felipe CD6523

    senasam@gmail.com

    ReplyDelete