BottleBot - Bottle Filling Machine

Conveyor belt and a filling station using arduino- bottling my home brew beer!

Similar projects worth following
I make my own beer at home. I use a 36L kettle and usually end up with a batch of 18-22L of beer. Some while ago I had three batches ready for bottling and ended up filling almost 200 bottles of beer. Analyzing the process of bottling my beer have been fairly simple; Fill a bottle, cap the bottle, label the bottle and put away. My problem is that filling a bottle takes too much time, and I can't fill the bottle while capping the other. So making a robot and automate the process was my solution.

Read more here:

How I think it will work.

The fermentation tank is nearby and a silicone tube is connected to the bottom valve, or is simple dropped inside the tank. The conveyor belt moves the bottle to the filling robot, while a limit switch counts the number of bottles going by. When two bottles are in position the conveyor belt stops and the robot lowers the arm, pump starts and solenoid valves open. The beer is pumped through flow meters before going through the solenoid valves and into the bottles. When the flow meters have detected the correct amount of beer the solenoid valves closes, pump shut off and arm lifts back up. The conveyor belt starts again and brings the two full bottles further down while the limit switch count the next two bottles and repeat the process.

Another great feature would be a self cleaning and sanitizer program, where Star San sanitizer or detergent is simply pumped through in a loop.

  • 1 × 12V Diaphragm Pump
  • 2 × Solenoid Valve 12V Normally closed
  • 1 × 100RPM High Torque Motor 12V
  • 9 × Timing Pulley 2GT 20T
  • 4 × Timing Belt 2GT 762 Teeth 1524Mm

View all 8 components

  • Breadboard explosion

    FunctionalDesign01/20/2017 at 21:02 0 comments

    Working on a flow sensor test setup the breadboard suddenly exploded! And I though blue smoke was the worst that could occur..

    Read more »

  • Bottle Positioning

    FunctionalDesign01/15/2017 at 18:36 0 comments

    The main functions in the Arduino program is working! I have spent the last month programming the various functions while parts for the BottleBot are printing. Functions like moving the conveyor belt, positioning of bottles, as well as filling them seems to work now. At least in theory, using the serial monitor.

    Read more »

  • Solenoid and pump test

    FunctionalDesign12/18/2016 at 19:05 0 comments

    On the road to a fully automated bottle line there will be lots of testing and errors. I have now tested the pump and solenoid and measured the time needed to fill bottles with the current setup. I have ordered flow meters that I will incorporate into the design, but right now I need to understand how the pump and solenoids affect the flow, and how I can control it.

    Read more »

View all 3 project logs

Enjoy this project?



Stephan wrote 06/12/2020 at 12:26 point

Do you have the design files anywhere for others to use? I love the design.

  Are you sure? yes | no

Gary Stenzel wrote 03/18/2020 at 16:09 point

I like this! Great job so far. I'm following to see where this goes.

  Are you sure? yes | no

info wrote 04/11/2019 at 07:22 point

This is a very nice setup. Do you share the 3D print files/partslist/software ? Or can we buy this information?

  Are you sure? yes | no

bullmoose11 wrote 01/01/2017 at 20:18 point

Hi Nice project. I brew and bottle as well. I have not made anything yet so I am just speculating. :) 

Another way to debounce is; create an array of 10 integers, then  loop 10 reads and divide by 10. Each button would be pulled high by a 10K resistor. say the average of 10 reads was 700. Pseudo code:  if button1read  >= 500 then runFillPump1();

One other thought is instead of  buttons why not use a load cell at each fill station to sense the bottle and weigh the bottle for when it reaches "full" weight..  That way you could eliminate the solenoids and and buttons and  just use a fill pump(s).  A 1kg Load cell and  amp board are  less than  $7 on eBay.  Pseudo code: eg., 

runFillPump1():;                       // once in position start fill pumps

do { readWeight1();   }          // read load cells continually while filling with do, while 

while  (weight1  < 12);          // don't stop filling until bottle is 12 ounces full

stopFillPump1();                       // turn fill pump off right away

Yet another thought; to make a conveyor belt , Harbor freight sells individual rollers like for a roller line. Get 2, one for each end. spray the roller with rubberized sealer (as seen on TV) to make it tacky.  Buy some durable light weight fabric create a belt and use some iron on seam tape. the kind they sell at the fabric store for making hems. Make a bearing plate for the belt (like  a belt sander) Cut 2 holes in the bearing plate for the load cells to sense the bottle presence. Better yet, You could use photodiode and LED pair opposite of each other to detect the correct positioning of the  bottle over the load cell and under the fill tube. I'm thinking the "V" shaped infrared photo detector reflective distance type you can get 5 for $3 on eBay.  Maybe  cut them in half so they can face each other. 

Heck, for cheap, you could just use the parts from an old Goodwill  4" belt sander, rubber drive wheel a 15 RPM 12V gear motor and idler roller for a conveyor, and just expand it out to how ever long you want. 

Good hacking  job

Cant wait to see what improvements "creeping elegance"  will bring. :)

  Are you sure? yes | no

FunctionalDesign wrote 01/04/2017 at 17:23 point

Thanks for great comments and suggestions! Regarding debounce, you were thinking about the solenoid test I posted, right? My problems could also be a result of not using capacitors together with motors (me lazy). Not sure yet, but I think I'm going to use relay switches for all motors and valves to better separate these components. 

When it comes to measuring of liquid level in bottles I think your idea of using a load cell might work. In my current mechanical setup with the conveyor belt it's a bit complicated (haven't looked at the use of load cell in depth yet though). Good thing with load cell is nothing is touching the brew. 

Another thing that could work is two stainless steel pins sticking sticking into the bottle beside the solenoid that measure moisture. When wet = bottle is full & stop pump. 

I have just received my two flow measure sensors and have done a quick test using this tutorial: I'd think your pseudo code would still be OK using a flow sensor.

Building this bottling system is not a challenge to me really, I have the conveyor belt up and running and the robot is physically coming together, but writing the code... that's the horrible work! I'm at a basic level when it comes to arduino and coding, hopefully the hackaday and arduino forums can help when I'm stuck or the robot is pouring beer everywhere but into the bottle!

  Are you sure? yes | no

Alex wrote 12/28/2016 at 11:21 point

how about using one of these pumps - they use a loop of flexible tube, meaning the beer is not contaminated by the components of a discrete pump.

  Are you sure? yes | no

FunctionalDesign wrote 01/04/2017 at 17:34 point

Absolutely a good pump for pumping beer. Probably the best option actually. 

A quick search on ebay gave me this:

Very cheap, but maybe flow is too low on this one. I'll continue the project using the diaphragm pump I already have as making things work (arduino coding!) is the challenge for me as per now.

  Are you sure? yes | no

axpmike wrote 12/18/2016 at 21:18 point

why 2 bottles at once? this will need semi-accurate placing.....

  Are you sure? yes | no

FunctionalDesign wrote 12/18/2016 at 22:52 point

Yes, the placement accuracy is a challenge, even with one bottle. You can see the rail is curved where the bottles are filled. A servo pushing the bottles into this rail will create a three point locked position, and the solenoids are precisely above this point. The reason for two bottles (or more) is filling time, as you can see further down in today's project log (solenoid and pump test), see table with filling time and thoughts around that.

Before I started the build I had to decide on 'conveyor belt or not', as that complicates things quite a bit. Another way to go, plan B maybe, is no conveyor belt, but 3 or 4 fixed places for bottles with valves on top, and a 'fill it up' button for each bottle you put in. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates