Sunday, October 06, 2024

Dremel cut PCB construction

Prototyping small circuits where it's not worth designing and etching a board can be done in many ways. I've used "ugly" (which I think is rather beautiful) where components float above the copper ground plane; MePads where small copper pads are superglued to the base plane; or strip board with track cuts.

Recently I've converged on a system that's working quite well for me.

The circuit is drawn out in pencil and the outline of the PCB rectangle is traced.


Working through what should not be connected to what, I draw the cut lines under a spaced out version of the circuit. Here's my drawing and below the final working board.


I mark up the board with the planned cuts.


To make the cuts in the copper, I lay the Dremel with a cutting wheel on the bench and lean it so that it just cuts the copper. I draw the board along the wheel, leaving the Dremel stationary. I can get pleasingly straight cuts this way. It is worth checking for non-conduction between areas with a multi-meter as sometimes a strand of copper can be left at a corner.


To hold components against the board for soldering you need some sort of "helping hands" but the one I learned about from an Adam Savage video is called Omnifixo. They are not cheap but are well worth it for all the cleverness.


For years I've been using a little, rather low power, bench soldering iron but I find that quite a lot of power is needed when soldering to large copper areas. I have switched to a 70W iron and it is a revelation.

Naturally, I first had the transistor in the wrong way around, but after that was fixed. The joy of oscillation was experienced.


I'm sure this is not news to any readers but I thought it worth documenting for some who might be getting started with home construction. It's not as compact as other techniques but lends itself to making changes.

One other thing I do these days is add an LED (and resistor) to the power line. It looks nice and I can't tell you how much time I've wasted wondering why an un-powered circuit doesn't work!

Friday, October 04, 2024

Experimenting with an SSM2167 compressor limiter board

The home brew AM transmitter on the bench at the moment has thrown up the issue of either low or over modulation from my mic audio. Some time ago, I purchased a couple of interesting boards described as "SSM2167 Preamp Compressor Limiter Noise Gate Dynamics Processing Module DC 3V-5V Microphone Preamplifier". They are under AU$5 from AliExpress and really tiny.


To aid with experimentation, I've mounted mine on a carrier board.


R1 on the board controls the noise gate, which I'm not too interested in. R2 controls compression and came with a 1k resistor in place. The data sheet has this table:

1k would give almost no compression. A strange choice given how the boards are marketed. Happily there are big through holes available on the board for both resistors.



With the un-modified board I fed a 1kHz tone in and get peak to peak voltages:

50mV -> 440mV
100mV -> 880mV
200mV -> 1.43V

Higher inputs do not give higher output. The output waveform looks pretty good, so not clipping. Gain is rather low for my dynamic mic however.

I replaced R2 with a 100k resistor and it has much more gain.

5mV -> 880mV
10mV -> 960mV
20mV -> 1.06V

Output level stops there and again gain is being reduced.

Stephen, VK2BLQ, brought this idea to my attention as it has been discussed as helping the uBitx radios.

Wednesday, October 02, 2024

First contact with home brew AM transmitter on 7.125

For too many weeks I've been tinkering with a small transmitter for the active AM frequency of 7.125Mhz and just now I called CQ and was kindly answered by Ross, VK3ARW. He reported good signal strength both where he is (west of Bendigo) and on the Ironstone ridge SDR in South Australia. The transmitter is home brew (although I used a Jaycar mic preamp kit).


I've been testing by listening to myself on the PKLoops SDR.


The transmitter uses an Arduino Nano that simply boots up and tells an Si5351 to put out 7.125MHz. There's an RF buffer using a 2N2222. The magic happens, the generation of AM, using a simple diode ring mixer that is set to be off balance. Mic audio, from the preamp, is fed in and out comes AM. (This technique was mentioned by Dave, VK3ASE, who also uses it). There's another 2N2222 gain stage then a low pass filter. Next I have the three stage RF power amp from Drew Diamond's 80m transmitter. Finally another low pass filter for 40m.


To answer Ross's question.. out of all this I get about 1.5W so, for the sake of getting some contacts I've fed this in to a little RF amp that gives about 25W peak.

I must say I'm astonished that I didn't get RF feedback or other instability given the construction. Despite Ross's kind words on the audio I can see that a peak limiter is needed to keep modulation up without over-modulating.

Sunday, September 29, 2024

Python code to generate WSPR audio tones

Ross, EX0AA, is working to do WSPR on very low frequencies and asked for some help generating WSPR tones as audio directly. There are several projects around that generate WSPR via GPIO pins, Si5351s or an AD9851 DDS.

I grabbed the AD9851 code from PH0TRA, removed the DDS code, and with the help of ChatGPT, modified it to generate audio directly using pyaudio. This works both on my Mac and on a Raspberry Pi with no modification. The audio comes out of the default device, and if you plug in a USB audio dongle it comes out of there.

It seems to decode just fine with acoustic coupling.


My code is here. You'll also need genwsprcode.py modified by PH0TRA from code by the fabulous Mark VandeWettering K6HX.

You'll need to use Python 3 (of course) and install pyaudio and probably numpy.

Usage: python3 wsprgen.py CALLSIGN GRID dBPower BASE_AUDIO_FREQUENCY

Thanks Ross for the push to make this. It could be handy for others.

Installing on a raspberry Pi

Thanks for the prompt from AA7US asking how to get going on a raspberry pi.
  • Grab my code from the GitHub gist. (you can download the file or copy and paste).
  • Grab PH0TRA's code from here. Put it in the same directory.
  • Install the needed python modules:
    • sudo apt install python3-pyaudio
    • sudo apt install python3-numpy
  • In a terminal run the program like this:
    • python3 wsprgen.py --no-delay CALLSIGN GRID4 DBM 1500
Obviously replace CALLSIGN GRID4 DBM. 1500 is the base audio output frequency in Hz.

--no-delay starts outputting right away, good for testing. Remove that to have it wait for the top of the 2 minute block. You'll get a bunch of output from the audio software but it seems to work after a few complaints. Here's my output:

python3 wsprgen.py --no-delay vk3tpm qf22 33 1500
symbols
 3,1,0,0,0,2,0,0,1,2,0,2,1,1,1,0,2,2,1,0,2,3,0,1,3,1,1,0,0,2,0,2,0,0,1,2,2,1,0,3,2,2,2,2,2,2,3,0,3,1,2,0,3,3,0,3,2,2,0,3,3,2,3,2,2,2,0,1,1,0,1,2,1,2,3,2,3,2,0,3,2,0,3,2,3,1,2,0,2,1,1,0,3,2,1,2,0,0,3,2,2,2,0,0,3,2,2,3,2,2,1,3,1,2,3,1,2,2,3,1,2,1,2,2,0,1,1,3,2,2,2,0,2,1,2,3,2,2,3,1,0,0,0,0,0,0,2,1,1,2,1,2,3,3,0,2,2,3,1,2,0,2
ALSA lib pcm_asym.c:105:(_snd_pcm_asym_open) capture slave is not defined
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.front.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM front
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround51.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround51.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround21
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround40.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround40
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround51.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround41
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround51.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround50
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround51.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround51
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.surround71.0:CARD=0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM surround71
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM iec958
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.iec958.0:CARD=0,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM spdif
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_a52.c:1001:(_snd_pcm_a52_open) a52 is only for playback
ALSA lib confmisc.c:1369:(snd_func_refer) Unable to find definition 'cards.0.pcm.iec958.0:CARD=0,AES0=6,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM iec958:{AES0 0x6 AES1 0x82 AES2 0x0 AES3 0x2 CARD 0}
ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card
ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card'
ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card
ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card'
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Waiting for next WSPR TX window...
Start of transmission on: 03:20:04
Frequency: 1,500 Hz
symbol = 3, out_frequency = 1504.39453125
symbol = 1, out_frequency = 1501.46484375
symbol = 0, out_frequency = 1500.0
symbol = 0, out_frequency = 1500.0
symbol = 0, out_frequency = 1500.0
symbol = 2, out_frequency = 1502.9296875
symbol = 0, out_frequency = 1500.0

You'll hear the tone on the default output. In my case I plugged in a USB audio dongle.

Wednesday, September 25, 2024

The Secret Life of the Radio

Thanks to Lindsay, VK3GX, for bringing this wonderful BBC program to my attention. The team shows the development of radio and makes various transmitters and receivers. They build a coherer and demonstrate it for example.


Keep watching after the end credits for some comments from the presenter.

Incidentally, the cartoon depiction of Marconi's home are quite accurate. I visited it some years ago.

Tech news spot on ABC Radio

How do you remember your passwords? Making up and remembering unique, complex passwords is a struggle for many of us. Those days are ending. What are PassKeys and how will they help? Plus, Modern cars have many "driver assist" features. Things like lane following and emergency braking. Car speed-warning devices are spreading, all cars sold after 2030 in California will be equipped with either GPS or a front-facing camera that will give warnings if a driver is travelling more than 10 miles over the limit. Tech Guru Peter Marks, software developer and technology commentator from Access Informatics with Philip Clark on Nightlife with all the latest news and issues in technology. 

You can listen here.

Thursday, September 19, 2024

Radio Old Timers Club AGM

The Radio Old Timers Club annual general meeting and lunch was well attended by members of MRARC. Peter VK3RV, Jen VK3WQ, Ray VK3ACR and Peter VK3TPM attended. Old friends Nigel VK3DZ and Peter VK3YPG were also there. 


First the meeting kicked off with the annual general meeting which was conducted efficiently by Jim Gordon VK3ZKK with some members on Zoom.

Next a hearty lunch was served.

Mick VK3CH gave a detailed presentation about microwave operation.


Lots of gear was on hand but unfortunately wasn't turned on.


Don VK3BIG brought along what must surely be a new disruptive technology that could spell the end of FM radio - an AM stereo receiver.


Wonders will never cease! Nigel, VK3DZ is clearly boggled by this advancement.

Tuesday, September 17, 2024

50 Years of G-QRP Book review

Australian QRP and home brew enthusiasts typically subscribe to two fine newsletters, the local Lo-Key from the VKQRP club and the British SPRAT from the G-QRP club. Both are A5 format newsletters packed full of interesting projects and ideas. They are of sufficient quality to stand many re-readings over the years but it’s sometimes hard to find an item that comes to mind in the pile.
Lo-Key has an index and SPRAT sells back issues on CD or USB key.

When I heard of the publication of a book to celebrate 50 years of SPRAT, I didn’t hesitate to order a copy.

The G-QRP club was founded in 1974 by Reverend George Dobbs G3RJV (SK) who commented that there might be a demand for a newsletter “if there’s enough interest”. It turns out that there is.

Ed Durrant, G8GLM, has put together a fascinating selection of articles drawn from SPRAT over time. They are clearly marked with the year of publication and show the progression of technology available to the hobbyist over the 50 years. Beginning with low valve count gear and ending with SDR technology.

The book’s selection of projects is broken down into Transmitters, Receivers, Transceivers, Antenna systems, Test equipment, and Miscellaneous topics.

Although widely available components have changed over the years there is lots of great ideas within the collection that are still relevant today. There are charming mentions of the help that writers have received from other home brewing QRP operators. 

Many of the articles mention familiar names from other writing including Doug Hendricks KI6DS, Pete N6QW, Charlie ZL2CTM, Eric ZL2BMI, Roger G3XBM, and Wes Hayward W7ZOI. There’s a good number of VKs mentioned. I haven’t spotted VK3YE, but he’s probably there somewhere.

A few of the articles are reproduced with low contrast – I guess they’ve been scanned. Early items are charmingly typeset on manual typewriters. For the 100th edition I’d like to see an index added.

The book is available via the RSGB shop for £17.99 and less for members.