Egg Lathe

The Egg Lathe is an automation of Ukrainian egg dying (known as Pysanky). This project consists of three major parts: hardware, firmware, and software.

Background

My family likes to dye traditional Ukrainian eggs for Easter. During one of these events, I had the strange compulsion to build a device to provide the ability to "print" out intricate egg designs. In the following months, I diagrammed, constructed, and programmed a CNC application to allow for precise and reproducible patterning of an egg surface.

Hardware

The frame is primarily laser-cut wood (4.175mm draftboard and plywood) secured with M2.5 and M3 screws. Additionally, some components are 3D printed, using a Prusa MK3s+ with black PLA filament. The printed components are designed to minimize wasted support material and are oriented strategically to reduce the chance of a part breaking along a layer. It should be noted that the forces of the device are relatively light, and the operations the machine performs have negligible wear on its components.

To manipulate a workpiece, two NEMA-11 stepper motors are used to grant 2-axis motion. The first motor can rotate the egg axially once secured, and a linear belt drive is connected to a tool carriage and secondary motor, granting linear motion parallel to the axes of the egg.

The egg is secured between two 3D-printed friction holds, one mounted on the axle of the rotary motor and the second free-spinning between two bearings. The second hold is mounted on an 8mm aluminum rod, spring-loaded between two adjustable bearings, allowing for adjustable holding pressure.

For the tooling carriage, I was liberal with the use of 3D-printed components. The carriage itself is a 3D-printed glamorized span across two linear rails and the linear belt. The tuning of the carriage was tough, as although most iterations were designed for 5mm linear bearings and steel rods, I had to design for wood and 3D-printed components in order to keep costs down. Thus, the design of the linear movement was primarily trial and error. In the end, I mocked up the linear bearings with 3D printable sheaths matching the bearing's dimensions and utilized the weight of the toolhead bearing to offset the angle caused by the pulling of the belt drive. The toolhead itself was initially designed to hold a pencil, which would be pushed down into the egg by gravity. The 13mm bore for the pencil allows for the ability to use a wax pen instead of a writing instrument.

Finally, the electronics are powered by an Arduino Uno development board, prioritizing cost-effectiveness. I incorporated a pair of 4-digit 7-segment displays for coordinate display, and I added a joystick for 2-axis analog and 1-button user input. There is also a limit switch used to calibrate the linear belt drive.

Firmware

The Arduino has a script loaded that uses the serial port to receive and respond to commands and queries from a USB input. While receiving primarily X and Y movement commands, there is the ability to change the stepper motor step setting (SINGLE, DOUBLE, MICROSTEP, and INTERLEAVE) and speed. Additionally, the 8-digit display can be configured, and the tool and workpiece can be controlled manually through the mounted joystick.

Software

The software is simply a Python script with high-level command creation, toolpath previewing, and a simple GUI allowing for communication with the device through a USB port. Along with simple X and Y movement command examples, the Python script has a variety of preset command packages (sine wave, gradient, square, circle, random walk) as well as the ability to package existing command sequences into unique instruction chunks. Once a program is written, the software will preview the toolpath, and with the press of a button, will queue and run an uncompressed version of your program on the device.

Fusion File

I used Fusion 360 to create the files in this! You can find the production file here: https://a360.co/3VEWWg4

Images