3D Printed Gizmo / Flash
for Pittsburgh's Children's Hospital
Click Here for Video #1
Click Here for Video #2 (when installed at CHP)
I recently purchased a 3D printer (Afinia H Series) and have been designing my own things and downloading others from Thingiverse.com. One of the coolest things that I found on Thingiverse is a Motorized Marble Machine. Not only is it a great project to test out a 3D printer but it is also great fun to build and run. The large gear transports metal balls to the top of the gizmo and delivers them to decreasing radius spiral that returns them to the bottom of the gear.
The unit is made up of 11 individual printed parts plus the ball bearings, a motor and a bolt & two nuts.
Here are a few of the parts before they were removed from the printing platform, a piece of borosilicate glass covered with blue painter's tape.
I decided that the Marble Machine would make a nice addition to the G scale layout at Children's Hospital as I was sure that children would be as fascinated by it as I am.
Rather that just put it on the layout with a button to start it spinning for a minute or so I decided that I should create a scene. I explored the various Playmobil offerings (the people on the layout are all from Playmobil) I settled on a photographer using a camera on a tripod, thinking that I could have her taking a photo of the new machine. I decided to add a few bright white LEDs to the camera and to have it flash from time-to-time to show that photos were being taken.
This photo shows the photographer (note the 3mm LEDs in the camera's flash) and the marble machine before the electronics module was added.
Building the Marble Machine
Downloading and printing the marble machine took a day or so as some of the larger parts took several hours to print. It was assembled and tested before I glued it all together. It is very important that the three support sections (one on either side of the large gear and one holding the spiral) are mounted at 90 degrees to the base. I also found that lubricating the gear with a spray of Lemon Pledge furniture polish worked wonders for its reliability.
Once it was working well I glued it all together and tested it for a number of days to make sure it wouldn't jamb or eject balls from the spiral very often. Placing it on a level surface helps this to be accomplished. I also used a round file to remove any roughness from the inside of the ball carrying holes in the large gear.
I found the geared motor at Sparkfun.com for $16.00 and from Suntekstore.com for $7.00 with free shipping. Either will work and they appear to be identical except for price and delivery time.
The ball bearings are 11mm in diameter and can be found on eBay for about $10.50 including shipping.
Adding 3mm LEDs to the Camera
Three 1/32" holes were drilled in the flash attachment on the Playmobil camera. The two 3mm LEDs were inserted into these holes with both cathodes (shorter leads) together through the center hole and the anodes through the two outer holes. The anodes were bent and soldered together as were the cathodes wiring the two LEDs in parallel. A 60 ohm resistor was wired in series with the lead to the anodes. This resistor and the 100 ohm current limiting resistor on the circuit board helped to keep the LEDs from frying when they were flashed on. I added the 60 ohm resistor after I found that I killed the first pair of LEDs by giving them too much current.
Very thin (30 AWG) wire was used to supply power from the circuit board to the camera tripod and up one leg of the tripod to the two LEDs.
A PIC microcontroller is used to operate the motor on the marble machine and the LED flash. A PICAXE could easily be used. The schematic below is for the PICAXE 08M2. The PIC schematic is virtually identical except for the programming connections on the left.
The circuit was built on a board that was designed for my lighthouse and Morse code beacon. Some minor modifications were made to have it control both the motor and the flash LED. I also had to add a trigger input so that the animation would run for a set time each time a visitor pressed the button.
This view of the bottom of the board shows some of the modifications that were necessary to use the Morse code / Lighthouse board. Note the diode at the top. It protects the power transistor that operates the motor from back EMF.
'CHP 3D gizmo & flash camera on 12f683
'd. bodnar 7-13-13
'revised 11-4-09 for Morse Code board - note cut traces & such that are needed
ansel = 0
cmcon0 = 7
Serial_out var gpio.0 'pin 7 'cds photo sensor
LED var gpio.1 'pin 6 led for flash
TIP101 var gpio.2 'pin 5 hpwm 1 = motor
NotUsed var gpio.3 'pin 4
Switch var gpio.4 'pin 3 Start Switch
NotUsed2 var gpio.6 'pin 2 - select pwm settings for LED vs incandescent
Temp1 var word
RndNum var word
Divisor var word
Result var word
RndRange var word
MinNumber var word
TopBright con 120
Serout serial_out,n9600,[13,10,"d. bodnar Ver 1.3 - Camera flash & bearing gizmo",13,10]
Serout serial_out,n9600,[13,10," - 07-13-13",13,10]
option_reg.7=0 'turn on weak pull ups
wpu = %01010000 'weak pull ups on pin GPIO.4 (Pin 3) & GPIO.6(pin2)
gpio = %01010000 'gpio.4 & 7 input - others outputs
Motor con 1
Minnumber = 1
rndrange = 95
PWMValue con 75'1500
if switch = 1 then Start 'stay off till button hit
hpwm Motor, 55,pwmvalue:pause 333 'higher speed initial push to start
hpwm Motor, 25,pwmvalue:
for temp1 = 1 to 300 '1000
Serout serial_out,n9600,["Time = ",#temp1," / 300",13,10]
if result > 90 then
pause 1000 'so we don't get 2 flashes together
hpwm Motor, 0,0:pause 1000
high led: pause 50
Divisor = 65535 / RndRange
Result= RndNum / Divisor
Serout serial_out,n9600,["RND = ",#result,13,10]
Here is the completed animation before installation at Children's. The grey wire at the front goes to the trigger button on the front of the layout. The red/black wire is for 12 volts DC.
This has been a fun animation to put together. I expect that the visitors to the layout at Children's Hospital will enjoy it, too.
Please let me know if you have any questions. firstname.lastname@example.org