Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
My problem is that I tend to build QRP stuff, which is on the small side with very low mass. These Mickey Mouse hands end up pushing the rig across the table when I use a touch screen. OTOH, I've used some 100W transceivers with touch screen features and it works better because its mass doesn't let it move easily. I guess it's the same old answer: "It depends."
Jack, W8TEE
toggle quoted message
Show quoted text
From: Michael Hagen <motdog@...> To: [email protected] Sent: Tuesday, October 10, 2017 10:21 PM Subject: Re: [BITX20] VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
Me to.? Don't have enough Windex to get the slobber
off the screen!
Mike, WA6ISP
On 10/10/2017 7:08 PM, Steve Black via
Groups.Io wrote:
I hate touch screens! Fat fingers and shaky
hands with tiny screens are a bad combination. Steve kb1chu
On 10/10/2017 09:41 PM, Jack Purdum
via Groups.Io wrote:
Very
interesting videos.
Does anyone
know of a study of the preference of hams between touch
screen and knobs/buttons?
Jack, W8TEE
From:
Joe <joeman2116@...>
To: [email protected]
Sent:
Tuesday, October 10, 2017 6:58 PM
Subject:
[BITX20] VU2SPF - Universal VFO/BFO with Si5351 and
TFT touch screen for BITX like txcvr - Release v2.5
·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal
VFO/BFO with Si5351 and TFT touch screen for
BITX like txcvr
?
Author
- VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
?
?
Project
Support - VE1BWV, Joseph Basque, CANADA
? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ? ??
?
(Ver
2.5)
DOWNLOAD
?
Watch
videos produced by Joe Basque on YouTube ?- Look
for VU2SPF / VE1BWV.
Also on
Facebook BITX group.
?
Main
Features :
? 
?
?
- Uses low cost Si5351 for generating two
independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently
used stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen /
buttons. Also works with fixed BFO systems like HF
Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and
right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic,
thus reducing memory write operations to extend
life? of CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour
display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded
/ adjustable in program code.
- Continuous frequency output mode (frequency
generator mode).
- Uses standard Arduino Mega 2560. No soldering
and assembled in short time with any standard 5351
breakout board.
- Also available a special shield designed for
freq generator and other control lines ( our 5351
breakout board) which mounts on the Arduino Mega
in the remaining space next to TFT.
- Also possible to connect external rotary
encoder and? buttons working parallelly with Touch
screen controls.
- PTT from Touch screen or external switch (mic
/ front panel / foot switch ) with toggle or
continuous press types.
- PTT timeout to reduce Final amplifier
heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs
and LPFs from digital pins of Arduino Mega under
Program control. Thus easy implementation for
multibander rigs.
- Many digital outputs and Analog inputs for?
additional? controls still available for other
extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by
touching in the button area. The screen has
several touch buttons and their corresponding
information is displayed on the button itself. The
function of each button is described below:
?
VFO button: Repeatedly
touching this button rotates between? VFO A, VFO B
and Memory(M) VFO. This selects the VFO which will
be active. A, B or M is displayed below this
button and to the left of frequency display.
?
Mem ## : Shows the currently
selected memory channel number (01 to 100). On
touching right half of the button the memory
number increases from 00 to 100. Touching the left
half of this button decreases memory channel
number. On changing the memory number,? the stored
information (vfo frequency, bfo frequency,
sideband) from EEPROM memory is read and copied to
VFO M. If the M was selected using VFO button, the
selected frequency will be output on VFO. If A or
B are selected then memory contents would be
displayed below frequency button on right side as
M xxxxxxxx.
?
Rx / Tx : on touching? Rx
button the PTT is activated and the button turns
RED with Tx displayed. If PTT Timeout is active
(using ¡®TxTmO¡¯ button below) then it would
automatically go back to Receive mode after a
preset time out (this time is user controlled in
program). In this mode the remaining time is also
displayed in seconds on Red Tx button .
?
Frequency Display : The?
selected active vfo is displayed here. On
selecting a different VFO or MemCh the display
shows previously saved frequency for that VFO.
Touching anywhere in the right half of this
display button increases frequency by frequency
steps displayed below it in the center (1Hz to
1MHz). Similarly the touch in left half of button
would decrease the frequency by step Hz.
?
Secondary Frequency Display :
Below the active frequency button the other two
VFOs are displayed for information. If VFO A is
active, then VFO B and Memory VFO are displayed
under the main frequency display. Similarly when
Mem VFO is active the VFO A and B are displayed
below. (These are purely for information of non
active VFOs? and are not active buttons and have
no effect on touching.)
?
Band : Displays the HAM band
corresponding to current active VFO. Touching
right / left half of this button sequentially
changes the bands. Band frequency limits can be
set in the program. There is a continuous freq
generator mode for in between band frequencies.
?
Steps : This button displays
and changes current step size. Initial power up
step size is 1KHz. Step size can be increased or
decreased by touching right half or left? half of
the button. Steps are sequenced in powers of 10,
from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz,
100kHz, 1MHz).
?
Side Band : Switching between
USB and LSB is done by touching this button. The
side band switching is done by adjusting the VFO
frequency alone for fixed BFO rigs (e.g. Bitx40
from HFSigs)? and by adjusting BFO frequency for
programmable BFO? types of rigs.
?
BFO : The current BFO
frequency is displayed here and can be increased
or decreased by step size by touching on right and
left half of the button. This is the real experimenter¡¯s
button and is kept with a view that the
same VFO/BFO generator could be used with a
variety of transceivers having different BFO
requirements (e.g. Bitx with 10 MHz xtal filter
needs BFO around 9.9940 MHz? while a Bitx using 12
MHz xtal filter needs a BFO of about 11.9940 MHz).
It is real fun listening to radio while adjusting
BFO frequency in small steps to get best sounding
station.
?
VFO > < Mem :?
(displayed as V > <M)??? On touching the
left half of this button the currently selected
VFO (A or B) will be copied to Memory VFO ( not
saved yet on EEPROM), the right half of the button
will copy the content of Memory VFO on the
currently selected VFO (A/B).
?
SAVE : Touching this button
will save currently active VFO in EEPROM memory.
VFOs A, B and 100 Memory channels are kept on
EEPROM. Only currently displayed VFO is saved to
its corresponding memory location. It saves vfo
and bfo frequencies and current sideband. During
save process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate
button) : This button will activate the Time out
function of PTT. The PTT would automatically get
deactivated after the timeout period. The period
is adjustable from within the program. Very useful
when using toggle PTT
?
The Three Fx buttons are yet to assigned. Your
suggestions are welcome for functions of these
buttons.
?
?
The Hardware
MODIFIED ATMEGA -
ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we
use? standard off the shelf components.? A
standard Arduino Mega 2560 is the base system on
which compatible TFT display cum touch screen
shield is mounted. A standard breakout board for
frequency generating chip 5351 may be connected to
Arduino using two control wires (SCL, SCK),? and
of course the common ground wire plus the 3 V or 5
V power? supply. A PCB for 5351 is also designed
for the more adventurous hams. Details of the PCB
with schematic are given later.? All buttons are
22 connected between the pin and ground.
?
Though all operations of this VFO are
controlled from the touch panel, for those who
prefer or need buttons and rotary encoder, it is
easy to connect push buttons for almost all
functions and also a standard rotary encoder. For
connecting the external encoder and buttons a
number of pins are available on Arduino board.
These pins are allocated in the sketch and can be
reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes
all functions related to VFO and BFO needed in a
typical transceiver like Bitx. Due to varieties in
the transceiver design, the sketch is kept
flexible and may be adopted for a particular
transceiver using some parameters in the program.
Details are given in a separate section below. To
make the large sketch manageable, it is divided
into smaller parts, all of which must reside in
the same directory.? The main sketch is called
TFT_VFO_SPF_vxxx.ino, where vxxx indicated its
version.? This and remaining 5 parts of the sketch
must be located in a directory with the name of
TFT_VFO_SPF_vxxx, all the other programs should
also be placed in the same folder. The names and
brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program
where the execution begins.
2.? EPROMAnything.h? - Handles read write to
EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are
common for? operation
4.? DispPos.ino? - Calculations regarding
displays
5.? Displays.ino ¨C All functions needed to
display various parameters
6.? saveNsetup.ino? - functions for setup and
various types of saves
?
?
User Programmable
Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch
somewhere near the beginning, there is a section
named ¡°USER SELECTABLE DEFINITIONS¡±.? Parameters
may be changed/ adjusted as suited to hardware and
operational practice. The? ¡°#define¡±? statements
are used to select parameters, based on which,
some decisions are made later in the program. To
define parameters these statements should be
uncommented. Similarly, to undefine, there should
be two slashes (//) at the beginning of the line.?
Many of these are hardware dependent, e.g. model
of the bitx or other transceiver. Briefly some of
these are explained below:
?
FIXED_BFO ¨C It is defined? if the fixed
frequency BFO is generated by onboard oscillator
and cannot be altered dynamically by the program
(e.g. in Bitx40 from Hfsig, the BFO is fixed xtal
Oscillator producing about 11997000Hz). The other
option may be to generate BFO from one of the
three oscillators of Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz
xtals as IF Filter. Earlier models had 10MHz IF.
Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to
compensate for minor differences in output
frequency of Si5351 IC. Generally a program to
calibrate and find this offset ships with the
Ether kit¡¯s 5351 library.
?
To accommodate amazing variety in TFT displays,
we have to define the display type and some
parameters for different displays. A few of these
displays have been tested and more may be included
soon. For example? elegoo923 and? MCUF0x154 are
names given to typical displays. These may not be
standard names. More display types may find their
place in this section of the program.
?
Several push buttons may be connected to
predefined pins as shown below and this allocation
may be changed here in this section. One typical
Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53
will change bands on repeated push. Similarly many
other functional buttons are defined and used.
There is a short description of the function of
that Arduino pin as comments on the same line.
?
ts_delay? - sets the? delay between touch
button to reduce sensitivity. Some touch buttons
may trigger several times when touched briefly, if
this delay is small.
?
Tx_timeout? - set time in sec for which the Tx
works continuously and then switches back to Rx in
Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the
difference in frequency, These offsets are to be?
determined experimentally by tuning to a known
frequency station.?
?
?
Building Notes
?
Several Methods and
Tips which? have been used to? put this
project together
?
- One method? - A separate shield board?
developed to accompany the TFT. It contains a
Si5351 as VFO/BFO generator and also an
extender, as all free digital I/O pins and
Analog Inputs have been brought out on the edge
of the board on the other side to make it easier
to connect to main board as well as keep the
front? reasonably flat for fitting on the front
panel of the homebrewed.? VU2SPF has designed
the circuits and PCB. which you can build /
produce, home brew style.
- The second method is to use a display, and
Adafruit Si5351 DDS board and a modified
Atmega 2560. Using this method you can
plug the display directly into the Atmega. Next
you add strip sockets to the rear pins of the
atmega.. This allows you to plug the required
and or optional external wiring to external
devices and from the rear of the atmega. Without
the mod the front is mostly covered by the
display which makes it difficult to get access
to the atmega pins.
- The same as method 2, except just solder
wires directly to the rear of the Atmega
- Hash or noise control
- After building several versions of this
project I found digital hash noise to be quite
low.? But additional filtering will make it even
better.? I have used simple hash filters using a
1000mfd cap followed a 2 - 12 ohm resistor in
series with another 10000mfd cap. Basically two
capacitors? with a resistor in between, simple
but very effective.?? Use shielded cable where
possible, especially from the dds output to the
radio VFO connection.? Also, shielded cable from
the rotary encoder is a good idea¡. if you
decide to add one¡..however, Touch control by
itself is very good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user
options. There are 3 areas at the beginning of
the code which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your
radio, the code can take care of it for you
- Display selections.? currently 2 choices, but
you can add your own
- IF freq - depending on your radio you will
need to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can
just change the variable for whatever value you
desire.
- The code for the BAND selection? is
implemented, all you have to do is pick the band
and match it to the atmega pin - + 5v.
- There are many predefined buttons available ,
just pick the one you want and add your switch.?
On side to the atmega pin and the other to
ground. These are optional as the touch control
has all the functions? already.
ENJOY.
73
VE1BWV
--
Mike Hagen, WA6ISP
10917 Bryant Street
Yucaipa, Ca. 92399
(909) 918-0058
PayPal ID "MotDog@..."
Mike@...
|
Re: Multibanding a Bitx40 questions
"Seems like something for big project?...Lots more than you need for BitX?"
Very true...heh, heh, heh...
Jack, W8TEE
toggle quoted message
Show quoted text
From: Michael Hagen <motdog@...> To: [email protected] Sent: Tuesday, October 10, 2017 9:40 PM Subject: Re: [BITX20] Multibanding a Bitx40 questions
I just bought a Teensy Weenie 3.6 because of this
group.? Wow, lots of pins and Yes the Arduino conversion works.
I have run some of the examples.? Don't know what
I will do with it?
48 Pins and lots of Speed. Memory card slot?
So, it does work in Arduino IDE with little pain.
Seems like something for big project?
Mouser or Spark Fun, about $30.
Lots more than you need for BitX?
Mike, WA6ISP
10/2017 6:19 PM, Jack Purdum via Groups.Io wrote:
Allard has
crammed an amazing amount of functionality into that poor Nano
and its resource base is just about gone. It might be time to
upgrade to a Mega 2560 or maybe even a Teensy if the
horsepower is needed. I don't understand the advantage of the
rotary switch over a rotary encoder. That would give you the
flexibility to use a state machine to control band switching.
After locking Allard in the claustrophobic space of the Nano,
a Mega would feel like the Grand Canyon to him...imagine what
he would do with that resource base! Seems to me that this is
a cards-on-the-table-anything-goes moment for builders.
Jack, W8TEE
I've
got the QRP Labs parts to make this happen (2x Relay
boards, and 80m, 60m, 40m, and 20m LPFs and BPFs)
but haven't started the mods yet.? Life always gets
hectic during Autumn, so I'm hoping I have more time
to work on this come January (after my daughter's
ballet season.)
The one thing I haven't figured out yet is how to
select the band.? We could do it in software on the
display with knob/buttons, then have the Raduino
output a band select signal.? Would require a GPIO
for every band, or some fancy interface hardware to
reduce the number of pins used, and the current
modifications supported by Allard's software just
don't have this many pins.
Instead, I'm thinking of using a 2P6T rotary switch
like [1], and doing two things with it:
1: Put a voltage divider ladder on one pole that
generates an analog voltage to send to the
microcontroller to sense which position the switch
is in.? All 6 positions (and a lot more) can be
sensed with a single pin.? Then, the Raduino will
know which VFO frequency to use.
2: Use the other pole to drive the relay boards
directly.? No RF through the switch (we'd need 4
poles for that, and we'd still need a way to mount
all the filters!), just a 5v line to select which
relay on the relay boards is energized.? One line
can drive both relay boards. (Just make sure you
have the filters in the same positions!)
Any better ideas?
-Mark
[1]
On
10/10/2017 05:07 PM, Dexter N Muir wrote:
Hi David
?Until code shows up, the prep-work can be
done. Lift the bits of the BPF an LPF from the
BitX if needed, possibly reconstruct as an
external, install the relay kit and
hard-wire-enable the 40m (from the BitX or
external). The when code shows up (or you learn
to do it) do the switching thing.
Best of luck - DexZL2DEX
--
Mike Hagen, WA6ISP
10917 Bryant Street
Yucaipa, Ca. 92399
(909) 918-0058
PayPal ID "MotDog@..."
Mike@...
|
Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
I'm used to 'em. Three of my scopes are touch screen. You eventually get used to it.
Vince.
toggle quoted message
Show quoted text
On 10/10/2017 10:08 PM, Steve Black via Groups.Io wrote: I hate touch screens! Fat fingers and shaky hands with tiny screens are a bad combination. Steve kb1chu
On 10/10/2017 09:41 PM, Jack Purdum via Groups.Io wrote:
Very interesting videos.
Does anyone know of a study of the preference of hams between touch screen and knobs/buttons?
Jack, W8TEE
------------------------------------------------------------------------ *From:* Joe <joeman2116@...> *To:* [email protected] *Sent:* Tuesday, October 10, 2017 6:58 PM *Subject:* [BITX20] VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
*·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ * *Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr *
*Author - VU2SPF, SP Bhatnagar, Bhavnagar, INDIA * * <> * * *Project Support - VE1BWV, Joseph Basque, CANADA* * *
(Ver 2.5) DOWNLOAD Watch videos produced by Joe Basque on YouTube - Look for VU2SPF / VE1BWV. Also on Facebook BITX group.
*Main Features :*
- Uses low cost Si5351 for generating two independent VFO and BFO frequencies. - Touch screen controlled UI on colour TFT. - Two VFOs A/B and one Memory VFO. - 100 memory channels for storing frequently used stations (more channels possible) - Switch between VFO and Memory by touch. - Both VFO and BFO are adjustable from screen / buttons. Also works with fixed BFO systems like HF Sig¡¯s Bitx40. - Some touch buttons are Two Sided (left and right half of button works independently) . - Some touch buttons are Single Push type. - Saving to EEPROM on demand (not automatic, thus reducing memory write operations to extend life of CPU). - Uses low cost MCUFriend 2.4¡± / 2.8¡± colour display. - Horizontal S-meter. - Preset Ham Bands. Band Limits are hard coded / adjustable in program code. - Continuous frequency output mode (frequency generator mode). - Uses standard Arduino Mega 2560. No soldering and assembled in short time with any standard 5351 breakout board. - Also available a special shield designed for freq generator and other control lines ( our 5351 breakout board) which mounts on the Arduino Mega in the remaining space next to TFT. - Also possible to connect external rotary encoder and buttons working parallelly with Touch screen controls. - PTT from Touch screen or external switch (mic / front panel / foot switch ) with toggle or continuous press types. - PTT timeout to reduce Final amplifier heating. - Many user programmable parameters. - Can control several bands by controlling BPFs and LPFs from digital pins of Arduino Mega under Program control. Thus easy implementation for multibander rigs. - Many digital outputs and Analog inputs for additional controls still available for other extensions on Mega.
*User Interface* All functions of the VFO are carried out by touching in the button area. The screen has several touch buttons and their corresponding information is displayed on the button itself. The function of each button is described below:
*VFO button*: Repeatedly touching this button rotates between VFO A, VFO B and Memory(M) VFO. This selects the VFO which will be active. A, B or M is displayed below this button and to the left of frequency display.
*Mem ## *: Shows the currently selected memory channel number (01 to 100). On touching right half of the button the memory number increases from 00 to 100. Touching the left half of this button decreases memory channel number. On changing the memory number, the stored information (vfo frequency, bfo frequency, sideband) from EEPROM memory is read and copied to VFO M. If the M was selected using VFO button, the selected frequency will be output on VFO. If A or B are selected then memory contents would be displayed below frequency button on right side as M xxxxxxxx.
*Rx / Tx *: on touching Rx button the PTT is activated and the button turns RED with Tx displayed. If PTT Timeout is active (using ¡®TxTmO¡¯ button below) then it would automatically go back to Receive mode after a preset time out (this time is user controlled in program). In this mode the remaining time is also displayed in seconds on Red Tx button .
*Frequency Display* : The selected active vfo is displayed here. On selecting a different VFO or MemCh the display shows previously saved frequency for that VFO. Touching anywhere in the right half of this display button increases frequency by frequency steps displayed below it in the center (1Hz to 1MHz). Similarly the touch in left half of button would decrease the frequency by step Hz.
*Secondary Frequency Display* : Below the active frequency button the other two VFOs are displayed for information. If VFO A is active, then VFO B and Memory VFO are displayed under the main frequency display. Similarly when Mem VFO is active the VFO A and B are displayed below. (These are purely for information of non active VFOs and are not active buttons and have no effect on touching.)
*Band* : Displays the HAM band corresponding to current active VFO. Touching right / left half of this button sequentially changes the bands. Band frequency limits can be set in the program. There is a continuous freq generator mode for in between band frequencies.
*Steps* : This button displays and changes current step size. Initial power up step size is 1KHz. Step size can be increased or decreased by touching right half or left half of the button. Steps are sequenced in powers of 10, from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz).
*Side Band* : Switching between USB and LSB is done by touching this button. The side band switching is done by adjusting the VFO frequency alone for fixed BFO rigs (e.g. Bitx40 from HFSigs) and by adjusting BFO frequency for programmable BFO types of rigs.
*BFO* : The current BFO frequency is displayed here and can be increased or decreased by step size by touching on right and left half of the button. This is the real /experimenter¡¯s button/ and is kept with a view that the same VFO/BFO generator could be used with a variety of transceivers having different BFO requirements (e.g. Bitx with 10 MHz xtal filter needs BFO around 9.9940 MHz while a Bitx using 12 MHz xtal filter needs a BFO of about 11.9940 MHz). It is real fun listening to radio while adjusting BFO frequency in small steps to get best sounding station.
*VFO > < Mem *: (displayed as V > <M) On touching the left half of this button the currently selected VFO (A or B) will be copied to Memory VFO ( not saved yet on EEPROM), the right half of the button will copy the content of Memory VFO on the currently selected VFO (A/B).
*SAVE* : Touching this button will save currently active VFO in EEPROM memory. VFOs A, B and 100 Memory channels are kept on EEPROM. Only currently displayed VFO is saved to its corresponding memory location. It saves vfo and bfo frequencies and current sideband. During save process the text display changes to SAVING.
*TxTmO* : (PTT_Time_Out Activate button) : This button will activate the Time out function of PTT. The PTT would automatically get deactivated after the timeout period. The period is adjustable from within the program. Very useful when using toggle PTT
The Three Fx buttons are yet to assigned. Your suggestions are welcome for functions of these buttons.
*The Hardware* MODIFIED ATMEGA - ADDED SOCKETS ON THE REAR To keep the hardware assembling at minimum we use standard off the shelf components. A standard Arduino Mega 2560 is the base system on which compatible TFT display cum touch screen shield is mounted. A standard breakout board for frequency generating chip 5351 may be connected to Arduino using two control wires (SCL, SCK), and of course the common ground wire plus the 3 V or 5 V power supply. A PCB for 5351 is also designed for the more adventurous hams. Details of the PCB with schematic are given later. All buttons are 22 connected between the pin and ground.
Though all operations of this VFO are controlled from the touch panel, for those who prefer or need buttons and rotary encoder, it is easy to connect push buttons for almost all functions and also a standard rotary encoder. For connecting the external encoder and buttons a number of pins are available on Arduino board. These pins are allocated in the sketch and can be reallocated by user.
*The Arduino Sketch*
The arduino program or sketch is accomplishes all functions related to VFO and BFO needed in a typical transceiver like Bitx. Due to varieties in the transceiver design, the sketch is kept flexible and may be adopted for a particular transceiver using some parameters in the program. Details are given in a separate section below. To make the large sketch manageable, it is divided into smaller parts, all of which must reside in the same directory. The main sketch is called TFT_VFO_SPF_vxxx.ino, where vxxx indicated its version. This and remaining 5 parts of the sketch must be located in a directory with the name of TFT_VFO_SPF_vxxx, all the other programs should also be placed in the same folder. The names and brief details of these sketches are :
1. TFT_VFO_SPF_vxxx.ino - the main program where the execution begins. 2. EPROMAnything.h - Handles read write to EPROM where some of the settings are saved 3. CommonFns.ino - All functions which are common for operation 4. DispPos.ino - Calculations regarding displays 5. Displays.ino ¨C All functions needed to display various parameters 6. saveNsetup.ino - functions for setup and various types of saves
*User Programmable Parameters*
Inside the TFT_VFO_SPF_vxxx.ino sketch somewhere near the beginning, there is a section named ¡°USER SELECTABLE DEFINITIONS¡±. Parameters may be changed/ adjusted as suited to hardware and operational practice. The ¡°#define¡± statements are used to select parameters, based on which, some decisions are made later in the program. To define parameters these statements should be uncommented. Similarly, to undefine, there should be two slashes (//) at the beginning of the line. Many of these are hardware dependent, e.g. model of the bitx or other transceiver. Briefly some of these are explained below:
FIXED_BFO ¨C It is defined if the fixed frequency BFO is generated by onboard oscillator and cannot be altered dynamically by the program (e.g. in Bitx40 from Hfsig, the BFO is fixed xtal Oscillator producing about 11997000Hz). The other option may be to generate BFO from one of the three oscillators of Si5351 chip.
IF_12MHZ or IF_10MHZ - Newer Bitx¡¯s use 12 MHz xtals as IF Filter. Earlier models had 10MHz IF. Only one of these should be defined.
Si5351correction ¨C This parameter is used to compensate for minor differences in output frequency of Si5351 IC. Generally a program to calibrate and find this offset ships with the Ether kit¡¯s 5351 library.
To accommodate amazing variety in TFT displays, we have to define the display type and some parameters for different displays. A few of these displays have been tested and more may be included soon. For example elegoo923 and MCUF0x154 are names given to typical displays. These may not be standard names. More display types may find their place in this section of the program.
Several push buttons may be connected to predefined pins as shown below and this allocation may be changed here in this section. One typical Example: #define BandSelect 53 indicates that a button connected at Pin D53 will change bands on repeated push. Similarly many other functional buttons are defined and used. There is a short description of the function of that Arduino pin as comments on the same line.
ts_delay - sets the delay between touch button to reduce sensitivity. Some touch buttons may trigger several times when touched briefly, if this delay is small.
Tx_timeout - set time in sec for which the Tx works continuously and then switches back to Rx in Tx Time out mode (toggled by TxTmO button)
offset and if_offset ¨C compensate for the difference in frequency, These offsets are to be determined experimentally by tuning to a known frequency station.
*_Building Notes_*
*_Several Methods and Tips which have been used to put this project together_*
1. One method - A separate shield board developed to accompany the TFT. It contains a Si5351 as VFO/BFO generator and also an extender, as all free digital I/O pins and Analog Inputs have been brought out on the edge of the board on the other side to make it easier to connect to main board as well as keep the front reasonably flat for fitting on the front panel of the homebrewed. VU2SPF has designed the circuits and PCB. which you can build / produce, home brew style.
2. The second method is to use a display, and Adafruit Si5351 DDS board and a _modified Atmega 2560_. Using this method you can plug the display directly into the Atmega. Next you add strip sockets to the rear pins of the atmega.. This allows you to plug the required and or optional external wiring to external devices and from the rear of the atmega. Without the mod the front is mostly covered by the display which makes it difficult to get access to the atmega pins.
3. The same as method 2, except just _solder wires directly to the rear_ of the Atmega
4. *_Hash or noise control_* - After building several versions of this project I found digital hash noise to be quite low. But additional filtering will make it even better. I have used simple hash filters using a 1000mfd cap followed a 2 - 12 ohm resistor in series with another 10000mfd cap. Basically two capacitors with a resistor in between, simple but very effective. Use shielded cable where possible, especially from the dds output to the radio VFO connection. Also, shielded cable from the rotary encoder is a good idea¡. if you decide to add one¡..however, Touch control by itself is very good..
*_SOFTWARE NOTES_*
1. The internal arduino code has many user options. There are 3 areas at the beginning of the code which the user may need to change.
2. Fixed or Variable BFOs. .depending on your radio, the code can take care of it for you
3. Display selections. currently 2 choices, but you can add your own
4. IF freq - depending on your radio you will need to choose. 10 mhz and 12 mhz.
5. TXTimeout Timer - is set for 60 but you can just change the variable for whatever value you desire.
6. The code for the BAND selection is implemented, all you have to do is pick the band and match it to the atmega pin - + 5v.
7. There are many predefined buttons available , just pick the one you want and add your switch. On side to the atmega pin and the other to ground. These are optional as the touch control has all the functions already.
ENJOY. 73 VE1BWV
-- Michigan VHF Corp.
|
Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
Me to.? Don't have enough Windex to get the slobber
off the screen!
Mike, WA6ISP
On 10/10/2017 7:08 PM, Steve Black via
Groups.Io wrote:
I hate touch screens! Fat fingers and shaky
hands with tiny screens are a bad combination. Steve kb1chu
On 10/10/2017 09:41 PM, Jack Purdum
via Groups.Io wrote:
Very
interesting videos.
Does anyone
know of a study of the preference of hams between touch
screen and knobs/buttons?
Jack, W8TEE
From:
Joe <joeman2116@...>
To: [email protected]
Sent:
Tuesday, October 10, 2017 6:58 PM
Subject:
[BITX20] VU2SPF - Universal VFO/BFO with Si5351 and
TFT touch screen for BITX like txcvr - Release v2.5
·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal
VFO/BFO with Si5351 and TFT touch screen for
BITX like txcvr
?
Author
- VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
?
?
Project
Support - VE1BWV, Joseph Basque, CANADA
? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ? ? ? ? ??
?
(Ver
2.5)
DOWNLOAD
?
Watch
videos produced by Joe Basque on YouTube ?- Look
for VU2SPF / VE1BWV.
Also on
Facebook BITX group.
?
Main
Features :
? 
?
?
- Uses low cost Si5351 for generating two
independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently
used stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen /
buttons. Also works with fixed BFO systems like HF
Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and
right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic,
thus reducing memory write operations to extend
life? of CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour
display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded
/ adjustable in program code.
- Continuous frequency output mode (frequency
generator mode).
- Uses standard Arduino Mega 2560. No soldering
and assembled in short time with any standard 5351
breakout board.
- Also available a special shield designed for
freq generator and other control lines ( our 5351
breakout board) which mounts on the Arduino Mega
in the remaining space next to TFT.
- Also possible to connect external rotary
encoder and? buttons working parallelly with Touch
screen controls.
- PTT from Touch screen or external switch (mic
/ front panel / foot switch ) with toggle or
continuous press types.
- PTT timeout to reduce Final amplifier
heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs
and LPFs from digital pins of Arduino Mega under
Program control. Thus easy implementation for
multibander rigs.
- Many digital outputs and Analog inputs for?
additional? controls still available for other
extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by
touching in the button area. The screen has
several touch buttons and their corresponding
information is displayed on the button itself. The
function of each button is described below:
?
VFO button: Repeatedly
touching this button rotates between? VFO A, VFO B
and Memory(M) VFO. This selects the VFO which will
be active. A, B or M is displayed below this
button and to the left of frequency display.
?
Mem ## : Shows the currently
selected memory channel number (01 to 100). On
touching right half of the button the memory
number increases from 00 to 100. Touching the left
half of this button decreases memory channel
number. On changing the memory number,? the stored
information (vfo frequency, bfo frequency,
sideband) from EEPROM memory is read and copied to
VFO M. If the M was selected using VFO button, the
selected frequency will be output on VFO. If A or
B are selected then memory contents would be
displayed below frequency button on right side as
M xxxxxxxx.
?
Rx / Tx : on touching? Rx
button the PTT is activated and the button turns
RED with Tx displayed. If PTT Timeout is active
(using ¡®TxTmO¡¯ button below) then it would
automatically go back to Receive mode after a
preset time out (this time is user controlled in
program). In this mode the remaining time is also
displayed in seconds on Red Tx button .
?
Frequency Display : The?
selected active vfo is displayed here. On
selecting a different VFO or MemCh the display
shows previously saved frequency for that VFO.
Touching anywhere in the right half of this
display button increases frequency by frequency
steps displayed below it in the center (1Hz to
1MHz). Similarly the touch in left half of button
would decrease the frequency by step Hz.
?
Secondary Frequency Display :
Below the active frequency button the other two
VFOs are displayed for information. If VFO A is
active, then VFO B and Memory VFO are displayed
under the main frequency display. Similarly when
Mem VFO is active the VFO A and B are displayed
below. (These are purely for information of non
active VFOs? and are not active buttons and have
no effect on touching.)
?
Band : Displays the HAM band
corresponding to current active VFO. Touching
right / left half of this button sequentially
changes the bands. Band frequency limits can be
set in the program. There is a continuous freq
generator mode for in between band frequencies.
?
Steps : This button displays
and changes current step size. Initial power up
step size is 1KHz. Step size can be increased or
decreased by touching right half or left? half of
the button. Steps are sequenced in powers of 10,
from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz,
100kHz, 1MHz).
?
Side Band : Switching between
USB and LSB is done by touching this button. The
side band switching is done by adjusting the VFO
frequency alone for fixed BFO rigs (e.g. Bitx40
from HFSigs)? and by adjusting BFO frequency for
programmable BFO? types of rigs.
?
BFO : The current BFO
frequency is displayed here and can be increased
or decreased by step size by touching on right and
left half of the button. This is the real experimenter¡¯s
button and is kept with a view that the
same VFO/BFO generator could be used with a
variety of transceivers having different BFO
requirements (e.g. Bitx with 10 MHz xtal filter
needs BFO around 9.9940 MHz? while a Bitx using 12
MHz xtal filter needs a BFO of about 11.9940 MHz).
It is real fun listening to radio while adjusting
BFO frequency in small steps to get best sounding
station.
?
VFO > < Mem :?
(displayed as V > <M)??? On touching the
left half of this button the currently selected
VFO (A or B) will be copied to Memory VFO ( not
saved yet on EEPROM), the right half of the button
will copy the content of Memory VFO on the
currently selected VFO (A/B).
?
SAVE : Touching this button
will save currently active VFO in EEPROM memory.
VFOs A, B and 100 Memory channels are kept on
EEPROM. Only currently displayed VFO is saved to
its corresponding memory location. It saves vfo
and bfo frequencies and current sideband. During
save process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate
button) : This button will activate the Time out
function of PTT. The PTT would automatically get
deactivated after the timeout period. The period
is adjustable from within the program. Very useful
when using toggle PTT
?
The Three Fx buttons are yet to assigned. Your
suggestions are welcome for functions of these
buttons.
?
?
The Hardware
MODIFIED ATMEGA -
ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we
use? standard off the shelf components.? A
standard Arduino Mega 2560 is the base system on
which compatible TFT display cum touch screen
shield is mounted. A standard breakout board for
frequency generating chip 5351 may be connected to
Arduino using two control wires (SCL, SCK),? and
of course the common ground wire plus the 3 V or 5
V power? supply. A PCB for 5351 is also designed
for the more adventurous hams. Details of the PCB
with schematic are given later.? All buttons are
22 connected between the pin and ground.
?
Though all operations of this VFO are
controlled from the touch panel, for those who
prefer or need buttons and rotary encoder, it is
easy to connect push buttons for almost all
functions and also a standard rotary encoder. For
connecting the external encoder and buttons a
number of pins are available on Arduino board.
These pins are allocated in the sketch and can be
reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes
all functions related to VFO and BFO needed in a
typical transceiver like Bitx. Due to varieties in
the transceiver design, the sketch is kept
flexible and may be adopted for a particular
transceiver using some parameters in the program.
Details are given in a separate section below. To
make the large sketch manageable, it is divided
into smaller parts, all of which must reside in
the same directory.? The main sketch is called
TFT_VFO_SPF_vxxx.ino, where vxxx indicated its
version.? This and remaining 5 parts of the sketch
must be located in a directory with the name of
TFT_VFO_SPF_vxxx, all the other programs should
also be placed in the same folder. The names and
brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program
where the execution begins.
2.? EPROMAnything.h? - Handles read write to
EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are
common for? operation
4.? DispPos.ino? - Calculations regarding
displays
5.? Displays.ino ¨C All functions needed to
display various parameters
6.? saveNsetup.ino? - functions for setup and
various types of saves
?
?
User Programmable
Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch
somewhere near the beginning, there is a section
named ¡°USER SELECTABLE DEFINITIONS¡±.? Parameters
may be changed/ adjusted as suited to hardware and
operational practice. The? ¡°#define¡±? statements
are used to select parameters, based on which,
some decisions are made later in the program. To
define parameters these statements should be
uncommented. Similarly, to undefine, there should
be two slashes (//) at the beginning of the line.?
Many of these are hardware dependent, e.g. model
of the bitx or other transceiver. Briefly some of
these are explained below:
?
FIXED_BFO ¨C It is defined? if the fixed
frequency BFO is generated by onboard oscillator
and cannot be altered dynamically by the program
(e.g. in Bitx40 from Hfsig, the BFO is fixed xtal
Oscillator producing about 11997000Hz). The other
option may be to generate BFO from one of the
three oscillators of Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz
xtals as IF Filter. Earlier models had 10MHz IF.
Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to
compensate for minor differences in output
frequency of Si5351 IC. Generally a program to
calibrate and find this offset ships with the
Ether kit¡¯s 5351 library.
?
To accommodate amazing variety in TFT displays,
we have to define the display type and some
parameters for different displays. A few of these
displays have been tested and more may be included
soon. For example? elegoo923 and? MCUF0x154 are
names given to typical displays. These may not be
standard names. More display types may find their
place in this section of the program.
?
Several push buttons may be connected to
predefined pins as shown below and this allocation
may be changed here in this section. One typical
Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53
will change bands on repeated push. Similarly many
other functional buttons are defined and used.
There is a short description of the function of
that Arduino pin as comments on the same line.
?
ts_delay? - sets the? delay between touch
button to reduce sensitivity. Some touch buttons
may trigger several times when touched briefly, if
this delay is small.
?
Tx_timeout? - set time in sec for which the Tx
works continuously and then switches back to Rx in
Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the
difference in frequency, These offsets are to be?
determined experimentally by tuning to a known
frequency station.?
?
?
Building Notes
?
Several Methods and
Tips which? have been used to? put this
project together
?
- One method? - A separate shield board?
developed to accompany the TFT. It contains a
Si5351 as VFO/BFO generator and also an
extender, as all free digital I/O pins and
Analog Inputs have been brought out on the edge
of the board on the other side to make it easier
to connect to main board as well as keep the
front? reasonably flat for fitting on the front
panel of the homebrewed.? VU2SPF has designed
the circuits and PCB. which you can build /
produce, home brew style.
- The second method is to use a display, and
Adafruit Si5351 DDS board and a modified
Atmega 2560. Using this method you can
plug the display directly into the Atmega. Next
you add strip sockets to the rear pins of the
atmega.. This allows you to plug the required
and or optional external wiring to external
devices and from the rear of the atmega. Without
the mod the front is mostly covered by the
display which makes it difficult to get access
to the atmega pins.
- The same as method 2, except just solder
wires directly to the rear of the Atmega
- Hash or noise control
- After building several versions of this
project I found digital hash noise to be quite
low.? But additional filtering will make it even
better.? I have used simple hash filters using a
1000mfd cap followed a 2 - 12 ohm resistor in
series with another 10000mfd cap. Basically two
capacitors? with a resistor in between, simple
but very effective.?? Use shielded cable where
possible, especially from the dds output to the
radio VFO connection.? Also, shielded cable from
the rotary encoder is a good idea¡. if you
decide to add one¡..however, Touch control by
itself is very good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user
options. There are 3 areas at the beginning of
the code which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your
radio, the code can take care of it for you
- Display selections.? currently 2 choices, but
you can add your own
- IF freq - depending on your radio you will
need to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can
just change the variable for whatever value you
desire.
- The code for the BAND selection? is
implemented, all you have to do is pick the band
and match it to the atmega pin - + 5v.
- There are many predefined buttons available ,
just pick the one you want and add your switch.?
On side to the atmega pin and the other to
ground. These are optional as the touch control
has all the functions? already.
ENJOY.
73
VE1BWV
--
Mike Hagen, WA6ISP
10917 Bryant Street
Yucaipa, Ca. 92399
(909) 918-0058
PayPal ID "MotDog@..."
Mike@...
|
Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
No problem just add the buttons it does both
Joe VE1BWV
toggle quoted message
Show quoted text
On Tue, Oct 10, 2017 at 11:08 PM, Steve Black via Groups.Io <kb1chu@...> wrote:
I hate touch screens! Fat fingers and shaky hands
with tiny screens are a bad combination. Steve kb1chu
On 10/10/2017 09:41 PM, Jack Purdum via
Groups.Io wrote:
Very interesting
videos.
Does anyone know
of a study of the preference of hams between touch screen and
knobs/buttons?
Jack, W8TEE
From:
Joe <joeman2116@...>
To:
[email protected]
Sent:
Tuesday, October 10, 2017 6:58 PM
Subject:
[BITX20] VU2SPF - Universal VFO/BFO with Si5351 and
TFT touch screen for BITX like txcvr - Release v2.5
·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal
VFO/BFO with Si5351 and TFT touch screen for BITX
like txcvr
?
Author
- VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
?
?
Project
Support - VE1BWV, Joseph Basque, CANADA
? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?
? ? ? ??
?
(Ver 2.5)
DOWNLOAD
?
Watch
videos produced by Joe Basque on YouTube ?- Look for
VU2SPF / VE1BWV.
Also on
Facebook BITX group.
?
Main
Features :
? 
?
?
- Uses low cost Si5351 for generating two
independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently used
stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen /
buttons. Also works with fixed BFO systems like HF
Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and
right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic, thus
reducing memory write operations to extend life? of
CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour
display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded /
adjustable in program code.
- Continuous frequency output mode (frequency
generator mode).
- Uses standard Arduino Mega 2560. No soldering
and assembled in short time with any standard 5351
breakout board.
- Also available a special shield designed for
freq generator and other control lines ( our 5351
breakout board) which mounts on the Arduino Mega in
the remaining space next to TFT.
- Also possible to connect external rotary
encoder and? buttons working parallelly with Touch
screen controls.
- PTT from Touch screen or external switch (mic /
front panel / foot switch ) with toggle or
continuous press types.
- PTT timeout to reduce Final amplifier heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs
and LPFs from digital pins of Arduino Mega under
Program control. Thus easy implementation for
multibander rigs.
- Many digital outputs and Analog inputs for?
additional? controls still available for other
extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by
touching in the button area. The screen has several
touch buttons and their corresponding information is
displayed on the button itself. The function of each
button is described below:
?
VFO button: Repeatedly touching
this button rotates between? VFO A, VFO B and
Memory(M) VFO. This selects the VFO which will be
active. A, B or M is displayed below this button and
to the left of frequency display.
?
Mem ## : Shows the currently
selected memory channel number (01 to 100). On
touching right half of the button the memory number
increases from 00 to 100. Touching the left half of
this button decreases memory channel number. On
changing the memory number,? the stored information
(vfo frequency, bfo frequency, sideband) from EEPROM
memory is read and copied to VFO M. If the M was
selected using VFO button, the selected frequency
will be output on VFO. If A or B are selected then
memory contents would be displayed below frequency
button on right side as M xxxxxxxx.
?
Rx / Tx : on touching? Rx
button the PTT is activated and the button turns RED
with Tx displayed. If PTT Timeout is active (using
¡®TxTmO¡¯ button below) then it would automatically go
back to Receive mode after a preset time out (this
time is user controlled in program). In this mode
the remaining time is also displayed in seconds on
Red Tx button .
?
Frequency Display : The?
selected active vfo is displayed here. On selecting
a different VFO or MemCh the display shows
previously saved frequency for that VFO. Touching
anywhere in the right half of this display button
increases frequency by frequency steps displayed
below it in the center (1Hz to 1MHz). Similarly the
touch in left half of button would decrease the
frequency by step Hz.
?
Secondary Frequency Display :
Below the active frequency button the other two VFOs
are displayed for information. If VFO A is active,
then VFO B and Memory VFO are displayed under the
main frequency display. Similarly when Mem VFO is
active the VFO A and B are displayed below. (These
are purely for information of non active VFOs? and
are not active buttons and have no effect on
touching.)
?
Band : Displays the HAM band
corresponding to current active VFO. Touching right
/ left half of this button sequentially changes the
bands. Band frequency limits can be set in the
program. There is a continuous freq generator mode
for in between band frequencies.
?
Steps : This button displays and
changes current step size. Initial power up step
size is 1KHz. Step size can be increased or
decreased by touching right half or left? half of
the button. Steps are sequenced in powers of 10,
from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz,
100kHz, 1MHz).
?
Side Band : Switching between
USB and LSB is done by touching this button. The
side band switching is done by adjusting the VFO
frequency alone for fixed BFO rigs (e.g. Bitx40 from
HFSigs)? and by adjusting BFO frequency for
programmable BFO? types of rigs.
?
BFO : The current BFO frequency
is displayed here and can be increased or decreased
by step size by touching on right and left half of
the button. This is the real experimenter¡¯s
button and is kept with a view that the same
VFO/BFO generator could be used with a variety of
transceivers having different BFO requirements (e.g.
Bitx with 10 MHz xtal filter needs BFO around 9.9940
MHz? while a Bitx using 12 MHz xtal filter needs a
BFO of about 11.9940 MHz). It is real fun listening
to radio while adjusting BFO frequency in small
steps to get best sounding station.
?
VFO > < Mem :? (displayed
as V > <M)??? On touching the left half of
this button the currently selected VFO (A or B) will
be copied to Memory VFO ( not saved yet on EEPROM),
the right half of the button will copy the content
of Memory VFO on the currently selected VFO (A/B).
?
SAVE : Touching this button will
save currently active VFO in EEPROM memory. VFOs A,
B and 100 Memory channels are kept on EEPROM. Only
currently displayed VFO is saved to its
corresponding memory location. It saves vfo and bfo
frequencies and current sideband. During save
process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate
button) : This button will activate the Time out
function of PTT. The PTT would automatically get
deactivated after the timeout period. The period is
adjustable from within the program. Very useful when
using toggle PTT
?
The Three Fx buttons are yet to assigned. Your
suggestions are welcome for functions of these
buttons.
?
?
The Hardware
MODIFIED ATMEGA -
ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we
use? standard off the shelf components.? A standard
Arduino Mega 2560 is the base system on which
compatible TFT display cum touch screen shield is
mounted. A standard breakout board for frequency
generating chip 5351 may be connected to Arduino
using two control wires (SCL, SCK),? and of course
the common ground wire plus the 3 V or 5 V power?
supply. A PCB for 5351 is also designed for the more
adventurous hams. Details of the PCB with schematic
are given later.? All buttons are 22 connected
between the pin and ground.
?
Though all operations of this VFO are controlled
from the touch panel, for those who prefer or need
buttons and rotary encoder, it is easy to connect
push buttons for almost all functions and also a
standard rotary encoder. For connecting the external
encoder and buttons a number of pins are available
on Arduino board. These pins are allocated in the
sketch and can be reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes all
functions related to VFO and BFO needed in a typical
transceiver like Bitx. Due to varieties in the
transceiver design, the sketch is kept flexible and
may be adopted for a particular transceiver using
some parameters in the program. Details are given in
a separate section below. To make the large sketch
manageable, it is divided into smaller parts, all of
which must reside in the same directory.? The main
sketch is called TFT_VFO_SPF_vxxx.ino, where vxxx
indicated its version.? This and remaining 5 parts
of the sketch must be located in a directory with
the name of TFT_VFO_SPF_vxxx, all the other programs
should also be placed in the same folder. The names
and brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program
where the execution begins.
2.? EPROMAnything.h? - Handles read write to
EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are
common for? operation
4.? DispPos.ino? - Calculations regarding
displays
5.? Displays.ino ¨C All functions needed to
display various parameters
6.? saveNsetup.ino? - functions for setup and
various types of saves
?
?
User Programmable
Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch somewhere
near the beginning, there is a section named ¡°USER
SELECTABLE DEFINITIONS¡±.? Parameters may be changed/
adjusted as suited to hardware and operational
practice. The? ¡°#define¡±? statements are used to
select parameters, based on which, some decisions
are made later in the program. To define parameters
these statements should be uncommented. Similarly,
to undefine, there should be two slashes (//) at the
beginning of the line.? Many of these are hardware
dependent, e.g. model of the bitx or other
transceiver. Briefly some of these are explained
below:
?
FIXED_BFO ¨C It is defined? if the fixed frequency
BFO is generated by onboard oscillator and cannot be
altered dynamically by the program (e.g. in Bitx40
from Hfsig, the BFO is fixed xtal Oscillator
producing about 11997000Hz). The other option may be
to generate BFO from one of the three oscillators of
Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz
xtals as IF Filter. Earlier models had 10MHz IF.
Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to
compensate for minor differences in output frequency
of Si5351 IC. Generally a program to calibrate and
find this offset ships with the Ether kit¡¯s 5351
library.
?
To accommodate amazing variety in TFT displays,
we have to define the display type and some
parameters for different displays. A few of these
displays have been tested and more may be included
soon. For example? elegoo923 and? MCUF0x154 are
names given to typical displays. These may not be
standard names. More display types may find their
place in this section of the program.
?
Several push buttons may be connected to
predefined pins as shown below and this allocation
may be changed here in this section. One typical
Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53 will
change bands on repeated push. Similarly many other
functional buttons are defined and used. There is a
short description of the function of that Arduino
pin as comments on the same line.
?
ts_delay? - sets the? delay between touch button
to reduce sensitivity. Some touch buttons may
trigger several times when touched briefly, if this
delay is small.
?
Tx_timeout? - set time in sec for which the Tx
works continuously and then switches back to Rx in
Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the
difference in frequency, These offsets are to be?
determined experimentally by tuning to a known
frequency station.?
?
?
Building Notes
?
Several Methods and
Tips which? have been used to? put this project
together
?
- One method? - A separate shield board? developed
to accompany the TFT. It contains a Si5351 as
VFO/BFO generator and also an extender, as all
free digital I/O pins and Analog Inputs have been
brought out on the edge of the board on the other
side to make it easier to connect to main board as
well as keep the front? reasonably flat for
fitting on the front panel of the homebrewed.?
VU2SPF has designed the circuits and PCB. which
you can build / produce, home brew style.
- The second method is to use a display, and
Adafruit Si5351 DDS board and a modified
Atmega 2560. Using this method you can plug
the display directly into the Atmega. Next you add
strip sockets to the rear pins of the atmega..
This allows you to plug the required and or
optional external wiring to external devices and
from the rear of the atmega. Without the mod the
front is mostly covered by the display which makes
it difficult to get access to the atmega pins.
- The same as method 2, except just solder
wires directly to the rear of the Atmega
- Hash or noise control -
After building several versions of this project I
found digital hash noise to be quite low.? But
additional filtering will make it even better.? I
have used simple hash filters using a 1000mfd cap
followed a 2 - 12 ohm resistor in series with
another 10000mfd cap. Basically two capacitors?
with a resistor in between, simple but very
effective.?? Use shielded cable where possible,
especially from the dds output to the radio VFO
connection.? Also, shielded cable from the rotary
encoder is a good idea¡. if you decide to add
one¡..however, Touch control by itself is very
good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user options.
There are 3 areas at the beginning of the code
which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your
radio, the code can take care of it for you
- Display selections.? currently 2 choices, but
you can add your own
- IF freq - depending on your radio you will need
to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can just
change the variable for whatever value you desire.
- The code for the BAND selection? is implemented,
all you have to do is pick the band and match it
to the atmega pin - + 5v.
- There are many predefined buttons available ,
just pick the one you want and add your switch.?
On side to the atmega pin and the other to ground.
These are optional as the touch control has all
the functions? already.
ENJOY.
73
VE1BWV
|
Re: Multibanding a Bitx40 questions
You can attach an I2C input/output chip like the MCP23017, which will not use any more Arduino IO pins (it will use the same pins that the SI5351 is connected to), but will give access to 16 more pins that can be either inputs or outputs.?
?
|
Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
I hate touch screens! Fat fingers and shaky hands
with tiny screens are a bad combination. Steve kb1chu
On 10/10/2017 09:41 PM, Jack Purdum via
Groups.Io wrote:
toggle quoted message
Show quoted text
Very interesting
videos.
Does anyone know
of a study of the preference of hams between touch screen and
knobs/buttons?
Jack, W8TEE
From:
Joe <joeman2116@...>
To:
[email protected]
Sent:
Tuesday, October 10, 2017 6:58 PM
Subject:
[BITX20] VU2SPF - Universal VFO/BFO with Si5351 and
TFT touch screen for BITX like txcvr - Release v2.5
·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal
VFO/BFO with Si5351 and TFT touch screen for BITX
like txcvr
?
Author
- VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
?
?
Project
Support - VE1BWV, Joseph Basque, CANADA
? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?
? ? ? ??
?
(Ver 2.5)
DOWNLOAD
?
Watch
videos produced by Joe Basque on YouTube ?- Look for
VU2SPF / VE1BWV.
Also on
Facebook BITX group.
?
Main
Features :
? 
?
?
- Uses low cost Si5351 for generating two
independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently used
stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen /
buttons. Also works with fixed BFO systems like HF
Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and
right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic, thus
reducing memory write operations to extend life? of
CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour
display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded /
adjustable in program code.
- Continuous frequency output mode (frequency
generator mode).
- Uses standard Arduino Mega 2560. No soldering
and assembled in short time with any standard 5351
breakout board.
- Also available a special shield designed for
freq generator and other control lines ( our 5351
breakout board) which mounts on the Arduino Mega in
the remaining space next to TFT.
- Also possible to connect external rotary
encoder and? buttons working parallelly with Touch
screen controls.
- PTT from Touch screen or external switch (mic /
front panel / foot switch ) with toggle or
continuous press types.
- PTT timeout to reduce Final amplifier heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs
and LPFs from digital pins of Arduino Mega under
Program control. Thus easy implementation for
multibander rigs.
- Many digital outputs and Analog inputs for?
additional? controls still available for other
extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by
touching in the button area. The screen has several
touch buttons and their corresponding information is
displayed on the button itself. The function of each
button is described below:
?
VFO button: Repeatedly touching
this button rotates between? VFO A, VFO B and
Memory(M) VFO. This selects the VFO which will be
active. A, B or M is displayed below this button and
to the left of frequency display.
?
Mem ## : Shows the currently
selected memory channel number (01 to 100). On
touching right half of the button the memory number
increases from 00 to 100. Touching the left half of
this button decreases memory channel number. On
changing the memory number,? the stored information
(vfo frequency, bfo frequency, sideband) from EEPROM
memory is read and copied to VFO M. If the M was
selected using VFO button, the selected frequency
will be output on VFO. If A or B are selected then
memory contents would be displayed below frequency
button on right side as M xxxxxxxx.
?
Rx / Tx : on touching? Rx
button the PTT is activated and the button turns RED
with Tx displayed. If PTT Timeout is active (using
¡®TxTmO¡¯ button below) then it would automatically go
back to Receive mode after a preset time out (this
time is user controlled in program). In this mode
the remaining time is also displayed in seconds on
Red Tx button .
?
Frequency Display : The?
selected active vfo is displayed here. On selecting
a different VFO or MemCh the display shows
previously saved frequency for that VFO. Touching
anywhere in the right half of this display button
increases frequency by frequency steps displayed
below it in the center (1Hz to 1MHz). Similarly the
touch in left half of button would decrease the
frequency by step Hz.
?
Secondary Frequency Display :
Below the active frequency button the other two VFOs
are displayed for information. If VFO A is active,
then VFO B and Memory VFO are displayed under the
main frequency display. Similarly when Mem VFO is
active the VFO A and B are displayed below. (These
are purely for information of non active VFOs? and
are not active buttons and have no effect on
touching.)
?
Band : Displays the HAM band
corresponding to current active VFO. Touching right
/ left half of this button sequentially changes the
bands. Band frequency limits can be set in the
program. There is a continuous freq generator mode
for in between band frequencies.
?
Steps : This button displays and
changes current step size. Initial power up step
size is 1KHz. Step size can be increased or
decreased by touching right half or left? half of
the button. Steps are sequenced in powers of 10,
from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz,
100kHz, 1MHz).
?
Side Band : Switching between
USB and LSB is done by touching this button. The
side band switching is done by adjusting the VFO
frequency alone for fixed BFO rigs (e.g. Bitx40 from
HFSigs)? and by adjusting BFO frequency for
programmable BFO? types of rigs.
?
BFO : The current BFO frequency
is displayed here and can be increased or decreased
by step size by touching on right and left half of
the button. This is the real experimenter¡¯s
button and is kept with a view that the same
VFO/BFO generator could be used with a variety of
transceivers having different BFO requirements (e.g.
Bitx with 10 MHz xtal filter needs BFO around 9.9940
MHz? while a Bitx using 12 MHz xtal filter needs a
BFO of about 11.9940 MHz). It is real fun listening
to radio while adjusting BFO frequency in small
steps to get best sounding station.
?
VFO > < Mem :? (displayed
as V > <M)??? On touching the left half of
this button the currently selected VFO (A or B) will
be copied to Memory VFO ( not saved yet on EEPROM),
the right half of the button will copy the content
of Memory VFO on the currently selected VFO (A/B).
?
SAVE : Touching this button will
save currently active VFO in EEPROM memory. VFOs A,
B and 100 Memory channels are kept on EEPROM. Only
currently displayed VFO is saved to its
corresponding memory location. It saves vfo and bfo
frequencies and current sideband. During save
process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate
button) : This button will activate the Time out
function of PTT. The PTT would automatically get
deactivated after the timeout period. The period is
adjustable from within the program. Very useful when
using toggle PTT
?
The Three Fx buttons are yet to assigned. Your
suggestions are welcome for functions of these
buttons.
?
?
The Hardware
MODIFIED ATMEGA -
ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we
use? standard off the shelf components.? A standard
Arduino Mega 2560 is the base system on which
compatible TFT display cum touch screen shield is
mounted. A standard breakout board for frequency
generating chip 5351 may be connected to Arduino
using two control wires (SCL, SCK),? and of course
the common ground wire plus the 3 V or 5 V power?
supply. A PCB for 5351 is also designed for the more
adventurous hams. Details of the PCB with schematic
are given later.? All buttons are 22 connected
between the pin and ground.
?
Though all operations of this VFO are controlled
from the touch panel, for those who prefer or need
buttons and rotary encoder, it is easy to connect
push buttons for almost all functions and also a
standard rotary encoder. For connecting the external
encoder and buttons a number of pins are available
on Arduino board. These pins are allocated in the
sketch and can be reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes all
functions related to VFO and BFO needed in a typical
transceiver like Bitx. Due to varieties in the
transceiver design, the sketch is kept flexible and
may be adopted for a particular transceiver using
some parameters in the program. Details are given in
a separate section below. To make the large sketch
manageable, it is divided into smaller parts, all of
which must reside in the same directory.? The main
sketch is called TFT_VFO_SPF_vxxx.ino, where vxxx
indicated its version.? This and remaining 5 parts
of the sketch must be located in a directory with
the name of TFT_VFO_SPF_vxxx, all the other programs
should also be placed in the same folder. The names
and brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program
where the execution begins.
2.? EPROMAnything.h? - Handles read write to
EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are
common for? operation
4.? DispPos.ino? - Calculations regarding
displays
5.? Displays.ino ¨C All functions needed to
display various parameters
6.? saveNsetup.ino? - functions for setup and
various types of saves
?
?
User Programmable
Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch somewhere
near the beginning, there is a section named ¡°USER
SELECTABLE DEFINITIONS¡±.? Parameters may be changed/
adjusted as suited to hardware and operational
practice. The? ¡°#define¡±? statements are used to
select parameters, based on which, some decisions
are made later in the program. To define parameters
these statements should be uncommented. Similarly,
to undefine, there should be two slashes (//) at the
beginning of the line.? Many of these are hardware
dependent, e.g. model of the bitx or other
transceiver. Briefly some of these are explained
below:
?
FIXED_BFO ¨C It is defined? if the fixed frequency
BFO is generated by onboard oscillator and cannot be
altered dynamically by the program (e.g. in Bitx40
from Hfsig, the BFO is fixed xtal Oscillator
producing about 11997000Hz). The other option may be
to generate BFO from one of the three oscillators of
Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz
xtals as IF Filter. Earlier models had 10MHz IF.
Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to
compensate for minor differences in output frequency
of Si5351 IC. Generally a program to calibrate and
find this offset ships with the Ether kit¡¯s 5351
library.
?
To accommodate amazing variety in TFT displays,
we have to define the display type and some
parameters for different displays. A few of these
displays have been tested and more may be included
soon. For example? elegoo923 and? MCUF0x154 are
names given to typical displays. These may not be
standard names. More display types may find their
place in this section of the program.
?
Several push buttons may be connected to
predefined pins as shown below and this allocation
may be changed here in this section. One typical
Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53 will
change bands on repeated push. Similarly many other
functional buttons are defined and used. There is a
short description of the function of that Arduino
pin as comments on the same line.
?
ts_delay? - sets the? delay between touch button
to reduce sensitivity. Some touch buttons may
trigger several times when touched briefly, if this
delay is small.
?
Tx_timeout? - set time in sec for which the Tx
works continuously and then switches back to Rx in
Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the
difference in frequency, These offsets are to be?
determined experimentally by tuning to a known
frequency station.?
?
?
Building Notes
?
Several Methods and
Tips which? have been used to? put this project
together
?
- One method? - A separate shield board? developed
to accompany the TFT. It contains a Si5351 as
VFO/BFO generator and also an extender, as all
free digital I/O pins and Analog Inputs have been
brought out on the edge of the board on the other
side to make it easier to connect to main board as
well as keep the front? reasonably flat for
fitting on the front panel of the homebrewed.?
VU2SPF has designed the circuits and PCB. which
you can build / produce, home brew style.
- The second method is to use a display, and
Adafruit Si5351 DDS board and a modified
Atmega 2560. Using this method you can plug
the display directly into the Atmega. Next you add
strip sockets to the rear pins of the atmega..
This allows you to plug the required and or
optional external wiring to external devices and
from the rear of the atmega. Without the mod the
front is mostly covered by the display which makes
it difficult to get access to the atmega pins.
- The same as method 2, except just solder
wires directly to the rear of the Atmega
- Hash or noise control -
After building several versions of this project I
found digital hash noise to be quite low.? But
additional filtering will make it even better.? I
have used simple hash filters using a 1000mfd cap
followed a 2 - 12 ohm resistor in series with
another 10000mfd cap. Basically two capacitors?
with a resistor in between, simple but very
effective.?? Use shielded cable where possible,
especially from the dds output to the radio VFO
connection.? Also, shielded cable from the rotary
encoder is a good idea¡. if you decide to add
one¡..however, Touch control by itself is very
good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user options.
There are 3 areas at the beginning of the code
which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your
radio, the code can take care of it for you
- Display selections.? currently 2 choices, but
you can add your own
- IF freq - depending on your radio you will need
to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can just
change the variable for whatever value you desire.
- The code for the BAND selection? is implemented,
all you have to do is pick the band and match it
to the atmega pin - + 5v.
- There are many predefined buttons available ,
just pick the one you want and add your switch.?
On side to the atmega pin and the other to ground.
These are optional as the touch control has all
the functions? already.
ENJOY.
73
VE1BWV
|
Re: VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
Very interesting videos.
Does anyone know of a study of the preference of hams between touch screen and knobs/buttons?
Jack, W8TEE
toggle quoted message
Show quoted text
From: Joe <joeman2116@...> To: [email protected] Sent: Tuesday, October 10, 2017 6:58 PM Subject: [BITX20] VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5 ·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr
?
Author - VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
? ?
Project Support - VE1BWV, Joseph Basque, CANADA
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ??
?
(Ver 2.5)
DOWNLOAD ?
Watch videos produced by Joe Basque on YouTube ?- Look for VU2SPF / VE1BWV.
Also on Facebook BITX group.
?
Main Features :
? 
?
?
- Uses low cost Si5351 for generating two independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently used stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen / buttons. Also works with fixed BFO systems like HF Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic, thus reducing memory write operations to extend life? of CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded / adjustable in program code.
- Continuous frequency output mode (frequency generator mode).
- Uses standard Arduino Mega 2560. No soldering and assembled in short time with any standard 5351 breakout board.
- Also available a special shield designed for freq generator and other control lines ( our 5351 breakout board) which mounts on the Arduino Mega in the remaining space next to TFT.
- Also possible to connect external rotary encoder and? buttons working parallelly with Touch screen controls.
- PTT from Touch screen or external switch (mic / front panel / foot switch ) with toggle or continuous press types.
- PTT timeout to reduce Final amplifier heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs and LPFs from digital pins of Arduino Mega under Program control. Thus easy implementation for multibander rigs.
- Many digital outputs and Analog inputs for? additional? controls still available for other extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by touching in the button area. The screen has several touch buttons and their corresponding information is displayed on the button itself. The function of each button is described below:
?
VFO button: Repeatedly touching this button rotates between? VFO A, VFO B and Memory(M) VFO. This selects the VFO which will be active. A, B or M is displayed below this button and to the left of frequency display.
?
Mem ## : Shows the currently selected memory channel number (01 to 100). On touching right half of the button the memory number increases from 00 to 100. Touching the left half of this button decreases memory channel number. On changing the memory number,? the stored information (vfo frequency, bfo frequency, sideband) from EEPROM memory is read and copied to VFO M. If the M was selected using VFO button, the selected frequency will be output on VFO. If A or B are selected then memory contents would be displayed below frequency button on right side as M xxxxxxxx.
?
Rx / Tx : on touching? Rx button the PTT is activated and the button turns RED with Tx displayed. If PTT Timeout is active (using ¡®TxTmO¡¯ button below) then it would automatically go back to Receive mode after a preset time out (this time is user controlled in program). In this mode the remaining time is also displayed in seconds on Red Tx button .
?
Frequency Display : The? selected active vfo is displayed here. On selecting a different VFO or MemCh the display shows previously saved frequency for that VFO. Touching anywhere in the right half of this display button increases frequency by frequency steps displayed below it in the center (1Hz to 1MHz). Similarly the touch in left half of button would decrease the frequency by step Hz.
?
Secondary Frequency Display : Below the active frequency button the other two VFOs are displayed for information. If VFO A is active, then VFO B and Memory VFO are displayed under the main frequency display. Similarly when Mem VFO is active the VFO A and B are displayed below. (These are purely for information of non active VFOs? and are not active buttons and have no effect on touching.)
?
Band : Displays the HAM band corresponding to current active VFO. Touching right / left half of this button sequentially changes the bands. Band frequency limits can be set in the program. There is a continuous freq generator mode for in between band frequencies.
?
Steps : This button displays and changes current step size. Initial power up step size is 1KHz. Step size can be increased or decreased by touching right half or left? half of the button. Steps are sequenced in powers of 10, from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz).
?
Side Band : Switching between USB and LSB is done by touching this button. The side band switching is done by adjusting the VFO frequency alone for fixed BFO rigs (e.g. Bitx40 from HFSigs)? and by adjusting BFO frequency for programmable BFO? types of rigs.
?
BFO : The current BFO frequency is displayed here and can be increased or decreased by step size by touching on right and left half of the button. This is the real experimenter¡¯s button and is kept with a view that the same VFO/BFO generator could be used with a variety of transceivers having different BFO requirements (e.g. Bitx with 10 MHz xtal filter needs BFO around 9.9940 MHz? while a Bitx using 12 MHz xtal filter needs a BFO of about 11.9940 MHz). It is real fun listening to radio while adjusting BFO frequency in small steps to get best sounding station.
?
VFO > < Mem :? (displayed as V > <M)??? On touching the left half of this button the currently selected VFO (A or B) will be copied to Memory VFO ( not saved yet on EEPROM), the right half of the button will copy the content of Memory VFO on the currently selected VFO (A/B).
?
SAVE : Touching this button will save currently active VFO in EEPROM memory. VFOs A, B and 100 Memory channels are kept on EEPROM. Only currently displayed VFO is saved to its corresponding memory location. It saves vfo and bfo frequencies and current sideband. During save process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate button) : This button will activate the Time out function of PTT. The PTT would automatically get deactivated after the timeout period. The period is adjustable from within the program. Very useful when using toggle PTT
?
The Three Fx buttons are yet to assigned. Your suggestions are welcome for functions of these buttons.
?
?
The Hardware
MODIFIED ATMEGA - ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we use? standard off the shelf components.? A standard Arduino Mega 2560 is the base system on which compatible TFT display cum touch screen shield is mounted. A standard breakout board for frequency generating chip 5351 may be connected to Arduino using two control wires (SCL, SCK),? and of course the common ground wire plus the 3 V or 5 V power? supply. A PCB for 5351 is also designed for the more adventurous hams. Details of the PCB with schematic are given later.? All buttons are 22 connected between the pin and ground.
?
Though all operations of this VFO are controlled from the touch panel, for those who prefer or need buttons and rotary encoder, it is easy to connect push buttons for almost all functions and also a standard rotary encoder. For connecting the external encoder and buttons a number of pins are available on Arduino board. These pins are allocated in the sketch and can be reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes all functions related to VFO and BFO needed in a typical transceiver like Bitx. Due to varieties in the transceiver design, the sketch is kept flexible and may be adopted for a particular transceiver using some parameters in the program. Details are given in a separate section below. To make the large sketch manageable, it is divided into smaller parts, all of which must reside in the same directory.? The main sketch is called TFT_VFO_SPF_vxxx.ino, where vxxx indicated its version.? This and remaining 5 parts of the sketch must be located in a directory with the name of TFT_VFO_SPF_vxxx, all the other programs should also be placed in the same folder. The names and brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program where the execution begins.
2.? EPROMAnything.h? - Handles read write to EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are common for? operation
4.? DispPos.ino? - Calculations regarding displays
5.? Displays.ino ¨C All functions needed to display various parameters
6.? saveNsetup.ino? - functions for setup and various types of saves
?
?
User Programmable Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch somewhere near the beginning, there is a section named ¡°USER SELECTABLE DEFINITIONS¡±.? Parameters may be changed/ adjusted as suited to hardware and operational practice. The? ¡°#define¡±? statements are used to select parameters, based on which, some decisions are made later in the program. To define parameters these statements should be uncommented. Similarly, to undefine, there should be two slashes (//) at the beginning of the line.? Many of these are hardware dependent, e.g. model of the bitx or other transceiver. Briefly some of these are explained below:
?
FIXED_BFO ¨C It is defined? if the fixed frequency BFO is generated by onboard oscillator and cannot be altered dynamically by the program (e.g. in Bitx40 from Hfsig, the BFO is fixed xtal Oscillator producing about 11997000Hz). The other option may be to generate BFO from one of the three oscillators of Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz xtals as IF Filter. Earlier models had 10MHz IF. Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to compensate for minor differences in output frequency of Si5351 IC. Generally a program to calibrate and find this offset ships with the Ether kit¡¯s 5351 library.
?
To accommodate amazing variety in TFT displays, we have to define the display type and some parameters for different displays. A few of these displays have been tested and more may be included soon. For example? elegoo923 and? MCUF0x154 are names given to typical displays. These may not be standard names. More display types may find their place in this section of the program.
?
Several push buttons may be connected to predefined pins as shown below and this allocation may be changed here in this section. One typical Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53 will change bands on repeated push. Similarly many other functional buttons are defined and used. There is a short description of the function of that Arduino pin as comments on the same line.
?
ts_delay? - sets the? delay between touch button to reduce sensitivity. Some touch buttons may trigger several times when touched briefly, if this delay is small.
?
Tx_timeout? - set time in sec for which the Tx works continuously and then switches back to Rx in Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the difference in frequency, These offsets are to be? determined experimentally by tuning to a known frequency station.?
?
?
Building Notes
?
Several Methods and Tips which? have been used to? put this project together
?
- One method? - A separate shield board? developed to accompany the TFT. It contains a Si5351 as VFO/BFO generator and also an extender, as all free digital I/O pins and Analog Inputs have been brought out on the edge of the board on the other side to make it easier to connect to main board as well as keep the front? reasonably flat for fitting on the front panel of the homebrewed.? VU2SPF has designed the circuits and PCB. which you can build / produce, home brew style.
- The second method is to use a display, and Adafruit Si5351 DDS board and a modified Atmega 2560. Using this method you can plug the display directly into the Atmega. Next you add strip sockets to the rear pins of the atmega.. This allows you to plug the required and or optional external wiring to external devices and from the rear of the atmega. Without the mod the front is mostly covered by the display which makes it difficult to get access to the atmega pins.
- The same as method 2, except just solder wires directly to the rear of the Atmega
- Hash or noise control - After building several versions of this project I found digital hash noise to be quite low.? But additional filtering will make it even better.? I have used simple hash filters using a 1000mfd cap followed a 2 - 12 ohm resistor in series with another 10000mfd cap. Basically two capacitors? with a resistor in between, simple but very effective.?? Use shielded cable where possible, especially from the dds output to the radio VFO connection.? Also, shielded cable from the rotary encoder is a good idea¡. if you decide to add one¡..however, Touch control by itself is very good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user options. There are 3 areas at the beginning of the code which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your radio, the code can take care of it for you
- Display selections.? currently 2 choices, but you can add your own
- IF freq - depending on your radio you will need to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can just change the variable for whatever value you desire.
- The code for the BAND selection? is implemented, all you have to do is pick the band and match it to the atmega pin - + 5v.
- There are many predefined buttons available , just pick the one you want and add your switch.? On side to the atmega pin and the other to ground. These are optional as the touch control has all the functions? already.
ENJOY. 73 VE1BWV
|
Re: Multibanding a Bitx40 questions
Sure, if we want to replace the Raduino with something else...?
...if only we knew someone on this list who was building such a
beast...? ;-)
Yes, that's absolutely true.? The mod I mention wouldn't take much
code space or RAM space.? Maybe some RAM if you wanted to keep a
per-band VFO.? The limiting factor on my rig at least is Digital
I/O, and both the micro's you mention solve that problem, and then
some.? But it is a far more involved modification to the BitX than
just adding some components.
-Mark
On 10/10/2017 06:19 PM, Jack Purdum via
Groups.Io wrote:
toggle quoted message
Show quoted text
Allard has
crammed an amazing amount of functionality into that poor Nano
and its resource base is just about gone. It might be time to
upgrade to a Mega 2560 or maybe even a Teensy if the
horsepower is needed. I don't understand the advantage of the
rotary switch over a rotary encoder. That would give you the
flexibility to use a state machine to control band switching.
After locking Allard in the claustrophobic space of the Nano,
a Mega would feel like the Grand Canyon to him...imagine what
he would do with that resource base! Seems to me that this is
a cards-on-the-table-anything-goes moment for builders.
Jack, W8TEE
I've
got the QRP Labs parts to make this happen (2x Relay
boards, and 80m, 60m, 40m, and 20m LPFs and BPFs)
but haven't started the mods yet.? Life always gets
hectic during Autumn, so I'm hoping I have more time
to work on this come January (after my daughter's
ballet season.)
The one thing I haven't figured out yet is how to
select the band.? We could do it in software on the
display with knob/buttons, then have the Raduino
output a band select signal.? Would require a GPIO
for every band, or some fancy interface hardware to
reduce the number of pins used, and the current
modifications supported by Allard's software just
don't have this many pins.
Instead, I'm thinking of using a 2P6T rotary switch
like [1], and doing two things with it:
1: Put a voltage divider ladder on one pole that
generates an analog voltage to send to the
microcontroller to sense which position the switch
is in.? All 6 positions (and a lot more) can be
sensed with a single pin.? Then, the Raduino will
know which VFO frequency to use.
2: Use the other pole to drive the relay boards
directly.? No RF through the switch (we'd need 4
poles for that, and we'd still need a way to mount
all the filters!), just a 5v line to select which
relay on the relay boards is energized.? One line
can drive both relay boards. (Just make sure you
have the filters in the same positions!)
Any better ideas?
-Mark
[1]
On
10/10/2017 05:07 PM, Dexter N Muir wrote:
Hi David
?Until code shows up, the prep-work can be
done. Lift the bits of the BPF an LPF from the
BitX if needed, possibly reconstruct as an
external, install the relay kit and
hard-wire-enable the 40m (from the BitX or
external). The when code shows up (or you learn
to do it) do the switching thing.
Best of luck - DexZL2DEX
|
Re: Multibanding a Bitx40 questions
I just bought a Teensy Weenie 3.6 because of this
group.? Wow, lots of pins and Yes the Arduino conversion works.
I have run some of the examples.? Don't know what
I will do with it?
48 Pins and lots of Speed. Memory card slot?
So, it does work in Arduino IDE with little pain.
Seems like something for big project?
Mouser or Spark Fun, about $30.
Lots more than you need for BitX?
Mike, WA6ISP
10/2017 6:19 PM, Jack Purdum via Groups.Io wrote:
Allard has
crammed an amazing amount of functionality into that poor Nano
and its resource base is just about gone. It might be time to
upgrade to a Mega 2560 or maybe even a Teensy if the
horsepower is needed. I don't understand the advantage of the
rotary switch over a rotary encoder. That would give you the
flexibility to use a state machine to control band switching.
After locking Allard in the claustrophobic space of the Nano,
a Mega would feel like the Grand Canyon to him...imagine what
he would do with that resource base! Seems to me that this is
a cards-on-the-table-anything-goes moment for builders.
Jack, W8TEE
I've
got the QRP Labs parts to make this happen (2x Relay
boards, and 80m, 60m, 40m, and 20m LPFs and BPFs)
but haven't started the mods yet.? Life always gets
hectic during Autumn, so I'm hoping I have more time
to work on this come January (after my daughter's
ballet season.)
The one thing I haven't figured out yet is how to
select the band.? We could do it in software on the
display with knob/buttons, then have the Raduino
output a band select signal.? Would require a GPIO
for every band, or some fancy interface hardware to
reduce the number of pins used, and the current
modifications supported by Allard's software just
don't have this many pins.
Instead, I'm thinking of using a 2P6T rotary switch
like [1], and doing two things with it:
1: Put a voltage divider ladder on one pole that
generates an analog voltage to send to the
microcontroller to sense which position the switch
is in.? All 6 positions (and a lot more) can be
sensed with a single pin.? Then, the Raduino will
know which VFO frequency to use.
2: Use the other pole to drive the relay boards
directly.? No RF through the switch (we'd need 4
poles for that, and we'd still need a way to mount
all the filters!), just a 5v line to select which
relay on the relay boards is energized.? One line
can drive both relay boards. (Just make sure you
have the filters in the same positions!)
Any better ideas?
-Mark
[1]
On
10/10/2017 05:07 PM, Dexter N Muir wrote:
Hi David
?Until code shows up, the prep-work can be
done. Lift the bits of the BPF an LPF from the
BitX if needed, possibly reconstruct as an
external, install the relay kit and
hard-wire-enable the 40m (from the BitX or
external). The when code shows up (or you learn
to do it) do the switching thing.
Best of luck - DexZL2DEX
--
Mike Hagen, WA6ISP
10917 Bryant Street
Yucaipa, Ca. 92399
(909) 918-0058
PayPal ID "MotDog@..."
Mike@...
|
Re: Multibanding a Bitx40 questions
Allard has crammed an amazing amount of functionality into that poor Nano and its resource base is just about gone. It might be time to upgrade to a Mega 2560 or maybe even a Teensy if the horsepower is needed. I don't understand the advantage of the rotary switch over a rotary encoder. That would give you the flexibility to use a state machine to control band switching. After locking Allard in the claustrophobic space of the Nano, a Mega would feel like the Grand Canyon to him...imagine what he would do with that resource base! Seems to me that this is a cards-on-the-table-anything-goes moment for builders.
Jack, W8TEE
toggle quoted message
Show quoted text
From: "Smitty, KR6ZY" <mark-groupsio@...> To: [email protected] Sent: Tuesday, October 10, 2017 9:02 PM Subject: Re: [BITX20] Multibanding a Bitx40 questions
I've got the QRP Labs parts to make this happen (2x Relay boards,
and 80m, 60m, 40m, and 20m LPFs and BPFs) but haven't started the
mods yet.? Life always gets hectic during Autumn, so I'm hoping I
have more time to work on this come January (after my daughter's
ballet season.)
The one thing I haven't figured out yet is how to select the band.?
We could do it in software on the display with knob/buttons, then
have the Raduino output a band select signal.? Would require a GPIO
for every band, or some fancy interface hardware to reduce the
number of pins used, and the current modifications supported by
Allard's software just don't have this many pins.
Instead, I'm thinking of using a 2P6T rotary switch like [1], and
doing two things with it:
1: Put a voltage divider ladder on one pole that generates an analog
voltage to send to the microcontroller to sense which position the
switch is in.? All 6 positions (and a lot more) can be sensed with a
single pin.? Then, the Raduino will know which VFO frequency to use.
2: Use the other pole to drive the relay boards directly.? No RF
through the switch (we'd need 4 poles for that, and we'd still need
a way to mount all the filters!), just a 5v line to select which
relay on the relay boards is energized.? One line can drive both
relay boards. (Just make sure you have the filters in the same
positions!)
Any better ideas?
-Mark
[1]
On 10/10/2017 05:07 PM, Dexter N Muir
wrote:
Hi David
?Until code shows up, the prep-work can be done. Lift the bits
of the BPF an LPF from the BitX if needed, possibly reconstruct
as an external, install the relay kit and hard-wire-enable the
40m (from the BitX or external). The when code shows up (or you
learn to do it) do the switching thing.
Best of luck - DexZL2DEX
|
Re: Multibanding a Bitx40 questions
I've got the QRP Labs parts to make this happen (2x Relay boards,
and 80m, 60m, 40m, and 20m LPFs and BPFs) but haven't started the
mods yet.? Life always gets hectic during Autumn, so I'm hoping I
have more time to work on this come January (after my daughter's
ballet season.)
The one thing I haven't figured out yet is how to select the band.?
We could do it in software on the display with knob/buttons, then
have the Raduino output a band select signal.? Would require a GPIO
for every band, or some fancy interface hardware to reduce the
number of pins used, and the current modifications supported by
Allard's software just don't have this many pins.
Instead, I'm thinking of using a 2P6T rotary switch like [1], and
doing two things with it:
1: Put a voltage divider ladder on one pole that generates an analog
voltage to send to the microcontroller to sense which position the
switch is in.? All 6 positions (and a lot more) can be sensed with a
single pin.? Then, the Raduino will know which VFO frequency to use.
2: Use the other pole to drive the relay boards directly.? No RF
through the switch (we'd need 4 poles for that, and we'd still need
a way to mount all the filters!), just a 5v line to select which
relay on the relay boards is energized.? One line can drive both
relay boards. (Just make sure you have the filters in the same
positions!)
Any better ideas?
-Mark
[1]
On 10/10/2017 05:07 PM, Dexter N Muir
wrote:
toggle quoted message
Show quoted text
Hi David
?Until code shows up, the prep-work can be done. Lift the bits
of the BPF an LPF from the BitX if needed, possibly reconstruct
as an external, install the relay kit and hard-wire-enable the
40m (from the BitX or external). The when code shows up (or you
learn to do it) do the switching thing.
Best of luck - DexZL2DEX
|
raduino v1.25.1 released (touch keyer)
Hi, I've just released raduino v1.25.1, download it from In this release:
- included some minor bug corrections to the touch keyer calibration routine
- updated the operating instructions
Happy BitX-ing! 73 Allard PE1NWL
|
Re: Multibanding a Bitx40 questions
Hi David
?Until code shows up, the prep-work can be done. Lift the bits of the BPF an LPF from the BitX if needed, possibly reconstruct as an external, install the relay kit and hard-wire-enable the 40m (from the BitX or external). The when code shows up (or you learn to do it) do the switching thing.
Best of luck - DexZL2DEX
|
Re: Multibanding a Bitx40 questions
I have the relay kit and almost all the lpfs. Other than the board and relays being 5v it's easy to build super small and the lpf/bpfs work great. ? ?I have used mine as a stand alone lpf for my 500mw in 10w out amp. I too am going to try and make my bitx multi band. I have been waiting until people who know more about code and hardware to post data.
I would wing it but don't know anything about code. I plan to just remove the 40m bpf/lpf and add two of the relay kits one bpf one lpf, 5 bands in all.? One day....hihi
?73 ? ? David
|
Re: BITX QSO Night, Sunday, October 8, 7pm Local Time, 7277 kHz in North America, 7177 kHz elsewhere
toggle quoted message
Show quoted text
On Oct 8, 2017 4:26 PM, "John P" < j.m.price@...> wrote: You're welcome! I'm not hearing anyone else either. Probably nobody else got my frequency change message. Net seems to be gone from 7.277, but now had broadcast QRM on it. -- John - WA2FZW
|
VU2SPF - Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr - Release v2.5
·¡³æ±è±ð°ù¾±³¾±ð²Ô³Ù±ð°ù¡¯²õ
Universal VFO/BFO with Si5351 and TFT touch screen for BITX like txcvr
?
Author - VU2SPF,? SP Bhatnagar,??Bhavnagar, INDIA?? ?
? ?
Project Support - VE1BWV, Joseph Basque, CANADA
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ??
?
(Ver 2.5)
DOWNLOAD ?
Watch videos produced by Joe Basque on YouTube ?- Look for VU2SPF / VE1BWV.
Also on Facebook BITX group.
?
Main Features :
?
?
?
- Uses low cost Si5351 for generating two independent VFO and BFO frequencies.
- Touch screen controlled UI on colour TFT.
- Two VFOs A/B and one Memory VFO.
- 100 memory channels for storing frequently used stations (more channels possible)
- Switch between VFO and Memory by touch.
- Both VFO and BFO are adjustable from screen / buttons. Also works with fixed BFO systems like HF Sig¡¯s Bitx40.
- Some touch buttons are Two Sided (left and right half of button works independently) .
- Some touch buttons are Single Push type.
- Saving to EEPROM on demand (not automatic, thus reducing memory write operations to extend life? of CPU).
- Uses low cost MCUFriend 2.4¡± / 2.8¡± colour display.
- Horizontal S-meter.
- Preset Ham Bands. Band Limits are hard coded / adjustable in program code.
- Continuous frequency output mode (frequency generator mode).
- Uses standard Arduino Mega 2560. No soldering and assembled in short time with any standard 5351 breakout board.
- Also available a special shield designed for freq generator and other control lines ( our 5351 breakout board) which mounts on the Arduino Mega in the remaining space next to TFT.
- Also possible to connect external rotary encoder and? buttons working parallelly with Touch screen controls.
- PTT from Touch screen or external switch (mic / front panel / foot switch ) with toggle or continuous press types.
- PTT timeout to reduce Final amplifier heating.
- Many user programmable parameters.
- Can control several bands by controlling BPFs and LPFs from digital pins of Arduino Mega under Program control. Thus easy implementation for multibander rigs.
- Many digital outputs and Analog inputs for? additional? controls still available for other extensions on Mega.
?
User Interface?
All functions of the VFO are carried out by touching in the button area. The screen has several touch buttons and their corresponding information is displayed on the button itself. The function of each button is described below:
?
VFO button: Repeatedly touching this button rotates between? VFO A, VFO B and Memory(M) VFO. This selects the VFO which will be active. A, B or M is displayed below this button and to the left of frequency display.
?
Mem ## : Shows the currently selected memory channel number (01 to 100). On touching right half of the button the memory number increases from 00 to 100. Touching the left half of this button decreases memory channel number. On changing the memory number,? the stored information (vfo frequency, bfo frequency, sideband) from EEPROM memory is read and copied to VFO M. If the M was selected using VFO button, the selected frequency will be output on VFO. If A or B are selected then memory contents would be displayed below frequency button on right side as M xxxxxxxx.
?
Rx / Tx : on touching? Rx button the PTT is activated and the button turns RED with Tx displayed. If PTT Timeout is active (using ¡®TxTmO¡¯ button below) then it would automatically go back to Receive mode after a preset time out (this time is user controlled in program). In this mode the remaining time is also displayed in seconds on Red Tx button .
?
Frequency Display : The? selected active vfo is displayed here. On selecting a different VFO or MemCh the display shows previously saved frequency for that VFO. Touching anywhere in the right half of this display button increases frequency by frequency steps displayed below it in the center (1Hz to 1MHz). Similarly the touch in left half of button would decrease the frequency by step Hz.
?
Secondary Frequency Display : Below the active frequency button the other two VFOs are displayed for information. If VFO A is active, then VFO B and Memory VFO are displayed under the main frequency display. Similarly when Mem VFO is active the VFO A and B are displayed below. (These are purely for information of non active VFOs? and are not active buttons and have no effect on touching.)
?
Band : Displays the HAM band corresponding to current active VFO. Touching right / left half of this button sequentially changes the bands. Band frequency limits can be set in the program. There is a continuous freq generator mode for in between band frequencies.
?
Steps : This button displays and changes current step size. Initial power up step size is 1KHz. Step size can be increased or decreased by touching right half or left? half of the button. Steps are sequenced in powers of 10, from 1 Hz to 1MHz.(1Hz, 10Hz, 100Hz, 1kHz, 10kHz, 100kHz, 1MHz).
?
Side Band : Switching between USB and LSB is done by touching this button. The side band switching is done by adjusting the VFO frequency alone for fixed BFO rigs (e.g. Bitx40 from HFSigs)? and by adjusting BFO frequency for programmable BFO? types of rigs.
?
BFO : The current BFO frequency is displayed here and can be increased or decreased by step size by touching on right and left half of the button. This is the real experimenter¡¯s button and is kept with a view that the same VFO/BFO generator could be used with a variety of transceivers having different BFO requirements (e.g. Bitx with 10 MHz xtal filter needs BFO around 9.9940 MHz? while a Bitx using 12 MHz xtal filter needs a BFO of about 11.9940 MHz). It is real fun listening to radio while adjusting BFO frequency in small steps to get best sounding station.
?
VFO > < Mem :? (displayed as V > <M)??? On touching the left half of this button the currently selected VFO (A or B) will be copied to Memory VFO ( not saved yet on EEPROM), the right half of the button will copy the content of Memory VFO on the currently selected VFO (A/B).
?
SAVE : Touching this button will save currently active VFO in EEPROM memory. VFOs A, B and 100 Memory channels are kept on EEPROM. Only currently displayed VFO is saved to its corresponding memory location. It saves vfo and bfo frequencies and current sideband. During save process the text display changes to SAVING.
?
TxTmO : (PTT_Time_Out Activate button) : This button will activate the Time out function of PTT. The PTT would automatically get deactivated after the timeout period. The period is adjustable from within the program. Very useful when using toggle PTT
?
The Three Fx buttons are yet to assigned. Your suggestions are welcome for functions of these buttons.
?
?
The Hardware

MODIFIED ATMEGA - ADDED SOCKETS ON THE REAR?
To keep the hardware assembling at minimum we use? standard off the shelf components.? A standard Arduino Mega 2560 is the base system on which compatible TFT display cum touch screen shield is mounted. A standard breakout board for frequency generating chip 5351 may be connected to Arduino using two control wires (SCL, SCK),? and of course the common ground wire plus the 3 V or 5 V power? supply. A PCB for 5351 is also designed for the more adventurous hams. Details of the PCB with schematic are given later.? All buttons are 22 connected between the pin and ground.
?
Though all operations of this VFO are controlled from the touch panel, for those who prefer or need buttons and rotary encoder, it is easy to connect push buttons for almost all functions and also a standard rotary encoder. For connecting the external encoder and buttons a number of pins are available on Arduino board. These pins are allocated in the sketch and can be reallocated by user.
?
?
The Arduino Sketch
?
The arduino program or sketch is accomplishes all functions related to VFO and BFO needed in a typical transceiver like Bitx. Due to varieties in the transceiver design, the sketch is kept flexible and may be adopted for a particular transceiver using some parameters in the program. Details are given in a separate section below. To make the large sketch manageable, it is divided into smaller parts, all of which must reside in the same directory.? The main sketch is called TFT_VFO_SPF_vxxx.ino, where vxxx indicated its version.? This and remaining 5 parts of the sketch must be located in a directory with the name of TFT_VFO_SPF_vxxx, all the other programs should also be placed in the same folder. The names and brief details of these sketches are :
?
1.? TFT_VFO_SPF_vxxx.ino?? - the main program where the execution begins.
2.? EPROMAnything.h? - Handles read write to EPROM where some of the settings are saved
3.? CommonFns.ino? - All functions which are common for? operation
4.? DispPos.ino? - Calculations regarding displays
5.? Displays.ino ¨C All functions needed to display various parameters
6.? saveNsetup.ino? - functions for setup and various types of saves
?
?
User Programmable Parameters
?
Inside the TFT_VFO_SPF_vxxx.ino sketch somewhere near the beginning, there is a section named ¡°USER SELECTABLE DEFINITIONS¡±.? Parameters may be changed/ adjusted as suited to hardware and operational practice. The? ¡°#define¡±? statements are used to select parameters, based on which, some decisions are made later in the program. To define parameters these statements should be uncommented. Similarly, to undefine, there should be two slashes (//) at the beginning of the line.? Many of these are hardware dependent, e.g. model of the bitx or other transceiver. Briefly some of these are explained below:
?
FIXED_BFO ¨C It is defined? if the fixed frequency BFO is generated by onboard oscillator and cannot be altered dynamically by the program (e.g. in Bitx40 from Hfsig, the BFO is fixed xtal Oscillator producing about 11997000Hz). The other option may be to generate BFO from one of the three oscillators of Si5351 chip.
?
IF_12MHZ or IF_10MHZ -? Newer Bitx¡¯s use 12 MHz xtals as IF Filter. Earlier models had 10MHz IF. Only one of these should be defined.
?
Si5351correction ¨C This parameter is used to compensate for minor differences in output frequency of Si5351 IC. Generally a program to calibrate and find this offset ships with the Ether kit¡¯s 5351 library.
?
To accommodate amazing variety in TFT displays, we have to define the display type and some parameters for different displays. A few of these displays have been tested and more may be included soon. For example? elegoo923 and? MCUF0x154 are names given to typical displays. These may not be standard names. More display types may find their place in this section of the program.
?
Several push buttons may be connected to predefined pins as shown below and this allocation may be changed here in this section. One typical Example:
#define BandSelect??? 53
indicates that a button connected at Pin D53 will change bands on repeated push. Similarly many other functional buttons are defined and used. There is a short description of the function of that Arduino pin as comments on the same line.
?
ts_delay? - sets the? delay between touch button to reduce sensitivity. Some touch buttons may trigger several times when touched briefly, if this delay is small.
?
Tx_timeout? - set time in sec for which the Tx works continuously and then switches back to Rx in Tx Time out mode (toggled by TxTmO button)
?
offset and? if_offset ¨C? compensate for the difference in frequency, These offsets are to be? determined experimentally by tuning to a known frequency station.?
?
?
Building Notes
?
Several Methods and Tips which? have been used to? put this project together
?
- One method? - A separate shield board? developed to accompany the TFT. It contains a Si5351 as VFO/BFO generator and also an extender, as all free digital I/O pins and Analog Inputs have been brought out on the edge of the board on the other side to make it easier to connect to main board as well as keep the front? reasonably flat for fitting on the front panel of the homebrewed.? VU2SPF has designed the circuits and PCB. which you can build / produce, home brew style.
- The second method is to use a display, and Adafruit Si5351 DDS board and a modified Atmega 2560. Using this method you can plug the display directly into the Atmega. Next you add strip sockets to the rear pins of the atmega.. This allows you to plug the required and or optional external wiring to external devices and from the rear of the atmega. Without the mod the front is mostly covered by the display which makes it difficult to get access to the atmega pins.
- The same as method 2, except just solder wires directly to the rear of the Atmega
- Hash or noise control - After building several versions of this project I found digital hash noise to be quite low.? But additional filtering will make it even better.? I have used simple hash filters using a 1000mfd cap followed a 2 - 12 ohm resistor in series with another 10000mfd cap. Basically two capacitors? with a resistor in between, simple but very effective.?? Use shielded cable where possible, especially from the dds output to the radio VFO connection.? Also, shielded cable from the rotary encoder is a good idea¡. if you decide to add one¡..however, Touch control by itself is very good..
?
?
SOFTWARE NOTES
?
- The internal arduino code has many user options. There are 3 areas at the beginning of the code which the user may need to change.
- ?Fixed or Variable BFOs. .depending on your radio, the code can take care of it for you
- Display selections.? currently 2 choices, but you can add your own
- IF freq - depending on your radio you will need to choose. 10 mhz and 12 mhz.
- TXTimeout Timer - is set for 60 but you can just change the variable for whatever value you desire.
- The code for the BAND selection? is implemented, all you have to do is pick the band and match it to the atmega pin - + 5v.
- There are many predefined buttons available , just pick the one you want and add your switch.? On side to the atmega pin and the other to ground. These are optional as the touch control has all the functions? already.
ENJOY. 73 VE1BWV
|
This may belong to the "Your Set Not Ours" Department, but I'm wondering: Has anyone else noticed a distinct "pop" or "knock" while dialling down on receive from 7159.3 to 7159.2?? It only happens for me in one direction--going up from 7159.2 to 7159.3 makes no unusual sound. My Raduino uses pavelmc's (CO7WT) code, and I'm in LSB. Any idea what might cause it?
-Michael VE1LEB
|
"Had 2", Chris?
DHL, as presented on the hfsigs website, is always an option. Their courier service may be faster than Post, bit it's a pity it's like the farmer's getting his cows serviced (there's a song about that, by Martin Curtis, but I doubt it's ever been recorded).
|
Re: Multibanding a Bitx40 questions
I am interested in buying and multi banding a second bitx, and would like to know how well the qrp labs bandpass and low pass filters work, and if anyone is using the qrp labs relay board to switch them.
Thanks
Brent
|