Oct 20, 2017

Arduino and Peripherals Powering

Sometimes, people who just started to work with Arduino have trouble making their ArdSimX/SimVimCockpit setup work. The cause of these problems often turns out to be improper powering of Arduino and its connected devices. Sometimes, the devices powered from Arduino drain too much power for it to handle, sometimes incorrect Arduino pins are used for powering. At best, some output devices don't work until the problem is fixed. Worst case - Arduino may be permanently damaged.

This combined diagram was designed to provide you a convenient reference for the proper powering practices for your ArdSimX/SimVimCockpit setup:

Oct 18, 2017

SimVimCockpit (ArdSimX.2) I/O structure

Like with previous versions of the interface, SimVimCockpit (working title ArdSimX.2) allows you to use any Arduino pins for direct inputs, namely buttons, switches and encoders, and direct outputs (LEDs).

If the available pins are not enough, now you can use CD74HC4067  modules as input multiplexers to expand any pin to 16 inputs, guaranteeing that a single Arduino will be enough for a cockpit of any complexity.

This is the structure diagram of SimVimCockpit connections:

Oct 16, 2017

Updated 7-Segment displays support in SimVimCockpit

As it was announced before, the TM1637 display controller support has been successfully added. I've finished and debugged the code to output data for this display type through the same multiplexer.

The only difference from all other display types is that the Data signal for TM1637 is not the same common "D"  output, but it is controlled  using one additional Arduino pin (that will be  fixed  as "D" output for TM1637).

Also, additional important updates have been done (see below)...

Oct 13, 2017

7-Segment Displays in SimVimCockpit (ArdSimX.2)

In SimVimCockpit all 7-segment displays are connected to one fixed port via multiplexer. All displays are numbered in range of 1 to 16.

You can connect different 7-segment displays that can be made using either simple 8-bit shift registers (74HC595), either any of 16-bit LED drivers (like DM13A etc), or MAX7219 driver.

Note: The TM1637 driver is supported too, currently I'm trying to adapt the data exchange protocol in TM1637 to the same port used for all other displays, but this is still uncertain, it could be another output option (additional output pin).

Oct 12, 2017

Multiple LED output in ArdSimX.2.

Like the previous interface version, ArdSimX.2 supports serial output to LEDs using the serial-to-parallel registers with latch. This allow you to connect as many annunciators as you need using a few Arduino pins. In ArdSimX.2 you can still use the 74HC595 registers connected in chain to make all annunciators for your panel.

Now we can recommend another option for multiple LEDs output (or digital signals output). In ArdSimX.2 now you can use DM13A LED driver or any other similar 16-output drivers - here is an example of this driver on Ebay. 

This IC is a 16-bit shift register with a latch for 16 constant current LED outputs. "Constant current output" means that you don't need to care about each LED's current, for all 16 outputs this current is set by a single resistor at a separate input, and each single output can sink 3 ... 60 mA, so that individual resistors on each LED are not necessary (as was needed in case of 74HC595 registers).

LED driver pinouts and wiring

Oct 10, 2017

Improved Encoder processing (ArdSimX.2)

In ArdSimX.2  Encoder processing has been totally reprogrammed. The new algorithm takes into account huge timing difference between  encoder scanning period and X-Plane frame rate, and counts precisely each encoder state change, with mininal missing steps probability.

The plugin in X-Plane can accept new data only with its frames frequency,  while ArdSimX firmware can check the encoder state about 150 times between each X-Plane frame.

In previous versions the program code couldn't send all fast state changes in one frame without missing steps while single slow changes were received by the plugin without problems.

Later (in ArdSimX) a "code crutch" was added to catch all encoder state changes and send them as multiple data packets, but this code has always been "beta" and was highly demanding to  processing time. This is why we recommended not to use encoders on the same board with steppers, for example.

In ArdSimX.2 all these problems were resolved. Now the program code reads all encoder inputs between X-Plane frames, takes into account every change and sums them, then sends the number of steps and direction in one single data packet, while at the same time using the algorithm of steps multiplication depending on rotation speed.

Oct 3, 2017

ArdSimX.2 Test - PWM control, Serial LEDs, MAX7219

In this test system one 1x16 multiplexer controls 7-segment displays (MAX7219), Serial LED output (DM13A drivers) and PWM outputs (TLC5947 controller, 24 channels, 12-bit output).

All these output devices are controlled through one multiplexer board (8 Arduino pins are reserved for this):

  1. Two MAX2719 displays are used - output of active Com1 frequency on 5-digit display, standby Com1 frequency on 6-digit display. Totally up to 16 different displays can be connecte, based either on MAX7219 chip or on shift registers, in any order with any digits number.  

  2. One 16-channel DM13A LED driver is used, this one register controls 16 LEDs. The next 16 LEDs can be used with another driver connected to the first one in series and so on.  Up to 16 total registers can be used (or up to 256 LEDs or digital outputs).

  3. One PWM controller TLC5947.  This board has 24 channels, each channel can be used for:
    • output for moving-coil gauge
    • control brightness of a single LED
    • control brightness of powerful LED/lamp groups using the appropriate driver
    • control input for other ICs such as registers with LED chain or 7-segment displays (e.g. brightness)
    • control any other PWM-controlled devices such as DC motors speed drivers, etc.

More informative videos and descriptions will be made soon (How to use DM13A LED driver and TLC5947 PWM driver).