Introduction: Fractal Lamp

I designed, programmed and built this lamp over the course of a year. The project didn't start with me wanting to build a lamp. It started as a simple exercise in programming, circuit building and hacking. I chose to upcycle the IKEA Dioder lamp because I wasn't very happy about the functionality of the controller. The intensity of the light was always at maximum and a full range of the colour spectrum wasn't available. Annoyed by this I started soldering, the project escalated a bit beyond an improved controller and the following is the result of all that.

Apologies in advance for lack of images in some places, I made this instructable for the Gadget hacking contest but I was already mostly done by the time I found out about the contest. Instead where there should be images I will substitute with 3D modeled images.


It's very important to take note that this project uses mains voltage and can therefore be very dangerous. USE YOUR BRAIN if you attempt this project.


Step 1: Tools

Tools necessary to make the Koch Lamp:

  • Drill press
  • Drill bits
  • Belt sander (optional but helpful)
  • Laser cutter (CNC machine might also work)
  • 3D printer
  • Pliers
  • Small saw
  • Screwdrivers
  • Soldering iron
  • File
  • Scalpel or other knife
  • Sandpaper
  • Digital caliper (optional but helpful)
  • Wire stripper
  • Glue gun

Step 2: Parts and Materials

The images of the materials will be in the order they are listed as here though some of the materials or parts might be photographed together. A note about the resistors: I don't have the exact values that should be used so I will just be showing some random values.

All the materials needed:

  • 1kg of white ABS (The actual lamp uses less if everything goes perfectly but it never does. Sigh)
  • 1-2 sheets 6mm birch plywood of 40cm by 60cm
  • 3mm acrylic sheet in white, red, green, blue
  • Numerous tubes of superglue
  • 3 6M 25mm bolts (30mm would be better)
  • 3 6M self locking nuts
  • 3 6M nuts
  • 6 6M washers
  • 3 white plastic screw plugs
  • solder
  • Araldite or any other 2 component resin
  • 1 white PVC tube >20mm diameter about 50mm long
  • 1 metal rod about 3mm diameter 100mm long
  • White tape
  • Blue painters tape
  • White polish (or any other varnish of your choice)
  • IKEA Dioder (flexible LED strip version)
  • White wood glue
  • 1/2 inch Too clip
  • 1 white PVC tube 13mm in diameter about 50mm long

Electronics (most of these parts were salvaged from old appliances)

  • 3 potentiometers of roughly 10kOhm
  • 1 SPDT or a DPDT switch
  • 14 awg or 1.6 mm diameter wire (this is a rough estimate and whatever you use, it doesn't have to be exact)
  • 1 cheap RX/TX wireless link like this one
  • 2 PICAXE 14M2 chips
  • 2 10kOhm resistor
  • 2 30kOhm resistors (value doesn't have to be exact in the upward direction, for example for one of the resistors I used was 90kOhm)
  • 8 awg wire or 3.1mm (for the lamp)
  • 1 1N4001 diode (can be easily substituted for something else)
  • 1 250V 1A relais (I am using a 10A relay)
  • 4 electric connector blocks (no idea what the proper name is)
  • 1 bulb holder
  • 1 breadboard size 10*30 (to be sawed in half so use veroboard if you don't want to)
  • 1 NPN mosfet: 30V 44A NTD4963N-35G (anything similar or less powerful can also be used, in the range of 1A)
  • USB Cable
  • 1 13W CFL daylight bulb

Step 3: Programming

Because I am using PICAXE micro controllers the code is written in the BASIC variant used by the PICAXE Programming Editor. This presented a problem because this BASIC variant doesn't support the formula needed for the light intensity calculations. Why is a formula needed for something like that? Well human perception of just about any sensory data is exponential and this includes light intensity. Thus, in order to create a light that would fade in a linear fashion a code had to be written that would allow such an exponential relationship between intended brightness and PWM value to be possible. The third image shows the relationship between intended brightness and PWM value. The relationship was first calculated and tweaked in Excel, however due to the code limitations mentioned earlier I created three very large reference tables, one for each colour, instead by manually copying over the values from Excel.

Both the code for the receiver and the remote have IF functions in them to check if the new data (RF or ADC value) is different from the previous. This stops the micro controller from going through unnecessary loops in the code and therefore makes it more responsive. The .bas files are in the zip folder with all the other lamp files.

One glitch I noticed having built my circuit was that the LED's would flicker constantly as long as the remote was on but when it wasn't the flickering stopped. I deduced from this that the constant RF packets from the remote were interrupting the flow of the code on the receiving end. This shouldn't be possible because pwmout is a constant background routine that only changes when it is specified to. Anyway to fix this I reprogrammed the receiving end to have a much smaller duty cycle and that fixed the problem.

To program the PICAXE chips I am using the PICAXE Development Board, there are many alternative options to programming PICAXE chips however that is best explained here.

Step 4: Building: Laser Cutting

The laser cutter I have access to has a cutting area of 45cm by 65cm. Unfortunately I am unable to give advice in this section. I don't know the settings or anything about how the cutter works. The parts I provide in .dxf format and .skp format and I leave it up to you to cut the parts. The material to cut the parts with I will include in the file name.

A very important note I want to include is that the acrylic dials on the remote are tailored to three very different potentiometers. Therefore you will have to change the file to suit your needs as the standard won't work.

The acrylic led strip holders or fingers don't need to have a specific colour, I made mine out of scraps hence the sudden blueness.

The files don't have any offset built in so I advise you to check that the dimensions of a single, small piece match up to the file with a caliper before you cut everything. That said there is quite a bit of slack between the laser cut parts and the 3D printed parts so whatever works for you I guess.

Step 5: Building: 3D Printing

This project started with the electronics but I decided to make a lamp out of the electronics once I had made the Koch bulb. My 3D printer is Rapman 3.2 with a heated build chamber upgrade (see here how that was managed: ). Everything was printed with white ABS and this is all the information on the print settings and conditions I can give:

Layer thickness: 0.5mm

Nozzle temperature: 260 degrees Celsius

Nozzle diameter: 0.5mm

Heated build chamber temperature: 60 degrees Celsius

Printing area size: 20cm,20cm,20cm

Infill percentage:

  • Remote and base part 1, 2 and 3 = infill 100% and no extra layers
  • Vase, vase extension and bulbs = infill 0% and one extra layer so that everything was 2 layers thick (this will require checking the generated gcode with a program like netfabb Studio Basic)

The remote file needs to be printed twice, the bulb file needs to be printed three times and the rest only needs to be printed once.

Step 6: Building the Lamp: Building the Breadboard

Part A

The circuit is very simple and easy to build mainly because the Dioder controller already takes care of the complicated things like a stable voltage source and the MOSFETs for the LEDs. The only thing that needs to be done to take advantage of the these features is to solder six wires to the board but that happens in the next step.

Parts needed for this step:

  • 14 awg or 1.6 mm diameter wire
  • 1 PICAXE 14M2 chip programmed with receiver code
  • 1 10kOhm resistor
  • 1 30kOhm resistors
  • RX 433MHz wireless chip
  • 1 breadboard size 10*30
  • 1 NPN mosfet: 30V 44A NTD4963N-35G

Building the Breadboard should be very easy and the most complicated tool should be the wire stripping tool. Whilst it is optional to make the wires fit exactly it does look neater that way.

Part B

Note: before doing this step it is best to build both the circuits and test them, once you're happy with them and only then should the following be done. First snap of the two side channels, these are both unnecessary. Next the breadboard needs to be sawed along row 15, for this I used a small metal saw. The smaller of the two pieces will be used in the remote electronics so put it aside.

Step 7: Building the Lamp: Soldering the Controller, Light String, Relay and Antenna

Part A

Unfortunately I can't show images of the bare controller board because they wouldn't be my own. They can be found here. There are several images which show from a variety of angles which wire to solder to which place. Two of the pwm wires can be connected onto test pads and the third requires soldering directly onto an SMD pin. That is the trickiest solder joint. The ground and 5V wires can be soldered directly onto test pads as well and the 12V wire is soldered onto the V+ connection on the board. The 12V wire needs to approximately 15cm long and the others 10cm.

Part B

Next in line for the soldering iron is the LED strip. This is truly the point of no return. The first thing that needs to be done is cutting the led strip into three equal lengths. This is helped by the fact that the entire led strip consists of three smaller sections which are soldered together. You need to cut the strip precisely in the middle, right across the connector that is soldered between the two sections.

Having done that the next step is to get a scalpel and cut away the see through rubber like plastic around the solder pad. After that pre-tin the 14 awg wire and taking care not to mix up connections solder the wire to the solder pad of the other strip. The alternative is to solder the wires onto a veroboard, this is possible because the entire strip consists of groups of three LEDs connected in parallel. I did this because I had some issues with shorts however either option works as well.

Part C

Get the 8 awg wire, diode, relay, white connector block and 14 awg wire. Solder and glue as shown in pictures. The polarity of the diode doesn't matter compared to relay but it does compared to the circuit so be sure to solder the 12V wire from Part A to the banded side of the diode. The white connector block is here for ease of installation later on so you can skip it if you want to. Very important but not shown is insulating the live side of the relay with hot glue.

Part D

Soldering the antenna into place is the easiest thing to do in this step. It is however quite important to get the length of the antenna as close to 172mm as possible. This is because the standard range of these cheap wireless modules is pretty bad however with an antenna this range reaches as much as 20m which is more than enough for a lamp.

Step 8: Building the Lamp: Build Led Fingers and Glue Led String to It

Part A

Taking a acrylic LED finger and glue them as shown above. Repeat three times. The colour of the LED fingers doesn't matter, I just used blue in the model because it contrasts nicely. The fingers shown in Part B look different because the model shows the updated design.

Part B

The LED string is really easy to attach to the fingers because it has double-sided tape attached to it. However it is important to get the LED distribution right so that there are as many as possible in the bulb. The images should make the distribution I used clear, however this comes down to personal preference so do try out the best position before sticking it down. I also used sellotape to hold down the strip because I don't trust the double-sided tape to hold.

Step 9: Building the Lamp: Glue Bulbs to Wood, Drill Vase and Attach Extension

Part A

Take a bulb and the wooden piece. Glue the two pieces together with Araldite as shown above.

Part B

Glue the paper template to the bottom of the vase with superglue, it's easy enough to remove it afterwards with a scalpel after all. Drill the center hole with a mm drill bit and the outer three holes with a 6mm drill bit.

Part C

Take the vase and the vase extension and glue them together with super glue. Super glue is ideal for this because it dries quickly and leaves no visible trace on white ABS.

Step 10: Building the Lamp: Assembling the Base Parts 1, 2 and 3

Part A

Use superglue for this and make sure the edges are aligned.

Part B

Use superglue and tape for this because gravity will actively sabotage this part.

Part C

Use superglue for this and make sure the edges are aligned.

Step 11: Building the Lamp: Join Base Parts 1, 2 and 3, Varnish Wood and Screw the Vase to Base

Part A

Glue the base parts from the previous step together with super glue or Araldite.

There is a good chance the parts won't fit properly, for me they didn't because removing rafts isn't a perfect process. I glued a large sheet of sandpaper to a plank of wood and then clamped it. Then sand base part 2 until flat. This will require the help of a friend I found out.

Part B

Varnish all the wood parts now. The reason being it is really hard to glue something to a varnished surface (Don't ask why I am stating this so explicitly). Also, take care not to get varnish on the plastic parts.

Part C

Get the vase, Part A and the white screw plugs. Assemble the entire thing as shown above. A really long screwdriver with some tape on the end helps with this.

Step 12: Building the Lamp: Glue Light Fitting, Bend Retention Pin

Part A

First cut about 3cm of the white PVC pipe. Then a centimetre from the end drill a 3mm hole as shown. Then glue the PVC pipe piece onto the lamp fitting as shown. It is important to make sure it is oriented right.

This step depends on the light fitting you can buy so you will have to modify it to suit your needs.

Part B

Bend the metal rod as shown. For this part pliers are good.

Step 13: Building the Lamp: Glue Fingers Into Bulbs, Cut Wire for Lamp and Attach Bulb Socket

Part A

Take the three completed LED fingers from step 8 and test them to make sure they work. Glue them in place with Araldite but keep the turned on to make sure nothing goes wrong last minute (saved me from a blue channel failure in one of the segments).

Part B

Take the 8 awg wire and cut a 45cm piece of it and strip the ends of about 5mm insulation material. Then mark the wire at 10cm and 15cm from one end. Cut one of the two wires in the middle of these two marks and strip the wire of about 5mm insulation material.

Part C

Take the wire from Part B and attach the uncut end to the light fitting. Pull light fitting through as shown and lock it into place with the metal rod.

Step 14: Building the Lamp: Connect All Electronics Together and Push Into Lamp

I apologize for this step being a bit unclear however there is no way to model it and it is really simple anyway. The live wires have to be connected as shown and the entire mess then has to be pushed into the lamp, there is simply no neat way to fit this in I found (with the amount of effort I was willing to put into this part).

Step 15: Building the Lamp: Make Ceiling Clamp

Part A

Shown in the image are the parts necessary for this step.

Part B

Arrange the screw on the bolt as shown followed by the washer. Test fit the tightness of the nut on the clamping ring. It should fit snugly but not tightly. Put the bolt, nut and washer on the hexagon and add another washer on the other side. Attach the bolt with a self locking nut and tighten everything.

Part C

Push the hexagon onto the base of the lamp. To make sure the spacing is right place two scrap pieces of the plywood on the clamping ring as shown. Make sure the space between the top piece and the edge of the base is one or two millimetres. Use superglue to lock the the hexagon into place and afterwards add Araldite to permanently lock it into place.

Part D

Glue the clamping ring to the spacing ring as shown with white wood glue.

Step 16: Building the Remote: Soldering the Input Sensors and Building the Breadboard

Part A

The input sensors should be soldered as shown. The length of the wires in between the sensors is 10cm. I advise you use flexible wire for this rather than the stiff wire because it will make your life a lot easier.

Part B

Build the breadboard as the circuit diagram and the first photo shows. In order to connect the sensors to the correct micro controller pins you will have to look it up in the code.

Step 17: Building the Remote: Varnishing Wood Panels, Gluing the USB Cable and the White Border

Part A

The lasercut parts have to varnished. I used tissue to blot the white polish on. It worked well enough for me but you will probably want to be more professional about it.

Part B

Push the USB cable through side panel with the hole in it for 5 to 10 cm and hot glue the cable into place.

Part C

The white border fits into the face plate precisely. In order to level it I used a piece of tape and some superglue. This is arguably the easiest part to do.

Step 18: Building the Remote: Gluing the Sensors and Glue Side, Top and Bottom Plates to Frame

Part A

Attaching the sensors is done with Araldite and clamps. The central potentiometer could be screwed into place. The other parts were glued into place.

Part B

Gluing the box together is really easy with tape and superglue (capillary action is your friend). The frame pieces and the wood panels should fit together perfectly. The glued panel from the previous panel will be needed here as well. In order to glue a panel it should be taped to the frame then add a few drops (or lots) of superglue on the crack and the part should be glued together.

Step 19: Building the Remote: Attaching the Back and Front Panel, Assembling the Dials and Filing the Potentiometers

Part A

In order to make the back panel removable I used Too clips. First place the clips on the panel as shown and mark the center spot with a pencil. Then drill the hole with a 2mm bit and screw the Too clip into place with a small wood screw. Then cut the 13mm PVC pipe in half and place the piece in the Too clip. Cover the end with Araldite, place the back panel in the frame and press the pipe into the side panel.

Part B

Tape the front panel so that it sits flush with edge and apply superglue to crack on the inside.

Part C

Take the laser cut acrylic dial pieces and glue together with superglue as shown.

Part D

When placing the dials on the potentiometers they might sit at too great a distance from the panel. In this case the potentiometers will have to be filed down.

Step 20: Done!!!

At this point your Koch lamp is done and I'm using this step to show a few more pictures.

Step 21: Credit Where Credit Is Due

Thanks to:

Ghalib Ashraf, my friend who helped with some of the more tedious tasks and without whom that annoying 3D printer would never have worked.

Amit Nehra, for the design of the vase file.

Jim Arlow, for the design of the bulb file.

Step 22: *edit* How to Mount the Lamp and Pictures in the Wild

Due to the fantastic feedback I've gotten on the lamp I've decided to share some photos and thoughts for anyone else attempting this project.

Final thoughts

  1. The big light in the center needs to be dim-able, at the moment it completely blinds you.
  2. The next time I'll use brighter LEDs so that they can provide some light.
  3. On the ceiling it just seems too small, the next iteration of this project will definitely be bigger.


You will need a stripped wire hanging from the ceiling and a plug in the ceiling. Take a screw, washer (optional) and the clamping ring and screw them to the ceiling as shown. Attach the wire to the white connector block and mount the lamp. This should be incredibly easy due to the 2mm gap.

Green Electronics Challenge

Finalist in the
Green Electronics Challenge

Gadget Hacking and Accessories Contest

Participated in the
Gadget Hacking and Accessories Contest