Jump to content

HMA's cockpit build


Recommended Posts

Hi,

 

What MEGA do you use for Master RS485?

 

There's :

https://fr.aliexpress.com/item/Mega-2560-PROMINI-5V-ATmega2560-16AU-with-male-pinheaders-Compatible-for-Arduino-Mega-2560/32802310906.html

 

With pin BUT only 6/9v VIN

 

And this MEGA :

https://fr.aliexpress.com/item/Free-shipping-MEGA-2560-R3-ATmega2560-R3-AVR-USB-board-Free-USB-Cable-for-Arduino-2560/32714983256.html

 

6/12v VIN but without pin

 

I think the best is to use 12v for all Arduino board in VIN.

5V won't run (6v mini) if I use an old PC powerDC.

 

Thanks a lot, and nice to see your cockpit!

Link to post
Share on other sites
  • Replies 248
  • Created
  • Last Reply

Top Posters In This Topic

Hi Tekkx,

 

This is the backplate for the CDU which rest's on top of the DZUS rails;

gtPe3uRl.jpg

 

This is the back side of the button unit which sit's on top of the backplate;

uDbNUSfl.jpg

 

As you can see there are buttons ontop of the DZUS but above the DZUS which is why the button unit is that thick.

 

Inside of button unit with PCB removed;

3AM4kVal.jpg

 

Buttons;

KU8EnXcl.jpg

 

PCB from push side;

BXWEob0l.jpg

 

If you need more specific pictures let me know. I can disassemble the unit.

 

BTW: The Bus is named RS-485. There are Transceivers for this RS-485-Bus named MAX487. :)

Thanks seem there is a typo in post 173

 

Hi,

 

What MEGA do you use for Master RS485?

This is the one I bought; https://www.ebay.com/itm/MEGA-2560-R3-ATmega2560-16AU-CH340G-Develope-Board-W-Cable-for-Arduino/201383981895?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

 

Cheers

Hans

Link to post
Share on other sites

Thank you very much, Hans.

Please do no further disassembling! (except there is another reason than peeping) :)

 

I have seen what I (not) wanted to see. (I went the wrong way in rebuilding this Device). :)

Manual for my version of RS485-Hardware, contact: tekkx@dresi.de

Please do not PM me with DCS-BIOS-related questions. If the answer might also be useful to someone else, it belongs in a public thread where it can be discovered by everyone using the search function. Thank You.

Link to post
Share on other sites
  • 1 month later...

Real TACAN implementation with DCS-BIOS

 

Extremely slow progress now. We got our second child end of October so time is sparse for the time being. Nonetheless there is a little progress which I’d like to share.

 

I have been working on getting a real TACAN implemented into the pit.

 

OHQZZ99l.jpg

(without lightplate)

 

The issue with TACAN in DCS is that it, unlike ILS, the TACAN can’t be set for specific channel. DCS and therefore also DCS-BIOS can only handle ‘step up’ or ‘step down’.

 

My idea was to have DCS-BIOS compare set value on real TACAN panel with value from DCS. If DCS was lower than TACAN panel value then DCS-BIOS to send ‘step up’ to DCS, if DCS value was higher than TACAN panel value then DCS-BIOS to send 'step down’ to DCS.

 

If DCS value is equal to TACAN panel value then don’t step.

 

First hurdle to get past was a simple way of interpreting the positions from the hardware. I made a map of the rotary switch:

 

2AVJC7el.jpg

 

I couldn’t figure out the coding system. It isn’t binary and doesn’t appear to be grey code either. A good friend of mine pointed me toward Port Registers. It lets you read or write to a segment of pins. That way I could write the map down thereby telling the Arduino that positions the channel was in.

 

I discarded to use of the Nano board as I needed more pins as I had two rotary switches. Secondly the Nano only has one segment with 8 pins BUT is uses pins 0 and 1 which are TX/RX.

 

Using the Arduino Mega gave me more options as it also has more Port Registers of 8 pins. As can seen from above I threw away rotary switch pins 4 and 5 on the rotary switch and then ended up with 8 pins what could define the exact position of the rotary.

 

From the above map if only rotary switch pin 0 and 11 were active then the channel is 8.

 

Now to implement the Port registers. In Void Setup I added following:

 

  //TACAN_1 inputs
 DDRA = B00000000; // set PINA (digital 29-22) as inputs
 PORTA = B11111111; // Sets (digital 29-22) with internal pull up

 //TACAN_10 inputs
 DDRC = B00000000; // set PINA (digital 30-37) as inputs
 PORTC = B11111111; // Sets (digital 30-37) with internal pull up
}

 

Above setup tells the Mega to set pins 29-22 as well as pins 30-37 as INPUT and use internal PULL UP.

 

 

I also added following to Void Setup;

 

int inputTacan_right()
{
 int valueTacan_right;
 if (PINA == B11110010) {
   valueTacan_right = 0;
 }
 if (PINA == B11110101) {
   valueTacan_right = 1;
 }
 if (PINA == B11101011) {
   valueTacan_right = 2;
 }
 if (PINA == B11101111) {
   valueTacan_right = 3;
 }
 if (PINA == B11101110) {
   valueTacan_right = 4;
 }
 if (PINA == B11011101) {
   valueTacan_right = 5;
 }
 if (PINA == B11011011) {
   valueTacan_right = 6;
 }
 if (PINA == B11011111) {
   valueTacan_right = 7;
 }
 if (PINA == B10111110) {
   valueTacan_right = 8;
 }
 if (PINA == B00111101) {
   valueTacan_right = 9;
 }
 return valueTacan_right;
}

 

Int inputTacan_right () which will be used later in the comparison between DCS and real TACAN rotary switch position. The value for inputTacan_right() is by checking the port register A (pins 29-22) and see which of the combinations fit. E.g. if the pins are read as 11011111 then the position is 7.

 

Same is done for left channel, please see full code later.

 

I also needed the channels from DCS so added this to the beginning of the sketch;

 

int Tacan_right_ingame; // hold value from DCS
//TACAN Right Channel
void onTacan1Change(unsigned int newValue) {
 Tacan_right_ingame = newValue;
}
DcsBios::IntegerBuffer tacan1Buffer(0x1158, 0xf000, 12, onTacan1Change);

 

It basically set Tacan_right_ingame to the right channel value received from DCS via DCS-BIOS

 

 

In the Loop I added;

 

if (Tacan_right_ingame < inputTacan_right()) {
   sendDcsBiosMessage("TACAN_1", "INC");
 }

 if (Tacan_right_ingame > inputTacan_right()) {
   sendDcsBiosMessage("TACAN_1", "DEC");
}

 

This is the comparison between DCS values and the set values on the rotaries. The whole sketch was set to use USB communications as it was a trial version.

 

Well it kinda worked. Problems encountered was that it was that communication was flooded with INC INC INC INC. And it had a tendency over running past the rotary value and them back again until it settled.

 

I tried to include a delay into the loop but that just made it worse. Now it seemed like the values were remembered during the delay. Thus it kept increasing long after DCS and rotaries were aligned.

 

Ok back to the drawing board. I had an idea of what I was looking for. I just wanted the sketch to compare DCS and TACAN panel a few times a second. Finally I would something useful:

This in the beginning of the sketch:

#include <timer.h>
Timer tm;

 

This in Void setup()

  tm.startTimer(200, setTacan);

 

It calls the function setTacan every 200miliseconds. So even if the loop is being called many more time due to the speed of the processor then it's only about 5 times a second the TACAN rotary switch position is being compared with DCS.

 

When I wite 'about' then if I understand correctly the timer isn't that accurate as it does not take into account the time it takes to run the loop itself. For all intended purposes it shouldn't matter here.

 

The timer function is included in the Void loop() but the comparison between DCS and Tacan rotaries is done in Void setTacan()

 

 

 

This is currently the full sketch;

/*
 Tell DCS-BIOS to use a serial connection and use the default Arduino Serial
 library. This will work on the vast majority of Arduino-compatible boards,
 but you can get corrupted data if you have too many or too slow outputs
 (e.g. when you have multiple character displays), because the receive
 buffer can fill up if the sketch spends too much time updating them.

 If you can, use the IRQ Serial connection instead.
*/
#define DCSBIOS_DEFAULT_SERIAL
#include "DcsBios.h"
#include <timer.h>

Timer tm;
int Tacan_right_ingame; // hold value from DCS
int Tacan_left_ingame; // hold value from DCS

/* paste code snippets from the reference documentation here */
//TACAN test button
DcsBios::Switch2Pos tacanTestBtn("TACAN_TEST_BTN", 3);

//TACAN Channel X/Y Toggle
const byte tacanXyPins[2] = {4, 5};
DcsBios::SwitchMultiPos tacanXy("TACAN_XY", tacanXyPins, 2);

//TACAN Mode Dial
const byte tacanModePins[5] = {6, 7, 8, 9, 10};
DcsBios::SwitchMultiPos tacanMode("TACAN_MODE", tacanModePins, 5);

//TACAN Signal Volume
DcsBios::Potentiometer tacanVol("TACAN_VOL", A0);

//TACAN Right Channel
void onTacan1Change(unsigned int newValue) {
 Tacan_right_ingame = newValue;
}
DcsBios::IntegerBuffer tacan1Buffer(0x1158, 0xf000, 12, onTacan1Change);

//TACAN Left Channel
void onTacan10Change(unsigned int newValue_Tacan_left) {
 Tacan_left_ingame = newValue_Tacan_left;
}
DcsBios::IntegerBuffer tacan10Buffer(0x1158, 0x0f00, 8, onTacan10Change);


void setup() {
 DcsBios::setup();

 //TACAN_1 inputs
 DDRA = B00000000; // set PINA (digital 29-22) as inputs
 PORTA = B11111111; // Sets (digital 29-22) with internal pull up

 //TACAN_10 inputs
 DDRC = B00000000; // set PINA (digital 30-37) as inputs
 PORTC = B11111111; // Sets (digital 30-37) with internal pull up
 tm.startTimer(200, setTacan);

}

int inputTacan_right()
{
 int valueTacan_right;
 if (PINA == B11110010) {
   valueTacan_right = 0;
 }
 if (PINA == B11110101) {
   valueTacan_right = 1;
 }
 if (PINA == B11101011) {
   valueTacan_right = 2;
 }
 if (PINA == B11101111) {
   valueTacan_right = 3;
 }
 if (PINA == B11101110) {
   valueTacan_right = 4;
 }
 if (PINA == B11011101) {
   valueTacan_right = 5;
 }
 if (PINA == B11011011) {
   valueTacan_right = 6;
 }
 if (PINA == B11011111) {
   valueTacan_right = 7;
 }
 if (PINA == B10111110) {
   valueTacan_right = 8;
 }
 if (PINA == B00111101) {
   valueTacan_right = 9;
 }
 return valueTacan_right;
}

int inputTacan_left()
{
 int valueTacan_left;
 if (PINC == B11110010) {
   valueTacan_left = 0;
 }
 if (PINC == B11110101) {
   valueTacan_left = 1;
 }
 if (PINC == B11101011) {
   valueTacan_left = 2;
 }
 if (PINC == B11101111) {
   valueTacan_left = 3;
 }
 if (PINC == B11101110) {
   valueTacan_left = 4;
 }
 if (PINC == B11011101) {
   valueTacan_left = 5;
 }
 if (PINC == B11011011) {
   valueTacan_left = 6;
 }
 if (PINC == B11011111) {
   valueTacan_left = 7;
 }
 if (PINC == B10111110) {
   valueTacan_left = 8;
 }
 if (PINC == B00111101) {
   valueTacan_left = 9;
 }
 if (PINC == B00111011) {
   valueTacan_left = 10;
 }
 if (PINC == B01111111) {
   valueTacan_left = 11;
 }
 if (PINC == B11111110) {
   valueTacan_left = 12;
 }
 return valueTacan_left;
}


void loop() {
DcsBios::loop();
tm.runTimers();

}

void setTacan(int timer){
   if (Tacan_right_ingame < inputTacan_right()) {
   sendDcsBiosMessage("TACAN_1", "INC");
 }

 if (Tacan_right_ingame > inputTacan_right()) {
   sendDcsBiosMessage("TACAN_1", "DEC");
}

 if (Tacan_left_ingame < inputTacan_left()) {
   sendDcsBiosMessage("TACAN_10", "INC");
 }

 if (Tacan_left_ingame > inputTacan_left()) {
   sendDcsBiosMessage("TACAN_10", "DEC");
 }

}

 

1st unsolved issue;

Now it doesn’t work complete as it should. It only works for channels 00 to 99. The position from DCS is actually the position of the rotary knob not the channel itself. This is not an issue for the right channel but for the left the knob will be in the same position on channel 0 and 10, 1 and 11 plus 2 and 12.

Ian has given me help to retrieve the channel itself from the char value instead but I haven’t gotten it to work. Most probably I noted down the solution incorrectly;

 

void onTacanChannelChange(char* newValue) {
//  if (newValue[0] == '48') newValue[0] = '0';
//   leftSelectorPos = (newValue[0] - '48')* 10 + (newValue[1] - '48');
   int Tacan_left_ingame =  atoi(newValue[1]); //leftSelectorPos;
}
DcsBios::StringBuffer<4> tacanChannelBuffer(0x1162, onTacanChannelChange);

 

2. unsolved issue;

For some odd reason I can’t get the Mega to work with RS485 using MAX487 as I have been using on all the other Nano boards. I did find one of the MAX487’s not working but that’s not the issue. I tried to use same communications board. When running it on a Nano it works, but when connecting it to the Mega is doesn’t. It should be working so it must be an error on my side but haven’t located it yet.

 

A little wiring;

8xTI52Cl.jpg

 

 

Quick YT, sorry for poor recording

 

 

Anyway just a small sitrep at the end of 2017. Pace have gone down but I hope to be able to get some momentum end of first quarter 2018

 

 

Happy New Year

 

Cheers

Hans

Link to post
Share on other sites
  • 1 month later...

IFF C-6280 running with DCS-BIOS

 

Thanks DM.

 

Well got the RS485 issue solved. Turned out to be a batch of bad chips. Made a test setup and they got really hot. Once I found a healthy chip the Mega ran without any issue as a Slave unit.

 

Still haven’t figured out how to get the TACAN channels as Integer as I have been busy on other tasks.

 

IFF C-6280

A long time ago I managed to get myself an original IFF C-6280A. Using the code Ian made for GSS Rain for the channel selection and it worked beautifully. Thanks a lot, saved me a bunch of headaches.

 

The rotaries I re-used by comparison code I made for the TACAN. This time there are no issues with using the exported rotaries positions as each position is unique.

I did find two small things.

 

1. The actual light for the Reply and Test aren’t exported. Only the push to test status is. Looking at the DCS-BIOS code it may just need following added;

 defineIndicatorLight("IFF_REPLY", 798, "IFF", "REPLY")
defineIndicatorLight("IFF_REPLY", 799, "IFF", "TEST")

I have writtin Ian to see if it’s possible to do locally or it will have to be done the main DCS-BIOS in order to work. As can be seen on the YT the lights only come on when the lamps are being pushed, not when the actual test is used.

 

2. The ‘Mode 4 Audio-Out-Light' on the A-10C IFF seems to move less than it should. When toggling the original panel SOCAT does report 0-1-2 for the positions however in-game the toggle doesn’t move sufficient. It’s like the command is insuffient, 1:24. When toggling directly in pit it all works and the Reply light also comes on.

 

 

My current code;

/*
 The following #define tells DCS-BIOS that this is a RS-485 slave device.
 It also sets the address of this slave device. The slave address should be
 between 1 and 126 and must be unique among all devices on the same bus.
*/
#define DCSBIOS_RS485_SLAVE 20

/*
 The Arduino pin that is connected to the
 /RE and DE pins on the RS-485 transceiver.
*/
#define TXENABLE_PIN 2

#include "DcsBios.h"
#include <timer.h>
Timer tm;

int Master_mode_ingame; // hold value from DCS
int Code_dial_ingame; // hold value from DCS

namespace DcsBios {
   class SwitchMultiPosBCD : PollingInput {
   private:
     const char* msg_;
     const byte* pins_;
     char numberOfPins_;
     char lastState_;
 
     char readState() {
       unsigned char i;
       unsigned char state = 0;
       for (i=0; i<numberOfPins_; i++) {
         unsigned char j = numberOfPins_ - i - 1;
         state |= ((digitalRead(pins_[i]) ^ 1) << j); // before state |= (digitalRead(pins_[i]) << j);
       }
       return state;
     }

     void pollInput() {
       char state = readState();
       if (state != lastState_) {
         char buf[7];
         utoa(state, buf, 10);
         if (tryToSendDcsBiosMessage(msg_, buf))
           lastState_ = state;
       }
     }
   public:
     SwitchMultiPosBCD(const char* msg, const byte* pins, char numberOfPins) : lastState_(0) {
       msg_ = msg;
       pins_ = pins;
       numberOfPins_ = numberOfPins;
       unsigned char i;
       for (i=0; i<numberOfPins; i++) {
         pinMode(pins[i], INPUT_PULLUP);
       }
       lastState_ = readState();
     }
 };
}


//Mode-1 Wheel 1
const byte iffMode1Wheel1Pins[3] = {44, 45, 46};
DcsBios::SwitchMultiPosBCD iffMode1Wheel1("IFF_MODE1_WHEEL1", iffMode1Wheel1Pins, 3);

//Mode-1 Wheel 2
const byte iffMode1Wheel2Pins[2] = {42, 43};
DcsBios::SwitchMultiPosBCD iffMode1Wheel2("IFF_MODE1_WHEEL2", iffMode1Wheel2Pins, 2);

//Mode-3A Wheel 1
const byte iffMode3aWheel1Pins[3] = {14, 15, 16};
DcsBios::SwitchMultiPosBCD iffMode3aWheel1("IFF_MODE3A_WHEEL1", iffMode3aWheel1Pins, 3);

//Mode-3A Wheel 2
const byte iffMode3aWheel2Pins[3] = {9, 10, 11};
DcsBios::SwitchMultiPosBCD iffMode3aWheel2("IFF_MODE3A_WHEEL2", iffMode3aWheel2Pins, 3);

//Mode-3A Wheel 3
const byte iffMode3aWheel3Pins[3] = {6, 7, 8};
DcsBios::SwitchMultiPosBCD iffMode3aWheel3("IFF_MODE3A_WHEEL3", iffMode3aWheel3Pins, 3);

//Mode-3A Wheel 4
const byte iffMode3aWheel4Pins[3] = {3, 4, 5};
DcsBios::SwitchMultiPosBCD iffMode3aWheel4("IFF_MODE3A_WHEEL4", iffMode3aWheel4Pins, 3);


//RAD Mic/Ident
DcsBios::Switch3Pos iffMicIdent("IFF_MIC_IDENT", 47, 48);

//RAD Test/Mon
DcsBios::Switch3Pos iffRadtest("IFF_RADTEST", 49, 50);

//Test M-1
const byte iffTestM1Pins[3] = {A6, A7, A8};
DcsBios::SwitchMultiPos iffTestM1("IFF_TEST_M1", iffTestM1Pins, 3);

//Test M-2
const byte iffTestM2Pins[3] = {A9, A10, A11};
DcsBios::SwitchMultiPos iffTestM2("IFF_TEST_M2", iffTestM2Pins, 3);

//Test M-3
const byte iffTestM3Pins[3] = {A12, A13, A14};
DcsBios::SwitchMultiPos iffTestM3("IFF_TEST_M3", iffTestM3Pins, 3);

//Test M-4
const byte iffTestM4Pins[3] = {51, 52, 53};
DcsBios::SwitchMultiPos iffTestM4("IFF_TEST_M4", iffTestM4Pins, 3);

//IFF On/Out
const byte iffOnOutPins[2] = {A0, A1};
DcsBios::SwitchMultiPos iffOnOut("IFF_ON_OUT", iffOnOutPins, 2);

//IFF Out: LIGHT - OFF - AUDIO
DcsBios::Switch3Pos iffOutAudioLight("IFF_OUT_AUDIO_LIGHT", A4, A5);

//IFF Master: OFF - STBY - LOW - NORM - EMER
void onIffMasterChange(unsigned int newValue_Master) {
    Master_mode_ingame = newValue_Master;
}
DcsBios::IntegerBuffer iffMasterBuffer(0x111e, 0xe000, 13, onIffMasterChange);


//IFF Code: ZERO - B - A - (HOLD)
void onIffCodeChange(unsigned int newValue_Code) {
   Code_dial_ingame = newValue_Code;
}
DcsBios::IntegerBuffer iffCodeBuffer(0x111a, 0xc000, 14, onIffCodeChange);

//Not correct
//REPLY
DcsBios::LED iffReplyTest(0x1128, 0x8000, 13);

//TEST
DcsBios::LED iffTestTest(0x112a, 0x0040, 12);


void setup() {
 DcsBios::setup();

 //Master mode inputs
 DDRA = B00000000; // set PINA (digital 29-22) as inputs
 PORTA = B11111111; // Sets (digital 29-22) with internal pull up


 //Code dial inputs
 DDRC = B00000000; // set PINA (digital 30-37) as inputs
 PORTC = B11111111; // Sets (digital 30-37) with internal pull up
 tm.startTimer(200, setIFF);

}


int inputMaster_mode()
{
 int valueMaster_mode;
 if (PINA == B00001111) {
   valueMaster_mode = 4; //EMER
 }
 if (PINA == B00011111) {
   valueMaster_mode = 3; //NORM
 }
 if (PINA == B01011111) {
   valueMaster_mode = 2; //LOW
 }
 if (PINA == B00111111) {
   valueMaster_mode = 1; //STBY
 }
 if (PINA == B11111111) {
   valueMaster_mode = 0; //OFF
 }
 return valueMaster_mode;
}

int inputCode_dial()
{
 int valueCode_dial;
 if (PINC == B11111111) {
   valueCode_dial = 0; //ZERO
 }
 if (PINC == B01111111) {
   valueCode_dial = 1; //B
 }
 if (PINC == B10111111) {
   valueCode_dial = 2; //A
 }
 if (PINC == B11011111) {
   valueCode_dial = 3; //HOLD
 }
 return valueCode_dial;
}


void loop() {
 DcsBios::loop();

  tm.runTimers();
}

void setIFF(int timer){
 if (Master_mode_ingame < inputMaster_mode()) {
   sendDcsBiosMessage("IFF_MASTER", "INC");
 }

 if (Master_mode_ingame > inputMaster_mode()) {
   sendDcsBiosMessage("IFF_MASTER", "DEC");
}

 if (Code_dial_ingame < inputCode_dial()) {
   sendDcsBiosMessage("IFF_CODE", "INC");
 }

 if (Code_dial_ingame > inputCode_dial()) {
   sendDcsBiosMessage("IFF_CODE", "DEC");
 }

}

 

 

A few shots;

 

Front

ocKCJj2l.jpg

 

 

Back with electronics

eBBaAitl.jpg

 

CMJUqnql.jpg

 

 

Why??

 

Many would probably say why go through all this trouble to get the IFF working since it’s not modelled in DCS. True but UniverseRadio/LotAtc just released an additional layer which will enable IFF system. If I recall correctly Aries Radio System implemented it as well long time back.

 

Cheers

Solo


Edited by Hansolo
Link to post
Share on other sites

Well got the RS485 issue solved. Turned out to be a batch of bad chips. Made a test setup and they got really hot. Once I found a healthy chip the Mega ran without any issue as a Slave unit.

 

I had the same thing happen to me Hans. I bought 25 RS487 IC's from a company in China. Not a single one worked. They did exactly the same thing... got really hot. I asked them to check their inventory and resend me good chips. The new ones worked fine. Sometimes these Chinese stores can be a real pain in the ass. I spent hours trying to figure out what was causing the problem. With Ian's help I finally realized the chips were bad after we ran a test sketch on each one.

 

Many would probably say why go through all this trouble to get the IFF working since it’s not modelled in DCS. True but UniverseRadio just release an additional layer which will enable IFF system. If I recall correctly Aries Radio System implemented it as well long time back.

 

Cheers

Solo

 

I thought it was the KY-58 panel that they were using. Crap, thats what they were using for encryption not IFF.:doh: Oh well, I wanted to build a new panel anyways:smilewink:

Regards

John W

aka WarHog.

 

My Cockpit Build Pictures...



John Wall

 

My Arduino Sketches ... https://drive.google.com/drive/folders/1-Dc0Wd9C5l3uY-cPj1iQD3iAEHY6EuHg?usp=sharing

 

 

WIN 10 Pro, i8-8700k @ 5.0ghz, ASUS Maximus x Code, 16GB Corsair Dominator Platinum Ram,



AIO Water Cooler, M.2 512GB NVMe,

500gb SSD, EVGA GTX 1080 ti (11gb), Sony 65” 4K Display

VPC MongoosT-50, TM Warthog Throttle, TRK IR 5.0, Slaw Viper Pedals

Link to post
Share on other sites
I thought it was the KY-58 panel that they were using. Crap, thats what they were using for encryption not IFF.:doh: Oh well, I wanted to build a new panel anyways:smilewink:

 

Sorry John lack of inforrmation. The KY-58 encryption has been moddeled by UniversRadio for some time but the IFF is just recently been implemented UR/LotAtc (typo on my part, sorry); https://www.lotatc.com/documentation/transponder.html

http://tacnoworld.fr/universradio-transponder/

 

A few from our ATC squadron has been testing it out with good results. For A/C like the A-10C the code is being taking from the transponder inside the aircraft.

 

Cheers

Hans


Edited by Hansolo
Link to UniverseRadio and LotAtc added
Link to post
Share on other sites
Sorry John lack of inforrmation. The KY-58 encryption has been moddeled by UniversRadio for some time but the IFF is just recently been implemented UR/LotAtc (typo on my part, sorry); https://www.lotatc.com/documentation/transponder.html

http://tacnoworld.fr/universradio-transponder/

 

A few from our ATC squadron has been testing it out with good results. For A/C like the A-10C the code is being taking from the transponder inside the aircraft.

 

Cheers

Hans

 

Thanks for the update Hans. Actually, I have the IFF panel already built although its not been wired. I expect getting it fully functional (you know, just in case :smilewink:) won't be a large effort.

 

I must say Hans, you are doing some very impressive work these REAL A10 panels and thanks for posting your results.

Regards

John W

aka WarHog.

 

My Cockpit Build Pictures...



John Wall

 

My Arduino Sketches ... https://drive.google.com/drive/folders/1-Dc0Wd9C5l3uY-cPj1iQD3iAEHY6EuHg?usp=sharing

 

 

WIN 10 Pro, i8-8700k @ 5.0ghz, ASUS Maximus x Code, 16GB Corsair Dominator Platinum Ram,



AIO Water Cooler, M.2 512GB NVMe,

500gb SSD, EVGA GTX 1080 ti (11gb), Sony 65” 4K Display

VPC MongoosT-50, TM Warthog Throttle, TRK IR 5.0, Slaw Viper Pedals

Link to post
Share on other sites

Thanks gents for the kind words. Truth is that I just have too much time anymore to be fiddling with cnc trying to aqquire the skills to make good panels so I try and grab as much as I can from Ebay.

 

@Alburg, the IFF most probably isn't an A-10 panel as the lenses on the edge lit lamps are red. Maybe from a helo or an F-4. And yes it takes countless hours looking for stuff on Ebay and in 99% of the time there isn't anything.

 

Managed to get hands on a HARS panel, close but no cigar. It has a 3 position rotary instead of the toggle switch for DG-SLAVE. Not sure which aircraft it's from but it will do nicely. It cleaned out good, even the push to sync works with a pressure plate and re-centering springs. I'll post some pictures of it later ones it's fully wired up. I just need to make a small circuit with a +- voltage and a operational amplifier to get the Arduino output to be converted into +- voltages to drive the instrument.

Is it moddeled in DCS? Not sure but i could be fun to get it working :-)

 

Cheers

Hans

Link to post
Share on other sites
  • 3 weeks later...

Hans,

 

Were you able to solve the TACAN problem? I also have an actual TACAN and would be looking to do the same thing. Were you able to use the original pins and plug on the unit or did you re-wire the whole thing? I was planning on tracing the wires back and using the existing pins.

 

Gary

Link to post
Share on other sites

Hi Gary,

 

No I haven't found a solution for when the channels gets above 99 yet but if you figure out one I'd be happy to hear about it.

 

I removed all original wires and started from scratch. The original IIRCC had some internal crossovers and as you can see from post #180 I deliberatly removed some of the pins as soon as had a matrix that would give be one unique combination per position.

 

 

Cheers

Hans

Link to post
Share on other sites

Thanks. I’ll let you know if I can figure it out but I’m literally learning as I go. I’m trying to go from the front to the back of the consoles but this one may happen earlier since I have it on hand.

 

What do you do for the UHF radio? I find some analog ARC-164 ON EBay but I would prefer a digital display. I don’t have a laser engraver so I have to find a source that sells the panel.

Link to post
Share on other sites

I plan to get my UHF up and running. I got the pins mapped out but some of them are common so I will have to figure out a system to make it work. The AN/ARC-164 (V) comes up on Ebay from time to time but since they can be made workable if you are certified, they are quite expensive. Last set of 4 went for about $2300.

 

Cheers

Hans

Link to post
Share on other sites

Hans, I´ve just read all your post. Congratulations!

Now I´ve a bit clearer the hardware part of the Arduino and I think I have a good base to start studying. Thanks a lot for your dedication and effort in sharing and helping others.

Link to post
Share on other sites

KY-58

 

You're most welcome Sir.

 

Have managed to get hold of a KY-58 some time back in decent shape. As usual the original panels need a good cleaning, and some touch up with paint especially on the light plate

 

This is after cleaning and initial touch up;

tYxaRRCh.jpg

 

And from the rearside DCS-BIOS ready;

wtkB3Rwh.jpg

 

It's the standard setup I have used for other panels. Should really go make a pre-made standard board for the communication but just donøt have the time to look into it right now :music_whistling:

 

Now for the 'Zeronize' switch I had a chat with Deadman and he had an ingenious idea on how to get the feedback from the safety cover. Instead og using an ON-OFF toggle he suggested using an MON-OFF-ON or a MON-OFF-MON toggle switch.

 

When the safety cover is flipped down then it presses on the toggle swicth thus moving it in the downward position. This input is then used for the cover position.

 

By using the MOM function then the toggle will flip automatically into middle position when the cover is lifted. By using DCS-BIOS in standard mode then only the cover down input is defined.

 

DcsBios::Switch2Pos ky58ZeronizeCover("KY58_ZERONIZE_COVER", PIN);

 

Thus is not down then it must be lifted :-)

 

It works beautifully @Deadman. many thanks for the assistance.

 

The actual Zeronize function is just using the Switch2Pos function as well.

 

One more panel done, plenty more to go :megalol:

 

Cheers

Hans

Link to post
Share on other sites

I’m of the conclusion that if your doing a custom simpit you need a CNC and 3D printer and the ability to design in 3d

BlackeyCole 20years usaf

XP-11. Dcs 2.5OB

Acer predator laptop/ i7 7720, 2.4ghz, 32 gb ddr4 ram, 500gb ssd,1tb hdd,nvidia 1080 8gb vram

 

 

New FlightSim Blog at https://blackeysblog.wordpress.com. Go visit it and leave me feedback and or comments so I can make it better. A new post every Friday.

Link to post
Share on other sites
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...