Bookmark and Share

Opencockpits USBServos Card
Reviewed by Jack Whaley-Baldwin
August 2010

Introduction
Servo motors are electronic motors that adjust their positioning according to feedback obtained from a source. For example, a central-heating thermostat is an example of a servo (but not a servo motor), as it constantly adjusts itself according to feedback given from the surrounding air temperature.

Servo motors can be widely obtained in many different qualities, shapes and sizes. Micro-servos to advanced industrial servo applications are common all over the world, and due to their flexibility and ability to achieve high levels of accuracy, they can be used in just about anything, including Home Cockpit fittings, which it what this review focuses on.

Opencockpits, a Spanish company that develops hardware and software for the three main flight simulators, FS2004, FSX and X-Plane, have successfully designed an electronic card that controls servo motors, as an addition to their IOCard (Input/Output Card) range of products.

Many Cockpit Builders use this electronic card to drive various apparatus in their dedicated Aircraft-Cockpit Simulators, and repeatedly talk about their positive experiences with the device.

But does it live up to the hype?

The USBServos Card
Opencockpits have engineered the adequately named “USBServos Card”, which, unsurprisingly, controls servo motors. This card can be purchased from Opencockpits, or alternatively, Aviation Megastore, the only official source of Opencockpits hardware.

It is reasonably priced at 25 Euros, + VAT, excluding shipping. The item is despatched quite quickly from what I experienced.

This card gives six three-pin outputs designed to be connected to any conventional servo motor. Supported brand types are Futaba, Hitec, JR, Airtronics, and many more as I have managed to connect Etronix servos to the card too.

There is a small Red LED on the USBServos Card which only illuminates when it is being supplied with a 5V Power Supply and is receiving software input from your computer. This is very handy as you will be able to see if the card should be working or not – A lifesaver when testing servos with the card.

Testing
After purchasing the Card, I managed to build two servo driven applications for my home simulator. They were, simply put, real-world aircraft instruments that had their insides stripped, and replaced with a servo with the needle attached.

So, I had instruments driven by servos, but no way to test them. This is where Opencockpits provide further assistance.

Navigating to the downloads section of the Opencockpits website, one can download a program which, once installed, presents the user with a very friendly and easy to use testing interface.

This interface is all covered within the manual. Basically, you can individually adjust the values of the six servo outputs using the slider along the bottom. This slider increases or decreases the value with the precise movements of the keyboard left and right arrow keys.

I found this testing program to be very useful and helpful. I successfully managed to move my Airspeed and Vertical-Speed Indicators to their full extents, and I managed to note down what values I needed to input into the SIOC Script (explained later).

The four fluctuating values that you can see on the left-hand side are those of the analogical potentiometer inputs. This works to somewhat the opposite way of the servo testing. If you adjust the potentiometer values in real-life, the values will change on screen, just as they should with Pot inputs.

The videos you can see below are me using the USBServos Software to test my ASI and VSI gauges, respectively.





Reliability
I have powered-up the USBServos Card countless times and it never fails to work.
It's good to see that when I plug the card into the USB slot, the Servo needle always returns to the same place instead of rotating to an incorrect value.

Furthermore, whenever I adjust the values in the USBServos software, the needle always moves at the same pace, hitting the appropriate airspeeds at the values I calculated beforehand. Perfect.

The USBServos Card is a wonderful example of reliability! It never fails to impress me with how it manages to accurately plot the course of my instrument gauges and bring them safely back home to the fabled zero point.

In addition, I tested each output with a multimeter and every time the same voltage pulses (this is how the servo data is given out) were the same.

Very reliable!

Power supply
The card requires you to connect your own 5V power supply to the card. However, the connection is a small and very fragile two-pin connector, and you must make/obtain your own connecting device.

I was a little disappointed with this, as I reckon that Opencockpits could've supplied a small lead to connect to the card, especially because the pins are likely to break if the wrong connector is punched through them.

Luckily, it wasn't hard for me to source the correct connector and after a quick visit to the local electronics store I was up-and-running with the USBServos Card.

Connections to the Servo pins
Unfortunately, Servo manufacturers don't tend to standardize in terms of how they arrange their servo leads. Each servo, as previously mentioned, as three wires, namely 5V (Power), GND (Ground), and DATA (Voltage pulses). Servo brands like to swap these around, so whilst on one servo it may be arranged 5V, GND, DATA, on another servo it will most likely be arranged differently.

This has given Opencockpits little choice in how they go about arranging the connectors on their USBServos Cards. Eventually, they settled for 5V, DATA, GND, which of course is not the norm for any servo, due to the manufacturer's ignorance (see above).

Due to the fact that Opencockpits have arranged their card like this, and that manufacturers don't standardize, it is up to the user to swap the wires around on the servo to comfortably fit the USBServos Card.

In my case, I produced small conversion leads/plugs which allow me to simply slot my servo in one end, and have it swapped around in order to connect to the Opencockpits card at the other. I would be happy to circulate these conversion leads around the FS community for a small fee for those who require it.

This is another case where maybe Opencockpits could've covered a little better, possibly by selling such leads as part of their shop or giving a detailed guide on how to convert them.
 

What Opencockpits do provide, however, is a table in their manual instructing on how different brands of servo swap around to become compatible with the Opencockpits Card. It did find this useful, so I suppose it makes up for the lack of physical conversion kits between Card and Servo.

[NOTE: THE FOLLOWING SECTION IS QUITE DETAILED AND COMPLEX. IT MAY BE DIFFICULT FOR SOME USERS TO UNDERSTAND THE SIOC LANGUAGE, OR SIOC ALTOGETHER]

Configuring the USBServos Card – SIOC and FS
Whilst testing the servo does provide a small extent of enjoyment, it is actually seeing your servo-driven Modules that give the real sense of achievement.

For the USBServos Card to communicate with FS2004/FSX, and vice-versa, the user will need to configure their card in the SIOC Software. This involves two complex steps: Setting up the SIOC.ini file, and designing a working SIOC Script.

SIOC.ini is a small but very essential file provided with every correct installation of the free ware SIOC Software. It is the initialization file that SIOC reads every time it starts up. Think of it as “the brain” behind SIOC – Whatever the SIOC.ini file says, SIOC carries that task out.

The manual doesn't teach detailed instructions on how to set this up with the USBServos Card, so a little legwork is required. Basically, one must add the line [USBSERVOS=N,X], where N is the “index” number of the USBServos Card (ie how many you have in your system. Card number one = 0, Card number two = 1, and so on).

Next, below that line, the user must add the following instruction [deviceUSB=M], where M is the device number of the USBServos Card. To find the device number, one can look in the main SIOC window, found after starting SIOC.exe.

For further clarification, please look at my SIOC.ini file below, setup up perfectly for the use of the USBServos Card.

//

[SIOC]
IOCP_port=8092
IOCP_timeout=4000
Minimized=Yes
toggle_delay=20
CONFIG_FILE=ServoVSI.ssi

[IOCARDS MODULE]
IOCard_disable=No
IOCard_LPT=No

[DEVICE INFORMATION]
USBSERVOS=0,77
deviceUSB=2132

[FSUIPC MODULE]
FSUipcdisable=No
FSUipcRefresh=50

[IOCP CLIENTS MODULES]
IOCPini_delay=3000
IOCPclient0_disable=Yes
IOCPclient0_host=localhost
IOCPclient0_port=8090
IOCPclient1_disable=Yes
IOCPclient1_host=localhost
IOCPclient1_port=8099

[SOUND MODULE]
Sound_disable=Yes
Volume=100

//

Please note that the values of 0,77 and 2132 must be substituted depending on your PC.

Also note the line [CONFIG_FILE=ServoVSI.ssi]. This is where we tell SIOC.ini what our SIOC script is, and where it is located (the SIOC file should be always located in the main SIOC Folder directory).

To design a SIOC Script, many hours of studying are required. It is far too complex an affair to explain in this review, so at this point I'd like to point you towards Nico Kaan's fantastic site , which gives hundreds of SIOC examples and exercises for everyday use.

For those that are interested, below is my current SIOC script, designed to drive a VSI and ASI gauge to FSX. I have named it “ServoVSI.ssi” hence why it is called so in the SIOC.ini (see above).

// 

Var 8500, Link FSUIPC_IN, Offset $02C8, Length 4, Type 1     // Vertical Speed

{

  L0 = V8500 * 0.7895     // FSUIPC conversion, L0=VS

  L0 = ABS L0     // L0 not signed

  L2 = L0   

  IF L0 <= 1000     // First sector

  {

    L1 = L2 * 0.085     // (85 steps/1000 values) = 0.085

  }

  ELSE     // Is a greater value

  {

    L2 = L0 - 1000     //  L2 only have values for next sector

    IF L0 <= 2000     // Second sector

    {

      L1 = L2 * 0.052     // (52 steps / 1000 values) = 0.052

      L1 = L1 + 85     // Add steps of others sectors

    }

    ELSE

    {

      L2 = L0 - 2000     // L2 only have values for next sector

      IF L0 <= 4000     // 3. Sector

      {

        L1 = L2 * 0.028     // ( 56 / 2000) = 0.028

        L1 = L1 + 137     // Add steps of others sectors 52 + 85

      }

      ELSE

      {

        L2 = L0 - 4000     // L2 only next sector (Value-1000-1000-200

        IF L0 <= 6000     // 4. Sector

        {

          L1 = L2 * 0.035     // ( 70 / 2000) =0.035

          L1 = L1 + 193     // Add steps of others sectors 56+52+85

        }

        ELSE     // Out of range

        {

          L1 = 263        // Max. position

        }

      }

    }

  }

  IF V8500 < 0     // If vs is negative

  {

    &VSI = 607 - L1     // Subtract from center

  }

  ELSE

  {

    &VSI = 607 + L1     // Else add to center

  }

}

 

Var 0500, name VSI, Link USB_SERVOS, Output 4, PosL 345, PosC 607, PosR 870, Type 2     // vsiservo

 

Var 9003, name IAS, Link FSUIPC_IN, Offset $02BC, Length 4     // IAS from Sim

{

  L0 = DIV &IAS 128

  L1 = L0 * 1.91 // Calculate Servo Slope

  L2 = L1 + 271.5 // Calculate Servo Intercept

 

V9000 = L2

}

Var 9000, name Servo3, Link USB_SERVOS, Output 3, PosL 271, PosC 606, PosR 940, Type 2     // ASI gauge

 

//

As you can see, the SIOC script requires a huge amount of calculating and work. Thankfully, for those note wishing to input so much effort a very quick SIOC tutorial for the USBServos Card is provided in the manual, and it seems to work okay. It is a tutorial on how to get a small VSI gauge working with SIOC (although not nearly as complex and detailed as above).

To calculate the scales of my gauges used with the USBServos Card (ie to tell the real-life gauge how much to move for every unit the FSX gauge moves), I visited yet another useful website, this time The Baron 58 Cockpit Simulator website

Documentation
The documentation, referenced a few times throughout this review, draws very mixed opinions from me.

To describe what I didn't like, I was unhappy at the inclusion of a proper SIOC.ini setup example. Secondly, I think a guide or something similar detailing how to design the 5V Power Supply is needed somewhere within the USBServos Card manual.

Also, as I mentioned above, the information included on how to get it working with SIOC, and also how to get the SIOC.ini file set up, is patchy at best.

 

However! It should never be said that the documentation is completely useless. It does, towards the beginning, include some very clear and informative circuit diagrams, dimensions, and even a colour guide on how to convert your Servo leads for USBServos Card compatibility.

I think with a little work the documentation could become much easier, especially because manuals are so valuable to beginners with such electronic cards. As it stands, the manual is a little unfriendly for beginners, except for the diagrams at the beginning which are excellent.

Verdict
The USBServos Card is definitely an excellent purchase for every cockpit builder out there. Its unparalleled reliability and ease of use makes it a very suitable choice for all sorts of cockpit applications.

I would've liked a little more effort on the documentation front, and potentially some more advice on how to convert the servo leads and also how to connect to the 5V power supply up, but nonetheless I am universally impressed with this product.

I hope Opencockpits continue their long-established fashion of producing high-quality and easy-to-use cockpit parts!

Pros:
Very Reliable Card
Reasonable Price
Works with many different simulator programs
Testing software is great and works very well
Four analogue potentiometer connectors included on the card

Cons:
Documentation rather patchy
Fragile and tricky to connect to 5V power input

My Score: 9/10


Jack Whaley-Baldwin
Review machine Spec:
Core i7 920 OC @ 3.8 Ghz | 6Gb Tri-Channel DDR3 Ram |GTX285 Graphics |Windows 7 64bit Home Premium