Kenwood TS-890 Band Decoder (amateur Radio Project Based on Arduino, Should Work With TS-480, TS-990, TS-590 and TS-2000))
by kuzysk in Circuits > Electronics
597 Views, 4 Favorites, 0 Comments
Kenwood TS-890 Band Decoder (amateur Radio Project Based on Arduino, Should Work With TS-480, TS-990, TS-590 and TS-2000))
In march 2025 I bought Kenwood TS-890. To fully utilize it, I needed a band decoder that would control the antenna switch. I couldn't find anything to buy so I made my own. The first version didn't allow manual band switching. This version allows manual band switching, the ability to divide the bands into four groups, and includes a simple menu so that the decoder can be configured without programming the microcontroller.
Communication takes place over the COM port. The microcontroller sends a query to the transceiver and the transceiver responds with the frequency it is operating on plus other information like TX, SPLIT and so on.
The band decoder has 12 usable outputs (all bands from 160m to 6m including CB band), but who uses all 12 bands? For simplicity, it includes a 6pin connector (the same as used by the Yeasu rotator controller) which is connected to the outputs by wire jumpers on PCB. This allows you to control a 4 to 1 antenna switch. If you use a multi-band antenna, then assign all the bands of the antenna to one group and the decoder will control all the outputs simultaneously. The output can be assigned to group A B C D or unassigned.
Supplies
- first of All you will need Arduino board (I made my own "Arduino Pro Mini" on board with other components because it was more effective way to minimizing dimensions and price)
- PCB with components by schematic diagram. On picture components are hard readable but download it to see details.
- connection cable 9pin RS232 - straight! (There are two versions, buy a straight where pin 2 is connected to pin 2 and 3 to 3)
- antenna switch (I will post later how I built mine. I am using logic where all relays are connected to 13.8V. The selected relay is grounded by a band decoder which connects the desired antenna to the transceiver.)
- Display 1.8" 128x160RGB TFT (driver ST7735) there are two versions one needs modification in code but both are usable.
Hardware
First you need hardware.
By schematics diagram you can see there are three main parts Microcontroller (connected as Arduino mini Pro), MAX3232 and ULN2803.
The MAX3232 we need to communicate with Kenwood transceiver by COM connector. The MAX3232 is capable of converting voltage levels seamlessly, so devices that operate at different voltage levels (Kenwood vs microcontroller) can communicate seamlessly with each other. It supports bidirectional conversion between RS232 voltage levels (+5V to +15V) and TTL/CMOS logic levels (0V to 5V or 3.3V).
The microcontroller sends a query (IF command) and analyzes the received data to determine the frequency at which the transceiver is operating. Based on the frequency, it determines in which band the transceiver is operating and activates the corresponding output pin.
The ULN2803 is a transistor array strong enough you to control common used relay coil of an antenna switch.
(Schematic digram is now corrected and is published as it works. Even if simplified schematics of ULN2803 shows comparator (or amplifier) on its input I realize the ULN2803 has quite low impedance so I had to add resistor R7 2k2 and to change value of R1 to 510ohm. (because inner pull-up resistor will not work :-) see 2803 inner schematics )
I designed and then ordered pre assembled PCB boards so it was no much components to solder :-). Only problem is you have to order 5 or more. So I actually have some unused.
Note: There is an "AnalogIN" input on the schematics and PCB. It is not used here but it allows to connect same board to different transceivers used "voltage" as selected band indicator. (require different code and tests)
Arduino Bootloader
If you will use already assembled Arduino board skip this step!
First you need to write bootloader to microcontroller...
For this you will need Arduino board. I use Arduino UNO.
How to do it is on internet but choose board "Arduino Pro or Pro Mini"
The Code
I am not programmer just hobbies so I use Arduino IDE
You will need some programmer, just check if pins are like on schematic/board. I use my old one where pins are in order: DTR,RX,TXV,CC,CTS,GND see picture.
You can write your own program or you can use one I use.
A professional will probably laugh at its structures, but the important thing is that the code is understandable and, most importantly, that it works. Today, I’m going to post just simple code (without using buttons, menu and dividing outputs into "Band groups"). It's much easier to understand. Later on I will publish full version I use now but first I want to test it couple of weeks before publishing.
The most important information here is:
The code is based on command "IF" the microcontroller sends to Kenwood transceiver via COM port.
If you will read document ts890_pc_command_e.pdf there is not mention about command "IF". But you can find it in attached file : ts590_g_pc_command_e_rev2.
After receiving command "IF" Kenwood will answer something like this: IF000141750000000000000000; where 00014175000 is frequency 14,175MHz.
Then the Band Decoder program reads "IF" to identify the command. Then reads the frequency to identify the "band" (or "over band") ,then P8 - to identify RX/TX and last waits for sign " ; " to identify end of the received IF command.
The Box
I made 3D model for my PCB.
Outputs
The band decoder has 12 separate "main"outputs and one 6-pin "help" connector, which is not required to be used. It is on the board only to simplify the connection to the antenna switch.
The 6-pin connector has two outputs already connected, namely Ucc +13.8V and GND. The remaining four pins can be connected using jumpers to outputs 1 to 12.
All 12 "main" outputs are the output of the ULN2803A - transistor array. Its internal wiring and connection to the antenna switch are shown in the figure.
Band Groups and Connection to Outputs
When using a multi-band antenna, for example a common "tri-bander" 20m,15m,10m, then it is not necessary to connect all outputs separately. That is why I designed the software so that the bands can be divided into four groups.
For example:
Group A - 40m, 20m
Group B - 10m, CB
Group C - dummy load 30, 15, 12, 60m
Group D - 160m, 80m
Antenna 17m band - No group
Antenna 6mband - No group
Here we need 6+2(Ucc,GND) = 8 wires to control all bands instead of 14 wires cable.
All outputs in a group behave the same and it is enough to connect the output relay to only one (any in the group) output.
Notes:
One output can only be assigned to one group.
The number of outputs not assigned to group is unlimited.
////////////////////////////////////////////////////////////////////////////////////////////
The picture shows a practical example that I use:
- The white wire soldered to output number 1 is assigned to group A. In that group are bands 160, 80, 30, 17, 15, 12, 6, 60, 11m. This group is connected to a dummy load using an antenna switch.
- The green wire is connected to output number 3, a 40 m dipole, the output is in "no group".
- The red wire is connected to output number 5. It is a 20 m mono-band Yagi-Uda antenna. It is in "no group".
- The yellow wire is connected to output number 9. It is a 10 m mono-band antenna, "no group".
The other end of each wire is soldered to a 6-pin connector. I used the connector in my other project (Yaesu rotator LAN interface). I had some connectors in the socket, so I wanted to use them, since my antenna switch only has 4 relays. (In the previous "buttonless" version, I used an 8-pin Icom microphone connector. The cover is a little bigger, 3D model on request if anyone wants it).
Notes
- The project page is not fully finished and I will add more descriptions steps and a full code later on. If someone wants I can publish schematics and PCB in file. I have it only in Eagle because it was created in Eagle and I do not use any different platform for now.
- All licensed radio amateurs for whom the article is written can find and contact me (SA7KZA) on the QRZ website.
- My English is not perfect, but I hope the article is understandable. I am open to language correction, no problem with it. It will help me to improve.