Background

The introduction of PCBs has streamlined the mass development of electronic devices. However, PCB manufacturing is still not immune to manufacturing faults and defects. One of the significant problems faced while manufacturing effect pedals and Eurorack modules at Animal Factory Amplification (AFA), Mumbai, is the defects formed while fabricating the PCB or populating it with components.

A simple solution to the aforementioned problem is testing out the functionality of the major PCB sections by hand, possibly even narrowing them down to the major ICs. However, this is an inefficient process for the following reasons:

  • It is incredibly tedious and repetitive to repeat the procedure for hundreds of PCBs every month.
  • Many of the AFA PCBs are highly intricate, consisting of hundreds of minute components that fit on PCBs smaller than a bar of soap. Testing them is a painstaking process.
  • As is the case with all manual activities, manual testing is prone to human errors and may not be a 100% reliable technique to verify the functionality of a PCB.

Solution

In-circuit Testers (ICTs) of Functional Circuit Testers (FCTs) have been introduced to automate the process of PCB testing:

In-Circuit Test, ICT is a powerful tool for printed circuit board testing. Using a bed of nails in-circuit test equipment, it is possible to gain access to the circuit nodes on a board and measure the performance of the components regardless of the other components connected to them. Parameters such as resistance, capacitance and so forth are all measured along with the operation of analogue components such as operational amplifiers. Some functionality of digital circuits can also be measured, although their complexity usually makes a full check uneconomic. In this way, using ICT, In-Circuit Test, it is possible to undertake a very comprehensive form of printed circuit board test, ensuring that the circuit has been manufactured correctly and has a very high chance of performing to its specification.

While commercially available ICTs are the best solution to test the PCBs manufactured at AFA, they do not justify the cost, space and energy requirements associated with them. As a result, we attempted to develop an in-house ICT solution using an Arduino microcontroller board, the AD9833 waveform generator IC, a bed of nails setup customized for AFA PCBs and some Python-QT software wizardry.

Implementation

The Arduino based ICT has two main components: the Python Frontend and the Arduino Backend. These are part of the FCT Gitlab group.

Arduino Backend

The firmware communicates with the frontend (on a computer) via serial communication and serves two primary purposes:

  • Driving two AD9833 ICs for generating audio signals and LFOs of the chosen frequency and waveform (sine, sawtooth, square or triangle); It receives the user choice via the frontend.
  • Sampling up to 10 test points and relaying the incoming waveforms to the backend; Since we are dealing with audio signals, the sampling rate is set at around 48 Khz.

Facilitating the high sampling rate involves using the Arduino to its limits; this was achieved using an interrupt based sampling logic. Considering this increased load, the Arduino Nano is not suitable for our purpose. Hence, we selected the Arduino Mega 2560 microcontroller for this project.

Python Frontend

The frontend is a QT5.0 based Python application that allows the user to interact with the FCT. Using the frontend, one can allocate the source signal (audio signal or LFO) against which each test point on the PCB can be analyzed. The graphical view can visually gauge the output at these test points with respect to the set source signal. This makes it convenient for a reliable determination of their validity. As of now, this validation process depends on the judgement of the human user. However, the end goal of the front end is to automate this process: e.g., if we want to verify an amplification circuitry on the PCB that multiplies incoming signals by two times, the application will validate its working by gauging if the output of the circuit (i.e., the testpoint) has double the magnitude of the applied input.

Additionally, the frontend also acts as an interacting layer between the user and the backend. The desired frequency and waveforms for the audio and LFO sources are communicated to the backend via the frontend. Additionally, the visual output that the frontend plots is received from the backend.

The Frontend GUI

The Frontend GUI