Digital Lava Lamp

This is a personal project I did in 2022, inspired to make a sleek vertical lamp with colorful animated lighting. I ended up referring to it as the Digital Lava Lamp because of the way the colors are generated using rising and falling RGB blobs. The lamp is 4 inches in diameter and just over 2 feet tall. Some day I want to try making a much larger one around 8 feet tall and 10 inches in diameter.

The electronics for this project were simple and straight forward- Just a standard 12v addressable LED strip powered by an Arduino Nano. The real challenge came from getting a nice polished physical appearance. This was split into two parts:
-A transparent acrylic tube that needed to be ‘frosted’ to look white and opaque when the lamp is turned off but light up from the inside when the lamp is on.
-A 3D printed PETG plastic base and cap that would need to house the electronics and have a nice polished surface finish.

I started out searching online for an acrylic tube that was already frosted or semitransparent, but this turned out to be nearly impossible to find, and what I did find was tremendously expensive and had to be ordered in bulk. Instead I settled on a standard 4″ clear acrylic tube which I would find a way to coat myself. I was determined to make it as smooth and seamless as possible, both for the look and to make sure the lighting was nice and uniform. I considered hand-painting it or using a paper insert, but I did not trust either of these to give me a smooth seamless result. My solution was to pour in watered-down acrylic paint and ‘roll’ it around the inside of the tube, then turn the tube upright and let the excess paint drain to get a nice even coating. I 3D printed some end caps and a draining stand for this process which worked quite well, you can see them in the picture below.

Next came the 3D printing part. I needed the base to be stable and not prone to tipping over, so I designed the prints with a large cavity on the inside that I could fill with cement to weigh it down. The parts were printed in PETG because it’s a much stronger material and I was worried a more standard PLA print could degrade or absorb too much water during the concrete pour. I used Autodesk Fusion for this project and made two different designs. The first design had a wider base that tapered down to the tube size, and the second design stays a consistent width. I liked the look of the second design better and it was still nice and stable with the concrete inside, so that was the design I settled on. The wider design I used for testing out my surface finishing process and the concrete pouring. Below you can see the 3D CAD files for both designs with cutaway views. Both designs have a smaller chamber on the right for the electronics, and a larger chamber for the concrete. Design 1 just shows the base, which was printed in 3 parts. Design 2 includes the base (printed in 2 parts), the acrylic tube, the PVC pipe that the LED strip wraps around, and the cap for the top of the tube which is also 3D printed. The base and cap also include air vents so warm air can vent out of the top and draw cooler air in from the bottom. In practice the lamp doesn’t get hot enough for this to be necessary, but it was a precautionary measure and gave me the chance to add a nice design to the top.

The surface finishing process was by far the most laborious part of the entire project and took several do-overs to get right. The prints were done in PETG with .4mm layer height. This was a challenge right away because it was my first go with PETG and I ended up needing to upgrade my printer to a full metal extruder nozzle. Once I had a completed PETG print, I started with a rough sanding of the entire part. I used Bondo Glazing and Spot putty all over to cover all the larger defects and fill the 3D print layer lines. Once dry, I sanded it flat again. I did this twice, then moved onto a coating of auto-body filler/primer from a spray can. I did this 3 times, sanding with a finer grit each pass. Finally I used a black spray paint followed by a semi-gloss clear coat. I learned a LOT about patience with this process and ran into several issues with layers being too wet or off-gassing and ruining the next layer, leading to even more sanding down and re-trying. In an earlier test I also tried doing a wet-sanding step with a PLA print, but I found the PLA absorbed water and began warping. This probably wouldn’t have been an issue with PETG, but I decided not to bother with wet sanding anyway. Here you can see an image of one of the test prints with a portion sanded back down to the print surface.

For the lighting effects, I wanted a dynamic color-shifting effect with vertical movement vaguely reminiscent of a lava lamp. To do this, I wrapped 12v addressable LED strip densely around a PVC pipe, which sits in the center of the lamp shining outward against the frosted acrylic tube. An Arduino Nano runs some custom code with the NeoPixel library to create the color patterns. When the lamp is turned on, the code creates a number of ‘blobs’ that are assigned a random velocity and either a Red, Green, or Blue color state. The blobs rise upward from the base, creating a field of shifting colors as the random velocities cause the blobs to separate and blend together in different ways. Blobs rise all the way ‘above’ the lamp out of view, and then reverse direction and sink back down to the base. Once a blob disappears back into the base, it is assigned a new color and velocity and starts rising again. In the image to the left you can see the lamp running at 2x speed. You can check out a higher quality video of the lamp in realtime speed here.

Below are a few more interesting photos worth sharing. One is the lamp in its finished state displaying on my workbench. The second is the unfinished version of the lamp assembled with the PVC pipe and acrylic tube. Both shots are using the tapered base design. The last one is a shot of the vents on the cap. I was particularly proud of the vents because I managed to slope the curved pattern down into the print, minimizing how much light could escape upwards out of the lamp.