Dye Synthesizer

The Metrochrome Dye Synthesizer is a system that a colleague and I built over the course of a four-month period. The purpose of the machine is to automate the production of dyed silks in small quantities, a process necessary for the preservation of historic textiles.

Original Process

The process upon which our machine is based is normally performed by a trained technician or conservator. As a first step to begin designing a process, it was necessary to produce a set of fabrics manually. Dying silk can be very labor intensive and time consuming, and the necessary steps are outlined below:

Subsystem Determination

After analysis and discussion, we were able to distill the process down into four basic subsystems:

Climate control to accurately achieve and maintain the required temperature. For this system we would need an appropriately sized heating element and feedback sensors to correct inaccuracies.
Agitation module to keep the dye concentration evenly distributed and prevent premature exhaustion. This would likely require an agitation motor, fluid pump, or actuator to reposition the chamber.
Liquid disposal system to drain the excess dye and allow the material to begin drying. This system would require a valve system or actuator to empty the container without flushing the fabric.
Fluid mixing to accurately meter the appropriate amounts of dye and additives into the incubation chamber. This system would require a pressurized injection system or volume measuring capabilities to accurately dispense fluid.

Fluid Input Chambers

We managed to pick up a box of acrylic testing chambers at a surplus sale. The containers were used in a geological testing lab, and still had a siginficiant mineral deposits. They were inspected and cleaned thoroughly to avoid any contamination with the dyes.

Fluid Pressure System

We managed to acquire a industrial-grade lab compressor which was both quiet and small enough to use indoors. The compressor did not have a pressure control system, so an adjustable blowoff valve was the first attempt at regulating the air pressure in the lines. We were able to repurpose one of the acrylic lids to make the attachment and and we used the same interface to connect the chambers in parallel to the source.

Dye Injection System

In addition to pressurized fluid chambers, the machine needs a way of precisely metering liquid into the mixing chamber. We acquired a set of high-performance automotive fuel injectors for that purpose. Motorcycle injectors are low-flow, but allow for extremely high switching speeds as they are often used in engines that reach 20,000RPM. The injectors we acquired are able to cycle more than 500 times a second, and have a maximum flow rating of 70cc/min. This gives us the system extremely precise microliter level control over the fluid injection.

Frame and Mounting

Needing a frame to mount the project to, I managed to acquire a nice oak cabinet at a thrift store. Mounting our components proceeded quickly.

Incubation Chambers

I took the opportunity to acquire a large quantity of stackable, hard plastic lab containers at another surplus sale. We decided to modify our original design to take advantage of the container stack-ability; Instead of using agitator motors or pumps to keep the solution mixed, we took advantage of our common air pressure line. By stacking two containers and pressurizing the bottom, we could cause our fluid in the top container to bubble and diffuse. We would need to prevent the fluid in the top container from entering the bottom container, something that we can achieve with a hydrophobic filter.

Hydrophobic Filters

After myriad product tests, we acquired two filters that had the potential to function as we needed. One type of filter was intended for use on snowmobile and marine vehicles as a hydrophobic intake/vent cover, to prevent water from entering the intake or exhaust of an engine. The other was a medical-grade filter, primarily used for membrane filtration and pressure equalization. The filters had to meet two criteria: they needed to be resistant to temperatures of up to 100°C and they needed to allow air to pass while rejecting all fluid. The medical filters, being rated for 260°C, were extremely resilient and had only minor leaks (only when silicone was used). The automotive vents held up well initially, but leaked badly when introduced to boiling water.

Temperature Control

The dye curing process for silk requires that the fabric be incubated with the dye at 90°C for at least thirty minutes. If the temperature climbs too high, the silk may be damaged. If the solution is not hot enough the process will take longer and may negatively affect the lightfastness and dye absorption. To achieve precise temperature measurement, we use the DS18B20 temperature probe. This model of sensor is very unique because it outputs a digital signal. A group of these sensors may be connected in parallel to a single data wire, and will automatically organize themselves to serialize their communications over the bus. They may also be operated without a power line, as they are efficient enough to run on the data signal alone. The parallel bus was instrumental in allowing us to run multiple chambers without surpassing the I/O limit of the controller.

For the heater output, we used automotive bulbs. They were cheap, robust, and hot! We chose bulbs for their radiant heat output, as we did not want to introduce anything into contact with the dye that might form deposits or cause contamination between batches. We did need to confirm that the bulbs would operate in a high humidity environment, however, so we operated them underwater for a few hours before mounting. To mount we used high-grade automotive silicone, designed to create gaskets for internal combustion engines. The bulbs can easily exceed 300°C.

Drain System

After the silk has been incubated and the dye exhausted, the incubation chamber will automatically drain any fluid that is left so that the silk may dry. The drain solenoids are located in the bottom chamber, which needs to be airtight so that it may pressurize and agitate the fluid in the upper chamber.

Fluid Pressure System Revisions

Once the system was pressuized, we discoverd that the original fluid management systems were very leaky and hard to maintain. The blowoff valve that we had planned to use was also leaky, and highly inaccurate. The dye chambers were non-uniform in size and were very awkward to service. We decided to replace the chambers with air-brush hoppers. They were easy to fill and held a much larger volume in a much smaller footprint than the previous chambers.

Injector Flow Testing

The injector flow had to be verified at our chosen pressure, so we measured the output of each injector to determine the volume of fluid we would inject every second.


We chose a raspberry pi as our controller becuase of its ability to handle GPIO as well as serve the interface. It saved us a significant amount of time and trouble in setting up and programming a secondary controller. We used a bank of 16 relays to handle the output, with a single input for the four temperature sensors. We are able to run the peripherals on a 12V industrial supply while a DC/DC converter powers the PI and relay coils.


Our tests indicated that the incubation chambers were not reaching the optimal curing temperature. We molded a set of lids for the containers and carved a second set from insulative foam. Each chamber was then wrapped with reflective bubble wrap.


The first batches were rough, but we steaily improved and acquired technique. The numbered pieces are the original batches.

Tech Expo Presentation

We presented the project at a University of Cincinnati tech expo and received an honorable mention. The completed machine is shown running demo cycles, with a large quantity of automated silk batches on display.


We developed an application interface to control the machine, as well as a poster for presentation at the expo. The poster was created in photoshop, while the interface was a simple frontend webpage.

Download Design File

Program Logic

Three standard layers of code are present on our controller; one for interface, one for business logic, and one to pass messages between the other two. The interface is a simple web page that could be accessed remotely by another computer or phone. It is responsible for making AJAX calls to a python webservice hosted on the pi. The webservice, in turn, opens a socket to a daemon thread that runs continously in the background. The service can issue commands asynchronously to the daemon, which is threaded to enable concurrent control for each of the chambers. The daemon manages all of the GPIO and sensors, and will continuously monitor the incubation process even if no client is connected. The communication and logic layers are available for download. Both layers use the Pyro framework to maintain the socket server that passes data.

Download Code


There are three areas in which I feel that the system fell short and could be improved:

Use of Pneumatics

The use of a common-line pressure system is both clever and very inexpensive. It allows us to use a single inexpensive pump to run injection for a large number of dyes and agitation for a large number of chambers. The use of a single compessor allows the system to be expanded very cheaply and its formulation presented a great advantage early on in the process, when the full scope of possibilities was less well defined. While all of these advantages are still present, there are a number of drawbacks that cause me to reconsider this part of the design. It is very difficult to find cheap hardware that is capable of adequately sealing a pressurized air system. While we are able to produce a sealed system, it is high maintenance and has a dubious level of reliability. We had many occasions, even late in the development cycle, where the system would develop prominent leaks. Having a fuel pump and regulator for every liquid line would have been more costly to scale, but would have provided the reliability we needed, in addition to noise reduction. It would also have necessitated an alternate solution for the agitator.

Pneumatic Agitation

Pressurized air is an effective medium with which to agitate and diffuse liquid in a container. There are also some issues with such a technique that are make it unsuitable for our application. Our initial understanding was that the primary purpose of agitation was to keep the dye concentration evenly distributed and allow the fabric to absorb dye evenly. What we failed to understand was that silk (particularly our high-threadcount duponi) is highly impermeable to fluids when wet, and acts as a membrane that captures air and stifles diffusion. The level of heat present in our incubation chambers causes vaporization of water that can result in the formation of air pockets which block the absorption of dye. Our agitation system, which relies on the injection of pressurized air through the fluid, only exacerbates this problem. It causes uneven absorption on the two sides of the weave, and can lead to splotchy colors. In theory, using a fluid-pump would solve this problem, but our very small dye baths (~100mL) prevent this from being a practical solution as the pumps would likely not have enough fluid and may overheat. The next best solution might be to use a tilt-mixer that would slope the container to allow air pockets to escape.

Addition of pH levelling system

The system calculates and measures the amount of additives necessary to achieve the correct acidity given our fabric weight, but it fails to take into account how the pH may be affected thoughout the cycle, as the dye is absorbed. The age of the dye and purity of the water can also affect acidity. To achieve optimal results and reduce the number of chemical pH levellers, it would be wise to add a monitoring system that could dispense additives as necessary to keep a stable acidity throughout the cycle.