3D-Printed UV Exposure Workstation
Building a 3D-Printed UV Exposure Workstation for Silkscreen Printing
I have been working on a small UV exposure workstation for silkscreen printing that combines a Raspberry Pi, a monochrome LCD screen, a low-cost UV exposure light, and a 3D-printed snap-together silkscreen frame. The basic idea is to create a compact system that can expose small silkscreens using either a digital LCD mask or traditional transparency film.
The project is still in an early development stage, but the core system is working. I have the Python software running successfully on a Raspberry Pi, the 3D-printed frame is functional, and the exposure workflow is starting to come together.
The Basic Idea
This project is a novel, low-barrier way of moving directly from a digital image to a physical silkscreen. Instead of printing a transparency film for every exposure, the system uses a black-and-white LCD screen as a programmable mask. The screen was originally designed for stereolithography / resin 3D printing, where UV light shines through an LCD to cure resin layer by layer. In this project, the same basic technology is repurposed for silkscreen exposure: the LCD either blocks or allows UV light to pass through, turning a digital image into an exposure mask.
That makes the workflow feel much more direct. A digital file can be loaded, aligned, scaled, inverted, thresholded, and exposed without first producing a physical transparency. For artists, students, classrooms, and small studios, this creates a more accessible path into silkscreen printing. It could be especially useful anywhere a low-cost, low-barrier, and repeatable screen exposure setup is desirable. That includes art classrooms, digital fabrication labs, small print studios, and mid-level manufacturing environments where short-run marking, labeling, patterning, or prototyping may be useful.
There is also an interesting crossover with printed circuit board production. Commercial PCBs often include silkscreen layers on one or both sides of the board to show component outlines, labels, polarity marks, part numbers, and other assembly information. This project opens up a related experimental path for homemade PCB work: a silkscreen can be used not only for printed labels, but also as a mask for etching copper-clad boards. That could make it possible to produce simple PCB patterns without relying on a CNC router.
The Raspberry Pi runs a Python application that displays the artwork on the LCD screen. The software lets me load separation files, align the artwork, scale it, rotate it, invert the output, apply thresholding, and step through different channels. Right now the software supports four channels: cyan, magenta, yellow, and black. That makes it useful for CMYK-style separations, but the basic workflow could also be used for other types of masks, stencils, PCB experiments, or exposure processes.
The Software
The software is written in Python with PySide6. It has a main control window and a separate output window. The control window is where I load images, adjust position and scale, turn registration marks on or off, and manage the project. The output window is what gets sent to the LCD screen.
The output is designed around a fixed 3840 × 2400 resolution, which matches the LCD panel I am currently using. The software includes project saving and loading, so a setup can be saved as a .uvproj.json file and reopened later.
I have successfully deployed the software on a Raspberry Pi. The goal is for the software to be simple to download from the project Git repository, install, and run.
This is still an early version, so more features will be added over time. Some of the next things I am considering are better installation instructions, exposure timing tools, more image-processing options, and possibly automated control of the UV light.
The 3D-Printed Silkscreen Frame
One of the nicest parts of the project so far is the 3D-printed frame. The frame is designed to snap together and tension the mesh without needing a complicated stretching jig.
The process I used was fairly straightforward. I started with inexpensive silkscreen mesh and attached it directly to the 3D printer build plate using a glue stick. Then I printed the bottom part of the frame directly onto the mesh. After the print finished, I removed the part, trimmed away the excess mesh, and reinforced the bond between the mesh and the plastic with superglue.
The top part of the frame then snaps into place. When it locks in, it tensions the mesh and makes it very taut. The result is a small, clean, 3D-printed silkscreen frame that is ready to be coated and exposed.
All of the 3D-printable files for the frame are available with the project, and I will update them as the design improves.
The LCD Screen
The most expensive part of the project right now is the LCD screen and driver board. The first one I used cost around $150. It is a monochrome screen originally intended for SLA printing, so it is well suited for blocking and passing UV light.
I am currently looking into lower-cost sourcing options, including suppliers on Alibaba. If I can bring the screen cost down, the whole project becomes much more accessible. The rest of the system is relatively inexpensive, especially compared to commercial exposure units or other digital screen exposure systems.
The UV Light
For the UV source, I am using a low-cost Speedball exposure lamp. It is roughly a $30 light that is easy to buy online. The nice thing about the current design is that the light slides into the base plate without needing to be permanently modified.
That non-destructive design matters to me. I still want to be able to remove the light and use it for other screen-printing projects, including larger screens.
I have considered adding a relay to automate the exposure process, but I am still undecided. Automating the light would be useful, especially if I want the Raspberry Pi to control exposure timing directly. At the same time, wiring a relay into the lamp could make the project more destructive and less flexible. For now, I am keeping the light removable.
Transparency Film Option
Although the LCD workflow is the main experiment, I also want the system to work with traditional transparency film. I plan to provide an additional 3D-printable insert that snaps into the system and holds a piece of transparency film in place.
That means the same base and frame system can be used even without the LCD screen. You could use the digital LCD workflow when you want a programmable mask, or you could use a printed transparency when that makes more sense.
Where the Project Is Going
This project is still very much in progress, but the early results are encouraging. The software works on the Raspberry Pi, the 3D-printed frame snaps together well, and the LCD exposure idea is functional.
The next phase is mostly about refinement: improving the documentation, lowering the cost of the LCD screen, adding more printable parts, and deciding whether exposure automation should be part of the system.
Planned improvements include:
- Lower-cost LCD sourcing
- Better Raspberry Pi setup instructions
- Additional 3D-printable frame and adapter files
- A transparency film holder
- Exposure timing tools
- Optional relay-based UV light control
- More software features for image adjustment and channel management
- Expanded documentation for building and using the system
I will keep updating the project files as the design develops.
Final Thoughts
What I like about this project is that it sits between digital fabrication and traditional printmaking. It uses tools from resin printing, Raspberry Pi development, Python software, and 3D printing, but the final goal is still a physical silkscreen.
The system is not finished yet, but it already feels promising as a low-cost, experimental approach to small-format silkscreen exposure. It is also the kind of project that can keep evolving: better screens, better printed parts, more software controls, and possibly more automated exposure workflows.
For now, the frame snaps together, the LCD works as a mask, the software runs on the Raspberry Pi, and the whole thing is moving in the right direction.
These are all of the design iterations from the course of this project. There is probably at least 50 hours of print time represented here, along with a couple spools of filament, just to get everything fitting together correctly.
The tolerances were challenging because so many parts needed to snap together cleanly. There were also print failures along the way, plus a lot of stringing, probably from moisture in some of the filament. The result was a long series of tests and a pile of failed or outdated iterations.
But in the end, I have a working product. That trial-and-error process is a real part of the work.