Boris Smus

Software Designer

I constructed my second major LEGO Mindstorms project in 2005 after a long lull of inactivity. It was an automated bartender capable of mixing together up to 4 kinds of liquid ingredients to create cocktails. As in all other Mindstorms projects, I only used the pieces provided in the Mindstorms set.

Hardware

The bartender consists of two distinct parts: the rotating carousel which holds beakers with booze and the base which is responsible for dispensing the beverages. While disassembling the bartender, I diagrammed the hardware with Leocad.

The rotator carries four standard 150ml beakers, full of the ingredients which to mix together. It slides on top of a tyre-less motorcycle wheel. Two more wheels have been added to lift the beakers sufficiently from the tipping mechanism. Here’s a picture:

rotating_carousel

Each of the four arms contains a freely resting tipper unit, which holds the beaker. I used the tire from the motorcycle wheels as bushes around the beakers so that they rest firmly on the tipping unit. Each beaker holder looks like this:

beaker_holder

The base is densely constructed, and rests on a standard LEGO base plate (not illustrated). This is done so that the bartender is relatively stable under the weight of the beakers and liquid. The base is responsible for three things: rotating the beakers on the upper carousel, lifting the pouring mechanism and rotating the pouring flywheel. Once the correct beaker rests beside the flywheel pictured below, the flywheel lifts to make contact with the beaker, and the rotation of the rubber tire causes the beaker to pour. Here’s an illustration of the base:

base

Software

Instead of writing in NQC and using the provided LEGO firmware, I used brickos and developed in pure C.

It was difficult to determine the volume of liquid that has poured out of the beaker as a function of the rotation of the flywheel. I had to start with the assumption that each beaker contains 100ml of liquid. Then, through trial and error, I calculated volume as a function of the time elapsed since starting the pouring process.