Wednesday, February 17, 2016

VFO + Radio Controller

Couple of months back I have created a prototype board for Si570. I had plan to use the Arduino Mega or mBed to drive the Si570.

Both of the options worked well, in fact the mBed based prototype was very small in and can fit in to a pencil box.

After driving the Si570 from the Arduino Mega, I thought of adding a Display to configure/view the frequency. Adding a 20x4 LCD was the initial decision, later changed to a 480x320 TFT.
 Arduino Mega has lot of pins which could be used for controlling the Band Pass Filter, Low Pass Filter, Tx/Rx control etc.

Here is the list of parts/functions which I am planning to add in this build to extend the VFO to a full functional Radio Controller

1) 4x4 KeyPad for frequency entry/selection of other radio functions/configuration/setup
2) 480x320 TFT display .(3.2 or 2.8 inch)
3) Tx/Rx switching , display the same in LCD
4) Band Output to select the BPF/LPF
5) RIT
6) VFO-A/B/SPLIT mode.
7) CAT interface
8) VFO-Memory and vice-versa
9) S-Meter for Signal strength
10) LSB/USB indication
11) AGC On/Off Control
12) PreAmp On/Off Control
13) RIT On/Off Control
14) Attenuator On/Off Control
15) Noise Blanker On/Off Control

Following Menu/ Setup Parameters are also considered at the moment.

1) IF Offset
2) VFO Mode - Possible options are (a) VFO-IF, (b) IF-VFO
3) RIT settings
4) SSB Offset Settings
5) High /Low Frequency Settings ( optional)
6) Band Settings (configured with default band plan,but can be altered based on user). This option can be used if the LPF/BPF is avilable certain HF bands.
7) Call Sign


A basic design of the UI is attached here.




Time to write a Radio Contrroller Library for Arduino :)


Sunday, January 4, 2015

Si570 Prototype Board

Si570 from Silicon Labs is a nice oscillator in terms of stability and frequency range.

I got 2 Si570s(CMOS Version 10 MHz to 160 MHz) for my project and I decided to make a prototype oscillator for my experiments.

Since Si570 operates in 3.3V (again for CMOS only) I had to find a level shifter for the SDA and SCL lines. With out the I2C level shifter I will not be able to drive the Si570 from an Arduino Mega.



I have used this level shifter with slight modifications :)

2N7000 is used in place of BSS138, and 4.7K is used instead of 10K.


 LM1117 is used for the 3.3 V regulated supply.

Si570 is not directly soldered, It is hanging in the air :)

As you can see the two output connectors are connected to the CLK+ and CLK- pins of the Si570. Later I realized that the CLK- output is not used in the CMOS version, so I connected the SMA connector to CLK+.

For initial testing the Prototype board is connected to a 5V supply and the Racal Frequency counter indicates 56.3 MHz (based on the factory programmed register values).

Now it is time to write some code to control the Si570.

I need to test the following scenarios

1) Arduino Mega + Si570 + Optical Encoder + KO7M's Si570 library
2) NXP mBed + Si570 + Optical Encoder +  mBed Si570 Library
3) Stm32F429 Discovery + .Net MicroFramework + Si570 + Si570 .net Library ( I have ported K07M 's lib to C#)

I hope I will be able to post the test results soon....




 

Wednesday, September 24, 2014

Arduino DDS Signal Generarator - Modifications

              Well, I was thinking about how to reduce the "wire mesh" from the Signal Generator. One option is to interface the 20x4 LCD using an I2C expander. I can use the MCP23017 16I/O or a PCF8574 from NXP. Decision is to go ahead with the PCF8574. 

Next target is to improve the Keypad handling.   Here also I can use the same chip to handle a 4x4 matrix keyboard

There are libraries available for I2C LCD and Keypad targeting the PCF8574.

Next experiment is to evaluate the libraries before making any change to the code...:)

 

Sunday, September 21, 2014

Arduino DDS Signal Generator

An attempt to create a Signal generator for my BitX MK2 testing..

I had considered the following requirements

   1) Tuning based on an Encoder;
   2) 20x4 LCD
   3) Memory for specific channels
   4) Arduino based
   5) Keyboard for frequency entry
   6) DDS chip as frequency generator.


I prefer to use the optical encoder instead of a mechanical one. Mechanical encoder fails to work after continuous operation. Sometimes I need to open the mechanical encoder and clean it for a better control. 

Regarding the LCD, initially I thought of using an I2C/Serial LCD, but I could not find one in the local market. So I decided to use the 20x4 LCD which was lying in the junk for a while. Today I saw one convertor for LCD in KO7M's blog ( I am not sure whether it is I2C or RS232 version).

My plan was to use a Atmega328(with preloaded arduino boot loader) , but this needs a PCB and supporting components :). Finally I decided to go ahead with an Arduino Mega 2560R3. This is a nice board with 256KB of flash well enough for my application.

A flexible 3x4 keyboard is used in the build, in future it will be replaced with a 4x4 keyboard ( depending on the pin availability in Mega 2560)

Sometime back I had procured a DDS board from Digibay.in. It uses the AD9850 DDS chip and a 125 MHz crystal oscillator. The DDS board needs a 3.3 volt power supply, which I realized at a later point :). I didn't had a 3.3 v regulator ( through hole type) , so I used 2 1N4147 diodes in series and connected to the DDS power pin. For time being this can solve the heating issue of DDS board.

For testing the Radio I need to generate an LSB /USB signals ( to be frank this is also not needed, but it will be good as the frequency display in the Radio and the Signal generator will match).In the Firmware I have considered an option to switch the LSB/USB frequencies too.

Once this is completed then I can extend the features of this signal generator by adding the RIT, additional input for Tx/Rx indication, Tx Power lever in LCD etc.





It looks like a wire mesh :), but the build is working fine...
May be it is worth to show some LCD Screen shots











I have written a calibration routine for the DDS and the values are stored in the EPROM of Mega 2560.

I have used the Encoder Library from http://www.pjrc.com/teensy/td_libs_Encoder.html. I have made couple of modifications in the original library based on my requirements.

Another custom library used in the project is to drive the DDS Chip.

I don't use a Git repository , so f anybody interested to try this build or expand it for your requirements please drop me a mail to vinodes "at" aol "dot"com ( don't forget to replace the "at" and "dot" :) ) I will be happy to give the source code and the libraries.


Problems observed :

1) When the DDS chip is operational for some time (say for one hour) the frequency is shifting for a couple of Hz. This may not be a problem if it is used in a radio. But for a signal generator point of view, it should be rock solid. I doubt the DDS board, it is a made in China borard , it costs only INR 500. If I have to buy a DDS chip from Farnell then I have to pay almost double money :)

One solution for this problem is to use the SiLabs Si570 which works from 10MHz to 160 MHz ( needs 3.3 v Power + an I2C level shifter) .
Trigger for another project :).........



 

Tuesday, April 8, 2014

BitX -Completed......

BitX (G6LBQ) MK2  project is almost completed..(



I haven't started to build a PA stage. Not considering a high power PA stage for this transceiver. A PA with 10-20W output will be good enough for this.

Since the Tx stages are not functional, I haven't connected LPF and microphone at all.

I am operating ( receiving to be precise) the BitX using a PIC based DDS VFO. I am not happy with its performance. Since the BITX IF is set to 11.0592 Mhz , the VFO frequency should be rxFreq + 11.0592Mhz.  VFO is low in amplitude at the high end of HF. Redesigning the LPF at the VFO final stage can solve the this issue up to some extend. I don't want to do any changes this VFO.


Next task is to build a nice VFO based on the arduino, possibly use the Arduino Mega itself as it has lot of program memory and EEPROM to store user settings.
One option is to drive the locally available AD9850 DDS board from the Arduino, or it will be better to use the Si570. Si570 is bit costlier as compared to the AD9850 module , but the stability and frequency range of this little monster Si570 will override the cost factor.

Vinod.

Thursday, December 5, 2013

PA0RDT Mini Whip....

    At the moment my BitX Tranceiver needs a good receiving antenna. Since the space to keep an antenna in my house is limited,  I think PA0RDT mini whip is a good option for me.

Today I built the PA0RDT in Manhattan style.


I have used experimental version of PA0RDT





Before connecting to BitX, I think it is a good idea to connect the PA0RDT to the  Club Transceiver (Yaesu FT 757) and test the performance.




Sunday, November 3, 2013

Raspberry pi wobbulator

Tom Herbison has developed an excellent test equipment using the raspberry pi.

This can be used to  measure crystal frequencies, filter performance etc..

Tom's blog contains all details about this nice project.

Raspberry pi wobbulator needs 2 more plug in boards
    1) AD9850 DDS Module
    2) ADC PI Module
and an envelope detector (seems similar to the one used in the old AM broadcast receivers)
AD9850 module is available in e-bay.
ADC PI is a product of ab electronics.co.uk.

Since raspberry pi has GPIO pins,  it will be easy to interface a graphic lcd. Once the wobbulator program is modified to display the data in lcd, then the  raspberry pi wobbulator become a handheld device.

Nice idea uhhh??

This is time to take raspberry pi out of the shelf.  Or maybe it's a good idea to keep this project for next year. :)

I have tried couple of Linux distributions in raspberry pi.  Used my 32inch Samsung television as the monitor. Raspberry pi needs at least 700mA , 5V power supply.  I used my Samsung galaxy mobile charger to power the pi. This credit card sized computer is a good choice for people who want to try Linux.