Introduction: Silicone Skin 3D Printed Realistic Animatronic Heart
I've been wanting to make a realistic animatronic heart for a while, and I've finally gotten around to it! As compared to the other design I published recently, this version is more complex with three servos that move independently, controlled by an arduino micro and potentiometer. It uses step functions to drive the heart with a natural-looking motion that appears to fill up gradually then quickly contract in sequence, with the option to adjust the speed of the beating using the potentiometer.
This is a more advanced project than my other design, featuring some tricky assembly and casting. In any case, I hope you'll give it a try!
- Various screws between M1 and M3
- PCA9685 16-channel servo driver board or similar - https://amzn.to/2JPOzsx
- Arduino Micro - https://amzn.to/2q4cpdw
- 3 servos - DS-843MG servos are recommended for their strength needed to stretch out the silicone skin, but the design can also support MG90s servos (2x https://amzn.to/2rF8EeM)
- 10K Potentiometer - https://amzn.to/2XdaL5g
- 5.5mm DC panel input - https://amzn.to/2pmGch6
- 5V power supply - https://amzn.to/2rCyJer
- Jumper cables - https://amzn.to/2rK3qP2
- Some slightly thicker wire for the power supply
- 500g Platsil Gel 00 (I couldn't find a link for such a small amount but here is 2lb - https://amzn.to/2QiQf1H)
- 2kg Tinsil 7025 -
- A small amount of Ease Release 205
- Silicone pigment in dark red
- A suitable container, which may be constructed using hot glue and styrene or similar
- Airbrush and acrylic paints
- Pin vice hand drill
- Soldering Iron
- Electrical tape
- Fake blood!
Step 1: 3D Printing
There were no particular requirements with the printing, only that the components be reasonably high-resolution and high-strength. I printed all my components at a layer height of around 0.2mm, although the outer shell parts can comfortably be very low resolution. The only parts which required supports were these shell parts.
The base is comprised of two separate parts which must be joined together, its totally possible to print them as one part but much easier to just join them afterwards. These bases can simply be glued together and lined up using two M2 x 10mm screws as shown.
Step 2: Assembly
The assembly may be quite fiddly, so check with the video and reference images as you go to make sure it goes together correctly. Note that if you're using MG90s servos, you will need to use the Heart_Beater.ino arduino file, whereas the DS-843MG servos use the Heart_Beater_Inverted.ino file.
- Insert all 3 servos into the base. Starting with the bottom pair, feed the wires through the slots in the base component (you may need to remove the plastic connector on the end of the wire) and screw in the servo with M2 x 10mm screws. If you're using DS-843MG servos, use the small plastic adaptor which will allow you to use M2 screws in the M3 holes. The top servo is a little trickier, you will need to remove the base of the servo where the wire protrudes from in order to fit the servo into it's place. The base can be screwed back on once the servo is in. The design only has room for one screw to hold the top servo in, but the servo should be tight enough in the base that it will be very secure.
- Construct the arms. Using a servo horn which has been cut down to only two holes, attach two "long link" components on the furthest (second) hole from the centre and screw it in. Take an opposing pair of "arm" components and screw the "long links" to them on the flat sides. Check the images to make sure everything goes together right, and be sure to leave it loose enough to move freely. You will need to make two of these sub-assemblies, and screw them to the base using an M3 x 10mm screw in each arm.
- Construct the top servo linkage. Using a two-sided servo horn, again cut to leave only two holes per side, attach a "short link" on the outermost holes and screw upwards through the bottom, again leaving it loose enough to move freely, using two M2 x 4mm screws. Another two of these M2 x 4mm screws go into the short links the oppsite way to connect to the "rocker" component later on. You can also attach the "rocker" component to the top of the base with an M3 x 20mm screw.
- Prepare the servo driver board. Solder a positive and negative wire roughly 40cm long to the power supply input of the servo driver board, where the junction box would normally go. This is necessary because of the limited space within the assembly. Attach it to the base - on the left side you can use M3 screws (although it will be a tight fit) or alternatively you can use M2 screws with a bolt on the end. On the right side, use M2 screws of around 12mm to screw up from the bottom of the base, through the board and into the "micro standoff". You can also plug in the servos at this stage, with reference to the images which will show you which is which.
- Assemble the back-plate. The potentiometer and DC input can be screwed into the holes on the back, depending on what potentiometer you're using you may need to use a washer. The DC input should have the positive and negative wires from the servo driver board soldered on to its positive and negative terminals. The potentiometer needs to have two positive and two negative wires soldered on, and one wire for the signal pin. I used jumper cables with a female end and stripped the other end for soldering, which made it easy to attach to the arduino and the driver board. Attach the back plate to the back of the base, taking care to ensure the wires you soldered don't get taffled. The DC input should go on the right side, and the wires for the top servo should tuck securely between the DC input and the servo itself. This can be secured with 3 M3 x 20mm screws.
- Program the microcontroller. The arduino micro uses a step function with a sine-wave interval and set-value intervals to drive the heart with a natural slow expansion and quick contraction, and the speed of this cycle is dictated by the potentiometer. Upload this program to the arduino micro (note there is a different version depending on which servos you're using!), and wire everything up on a breadboard using the circuit diagram provided so you can get an idea of how it all works before it goes into the model (which is very compact and hard to troubleshoot).
- Attach the servo horns. Once you're happy that all the servos are moving as they should be, slow the motion down to its minimum, and unplug the power at the precise moment that the servos are still after the quick contraction. The bottom servos should now be in their "contracted" position, so take this opportunity to attach the servo horns for the bottom pair of servos at such an angle that the arms are close together, almost touching. This will be fiddly! The top servo will be in its most counter-clockwise rotated position at this point in time so attach the servo horn in such a way as to allow the "rocker" component to be in its most counter-clockwise rotated position. It's probably best to experiment with the positioning and turn the power on and off to find a position you're happy with.
- Wire the microcontroller. You can use some tiny M1 screws to attach the insulating plate to the bottom of the arduino micro (alternatively just put some tape over it) and some more M1 screws to attach the micro to the standoff on top of the servo driver board. Refer to the circuit diagram to wire up the arduino. Remember however that in the design the arduino is upside down! If you're just using jumper wires for the arduino, you'll need to take off the black connector ends for the SDA and SCL wires so they can be bent out of the way of the moving parts, and some tape or maybe shrink tubing for insulation. You should be able to tuck all of this away between the arduino and the servo board. Hopefully it all works and you can control the heart using the potentiometer on the back!
- Attach the side panels. Using M2 x 6mm screws, attach the side panels to the model.
Step 3: Sculpting
Taking the 3D printed sculpting base, glued or taped together, your heart design can be sculpted over this form. Before sculpting you should also attach a piece of wood or similar to suspend the heart in the casting chamber, I forgot this step so I had to (very carefully) screw in the wood plank after I'd finished sculpting. My main tips are to ensure an evenly thick layer all around, which shouldn't be too thick because it will be difficult for the servos to stretch out the silicone. You can use any type of Plasticine or clay to make the sculpture so long as it won't interfere with the casting silicone. Remember it doesn't need to set hard, so I'd recommend some regular Plasticine or something like Chavant clay if you have it.
My design was maybe a little unrealistic because the arteries are a little too pronounced and obvious, but I'm happy with the way it looks and I enjoyed sculpting it! Another useful tip is to use some clear plastic sheet like a zip-lock bag and sculpt textural surface details through the plastic - this stops the clay from grabbing or tearing and allows you to quickly make a nice surface texture - it particular it was good for making horizontal striations in the heart and for making a stippled fatty texture in some areas.
Also be sure to add some relief channels so excess silicone can escape the mould if it needs to - I forgot about this, which just meant I had to cut them out with a knife after the mould had set.
Step 4: Mould-Making and Casting
Since silicone is hellishly expensive, I hot-glued a box using styrene sheet to as small as I could safely go. I thought I could get away with 1kg but ended up needing 2kg and had to make the mould in two seperate pours! For the mould, I used Tinsil 7025 (although I may have benefited from something a little softer) and for the heart itself I used Platsil Gel 00 which was fantastically soft! The mould release I used was Ease Release 205.
Since there are many fine details and potential sites for air to become trapped in the design, I recommend mixing a small batch of silicone first and brushing it on to the design to capture all the details. Once this has begun to cure, you can mix up a much larger batch and pour it into the box (with the sculpture suspended inside). Mix carefully and pour from high up to reduce bubbles, but remember it doesn't matter as much since the fine details of the surface have already been captured with the initial painted-on silicone.
One this has set, it will be necessary to cut into the sides of the mould to get the sculpture out - cut in a zig-zag pattern so it will line up properly later on and try to only cut the minimum depth necessary to safely get the sculpture out. Clean the mould with warm soapy water if you have residue, and remove the Plasticine from the inner form, unless you want to keep it - then you'll have to print another casting base! You can work out the volume of casting silicone you need from the plasticine you took off the casting base.
When you're ready to cast, use a good amount of liquid mould release in the mould and allow it to dry. Mix up the amount of silicone you need according to your sculpture, plus a little extra to be safe, and a bit of "red iron" pigment. I think a more dark red with maybe a bit of a purplish tint may have looked more realistic, but this can be resolved with airbrushing later on.
Platsil Gel 00 takes only 30 minutes to cure, at which point you can very carefully demould. You may find it easiest to pull out the inner form first then carefully peel the skin from the main mould.
Step 5: Finishing Up
I used a bit too much mould-release in my design, so I had to clean it quite a bit with warm soapy water to stop it from being sticky. I also had quite a few areas where loose bits of silicone from the mould had stuck to the skin and lumps where the original mould had air bubbles - most of these were easy to fix with tweezers and a craft knife. When you're ready to paint, I recommend fitting the skin to the mechanism so it holds its form.
Although there are reiliable painting methods using thinned out silicone and pigments, I didn't run into any issues using regular acrylic paints. I started out by darkening recessed areas, then trying to make organic patterns with dark reds/purples blues. I also added fatty layers with light creme colours, and used some white spirit to rub off excess paint of the veins and some other areas. I did feel that the paint-job was lacking however, but after putting fake blood on the model it really started to come to life.