Thursday, March 16, 2023

Bush 40 transceiver

Inspired by the VK3YE Beach 40, I have constructed the "Bush 40" which is a version tailored to The Australian outback. (Just kidding).


It is a direct conversion receiver and double sideband transmitter. I've replaced the VXO with a very simple, three component, VFO.

I'm joking a bit here too, it has an Arduino Nano, an Si5351 board, and a rotary encoder. On boot up it starts at 7.1MHz and you can tune up and down from there.

The mic amp, mixer, rf power stages and low pass filter are as per the Beach 40.

The receive audio stages are from the Soldersmoke High School DC receiver

Overall, this is a minimal design and the door is open to many improvements.




As you can see, it's a gadget of great beauty. At this stage the receiver is working but is quite deaf - I'll keep working on this.

Notes for future builds:

  • Use a larger baseboard so there's plenty of space for access to the boards
  • Always put a reverse diode on the relay coil - I killed an Arduino Nano presumably from inductive spikes on the power line.
  • Don't try to drive a mixer directly from an Si5351. (I was puzzled about why the balanced mixer was so far off balance when I switched from the VXO to Si5351, the reason is that the output RF is 0-3.3V not AC) A 0.1uF capacitor fixed this.
  • Building modules on their own boards for easy debugging is the way to go. Also, this means the successful stages can be re-used easily.
My thanks to many people including Bill, Paul, & Stephen for suggestions.

Friday, March 10, 2023

Minimal Si5351 VFO for Bush 40 DSB Transceiver

Recently I've been going a bit "old school" and built the Soldersmoke Direct Conversion receiver with its PTO VFO and another VK3YE Beach 40 DSB transceiver with a ceramic resonator based VFO (it can be slightly pulled).

I was thinking about a minimum VFO configuration using just an Arduino Nano, a rotary encoder and an Si5351. If you count a Nano as a single component you could argue that this is a three component VFO.

My implementation boots up on 7.1Mhz and can be tuned up and down with the rotary encoder. There's no display (although that can be easily added) but a frequency counter could be added. 

The wiring is like this circuit on the Arduino project hub but I haven't added the display.

Power enters through the VIN pin on the Nano which can take voltages up to 16V (I'm running 12V) and regulates down to 5V and 3.3V which I feed to the Si5351.

I prototyped this on a breadboard first:


Next I built the same circuit on matrix board with simple point to point wiring. Here it is driving the mixer on the Beach 40.


It's a very compact and usable VFO. I have a few ideas about some extra features such as stopping at band edges and maybe lighting an LED when you hit the band edge.

Observant readers will spot my LEDs on the boards and power wiring - I've been bitten by being buzzed about why things weren't working when the fault of in the power line. Adding a few LED power indicators makes it clear.

Here's my simple source code for this VFO (blogger messes code up so use the link to the Gist):

/*
Simple VFO for a direct conversion receiver.


Si5351 controlled by a rotary encoder.
Based on code from Paul, VK3HN
https://github.com/prt459/Arduino_si5351_VFO_Controller_Keyer


*/
const unsigned long int FREQ_DEFAULT = 7100000ULL;

#define ENCODER_A 3 // DT
#define ENCODER_B 2 // CLK


#include <RotaryEncoder.h> // by Maattias Hertel http://www.mathertel.de/Arduino/RotaryEncoderLibrary.aspx
#include <si5351.h> // Etherkit Si3531 library Jason Mildrum, V2.1.4
// https://github.com/etherkit/Si5351Arduino
#include <Wire.h> // built in
Si5351 si5351; // I2C address defaults to x60 in the NT7S lib
RotaryEncoder gEncoder = RotaryEncoder(ENCODER_A, ENCODER_B, RotaryEncoder::LatchMode::FOUR3);
long gEncoderPosition = 0;


unsigned long int gFrequency = FREQ_DEFAULT;
unsigned long int gStep = 100;


void setup() {
Serial.begin(115200);
Wire.begin();
gFrequency = FREQ_DEFAULT;
setupOscillator();
setupRotaryEncoder();
delay(500);
si5351.set_freq(FREQ_DEFAULT * SI5351_FREQ_MULT, SI5351_CLK0);
si5351.output_enable(SI5351_CLK0, 1);
}


void loop() {
// check for change in the rotary encoder
gEncoder.tick();
long newEncoderPosition = gEncoder.getPosition();
if(newEncoderPosition != gEncoderPosition) {
long encoderDifference = newEncoderPosition - gEncoderPosition;
gEncoderPosition = newEncoderPosition;
Serial.println(encoderDifference);
frequencyAdjust(encoderDifference);
}
}


void setupRotaryEncoder() {
attachInterrupt(digitalPinToInterrupt(ENCODER_A), checkPosition, CHANGE);
attachInterrupt(digitalPinToInterrupt(ENCODER_B), checkPosition, CHANGE);
}


// This interrupt routine will be called on any change of one of the input signals
void checkPosition() {
gEncoder.tick(); // just call tick() to check the state.
}


void frequencyAdjust(int delta) {
Serial.print("Adjust: ");
Serial.println(delta);
gFrequency += (delta * gStep);
setVfoFrequency(gFrequency);
}


void setVfoFrequency(unsigned long int frequency) {
si5351.set_freq(frequency * SI5351_FREQ_MULT, SI5351_CLK0); //
Serial.print("set frequency: ");
Serial.println(frequency);
}


void setupOscillator() {
bool i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
Serial.print("si5351: ");
Serial.println(i2c_found ? "Found" : "Missing");
si5351.set_correction(135000, SI5351_PLL_INPUT_XO); // Library update 26/4/2020: requires destination register address ... si5351.set_correction(19100, SI5351_PLL_INPUT_XO);
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
si5351.set_freq(500000000ULL, SI5351_CLK0);
si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_4MA);
si5351.output_enable(SI5351_CLK0, 1); // turn VFO on
}

Sunday, March 05, 2023

Soldersmoke Direct Conversion Receiver working

I didn't have a smooth run with this project, despite the best of help. Here's how it sounds now:


My tuning is very sensitive but at least it doesn't drift like it was with the original (not NP0) capacitors.

I ran into a few issues along the way that took me way too long to debug:

  • The audio chain was taking off at about 2MHz and upsetting the VFO via the power line.
  • I didn't use NP0 caps in the VFO and it was incredibly unstable at first.
  • The variable linear power supply I was using caused great audio hum - no idea why - another supply and the hum is gone.
My build is not very sensitive. I suspect I have the wrong diodes in the ring mixer.

My thanks to Stephen, VK2BLQ, for suggesting the addition of a 1k resistor to isolate the early stages of the audio chain from the output stage to stop the instability. And, of course, thanks to Bill for the design of this project!

 

Saturday, February 25, 2023

80m dipole stretched significantly

Very lucky here to have the space, and appropriately placed trees, to allow me to put up a full size dipole for 80m. By all reports it works very well. This week, prompted by VK3LRJ, I tested the antenna and found that resonance had moved down quite significantly.

The band edges (black bars) are 3.5Mhz and 3.8Mhz.

The weekly club net is on 3685 so that's quite a bit away from where the antenna is now. I pulled it down, cut off a bit and folded back the ends. I think I shortened it by about 500m.


Much better! The 7300's built-in tuner has no trouble but it's good to not suffer the losses in the tuner if possible. 


The wire I'm using is figure-8 speaker wire split so I guess it stretches quite a bit. So far it looks to be in good shape but I don't expect it to last forever.

Thursday, February 23, 2023

High School Direct Conversion receiver

After deviating from Bill's design I have come back to the fold and built the mixer as he described. Another insight is that I've come around to putting each functional stage on a board of its own rather than trying to build the whole project on one board. I don't have a 1k:8ohm audio transformer so I used a powered speaker purchased at the MRARC auction last week and that seems to hum for some reason when connected (I tried battery power on the radio).


My VFO drifts wildly but with care it can be made to work. Here's a bit of reception from 40m this morning.

Next I connected VK3HN's VFO up and see how that sounds.

Rock stable as expected but I get clicks as I tune. 

Friday, February 17, 2023

VK3HN's Si5351 VFO in a DC receiver

I built a DC receiver using the PTO VFO based on the "High School" receiver described by Bill, N2CQR, recently. It's a beautiful thing to behold but for various reasons (no NPO caps for one thing) my build drifts like mad. It would make a fine Theremin.


I mentioned this to Paul, VK3HN, and he commented that analog VFOs do drift. He had kindly sent me a sample VFO / Controller board he's been developing for his amazing home brew "Summit Prowler" rigs.


It's a nicely conceived board with an Atmel chip that can be programmed as an Arduino Nano, Si5351 clock generator - with output buffers, connections for a parallel LCD but also I2C, connections for a rotary encoder and spares for various buttons. I had promised to give him feedback on it many months ago.

Here's VK3HN's blog post about itHere's the circuit. Here's his firmware.

Paul's code has all sorts of specialisation for his various rigs but my needs are much simpler so I've created a stripped back version that is just a VFO. Here's my code. I'm using a 128x32 OLED display instead of the LCD and have swapped in a different rotary encoder library.


The rotary encoder tunes and pushing the button changes the tuning step.

Feeding a TUF-1 mixer and then to a few transistor stages and an LM386 module it does actually receive although I have hum which is not uncommon with DC receivers. My "bench spread" construction doesn't help of course.


Arduino boards.txt

There's always something to learn on these little projects. Paul's board inadvertently ended up with an ATMega328 instead of the ATMega328P that the Arduino IDE expects to see in a Nano. Paul suggested turning on logging of the upload phase, capturing the generated avrdude command line and editing the processor type to drop the "p". 

I did that for a while, and it worked fine, but I wondered how hard it was to add a slightly modified board to the IDE. I'm using Arduino IDE 2.x but the support files (on macOS) are at:

~/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/boards.txt 

Documentation on how to add boards is here.

I just copied the Atmega328p and made a Atmega328noP

Thanks to Paul, VK3HN, for sharing his code and design.

Friday, February 10, 2023

VR Presentation at the Kyneton Men's shed

Kyneton local Tim Sullivan from Sullivan Studios kindly put on a presentation about VR (Virtual Reality) at the men's shed this morning.

We took turns experiencing a visit to Venice, fishing, shooting and flying in a Meta Quest 2 headset (which I see sells for A$629).

While this was totally new to most of the people present, (there was a suggestion that some had come to learn about Vic Rail), I had played with an Oculus Rift headset some years ago.

The response to head movements was pretty good and the graphics was much improved over the past but I feel there's a way to go and certainly the price of headsets needs to come down for mass market appeal.

Tim predicted that mobile phones will be "gone" in three years, which rather surprised the audience.

Some stories of people with restricted mobility being able to virtually travel and see the world - or in one case visit their home country of Italy during Covid - illustrate the power of this technology.

I look forward to even more resolution in the future and I showed Tim how Apple's "Look Around" feature in their maps looks to be ready for VR headsets already.

The headsets will need to get much less bulky to be worn for extended periods but that day will come.

It was great to have such an interesting presentation at the excellent Kyneton Men's shed.

ACMA should do more to prevent and trace scam SMS messages

Like everyone I'm sure, I receive regular SMS messages and calls which are clearly scams. While I think I'm pretty good at recognising them it wastes my attention and I worry about people less able to realise what they are.

This morning ACMA announced a penalty for a Telco who was allowing customers to send SMS messages with text names without having processes in place to check that they weren't being sent as part of a scam pretending to be a trusted organisation. I have received messages that appeared to come from NAB.

The ACMA scam page is worth a read. Here's a few recent messages I've received (The numbers are certainly fake and may belong to real people so please don't harass them):












OK, maybe that last one isn't strictly a scam...

Surely we have the technical capability to trace who is sending these and either prosecute or at least block them? I see the ABC has a report on this.