Last updated on: April 23, 2024, 10:15 a.m.


Functional test fixtures consist of 3 main systems that work together:

  • The Mechanical Test Fixture that holds the PCB in place
  • The Test Instrumentation that takes measurements and actuates the DUT
  • The Test Software that automates the running of the tests

This post covers various test instrumentation that we like to integrate within our fixtures.

Our Criteria

Before selecting the instrumentation for a test fixture, it helps to determine a set of requirements that can be used to help make a decision. The requirements that are most important to us are:

  • Function
    • We like to reduce the amount of equipment within a test system, carefully selecting instruments that fit the exact IO requirements helps reduce the complexity and cost of the system
  • Price of the test equipment
    • We prefer to use lower-cost equipment (<$1k) so that our customers can build multiple test systems for redundancy and still stay within their budget
  • Compatibility with Linux and Python
    • We write all of our test scripts in Python and prefer to deploy systems that are running Ubuntu
  • Size of the equipment
    • We like to integrate all of the instrumentation within the test fixture, eliminating any external racks or instrumentation that is needed.

Low-Cost, but not Cheap

While we do prefer to use lower-cost instrumentation, we don’t use “cheap” instrumentation. The difference being in the reliability of the devices.

When we first started building test equipment, we were using any low-cost device we could get our hands-on on. We built Arduino’s into everything and were using Raspberry Pi’s to control the entire test system. This approach worked well in the beginning, however, the IO on an Arduino or Raspberry Pi is not protected, and we experienced hardware failures on the test fixtures which resulted in production lines going down. This downtime can cost thousands of dollars an hour which quickly dwarfs the cost of using an Industrial PC and ruggedized hardware versus the savings from using an Arduino or Raspberry Pi.

We do still find uses for Arduino and Raspberry Pi’s. However, these devices are usually used in conjunction with a custom PCB that adds IO protection to prevent hardware failures.

Our Preferred Instrumentation

At FixturFab, we use a variety of devices to create our test fixtures. We usually choose devices from the following list, tailoring the selection according to the requirements for each test fixture.

Acroname Manufacturing Test Modules

Acronames’ Manufacturing Test Modules (MTM) Series of Instrumentation consists of a series of modules that can be mixed and matched according to the needs of your test system.

The modules are very robust and they interface using a board edge connector, enabling the cards to be easily reused.

Acroname currently has the following modules available

  • MTM-USBStem / MTM-EtherStem
    • General Purpose Digital and Analog IO card
    • Controlled over USB or Ethernet
    • 4-port USB Hub, UARTS, GPIO
  • MTM-PM-1
    • 1.8V-5V, 3A Programmable Power Supply, and GPIO
  • MTM-DAQ-2
    • High-Precision Analog IO
    • Solid-State Relays and GPIO

Depending on the specific requirements for the fixture, you can add as many MTM modules as are required. The modules are networked together over an I2C bus and can be controlled from the Test Host via a single USB cable.

Acroname provides an easy to use Python module, as well as C and C++ libraries to control the modules. The libraries are supported on Linux, Mac OS, and Windows.

Rigol Programmable Power Supplies

When the Acroname MTM-PM-1 module isn’t capable of powering the device under test, we like to use Rigol Programmable Power Supplies. Our two favorite power supplies are:

  • Rigol DP832
    • For any fixtures that require more than 1 voltage rail
    • Connects directly using a USB cable
  • Rigol DP711
    • For any fixtures that require a single voltage rail, but require a voltage greater than 5V
    • Requires a USB to RS232 Cable to be controlled
Rigol DP832.jpg

Both power supplies can be easily controlled using the pyVISA library.

JTAG Programmers

To program microcontrollers, we typically use a Segger J-Link. While pricey, these programmers are robust and proven on the production floor. It’s to control the J-Link using various software packages. We utilize pylink, which is a Python module that was developed at Square.

segger jlink base.png

We also utilize pyocd, which can be used with any debug probe that supports the CMSIS-DAP firmware. We have used the following devices successfully:

  • NXP Link II
  • ST-Link v2 and v3
  • Atmel ICE


Binho Nova USB Host Adapter

The Binho Nova is a great device that supports I2C, SPI, UART, 1-WIRE, and SWI protocols along with some general-purpose digital and analog IO.

Binho Nova

It is easy to use directly from a Serial Terminal, and it can be controlled using Python via either the Adafruit CircuitPython or SparkFun Qwiic_Py libraries.

We have found the Binho Nova to be a great device to use when building fixtures to be used for validating firmware builds.

Want more insights?

If you are interested in learning more about choosing test instrumentation or have questions about any of the devices we featured, shoot us an email at