Skip to content

The Catfish - A fully working submarine

Creation's quality: 5.0/5 (1 vote)
Evaluation of members on the printability, utility, level of detail, etc.

3D model description

A fully working submarine created for the Thingiverse #MakeItFloat challenge. I'd like to eventually get a fish finder on it and have it map lake beds.


"a fun, unique design" - Derek Bower

"this is an incredible build" - omega-00

3D printing settings

How much weight will I need?

I am printing some parts at 30% fill which means even when completely filled with water, there will be air trapped in the walls making it float a little. Submarines stay upright in the water due to most of the weight being placed at the bottom. We’ll need to find a good balance of weights so we can submerge and surface just by adding or removing a bit of air/water.

Differences in water composition will affect buoyancy. Objects float easier in the ocean because the salt adds to the density of the water, making it weigh more. The submarine will need to be calibrated for the different types of water so you would want to use different sets of weights when in the bathtub, pool, lake, or ocean.

You’ll need to figure out the weight of the water displaced when the submarine is filled completely with air and then again when filled with water. To float, the entire submarine and all of the motors/electronics/cargo combined needs to weigh less than the water displaced when filled with air. To sink, the submarine needs to weigh more than the amount of water displaced when it is filled to the max line with water.

Buoyant force equals the weight of the water displaced by the object. Here is an easy way to figure out how much water will be displaced by the submarine:

  1. Get a large trash can or bucket big enough to entirely submerge the submarine and fill it to the top with water.
  2. Place the water-filled container in another larger container to catch any water that spills out.
  3. Submerge the submarine in the water and weigh the water that spills out.

For smaller objects you could use a liquid measuring cup:

  1. Get yourself a liquid measuring cup or a container that is not tapered.
  2. Fill the container with enough water to completely submerge the object, leaving enough room in the container for the water to rise.
  3. Mark the water level on the container without the object.
  4. Fully submerge the object and mark the new water level.
  5. The difference between the two marks equals how much water gets displaced by the object.

You can then measure out and weigh the difference to determine roughly how much the object would need to weigh (more than the weight of the water which is displaced) in order to sink.

Air Pump

I took the diaphram air pump components out of a 1.5V fish tank air pump from amazon ( and made my own air tight box for it. Air is pumped in through a plastic/rubber tube that runs down from the float deck. I have a one-way air valve attached to make sure air doesn’t leak out.

Air Valve

Air is released from the sub when it is time to submerge using a servo controlled valve. There is a hole at the top of the sub for the exit tube. The other side of the valve, where air flows in, should have tubing placed at a position below the motors. Since the motors are mounted inside a tank that fills up with water, you’ll want to set a maximum water level, leaving a bubble of air for the motors to live in. I’m using this servo controlled air valve:

It would be a good idea to use water level indicators inside the submarine. There are some access holes (hull-x, hull-y, and hull-z) that could be replaced with clear windows to help with calibration.


I’m using a bell crank at the bottom of the sub to convert vertical motion from a servo to horizontal motion for the rudder. The servo sits above the water level and a wire rod extends down through the water and attaches to the bell crank. Another rod then connects the bell crank to the rudder.


I am using this centrifugal pump for thrust:

The pump has a hole for attaching this priming pump:

You can mount the priming pump anywhere inside the sub to help with balancing weight.

Float Deck

The top/center of the submarine has an area for storing a coil of plastic/rubber tubing (for the air pump) which is capped off by the “float deck”. Fishing line can be run from a reel inside the submarine, down through the bottom, and then back up again through a pathway that leads to the coil area, before finally being attached to the float deck. We can use a small dc motor to reel in the float deck/coil after it has been extended.

The float should be printed as hollow as possible.

Weights, Floats, and Electronics

You’ll need to attach different sets of weights and floats to different areas of the sub depending on the weight and placement of your electronics and cargo. For this reason I have not made any permanent placements for these things. Instead, I am creating boxes for electronics and air tanks/weight containers that can be placed anywhere you choose. You will likely need to place weight(s) along the bottom interior of the sub to keep it upright in the water.

I’m using PVC pipe cement to help seal water out of areas with electronics. I plan on using an Arduino, some batteries, wireless radio chips, and a motor shield or two.

Touch Control System will be used to create a 3D touch screen interface for controlling the submarine wirelessly:

Included is a box that hugs the top of the sub for storing electronics, and another side box (fits a roll of quarters) that could store weights, other cargo, or could be used as a float.


I am printing this submarine in ABS on a Da Vinci 1.0 and gluing it together with acetone and scrap plastic. Glue it together and fill in holes, paint the seams with acetone, sand it, repeat until smooth and hull is solid. I recommend printing all of the parts (except the float deck) completely solid if possible.

All parts should fit within the build volumes of the MakerBot and Da Vinci printers. Included is the 3dsmax file with everything in it to help figure out where things go.

I've added a couple pictures of what I have printed so far. My printer is having some major problems right now so check back later for updates on my printing progress!

Update 7/14/15

My printer is working great now and I've uploaded some new pictures showing what I have completed so far.

It is all sanded down, shiny, and ready for electronics.

I just ordered a new motor for the centrifugal pump and there may be some changes coming to accommodate something a little bigger than what I had used before.

My first test is to submerge the sub and surface using the air pump. I just need to print out hull-x and hull-z.

Update 7/15/2015

Here is a new centrifugal pump:

This pump has been rebuilt to fit a 550 motor with a water cooling jacket:

The small hole on the side is for priming the pump and water cooling the motor.

Update 7/19/2015

It might be a good idea to stick with the smaller motor on the centrifugal pump! The 550 motor will pump some serious water, but running it at anything more than minimum can melt the plastic as the motor can get pretty hot, even with water flowing through the pump.

I tested the sub in water and it floats/sinks! There are definitely some balance issues that need to be worked out. I found that 2 rolls of quarters and all the fishing weights I happen to have (picture added) made a good balance for floating and sinking. The air pump worked ok, but it needs an upgrade.

There is some air in the walls of my sub (some parts were printed with less density) and so even when filled completely with water, I still needed 2 pounds of weight to sink the sub and it had no problem surfacing! I plan on having a max fill line in there as well, leaving an air bubble at the top. This means I'll probably need over 2 lbs of weight/cargo in addition to any batteries and electronics.

To fix balance issues I'll either add some walls to separate the internal ballast tank into 2 or 4 sections, or put the 2 lbs of weight on a moving track. Both solutions would take advantage of accelerometer data.

Update 7/22/15

I've added a wall (hull-wall-l and hull-wall-r) to split the sub into two tanks. The bubble of air created while surfacing likes to move to either end of the sub, making it go nose or tail up. Left/right balance has been pretty good, so we'll hopefully only need the one wall. Adding a wall in the middle should keep the air from moving entirely to one end. I've left some clearance at the bottom for running air tubes. There is a new picture up showing my newly installed wall. I'll probably tack it down in a few places with acetone and seal the edges with silicone for easy removal.

We'll need to pump air into both sections and release air from both as well. This should be fairly easy to do with a couple Y shaped air tube connectors. The two tanks will need to be fairly balanced. They'll need to fill up with water/air at roughly the same speed. Flow rates could be set using adjustable fish tank air valves. If nothing else, accelerometer data could be used to balance the tanks by pumping air from one to the other.

  • 3D file format: STL





Collection associated with this 3D model

Best sellers of the category Game

Add a comment

One comment

Bonjour, je trouve votre projet intéressant j'aurai aimer pouvoir voir l'objet en action.

Merci a vous pour ce partage :)

Would you like to support Cults?

You like Cults and you want to help us continue the adventure independently? Please note that we are a small team of 3 people, therefore it is very simple to support us to maintain the activity and create future developments. Here are 4 solutions accessible to all:

  • ADVERTISING: Disable your AdBlock banner blocker and click on our banner ads.

  • AFFILIATION: Make your purchases online by clicking on our affiliate links here Amazon, Gearbest or Aliexpress.

  • DONATE: If you want, you can make a donation via PayPal here.

  • WORD OF MOUTH: Invite your friends to come, discover the platform and the magnificent 3D files shared by the community!