Github link - schematics, source code, cad models
Blog entry - more details and photos
I needed a bedside lamp, the circuit sculpture contest seemed like good motivation.
PCBs seemed the most 'electronic' way I could make a lampshade, so I went with that. I used SolidWorks to iterate on different sizes, and figure out the optimal way to panelize them for manufacture. I was aiming to get this into one of the $5 specials that several Chinese PCB manufacturers have. My wife designed the pattern. It uses a combination of silver 'copper', white soldermask and blank areas to get interesting patterns. I use two similar parts in the lamp shade. One with a completely white inner soldermask to reflect light, and one without an inner soldermask.
The 'lightbulb' part of the project was the most finicky. I'm using 4 identical circuits in parallel to get sufficient illumination. Each circuit consists of 6 LEDs in series, driven by a TI LED driver. The driver allows you to set a fixed max current, and then also provide a PWM signal to adjust brightness.
Because it's hard to do circuit sculpture and heat sinks, I overspecc'ed the LEDs and drivers, so at max brightness, I'm only driving them at 30% of nominal.
For control I chose an Adafruit Metro Mini. It's Arduino compatible so I knew I could get it running quickly. I'm using one of the 'analogue' out pins to drive the PWM for LEDs.
To turn the lights on and off, I'm using a 'touch' sensor. The sensor is nothing but an effective RC circuit. I use one of the digital outputs to 'charge' the lamp stand, and then discharge it. When someone touches the stand, the circuit takes longer to charge up, and I can detect a touch.
Touches with more than 3s gap between them will turn the lights on and off. Taps faster than that allow you to dim and brighten the lights.
To power everything I have a 19V laptop charger. It feeds power directly to the LED drivers, and also supplies power to the Metro Mini through a DC/DC converter.
Assembly was quite a thing. I went fast on the initial design, and didn't think too much about the build. The lamp shade was fairly straightforward. I 3D printed a holder that allowed me to solder two panels together fairly easily. The shade is made up of 8 rings of 12 panels each. Connecting each ring was a bit more difficult. I was using 3mm brass rods for rigidity, but it takes a lot to heat them up enough for the solder to bond. I also didn't have anything to help me align them, so my lamp shade is a bit skew :P
The LEDs are surface mount LEDs, so are a bit tricky to solder together. I shaped a 1mm brass rod into a hexagon, and then soldered this to the LEDs heatsink pad. I then used short 0.5mm brass rods to connect each LED to the next. I made many mistakes with sloppy soldering resulting in copious rework. I had 3D printed a jig to make this easier, but worked too fast, and the jig wasn't quite right, so it didn't work properly.
Once the rings were made I added the sense resistor and LED driver to each ring. With the 4 rings created, I then connected them with their shared Power and PWM signal lines. These descend all the way to the bottom of the lamp, along with a ground line, to provide a very shaky structure. Contrary to my schematic, I did not add bypass capacitors to the LED drivers, nor did I connect the status lines.
Barrel jack, DC/DC converter and caps are soldered directly to each other, as well as the 1M resistor that forms the R part of the RC circuit in the touch sensor. Very little planning was done, so it looks suitably untidy.
This whole structure was very unstable. To center the lightbulb, I needed some way to locate the support structure within the lamp. I decided to use blown fuses. For some reason I ordered 10A fuses. My bench power supply only goes to 5A and I didn't want to trip my apartments power, so I instead made use of my car's battery to blow the fuses. Which then allowed me to safely solder them to various parts of the lamp.
A bit of programming and debugging with Arduino's online IDE and I have a working lamp. If not exactly what I had pictured, it's pretty close. And for the time that I put in, I'm pretty happy.