Manufacturing and Test Automation Projects
Many of my consulting projects involve creating custom software to run custom manufacturing and test automation equipment. Here I briefly describe a few of those projects.
Table of Contents
Conveyorized Contactless Smart Card Manufacturing
This project consists of a conveyorized system for the manufacture of contactless smart cards. Along the conveyor are a number of stations that do sheet feeding, picking and placing of smart card chips, laying antennas, and finally electrically bonding the antennas to the chips.
The software is divided into three parts. The main control software is a Windows program I wrote in Scheme using the
Bigloo Scheme compiler. The Scheme compiler outputs C which I compile using the
Microsoft C++ compiler. When I first started this project, the Bigloo Scheme compiler did not support preemptive multithreading so I modified my copy of Bigloo to implement preemptive threads following the
SRFI 18 specification as closely as possible. I also created a set of Scheme libraries for writing Windows programs, handling message queues, and generating dialog boxes programmatically.
The main control software communicates through
CAN to a host of custom hardware devices. Each of these devices uses an
Atmel AVR microcontroller. I wrote the firmware for each of these devices in C using the AVR target of the
GNU C compiler. These devices include robot end effectors, specialized wire embedding modules, specialized thermal compression welding modules, and general digital I/O and data acquisition modules. I used my
AVR libraries described here, along with a number of proprietary libraries I wrote specifically for my client for data encryption, boot loading, and CAN communications.
Finally, there are a number of
Adept robots that I programmed to communicate with the main control software through TCP/IP using the
Adept V+ programming language. The antenna bonding stations also include vision guidance and inspection code to do their work.
Below, you can see an early video of the manufacturing line in action.
Modular Contactless Smart Card Manufacturing
This project consists of modular work cells, each of which is responsible for one of three main steps in contactless smart card production: picking and placing the smart card chip, laying the antenna, and finally bonding the antenna to the chip.
All the hardware in the work cells is controlled by programs I wrote for the
Adept robots using the
Adept V+ programming language. Although each work cell includes a Windows PC, it is only there to provide a user interface to the robot controller.
The wire embedding heads each use an
Atmel AVR microcontroller, and I wrote the firmware for them in C using the AVR target of the
GNU C compiler. The embedding heads are networked together using
CAN, and one head connects the network to the robot through RS-232.
Below, you can see a video collage showing the various parts of the work cells in action.
Squirt
This project was designed to test a specific family of medical liquid dispensing products in various user configurable and user programmable ways. A servo-controlled product "hive" is populated with hundreds of dispensers. Each dispenser can be assigned its own test sequence and testing schedule. A robot extracts each dispenser from the hive and dispenses liquid shots into a high precision scale. The shots are weighed and recorded in a database, and the dispenser is returned to the hive.
The software controlling this work cell is a Windows program I wrote using the
Microsoft C++ compiler. The software provides the user interface, schedules all the tests, provides the interface to the underlying database, and controls all the hardware. The software also implements a couple of custom languages, one of which allows a user to program any kind of test sequence they desire. The software analyzes the user's test program and calculates an estimated time to completion. It uses this information, combined with the desired test schedule for each dispenser, to automatically generate a test schedule that accommodates all the dispensers.
I programmed the robot using the
Adept V+ programming language. The robot mostly acts as a slave to the main controller software and communicates with the controller software through TCP/IP.
Below, you can see a video of the machine in operation. You can also see a sped up video of a demonstration of the software with no sound.
Trimbot
This project involves adjusting a key resistance value on strain gauges laid out in a matrix. After this adjustment, the strain gauges are cut from the matrix and packaged as part of a hybrid integrated circuit.
The adjustment is accomplished using an abrasive paste to grind away at the material comprising the resistor. During the grinding, two electrical probes monitor the resistance and I use a PID loop to control the grind speed.
I wrote the controlling software as a Windows program using the
Microsoft C++ compiler, and the robot software in Sony's anemic robot language. I had the Windows program communicate commands to the robot through RS-232.
Due to manufacturing defects, some strain gauges fall outside the range that can be compensated for through grinding. In these cases, the robot places two different probes across the resistor and blows it away with a high voltage pulse.
Because of all the paste, it's a dirty machine, but it does good work. You can view a video of the machine in operation below.