A friend I met on Sabre Squadron’s Discord, Ali, spotted on Ebay a bunch on unserviceable old TACANs, previously used on RAF Jaguars. He bought one and of course I followed him promptly.
Less than a week later the delivery arrived, and here’s my TACAN:
The goal is interfacing it with DCS, specifically with the F-14, by means of DCS-BIOS.
As you can see it is old and shows clear of usage (and precarious storage). I opened the package, and I was welcomed by a familiar smell of oil and metal (I basically grew up in my grandfather’s garage). I quickly opened the unit, removed the components I don’t need and I left the original wires.
There was a problem with the Units Channel selector but I fixed it quickly with a hex key.
Ali received his TACAN a couple of days earlier than me, and he did a beautiful job mapping the pins of the various components. He sent them to me, and I quickly soldered an Arduino Leonardo board to the TACAN. I started from the Channel selectors.
The Channel selector has 5 pins per plate. It makes sense: in order to represent numbers up to 12 (so, 13 numbers), 4 bits are required. The other one is GND.
0000 → Ch 0 0001 → Ch 1 0010 → Ch 2 0011 → Ch 3 0100 → Ch 4
0101 → Ch 5 0110 → Ch 6 0111 → Ch 7 1000 → Ch 8 1001 → Ch 9
1010 → Ch 10 1011 → Ch 11 1100 → Ch 12
In theory, a single Word is enough to store the complete bitmask; each byte can be retrieved by bit ANDs and bit shifting.
I wrote a hasty draft for the Channel selectors. I decided to use a “DCSBIOS – HID hybrid“: commands are sent via HID and the status is read by means of DCS-BIOS. The reason is having this unit working with any module with no additional coding required: if both DCS-BIOS and the F-14 module are detected and connected, then updates will be read via DCS-BIOS, otherwise the Channel selectors behave as fancy CW/CCW knobs.
The DCS-BIOS library for the F-14 allows reading the channel selected as a decimal value. Therefore, I simply set up a series of digitalRead and made a bit mask to convert the status of the pins into a value. Then, if the value I read from DCS-BIOS is different from the in-game value, a series of timers send HID Joystick commands until the physical and in-game values match, synchronizing the in-game TACAN automatically.
Imagine the people that build this TACAN. They thought they were doing an interesting job I guess, building avionics for fighters and military jets. Now their works is in the hands of video games players..
What they would think? 🙂