Friday, 16 March 2018

Busy, again, on WSJT-X 40m

40m WSJTX again very busy this morning

Screen Shot 2018 03 16 at 11 17 11

Tuesday, 27 February 2018

ICOM CI-V Interface

As part of a project to make a voice controlled transceiver for use by blind amateurs we need a CI-V interface from a USB port to the 3.5mm CIV jack on our ICOM 718. These slides show the thinking/research done so far. There is still some way to go to get all the voltages I/O currents and logic correct...

ICOM Voice 1 002

ICOM Voice 1 003

ICOM Voice 1 004
ICOM Voice 1 005

ICOM Voice 1 006

ICOM Voice 1 007

ICOM Voice 1 008

ICOM Voice 1 010

ICOM Voice 1 012 This may not be of interest to everyone. If you spot any errors please email techgroup-m0ifa at, thanks

Saturday, 27 January 2018

First steps to re-design PA

As you may have read below, my QRP PA failed. Actually it failed twice and cost me money since I just replaced the amplifier module with another one, which then again failed - no idea why!

So I have decided to build my own amplifier. Here's me breadboarding the first stage

IMG 1728

I decided to use the common RD16HHF1 transistor, I discovered that it has a grounded tab, connected to the Source of the MOSFET. Good. An amp stage using this will give about +20dB gan. So for an output of +40dBm 10W 22V, I will need an input drive of 2.2V. I will need a preamp to get up to this level from my VFO 0dBm output. I chose to try a very simple circuit. This preamp seems to work well and is giving me the drive I wanr for the output stage. Here's the planned circuit

IMG 1729

Moe news later when I have built the complete PA. Should get up to 10W output...

Monday, 22 January 2018

Latest V5 Libraries and Sketches

Here they are.

First steps with SWR meter

I have a project going on to build a simple SR meter, well I say simple but it is more than a couple of diodes and a micro-ammeter!

The concept has been done before, I use an SWR bridge to output the forward and reverse power, then convert this to dBm using a couple of AD8307 devices - wonderful inventions.

The output of the AD8307s is fed to an Arduino Nano on two analog inputs. My bridge uses 1:10 transformers so the TX line voltage of 10W = 22V is transformed to 10W = 2.2V, which is just below the max input allowed on the devices.

IMG 1725

The software is listed below, The calibration of the AD8307's is done by a value for their INTERCEPT (dBm down for zero output) and the SLOPE (output mV per dB).

The input voltages are read by the analog convertors as binary unsigned integers from 0-1023. Using the 3.3V line from the Nano as a reference for them and converting this to milliVolts, gives 0-3300mV sensitivity. The output of the Ad9307's is around 1500mV for -20dBm input and 2500mV for +20dBm. This is converted to dBm using the SLOPE and INTERCEPT values from this graph:

Screen Shot 2018 01 22 at 11 36 46

The dBm values are converted to a length for a bar display showing 0.1W(-20dBm) to 10W (+20dBm) for both forward and reflected powers. Finally the power levels are calculated and use to calculate the SWR.

IMG 1726

The display is handled by my Oled.h header which lists number of useful funcitons to drive an OLED display, like "dispMsg()" or "dispNum()" in small, normal, large or ultra-large fonts.


// SWR_1
// 18-1-19 first working version, simulated inputs

#include "Oled.h"

// Fwd & Ref analog in
#define FWDIN A1
#define REFIN A0

// note AREF is +3300mV. RF in 22V=10W, Log Amp in 2.2V=20dB
// max input count 1023
#define AREF 3300
#define AMAX 1023

// intercept (dBm), slope (mW/dB), source impedance,
// attenuator (dB), bar display scale
#define INTERCEPT_FWD -80.0
#define INTERCEPT_REF -80.0
#define SLOPE_FWD 25
#define SLOPE_REF 25
#define IMP 50
#define BARSCALE 100/40

// bar length 0-100
byte bLFwd;
byte bLref;
// results
double dBmFwd, dBmRef, mWFwd, mWRef, VrmsFwd, VrmsRef, swr;

void setup() {
  // oled init, sets I2C addr to 0x3C

void loop() {
  int inFwd, inRef;
  double mVFwd, mVRef, p;

  // read inputs FWD & REF
// is about 1.5-2.5V, calibrate with INTERCEPT value
//  inFwd = analogRead(FWDIN);
//  inRef = analogRead(REFIN);
inFwd = 700;
inRef = 40;

  mVFwd = (double)(map(inFwd, 0, AMAX, 0, AREF));
  mVRef = (double)(map(inRef, 0, AMAX, 0, AREF));

  // calculation FWD BAR
  bLFwd = (dBmFwd * BARSCALE) + 50; // tbd 20-30-40dB, 0.1W-1W-10W

  // calculation SWR
  swr = (mVFwd + mVRef) / (mVFwd - mVRef);


void dispUpdate() {
  do {
    dispMsg(60, 0, "SWR");
    //--FWD BAR--
    dispMsgS(20, 15, "0.1W      1W      10W");
    dispMsgS(0, 28, "PWR");
    dispBar(20, 28, 5, bLFwd);

    // SWR
    dispNumUL(40, 40, swr, 2);

  } while (oled.nextPage());

Friday, 5 January 2018

Caprice PA finished, then failed!

I have been slow, I know, in getting the QRP PA finished. This is a 3W PA for 40, 30 & 20m with control using a Arduino Nano. It started out like this

IMG 1694

Then I got stuck on two fronts. One cutting the holes in the case I had planned, and second writing the software that allows an exciter (VFO or QRP transceiver) to tell the PA to switch TX/RX and which band LPF to chose.

I solved the box problem by inducing my son who owns a small engineering company to mill out the holes and rectangles out of the front and back panels of the box.

Then I stuck my head down and had a long think about controlling the PA. What I settled with is to have a 4-way 3.5mm jack lead connect the VFO to the PA. This was dictated because one of the apps that runs on my VFO (AD9851 + Arduino Uno with OLED display, is a GPS location or Maidenhead locator detector, and the GPS plugs into a 4-way jack). The jack connections are Ground, Arduino pin A1, A0 and +5V. The A1 & A0 connections carry the GPS RX & TX signals. But for the PA they provide four controls (in binary HIGH/LOW on the two pins). These switch the PA into RX or TX on 40, 30 or 20m.

This is what the PA now looks like inside and out.

IMG 1711

The integrated Amp is top left, the LPF at the bottom and the Nano and TX/RX switching relay is at top right.

IMG 1717

Here the top box is the VFO - which can be programmed to transmit CW, QRSS, JT65, WSPR etc, the middle box is a power meter (0.1uW to 10W range) and the bottom on is the PA. The display on the PA shows either TX, or LPF the band selected.

Here's the code used in the PA which illustrates the decode and use of the A0, A1 signals

// PA_V2 Caprice system
// V1.1 17-12-30 changed input pins to A0, A1
/* Jack Body GND
        Ring  A1 control bits
        Ring  A0
        Tip   5V

// oled init & functions
#include "Oled.h"

// relay outputs (active HIGH)
#define PTT 5
#define B6 6
#define B7 7

// modes
#define RX 0
#define TX40 1
#define TX30 2
#define TX20 3

char disp[][4] = {"", "40m", "30m", "20m"};    // display
byte mode, band;                               // mode 0-3, band 1-3

void setup() {

  pinMode(A0, INPUT_PULLUP);     // bus LSB
  pinMode(A1, INPUT_PULLUP);     // bus MSB
  pinMode(PTT, OUTPUT);   // T/R relay
  pinMode(B6, OUTPUT);    // Band LPF relays
  pinMode(B7, OUTPUT);

  oled.begin();           // init oled display

  // init 40m RX
  swPA(TX40);            // mode 40m, set LPF
  swPA(RX);              // back to mode RX

void loop() {
  // read mode input
  mode = getMode(digitalRead(A1), digitalRead(A0)); // read 0000 00xx

  // switch PA


// A1 & A0 gets mode, returns 0-3 (RX-TX20)
byte getMode(bool b1, bool b0) {
  if (b1 == HIGH && b0 == HIGH) return RX;     // 0 RX
  if (b1 == HIGH && b0 == LOW)  return TX40;   // 1 TX 40m
  if (b1 == LOW && b0 == HIGH)  return TX30;   // 2 TX 30m
  if (b1 == LOW && b0 == LOW)   return TX20;   // 3 TX 20m

// set PTT & LPF relays (HIGH = on), set band
void swPA(byte m) {
  // first check RX or TX
  if (m == RX)
    digitalWrite(PTT, LOW);              // RX
  else {
    digitalWrite(PTT, HIGH);             // TX

    // chose LPF freq
    switch (m) {
      case TX40:
        digitalWrite(B6, LOW);           // 40m
        digitalWrite(B7, LOW);
      case TX30:
        digitalWrite(B6, HIGH);          // 30m
        digitalWrite(B7, LOW);
      case TX20:
        digitalWrite(B6, HIGH);          // 20m
        digitalWrite(B7, HIGH);
    band = m;                            // set band 1-3 for display

// Display band or "TX"
void dispUpdate() {
  do {
    dispMsg(60, 0, "PA");
    if (mode == RX) {                 // if RX
      dispMsgUL(30, 15, disp[band]); // display band
      dispMsgL(50, 50, "RX");
    else {
      dispMsgUL(45, 15, "TX");       // otherwise show "TX"
      dispMsgL(50, 50, disp[band]);
  } while (oled.nextPage());


So there I was, a new QRP PA. But... first the best output I could get was 1.5W on any band. And then after a couple of changes to the band and T/R it failed altogether and the best output was 10mW, almost the same as the input from the VFO. Fail. And so far I have no idea why. The choice now is to order another Chinese RF Amp module or to build my owm small amplifier... not decided yet.

Sunday, 31 December 2017

Away from Radio - a message for Mrs May

Madame, I accuse you. I accuse you of breaking apart our Unions. Our United Kingdom is fractured. Our European Union is fractured.

In Scotland they know this, they have created their own national government, fully capable of running their nation, as a member of the European Union.

Northern Ireland is already broken, their is no government and the people have been left to drift. They want the European Union but all they have is the DUP bought out for its votes.

In Wales they are weak, they have an Assembly which is little more than a District Council talking shop. They are adrift, not knowing which or what is the way forwards.

And as for the rest, England, we are confused, we have been lied to, we have not had any leadership or direction, so we gambled equally over Europe, and lost to the extremists of the Tory party, including, madame, yourself.

The people of England understand little of the European Union, they understand little of “Free movement of goods, services, capital and people.”. They are bent under the control of the City of London and the Murdoch press.

Your Government has failed.

I call on you to change all that. I call on you to reunite our Unions, the UK and the EU.