SMTAssistant - A Useful Utility

sous vide gerber teaser SMTAssistant is a handy utility for working with printed circuits boards provided free-of-charge by the French company Alciom.  Thank you W4GNS (Gary) for pointing it out to me.

When assembling or testing a PCB, it can be difficult to locate a particular part, especially on crowded boards that may not even have the reference designators printed on the silk screen.  SMTAssistant is a simple, yet powerful tool  that allows showing the component location on a picture or drawing of the board. One window highlights the general area on the board while a second window shows a close-up view of the location.  This is invaluable when stuffing a complex board.

SMTAssistant Webpage

SMTAssistant overlays a centroid file generated by the PCB layout program over a picture of the board.  The picture can be generated by the layout software, by a Gerber file viewer or even a picture of the bare or assembled board.  If a picture of an assembled board is used, it's a great tool to check for assembly errors too.  Most layout programs have tools to generate the needed centroid files, which are used with pick&place machines.  Files to generate the centroid files are included for Eagle and PADS.

The illustration below shows SMTAssistant with my vibration monitor board - I've highlighted the selected area on the drawing with is normally shown in a yellow box.  Selecting Q302 in the parts list highlights the area on the board and shows a close-up of the mounting location.  Depending on what information is available in the PKP file (centroid file), the parts list may show the value and package.  The parts list may be sorted in different ways to aid in assembly - for example, resistors of the same value can be listed together so that that can all be placed at the same time.

vm drawing-highlighted

This photo shows the same vibration monitor board using a picture of the actual PCB.  This may make placing parts a bit easier.  The zoom control determines how large an area is shown in the close-up view.

vm photo

This picture shows an assembled TAP-28 board which would make checking assembled boards easy.  In this case, R3 is shown, so the color code can easily be verified. 

TAP-28 part location

Using SMTAssistant

SMTAssistant uses an INI file to identify the contents of the PKP file.  It's pretty self-explanatory as shown below.  The one gotcha is that the INI file in the directory where the SMTAssistant resides is used.  Make sure to edit the correct file.


SMTAssistant configuration file
Syntax :
Line 1 : Number of lines to skip when reading a PKP file
Line 2 : Field separator between columns of the PKP file
Line 3 : Respective indexes of the PKP columns, as follows :
Mandatory fields :
1 : Part ID (string, should be formed as letters followed by a number, as R101 or CP5)
2 : layer (any string starting with B or b will be understood as Bottom, else Top)
3 : X (should be a signed decimal number, separator is a dot)
4 : Y (should be a signed decimal number, separator is a dot)
Optionnal fields :
5 : Value (string)
6 : Package (string)
7 : Rotation (should be a signed decimal number, separator is a dot)
0 : unused
Strings could be either enclosed between double quotes ("STRING") or
without double quote if they never include the separator character
Exemple :
Configuration file for Proteus :
Corresponding PKP file :
Component positions for RL0724-003 Bytel schéma relais tmp 2A.LYT
Fields: Part ID, Value, Package, Layer, Rotation, X, Y
Units:  Rotation - degrees, X, Y  - thou
Notes:  The X, Y value is the centre of package as drawn in ARES.
        The origin for these values is the Output Origin.
        The values are a guide only and must be checked manually when
        setting up automatic insertion equipment.
"J1","TV FEMALE PLUG","TVPLUG",TOP,0,-827.953,-82.7677

Board Drawing and Calibration

The board drawing should be in BMP or JPG format and should be in the same orientation as the board when the PKP file is generated.  I didn't have much luck in trying to use the rotational controls to get the board picture and PKP file in the same orientation.

Parts Centroids

The close-up view of SMTAssistent uses the centroid of the part for the closeup view.  The centroid should be just that; sometimes component footprints are improperly designed with the "centroid" being located at pin 1 or other location.  If the footprint was designed using an improper centroid, the close-up view will not be centered on the component.


Proper Centroid

Showing All Components

SMTAssistent is designed to include SMT parts only.  For my applications, including all components is often more useful.  Fortunately, this is easy to change, at least in the case of Eagle.  Eagle uses a ULP (user language program) to generate the PKP file.  The supplied ULP specifically excludes everything but SMT parts.  In a very inelegant hack, I modified the ULP to include all parts... well, actually to eliminate the test if a part is SMT.


// This ULP generates a PKP file for SMTAssistant which contains the SMT parts on the Top layer.
// Written by Guenther Daubach, and donated to the public domain.
int IsSMD;
board(B) {
  output(filesetext(,"T.PKP")) {
      B.elements(E) {
          IsSMD = 0;
          E.package.contacts(C) {
                    if(C.smd && C.smd.layer == 1) {
                        IsSMD = 1;
    //  if(IsSMD) {                                                                     comment out this test
      , u2mm(E.x), u2mm(E.y), E.value);
            //}                                                                              down to here


SMTAssistant should prove a useful tool for printed circuit board assembly.  For providing documentation for users, a PKP file and drawing could be supplied to aid the user in assembling the board.