Monday, February 24, 2020

Other projects

What time is it?
GPS

I bought a GPS module from adafruit and have been decoding location and time information.  It makes a fun clock when paired with a LED matrix display.  I have to thin down the font to get all the digits to fit...


Halloween fun
Another use for a couple of LED matrix displays...
I call him Morte

Wednesday, August 9, 2017

Lightning Strikes!

We've had an active summer weather-wise.  During one storm, our neighbor's tree was struck by lightning which caused it to split down the middle.  While no other structural damage was done, the resulting EMP did cause a few issues in my house.  Some ports in my network switch failed, my Synology NAS ethernet port failed, and my SSB6.1 kit blew out its receiver (I can still hear loud signals but really faintly).

Fortunately I was able to switch ethernet cabling to unused working ports so I still have Internet access (phew!) and my replacement Synology unit accepted my disks without problems so my network backup is online again.  Thumbs up to Synology -- it recognized that the disks came from another unit and it just worked without fuss.

I decided to get another SSB6.1 kit and start again.  I made a few mistakes with my first build (as described in my other posts) and with the RX amps blown, it seemed like a good time for a clean build.

I just received the kit in the mail and noticed that the board revision is labeled as 'rev: 20170511' which is pretty recent!  The board looks the same so I'm not sure what the updates are.  One difference with this kit is that all the ICs are surface mount whereas my old one had through-hole parts for the SA602 mixers and the opto-isolators.  However, the board layout is still designed for through-hole SA602 chips and it includes adapter boards to mount the surface mount chips to the board.  Hopefully the new kit has all the discrete parts included...

With this build, I am going to make the following changes:
  • have the voltage regulator off the board
  • put the audio amp on another board
  • use components for the 17 meter band instead of 80m
  • be more careful tuning the coils so the slug does not fall off the threads to the bottom...
My case for the radio is a bit thin (about 3 cm) so I am going to move the regulator off the main board.  Mounting it onto the case will give it a decent heat sink.  The audio amp given with the kit (TDA2003) also runs warm so mounting it on the case may be the way to go.  While that chip is pretty hardy and can take a beating (it is used for car radios), it does run a bit warm for my tastes so I may try substituting another amp (cheap LM386?).  Also, having the audio amp off board will make it easier to insert an audio filter before the amplifier.  This one from SotaBeams looks interesting.

Sunday, June 12, 2016

Bringing it all together

User Interface board
Today was the first time I wired everything together.

The major update for today was to use the SX1509 I/O expander with a 3x4 keypad.  Lessons learned included wiring the thing up correctly!  I was stumped for a while when the SX1509 stopped working which turned out to be due to the I2C pins being one pin off on the breadboard.  Close is not good enough!  ;-)

Control and UI boards
I wired up the volume and bandwidth digital pots and added support for updates from the UI board.  Of course I had an issue where my volume updates seem to work but the value was not retained by the control Arduino.  It turns out I needed to use the volatile keyword on a boolean flag used to indicate the end of a data packet (always use volatile for variables that are shared with an interrupt routine!).

I am now able to quickly change bands/modes and use the optical encoder to set the frequency, volume, and rx bandwidth.

So, what's next?
  • Decide how to add 17 meters by using the 80m filter slot.
  • Try the transmitter!
  • Add a tx amplifier  (20 to 40 watts would be nice)
  • Add tx post amp filters
  • Add a T/R relay
Stay tuned!

Saturday, June 11, 2016

A Knob!

Man, a knob really makes a big difference in usability!  I found this aluminum knob on Amazon of all places.

I have been wanting to replace the analog poteniometers with digital pots.  I picked up a few from Sparkfun (Microchip MCP4131).  They are very easy to get working; just throw them on the SPI bus with a chip select and give it 16 bits to set the pot value.  These chips only support 7 bit values (only 127 different values) but that may be good enough (they're definitely good enough to get started).

Since I am now throwing a bunch of chips on the SPI bus, I am running out of pins to use as data and chip selects.  Enter the 74hc595 shift register!  I decided to use two of these to extend my outputs.  One is used as the band and mode selection; the band selection uses the lower three bits (fed into the 3-8 decoder) with two other bits to select the mode (only USB or LSB).  This leaves a few more pins for other modes or other future expansion.   The other '595 is being used as the peripheral chip selects; currently only selecting the digital pots.   The great thing is that I used the built in SPI pins and library to drive the chips -- very cool!

A knob on the UI and digital poteniometers and bus drivers
Now I just have to write code that allows the UI to set the digital pot values -- they are currently hard coded and are set at startup.

Tuesday, May 17, 2016

Rearange

I'm right handed so I rearanged the radio and interface boards around to make it more comfortable to play with.  Now I really need a knob 'cause spinning the encoder shaft is tedious...

No button debouncing was terrible so I whipped up a basic timer comparison test and now band selecting actually works.


Right above the Si5351 board from Adafruit are two potentiometers currently wired to the SSB6.1 labeled as WB/BW and WP/PW on the schematic.  I believe WB/BW is for the receiver band width control and adjusting it does seem to change the audio response.  I think the WP/PW pot controls the mic gain.  Above the two pots are three digital potentiometers I got from SparkFun I want to use instead of the analog pots.  I'd like to be able to use the remote UI to control the radio volume, rx band width, and mic gain and digital pots should do the trick.

Saturday, May 14, 2016

SSB6.1 tranceiver with separate UI

I worked on getting a minimalist user interface working with the microView, a optical encoder, and a single button.  The button cycles through the 6 bands.  I did not add any debouncing code so each button press can result in one or several band changes; it makes selecting the band a bit challenging.  I'll work on integrating the SX1509 I/O expander during the next build.

The minimal user interface is on its own breadboard
The microView interacts with the Arduino pro mini via the TTL serial port.  The band button causes the uView to send commands to set the band and frequency while turning the encoder sends delta frequency commands.  On the display I show the band, the frequency the UI thinks is correct, and the frequency the DDS actually is generating.  So far the 2 controllers seem to keep in sync but I did incorporate a syncing mechanism to make sure they are.

Sunday, May 1, 2016

SSB6.1 RTX with band switching

I made some progress with the SSB6.1 radio.  I wound and added the two 40 meter coils and two of the plastic connectors.  I decided it would be easier to use Female-Male jumpers instead of continuing to tack-solder Male-Male jumpers to the PCB.  It turns out that my tack-soldering was a bit more substantial than I had hoped -- one connection required a lot of solder wick to clean and I manged to lift the PCB foil.  Oops!  Well, stuff happens...  I wired up a small jumper on the bottom of the connector and I'll run it directly to the opto-isolator input pin...

I decided to split the radio control from the user interface.  The radio control will use an Arduino Pro Mini while the user interface can vary as desired.  The connection between the two will be via a TTL serial port possibly using RS-485.  This will allow me to have a sealed RF deck and have a remote user interface.

The SSB6.1 has 6 input pins used to select the band.  I wired up a 74hc295 (a 3 to 8 demultiplexor / decoder) to control the band selection.  This chip has 3 digital inputs (binary 0 to 7) and will assert 1 of 8 outputs.  In this application, this will allow only one band to be active at a time.  Fortunately I had a couple in my parts bin (any guesses as to how long?).  It's been sitting in the package for a while but it still works!

There are 4 other inputs to the SSB6.1.  Two are used to select the sideband and two are used to allow SSB or CW transmit keying.  One is labeled as 'CW' and the other is mysteriously labeled 'DT' (on the schematic, this is the DDSPTT input for SSB keying).  I am currently using a couple of digital output pins on the Arduino to select either upper or lower sideband. It's simple and I have a few pins on the Arduino.

On a whim, I threw some $$ at a kickstarter campaign for a fun speech chip that I may use to provide voice feedback.   There is even a version of the chip with words centered around communications (like phonetics).  It should be interesting to play with.

From top left clockwise:  the voice chip, the Arduino Pro Mini with the 74hc295 below it, the SSB6.1, the Si5351 DDS, and finally my trusty old Radio Shack digital logic probe.

With the band and mode selection and a serial connection to the PC in place, I can set the frequency, the band filter, and the mode via keyboard commands.  And, 40 meters sounds great!  :-)