The original release of FS5000 transceivers had no Digital Control Unit.
I started a project to reverse engineer a very basic unit.
Some more FS5000 have been released in April 2012 which have the DCU, but they only do burst mode.
My original prototype was just a connection between a computer parallel printer port and the FS5000 D25 connector. A board was used in between, with LEDs to show the line status. A control program was written in the BASIC language. This enabled the function of the lines to be deteremined, through trial and error. When the primitive functions were discovered, the circuit of a minimal interface board was drawn and the software tidied up.
CONTROL PROGRAM V1
Written in BASIC to run on an IBM PC
Controls the FS5000 via the PC printer port
Adapter card or cable required
BASIC program (7 Kb)
ADAPTER CARD or CABLE
A piece of perf board with two DB25 connectors.
Some cross linked wires
Alternatively, a cable with some cross linked wires.
Circuit (184 Kb)
If using an adapter board, do not short pins 25 and 24 together or to ground,
as it will destroy part of the printed circuit board or damage the FS5000 internals.
Here is a photo of some damage and the repairs,
when an adapter was plugged vertically into the remote control connector
and it touched the black locking levers.
On-Air tests 5 April 2005
Successful copying in Sydney on 14.030MHZ at 2150 AEST
bench setup with morse key (159k)
computer arrangement (152k)
monitoring receiver RA217 (174k)
On-Air tests 13 April 2005
Successful copying in Sydney on 14.050MHz at 2130 AEST
and on 7.025MHz at 2200 AEST.
Also transmitted with an RS-1 (similar to a GRC-109) transceiver.
Similar signal strength.
can be turned ON/OFF
can set the BW narrow/wide
can set the FREQUENCY (set 7 digits)
can be turned ON/OFF
can set the FREQUENCY (set 7 digits)
transmitter emits RF at 200KHz above the set FREQUENCY
can turn the RF output ON/OFF
can be made to tune an aerial
can be used with a separate receiver and transmitter frequency
changing from RX to TX takes about 3 seconds.
changing from TX to RX takes about 1 second.
I constructed a breadboard control unit using a PICAXE 40X.
Programming the PCAXE. Wrote the program in PICAXE BASIC and uploaded it through the serial port.
It uses an LCD display and a HEX keypad.
Works well. Several bugs were found and fixed.
LCD initialisation bug fixed.
Keyboard scanning bug fixed.
Still crashes occasionally.
Rats Nest breadboard setup
Received a metal box from Jim (thanks very much).
Cut the box and installed the LCD display and the HEX keypad.
Began PCB design.
Designed and tested the morse key and buzzer circuit.
Designed and tested the software ON and OFF circuits.
Ordered some parts, chips, sockets, buzzer.
Finished PCB design in Protel.
Finished drawing the circuit.
Got it manufactured.
It is a 2 sided board, and using snap pins for the plate through holes.
No solder mask or silk screen.
Started populating PCB.
Tested morse and buzzer circuits.
Tested regulator and software ON and OFF circuits.
Soldered in resistors, capacitors, chips and sockets.
PICAXE will not program!
I damaged the old chip, so cannot use that.
Solved the PICAXE problem!
The new PICAXE 40X-1 and 40X-2 do not need an external resonator
and do not show any waveforms on the external pins.
Also the new chips require a new editor, V5.2.7,
my older version does not recognise the new 40X-1.
Uploaded the first code.
Testing the PCB.
Got the initialisation routines working.
Should change the interface chps to 74LS374, (then have negative going latch pulses).
Wrote LCD init routine.
The LCD init routines were difficult to get right, despite all the info on the NET.
Wrote LCD write and title routines.
Title loads OK.
LCD initilaises OK.
Rewrote keyboard scan routines for new layout.
Keyboard scans OK.
FS5000 turns ON and OFF with A key.
Bandwith changes with B key.
Rewrote frequency input routines.
Receiver now working.
Auto ON/OFF not working, PIC is loading keyboard lines when not powered.
Transmitter working reliably, doesn't crash anymore.
Perhaps the rats-nest layout was picking up RF causing a PIC RESET.
Transmitter puts out 25 watts into dummy load.
Synth Lock status displayed on LCD.
Tested LPF routine OK.
Redesigned the ON/OFF routine and tested it OK.
TX and RX frequency offset added OK.
Did some on air testing, had two contacts.
Finished the PCB layout.
Sent it off to be made, they were slow, boards arrived 23 February 2010.
Populated one, found some errors, hole sizes too small for diodes, fuse clips, regulator, and pins,
Hole size OK for plate throughs, and ICs, just adequate for resistors.
Buzzer did not work, the new ones I bought do not operate at 5v, like the design ones I used.
Went to the store with a 4.5v battery and slected some that did.
Works marginally, redesign this.
Software listing V2.2
Software PICAXE basic V2.2
Unpopulated PCB V3.3
This is a downloadable PROTEL file (FS5P_4.pcb) to enable a V3.3 PCB to be made.
Brookes contoller. Brookes website.
Brookes controller installed
I redesigned the morse keyer to draw less current. It now uses 2 transistors.
I also redesigned the PCB. Originally I decided to flip it over so that chips were underneath, so that it leaves more clearance for keyboard and display. Changed my mind. I just made it smaller so that it fits in the bottom of the stepped DCU box. It now uses a ribbon cable to connect to the D25 connector.
New circuit V3.4
Unpopulated PCB V3.4
This is a downloadable PROTEL file (FS5P_6AA.pcb) to enable a V3.4 PCB to be made.
I purchased a Casio BOSS organiser so that I can use the QWERTY keyboard.
Determined that the keyboard matrix is 7x12 lines (5x12 needed for PCB).
Used a hot air gun to remove the SMD devices from it.
Casio BOSS organiser
Casio stripped of ICs
Bought some LCD displays, 2x16, 2x20, 2x40 characters.
The 2x16 display works fine.
The 2x20 display works fine, but it needs power pins 1 and 2 swapped on the display, (GND, +5v).
The 2x40 display works fine, but it needs power pins 1 and 2 swapped on the display, (GND, +5v), and backlight pins 15 and 16 swapped on the display (GND, +5v). It is too long for the front panel.
Bought a lump of aluminium, and used the mill to shape it for a new front panel. I cut a deep slot to mount the LCD. Then recessed the back and the front and cut holes for the keys of the keyboard.
Photo of the milling process.
Photo of the new working DCU with 20x2 backlit display and QWERTY keyboard.
This uses the same software and PCB as Prototype 4, it just has a new front panel.
STILL TO DO
RESET should load RX freq, it does not, why?
Only tunes in 1khz increments, yet synth requies 7 digits (10hz), why?
Add range checking on inputting frequency.
Disable morse key and audible tone, when in RX mode or synth not locked?
Investigate what the other FS5000 control lines are for.
Investigate data modes.
Investigate an SSB generator.
In April 2012, some more radios were released, the very similar SR5000M, and these have a DSU. I have copied the DSU EPROM, and diss-assembled the code. I have only gone a little way so far. I have found the messages for the display, and identified the LCD routines, the keyboard routines, and the frequency entry routine.
The plan is:
- to be able to control the receiver like a normal receiver
- to be able to receive a message at 75 bauds.
- to be able to send a message at 75 bauds.
- to send plain text
FIRST PASS: 17 June 2012
Here is the original dissasembled code (download DSU_code.ASM file) 700kb
SECOND PASS: 27 June 2012
All the jumps have been fixed.
Any strange bytes have been set to absolute data (using the DB assembler instruction).
Here is the dissasembled code so far (download DSU_V1.Z8A file) 700kb
This file can be assembled with z80asm (a free Z80 assembler on the web), (assemble at address "0") and produce identical code to the original EPROM (byte for byte). This program loads a ".Z8A" file and produces a ".BIN" file, that you may be able to burn directly into an EPROM. However, if you change the assembler code (even a 1 byte change), it will fail the EPROM test in the SR5000. You have to load the last byte with a checksum.
I have written a program in BASIC, that reads the a "binary" file, calculates the correct checksum, and places it in the last byte. It produces a "HEXadecimal text" file and an "INTELLEC text" file, which you can use to burn an EPROM. Either file will work, use the one that suits your EPROM burner. The BASIC file is here (download BASIC program Checksum.BAS). I use the BASIC interpreter from the web called "Just BASIC v1.01". My program in not very sophisticated, and has fixed file names, so rename your files to match them, or edit the basic code to put in your filenames. In my program, the input file must be called "DSU_V1.BIN" This will write a HEX file called "DSU_VHEX.TXT" This will also write an INTELLEC file called "DSU_VINT.TXT"
An EPROM programmer called a BYTEK model S5 can load either the HEX file or the INTELLEC file, through a PC serial port (INTELLEC = format 00) (HEX = format 06). It can burn a 27C256 EPROM that will run in the SR5000. The BYTEK uses personality module TP256-C and algorithm = 0E for the 27C256. I use HYPERTERMINAL on the PC (running XP service pack 3) to "send a text file" to the BYTEK.
Here is a version for use, if you get a TIMER DEFECT message. It should report the error, then continue. How the SR5000 will operate with a faulty timer, is a question. (file with a jmp at 034dh changed to a call, jmp at 010ach replaced with 3xNOP, aslo has "NT" in the version number)
(hex file for EPROM)
(intel file for EPROM)
Another version, which has the Timer defect reporting at
034d jmp replaced by a call
0372 jmp replaced by nop
0398 jmp replaced by nop
03c6 jmp replaced by nop
Timer error also reported at 17ec
Timer error also reported at 185d
Timer error also reported at 18c6
(Second Timer Defect version)
(Third Timer Defect version)
KEYBOARD EXTENSION CABLE:
The DSU keyboard plugs into the processor board near the EPROM. It is so close and short, that it is difficult to change the EPROM, and so it is necessary to unplug the flexible keyboard cable. If the DSU design had the RAM and EPROM locations swapped, it would be easier. As an alternative, you can make an extension cable. Get some ribbon cable and two connectors, 40 pin IDC, male and female. Press them onto the cable. Plug the 20 pin keyboard into one side of the female connector (only using 20 pins), and plug the other end with the male plug, into the DSU. Make sure you use the same side, and the same orientation. (picture of EXTENSION CABLE)
D25 CONNECTOR CONTROL (15 June 2012)
You can maniplute the lines F0,F1,F2,F3,FC,FMAN,RXON,TDC.
The connector pins 2 to 9 correspond to bits 0-7 at address 0c8h and 0cch
use 0c8h to clear a bit (low)
use 0cch to set a bit (high)
to enable these registers, first send 020h to 0c9h
EXAMPLE: to turn SR5000 radio ON (make D25 pin 8 high, this is bit 6 in 0cch)
Here is a test version of the EPROM.
(hex file for EPROM)
(INTELLEC file for EPROM)
It works normally, but has 2 changes. The Version number has a "t1" affixed (meaning test number 1).
The station number entry routine, will only work normally for station numbers begining with 0 or 6 (so valid station numbers are 1-9 and 60-63 only).
Entering a 1 as the first digit, selects the test routine.
The second digit 0-7, will set that bit (high) on the D25 connector (pins 2-9).
If the second digit is 8 it will clear all 8 bits to zero (low).
Use the "CHANGE" key, (between station number entries) to do it again.
To turn the SR5000 "ON", enter "16" as the station number.
To turn it "OFF", enter "18"
INTERFACE WIRING (31 July 2012)
I traced out the D25 wiring to the Z80 board, the diagram is here (wiring diagram)
Andreas has studied the DSU control and discovered their functions.
The 2 large ICs under the red paint are NSC810 peripheral inteface devices.
They control the keyboard matrix, the D25 connector lines, and contain the timers.
The register addresses and functions are contained in this NSC810 address file.