uBitX module - Mods

This and the uBitx mods pages contain the mods I applied to my uBitx.

1st mod : RF-Gain is a must.

A extra 5K liniear variable resistor was added the be used for RF-GAIN control. One thing I found out on my BitX40 that its a must. The mod I used is the same as I used in my BitX40.

ND6T has it all worked out nicely for the uBitX : http://www.nd6t.com/uBITX/RF%20Gain.htm which also can be used as a good startpoint for adding a AGC http://www.nd6t.com/uBITX/AGC.htm.

 

2th mod : custom firmware

The original firmware wasn't working for me at the moment. One thing I really mised was a option to change the steps and quickly switch bands like I had added to the DDS for my BitX40I added step switching and bandswitching.

The sources can be found at : https://github.com/ph2lb/ubitx4

One thing I foud out is that when I applied my modifications I was using a lot of dynamic memory so I even got a warning about that from the compiler. Using strings in Arduino software is a tricky thing. Every variable (so also strings) are stored in RAM and when you use a lot of them it will count.

But when you use a lot of strings (and don't change them so constants), you can store them in PROGMEM with the F(...) macro. Using a lower RAM footprint. You only have to use strcpy_P etc. when you want to work with them. Serial.print(ln) knows it by default. 

The uBitx4 codebase uses a lot of strings, so below are the compiler results of the initial codebase :

Sketch uses 17544 bytes (57%) of program storage space. Maximum is 30720 bytes.
Global variables use 1455 bytes (71%) of dynamic memory, leaving 593 bytes for local variables. Maximum is 2048 bytes.

And now the uBitx4 codebase with F(...) macro and some minor changes to allow F(...) be handled:

Sketch uses 17740 bytes (57%) of program storage space. Maximum is 30720 bytes.
Global variables use 688 bytes (33%) of dynamic memory, leaving 1360 bytes for local variables. Maximum is 2048 bytes.

You use 50% less dynamic memory (1455 down to 688) at a cost of 196 bytes of flash.

Below you find the compiler result of my custom codebase with mods :

Sketch uses 19924 bytes (64%) of program storage space. Maximum is 30720 bytes.
Global variables use 986 bytes (48%) of dynamic memory, leaving 1062 bytes for local variables. Maximum is 2048 bytes.

Yes is bigger, but it's has some larger arrays with a PA band plan in it and a few aditional functions the handle bandswitching and steps on a more human way (not click menu, scroll, click, scroll, click) with a PCF8745 IO extender for direct menu function activation (Band up/down, Step larger/smaller, USB/LSB, VFOA/B).

See : fith mod below.

 

3th mod : adding extra buttons (replaced by fifth mod)

Note : I use a new button detection system (see fifth mod below).

Menu's aren't my thing and for some actions I just want to puch a button. So I added a series of direct menu buttons like STEP, VFO A/B, BAND, MENU and one hole (thought I had one button more on stock which I didn't) to the uBitx.

I used the ANALOG_SPARE (A7) input on the DDS controler and added a resistor ladder with buttons to ground.

The setup is : 
A7 - [4k7] - VCC
A7 - [4K7] - [SW] - GND (Button 1)
A7 - [3K3] - [SW] - GND (Button 2)
A7 - [2K2] - [SW] - GND (Button 3)
A7 - [1K5] - [SW] - GND (Button 4)
A7 - [1K0] - [SW] - GND (Button 5)

I will add a drawing later.

The configuration for now is (top to bottom, left to right) :

Just a hole :-) (maybe switch between LSB/USB)
Select band
Open menu
Switch between VFO A/B
Select step (10, 50, 100, 500, 1K, 5K, 10K)

The main dial switch is still linked to the original button down (open menu) configuration.

 

4th mod : dynamic microphone amplifier.

I don't have good experienc with the supplied microphone and prevere to work with dynamic microphones like used on my old Yaesu's and use on my ILER QRP radio's.

Knowing the audio quality of the ILER I decided to take the microphone preamp from that schematic (link to manual) and build it on a prototype breadboard.

 

Some tests later and injecting that output into my uBitX it was time to go for a permanent build. For that I used the ManhattanStyle soldering methode which I like to use in RF based designs. And after a bit of puzzeling and tweaking it was ready for some test.

Hooking it up to a dynamic microphone, my scoop and powersupply.It was smoke time.

But not smoke signals and when whistling in the microphone my oscilloscoop shown a nce 20x gain.

I cut the PCB to a size so it would fit in the uBitX case. Leaving enough room for aditional off-board mods like a build in crystal oscilator for calibration (still have a bunch of high quality 10Mhz crystals laying around).

Powering it up and the output of some speech.

I just have to say that I'm very happy with this mod.

 

5th mod : again adding extra buttons.

Like said menu's aren't my thing and for some actions I just want to puch a button. The previouse analog resistor button method worked but I was missing a few options like simple switching between bands and changes steps up and down without spinning the dail. And for the analog resistor button technic there is only that much buttons who you can detect correctly so I changed the system by using a PCF8574AP I2C IO Extender.

The schematic is pretty straight forward and shown below (thanks Gilles F1BFU for pointing me out that the schematic was missing):

NOTE : in the schematic I have written the wrong part number so PCF8745AP should be PCF8574AP.

The Raduino all-ready has a I2C bus for the SI5351A and the I2C bus  (A4, A5, 5V and GND) is easy accessible on the back of the Raduino. 4 wires and a 4p header and the bus is extended (now hoping that RF isn't a problem, but time will tell that).

For the PCF8574AP I2C IO Extender I decided to add a additional PCB to the uBitx mounted on the left side panel. That way I would have aditional PCB space for future additions in the power area (picture below all-ready showing 2 additional mods). I connected all the adres pins to ground so the address is 0x38. On power up all the IO pins of the PCF8574AP are configured to Inputs so no configuration is needed. The pushbuttons are connected between the IO pins and ground.

NOTE : in the schematic and layout photo I have written the wrong part number so PCF8745AP should be PCF8574AP.

 

The configuration for now is (left to right, top to bottom) :

Lower band 
Higher band  
Smaller step 
Larger step 
Switch between USB/LSB (spare)
Open menu
Switch between USB/LSB
Switch between VFO A/B

The main dial switch is still linked to the original button down (open menu) configuration.

Also you see the new buttons I made on the Latch out of polycarbonate for my uBitx.

6th mod : removing 7805 from Raduino and reverse power protection.

The 7505 on the Raduino is getting to hot to my idea and adding a small heatsink doesn't make the cut either. The Raduino pulls aprox 125mA and when you have to 7V (12V - 5V), it has to burn almost 1W of power. That was to much for the small heatsink I used.

So when I had to add a PCB for the PCF8745AP I2C IO Extender I decided to remove the 7805 from the Raduino and add it on that PCB on a larger out-of-the-junkbox heatsink, a few wires between that PCB and the Raduino and bobs your uncle.

The schematic is pretty straight forward and shown below. Because the GND pint from the 7805 is connected to the chassis of the 7805 there is no problem with the installation of the heatsink :

Also I wanted to add a good reversed voltage polarity to my uBitx. I haved build a few with P-FETs who work great.

The schematic is shown below. I have used a P-FET which has the G-D-S pinout. Also check the datasheet to what pin the P-FET chassis is connected (I had to isolate it from the GND plane).

NOTE : in the schematic and layout photo I have written the wrong part number so PCF8745AP should be PCF8574AP.

How reversed voltage polarity protection with P-FETs works? Check out this great video :

Here's the result of this mod (on the right side of the uBitx).

 

Not bored yet? Continue on the next page for more mods.