This instructable is a miniaturized, palm-sized version of the beautiful morphing bloom sculptures of John Edmark. The sculpture is internally illuminated by a high-brightness strobe to provide the animation. The spinning part was printed on an Ember 3D printer, and the strobe board was created using the now-defunct Autodesk Circuits program.
- 1 x 3D printed bloom sculpture
- 1 x LED strobe circuit board (OSHPARK)
- 6 x High-brightness LEDs (CREE XP-E from Digikey in White, Green, or Red)
- 1 x Microcontroller (ATtiny-85 from Digikey)
- 3 x MOSFETs (IRF7103PbF Dual MOSFET from Digikey)
- 1 x Phototransistor (LTR-301 from Digikey)
- 1 x Photodiode (LTE-302 from Digikey)
- 1 x each 330Ω 1206 resistor (ERJ-8GEYJ331V from Digikey)
- 1 x 1kΩ 1206 resistor (ERJ-8GEYJ102V from Digikey)
- 1 x 10kΩ 1206 resistor (ERJ-8GEYJ103V from Digikey)
- 6 x 100nF 1206 capacitors (CL31A106KACLNNC from Digikey)
- 1 x 6-pin female header (PPTC061LFBN-RC from Digikey)
- 1 x 3-pin male header (PREC003SAAN-RC from Digikey)
- 1 x Continuous rotation servo motor (Parallax #900-00008 from Digikey)
- 1 x 1/16-inch diameter, 12-inch drill bit (Bosch BL2731 from Amazon)
- 2 x 2 AAA battery holders (Keystone Electronics 2468 from Digikey)
1 x Slide-switch (SS-12E17 from Jameco, or equivalent)
Step 1: Ordering the Circuit Board
A ZIP file with everything necessary for ordering can be found below. Use this file to have your PCB fabricated. There are many printed circuit board manufactures out there. I recommend OSHPark.com for a balance of low-cost, high quality, medium speed to deliver anywhere in the world. I have created a project there to make ordering easy.
Step 2: Assemble the Circuit Board - Surface Mount Parts
My boards arrived in a group of 4 attached with small tabs (I ordered 12 boards). I had parts to assemble two of them simultaneously. I snapped the tabs so that I was just working with two.
I used a reflow oven to solder the surface mount parts, although you can use a heat gun for the same purpose (details below). I used the reflow oven and instructions from this instructable to solder my parts.
- Apply solder paste to all of the surface mount pads on the top of the board(s) using a syringe. Be sure to get paste onto all of the pads, and not too much so that you don't end up with it bridging pads too much. It will contract back to the pads if not too much is applied. In the picture above, the paste is clearly covering multiple pads, but this wasn't too much paste to cause bridging once cooked.
- Carefully place each of the components in place on the board.
- For the LEDs, the two small corner squares face away from the center hole of the board.
- The three dual MOSFET chips all have the same orientation. See picture for pin 1 positioning of the MOSFETs and the ATTiny85.
- The position of the resistors is illustrated in one of the pictures above. R1 is 10kΩ, R2 is 330 Ω, R3 is 1kΩ. The orientation does not matter.
- All of the capacitors are the same and the orientation does not matter.
- Use the reflow oven per the instructions to heat the board and complete the soldering.
Step 3: Alternate: Reflow Using a Heat Gun
If you don't have access to a reflow oven, you can finish the soldering using a heat gun with low airflow. Place the circuit board on a surface that will dissipate the heat (I used a Chipotle bowl lid) and carefully heat the board using the heat gun with low airflow until all of the solderpase has turned shiny silver. If the blower is too strong, it may cause the parts to drift off of the pads during the reflow process.
Note: the picture above is from the first version (proof of concept) of the circuit board. It looks a bit different because it had an extra hole and did not include the ATtiny85 microcontroller on the board.
Step 4: Assemble the Circuit Board - Through-hole Parts
Position the two headers (6 pin female and 3 pin male) such that they face down from the bottom side of the circuit board. Solder them in place (solder applied on the top side of the board).
Attach the optical encoder parts on either side of the smaller board hole. They should stick out of the top side of the board, with the lens side (with the bump) facing each other. The one with the red dot (the phototransistor, LTR-301) is positioned between the two large holes in the board. The one with the yellow dot (the photodiode, LTE-302) is positioned on the other side of the smaller hole. The solder for these is applied to the bottom side of the board.
After the encoder parts are soldered, trim the pins & solder to make it as flush with the bottom of the board as possible. This is to allow the board to sit as low as possible on the top of the servo.
Step 5: Programming the Microcontroller
I used an Arduino UNO board to act as a programming device for the controller by following this Instructable. In it, it shows the following mapping from Arduino pins to ATtiny pins for programming:
- Arduino +5V → ATtiny Pin 8 (Vcc)
- Arduino Ground → ATtiny Pin 4 (GND)
- Arduino Pin 10 → ATtiny Pin 1 (PB5)
- Arduino Pin 11 → ATtiny Pin 5 (PB0)
- Arduino Pin 12 → ATtiny Pin 6 (PB1)
- Arduino Pin 13 → ATtiny Pin 7 (PB2)
The connection points are labelled on the picture above. Use hookup wire to make the appropriate connections.
Starting with an Arduino UNO (or equivalent) that is set up as a programmer (see Instructable above), Open the bloom.ino project below in the Arduino IDE. you will need to perform the following in the Arduino IDE before programming:
- Tools → Programmer → Arduino as ISP
- Tools → Board → ATtiny85 (internal 8 MHz clock)
- Tools → Burn Bootloader
Then program as normal.
Step 6: Modify the Motor
The motor needs to be modified, mostly by removing unnecessary parts, including the top shell and most of the gearing.
- Start by adding a piece of tape around from one side of the motor, across the bottom and to the other side without covering up the bottom screws. This will hold the bottom closed when the screws are removed. I used blue masking tape in the pictures to make it visible. Ultimately I used black tape, but it didn't show in the pictures.
- Remove the screw holding the plastic X attachment at the top of the motor in place and remove the plastic X.
- Remove the 4 screws from the bottom. Keep the screws. You may optionally use them later in the project.
- Remove the top lid of the motor to expose the gears.
- Remove all except the center bottom gear. You can dispose of these gears. You will not need them.
Next, you will remove some of the plastic from the motor housing to accomodate the circuit board.
- Remove the remaining gear and set it aside. You will need it later.
- Shave down the larger plastic bump (on the left in the close-up picture) on the top using a saw / file. This will allow the circuit board to fit over this area.
- File the sides of the raised part on the other side (on the right in the close-up picture).
Fit the circuit board over the top of the servo and make sure that it fits well and as flush as possible. If it doesn't fit well, make adjustments as necessary for it to fit. Remove the circuitboard from the servo for the next step.
Step 7: Replace the Axle
Replace the axle with a longer one. This will help the zoetrope to not wobble when it is spinning.
- Using pliers, remove the small metal axle holding the remaining gear in place and set the gear aside.
- Cut 41mm (1 5/8 inches) off of the butt-end (non cutting side) of the drill bit using a hacksaw or good cutters.
- File the end(s) to smooth with a file or sandpaper.
- Put the gear back into place and fit the new axle into place. Press the axle down until it is seated in the hole.
The axle may feel secure, but experience has shown me that over time it can become loose and difficult to keep in place by hand-pressure pushing. A way to solve this is to take a hammer and gently tap the new axle down into the hole.
Step 8: Battery Packs
This step shows some trial and error on my part when originally creating this device. My first plan had been to always have the board powered, and rely on the microcontroller monitoring a pushbutton to start up everything else. I discovered that even when the servo is not moving, it will draw a small amount of current from the batteries so that they end up draining even when the device is not in use. I later added a slide-switch to turn the device on in order to completely disconnect the batteries when it is not being used.
Start by placing the two battery holders (without batteries) on either side of the servo motor such that the solid wires face each other and overlap. Use removable tape to hold the battery packs in place. Originally, I had soldered the upper two wires together, but later cut them to add the slide switch. I recommend still doing this, because soldering these two wires together adds a rigidity that helps with the rest of the process. It is easy to later cut these wires to add the slide switch. So, with that being said, solder the two upper wires together.
Using the circuit board as a guide, bend the lower wires such that they face up and line up with the outer-most holes on the 6-pin female header of the circuit board. Trim the wires with wire cutters such that they are still long enough to solidly connect in the female header when the circuit board is in place on the top of the servo motor. The top of the circuit board, should line up flush with the tops of the battery holders.
Remove the tape holding the battery packs to the servo, and put a piece of double-sided tape on either side of the servo. Put the servo back in place between the battery holders, positioning it again such that the top of the circuit board is flush with the top of the battery holders, and firmly press together.
Step 9: Putting Things Together
Add a solid-wire jumper between the PB0 and PB1 connectors of the female header of the circuit board. This is where I had intended to connect a pushbutton to start the device. Adding the jumper will make it so that it starts up when power is applied.
Put the circuit board in place on top of the servo.
Wrap the wires from the servo around the base and connect onto the 3-pin male header on the circuit board. Looking at the header, the ground side (black or brown wire) will be on the right. It may take some doing to get this to wrap nicely without too much leftover slack. Then tape the wires in place. I used some black gaffer tape (cloth tape) for mine.
Next, you'll add the slideswitch to control the power. The slideswitch has three pins. You will only be using two of these: the center one and one of the side pins (doesn't matter which). Using cutters, trim off the unused side pin.
Hold the slideswitch in place by the soldered wire post of the joined battery holders. Mark a point on the wires between where the slideswitch pins will later be soldered (I used a black sharpie pen).
Cut the wire posts that you previously soldered together to have a small gap that closely matches the spacing between two of the pins on the slideswitch. Solder the slideswitch to bridge the gap in the wires.
Step 10: Zoetrope Base (optional)
I wanted to have a nice 3D printed base for the device. Here's the design on TinkerCAD. It is unnecessary to create this base for the device to work, but it looks nice. The print file is included below.
Step 11: Zoetrope Model
The STL from this model as well as a TAR file containing the sliced layers for printing can be found below. I'm not including the instruction for printing on the Autodesk Ember printer since several instructables for using this printer exist, like this one.
Step 12: Finishing Touches
The three tabs of the 3D print need to be made opaque, otherwise the optical encoder parts of the circuit board won't reliably be able to detect them passing. I used black nail polish, and that worked great. Originally I simply tried a black Sharpie pen, but it wasn't reliable as an optical interruptor.
Once the tabs have been made opaque, you should be good to go. Place the zoetrope on the shaft, and turn the power on!