Single Bubble Generator

by BrownUniversityENGN in Workshop > Science

763 Views, 4 Favorites, 0 Comments

Single Bubble Generator

899289D2-A8A3-4302-AB9F-7D06D7C0A8E7_1_105_c.jpeg
The_Space_Bubble_Program_Logo.png

In this Instructables, we will detail how to build the bubble generator from start to finish!

Key Takeaways: The bubble generator design requires quite a bit of assembly, particularly in the syringe pump, but does not require any particularly expensive components or difficult assembly tasks!

Supplies

Amazon Products

McMaster Products

Other Materials

  • All of the materials in the DIY Syringe Pump Instructables EXCEPT the Cyclewet Stepper Motor Driver; replace with Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit - v2.3 (https://www.adafruit.com/product/1438) — approximately $65.00
  • 1/4" Acrylic Sheets (clear) — variable cost
  • Steel Sheet to place below the acrylic tank — from scrap

Total Cost: $171.26

Making the Acrylic Tank

b1.jpg

1-1: Using the tutorial as a guide, build or procure an acrylic tank with your needed dimensions (we received one from our research partner). (https://www.wikihow.com/Build-an-Acrylic-Aquarium).

1-2: Before assembly, one of the side panels, drill a 7/8" diameter sized hole, so that after assembly it will look like the photo above, and fit the Size #4 rubber stopper.

1-3: In addition, on the Size #4 rubber stopper, drill a 3/32" sized hole so that the PVC tubing can fit inside it.

Syringe Pump Assembly

b2.jpg

2-1: Following the below tutorial, build a Syringe Pump assembly.

https://www.instructables.com/DIY-Syringe-Pump/

Note for Step 5, "Wiring the Stepper Motor", you are using an Adafruit Motor Shield; instructions on how to assemble & wire it up is in the tutorial below.

https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/using-stepper-motors

2-2: Unscrew the tall, vertically-pointing screws at the opposite end of the motor, remove the acrylic, and place the syringe so that the cylindrical portion rests on the bottom piece of acrylic. Place a piece of cloth on top of the syringe to avoid friction. Finally, replace the top acrylic piece and screw tightly to ensure a tight seal.

Nozzle Holder Assembly

b3.jpg
b4.jpg
b5.jpg
b6.jpg

3-1: Download and 3D print the below two STL files.

3-2: Place the PVC tubing in-between the two printed parts, along with the stepped magnets so that they look like the photos above. Screw them together with the flat head screw and locknuts. If you would like to increase longevity, coat the stepped magnets with waterproof spray paint before assembly to avoid rust or corrosion.

3-3: On the upper part of the nozzle holder, push in a socket tube luer lock coupling on the tubing. Use a glue gun to secure the luer lock coupling to the tubing if you would like. Connect the one-way check valve to it as well. No need to connect the nozzle yet, but after assembly, the nozzle holder should look like above.

Final Assembly

b7.jpeg
b8.jpeg

4-1: Slide the #4 rubber stopper with the predrilled hole into the horizontal portion of the tubing. Make sure to have the side with the larger radius facing the nozzle holder, as it will be used to plug the side hole in the tank.

4-2: As seen above, place the nozzle holder inside the tank. Route the tubing out of the tank by the predrilled 7/8" hole in the acrylic tank, and then plug that hole using the rubber stopper.

4-3: Cut the extra length of the tubing so that the tubing ends around 10cm away from the side of the acrylic tank. Connect a plug tube luer lock coupling to the end of the tubing. Use glue gun for a better seal if you would like.

4-4: Connect the three-way valve to the plug luer lock on the tubing.

4-5: Connect the syringe on the syringe pump to the three-way valve.

4-6: Attach a sheet of diffusive paper to the back of the tank using tape, and add bright LED lighting pointing towards the back to better illuminate the surface. This will improve the quality of our image analysis later on.

Methodology

In this 2nd section, we will describe how to operate and use the bubble generator once it has been set up using the steps above allowing for its full operation.

Key Takeaways: Once built, the bubble generator is quite easy to operate! There are two main modes of operation: pushing bubbles and drawing in air, both of which can be controlled using the Arduino program we designed.

Arduino Code

b9.jpeg
  1. Launch the Arduino IDE available for download here and download our code to operate the syringe pusher by using the code below.
  2. Connect the Arduino to the computer using a USB cable and plug in the motor shield to a power outlet using the AC adapter. Make sure that the Arduino port is set correctly and that the board is set to Arduino Uno, the model of Arduino we are using.
  3. Open the tools menu and select the Serial Monitor: if the Arduino is properly connected, you should see the image above.
  4. In the input window, you can import the number of steps (rotations) you wish the motor to use. A positive value pushes the syringe while a negative value pulls it back.

Setup

b10.jpg
  1. Refer to the chart above of the nozzles used in the design to select an appropriate nozzle size. The list of available nozzles and their ID and OD information could be found above.
  2. Screw the nozzle tightly onto the Luer lock to ensure that there is no leakage.
  3. Obtain approximately 2L of water and slowly pour it into the tank.
  4. Check that the Arduino/step motor assembly is correctly connected to the syringe pump and that all electronics are sufficiently away from the tank in case of a spill.

Bubble Generation

  1. Ensure that the syringe is fully pulled back and is completely filled with air (until the 10mL mark or so — refer to the Refill Syringe section below if the syringe is not full).
  2. Enter 100 steps into the Arduino interface; expect a continuous stream of bubbles. This allows the tube to be cleared out of any existing bubble or even water.
  3. If the previous step does not result in the continuous stream of bubbles, try tightening all the connections (e.g. the Luer locks, check valve, and three-way valve).
  4. Refer to the calibration manual linked here to obtain the desired number of steps corresponding to the selected nozzle size. You may want to conduct your own calibration with the given procedure as your results may vary. Note that the step sizes are only recommendations and the user should expect fluctuations during usage.
  5. Observe the result. If no bubble is generated, try slightly increasing the step size; conversely, if multiple bubbles are generated, try slightly decreasing the step size.

Note: Sometimes there is a small delay between the Arduino command and the observed bubble generation. Be patient with the first few trials!

Change Bubble Size

One key benefit of our design and the multiple anti-leakage devices it employs is that you can change the nozzle without removing the water (as long as you don't mind getting a bit wet!) If you want a new bubble size, you just need to choose a new nozzle, which theoretically determines the bubble size using the equation discussed in Background.

  1. Reach your hand into the tank and very carefully unscrew the nozzle from the Luer lock, and remove it from the tank.
  2. Choose a nozzle that yields your desired bubble size and make sure that it is free of debris and clear and does not have any problems like being bent, etc.
  3. Reach your hand back into the tank and screw in the new nozzle. Push at least 100 steps using the Arduino serial monitor to get bubbles flowing.

That's it! It's as simple as that to change the bubble size.

Refill Syringe

b11.png

  1. When there is little air remaining in the syringe, switch the three way-valve to connect the environment and the syringe as shown in the figure above in the "Refill Syringe" mode.
  2. Enter "-800" in the Serial Monitor in order to pull back the syringe and fill it with air. Repeat with smaller increments as needed to fully fill the syringe with air.
  3. When the syringe is full, switch back to the Push Bubble mode in the diagram above, and resume generating bubbles using the instructions in Generate Bubble above.

Be careful not to pull the syringe too far back past the beige 3d-printed block acting as a barrier — this is bad for the motor and will make a terrible noise. If you accidentally pull back too much or think it will hit the back of the syringe pusher, unplug the motor shield right away, re-plug it in, and you should be good to go.

Video Capture and Analysis

Screenshot 2021-04-30 020133.png
  1. Place a diffusive sheet behind the tank (several sheets of paper may suffice, but make sure the fiber grain of the paper is not visible), and place a strong light behind the sheet. Place a ruler along the side of the tank.
  2. Using a slow-motion camera (minimum 120 FPS, but the higher the better), record bubble generation. Ensure that the frame does not move significantly throughout the video and that the ruler is visible.
  3. First, attempt the Ellipse Imposition method of analysis. Pass in the file name as a parameter in the DropSize.m file. Ensure that the file, DropSize.m, and fit_ellipse.m are in the same directory. Record the outputted diameters. (These diameters are in pixels).
  4. Erase the diameters that are outliers (during bubble formation/as the bubble leaves the screen). This will prioritize the bubble at its most consistent diameter. Calculate the average diameter.
  5. Use the calibration.m code to find the ratio of pixels to the dimensions on your ruler (in our case, mm). Using the simple proportion above, solve for the average diameter of the bubble in millimeters.
  6. Using the formula for d_b in Background, compare your actual bubble size to your anticipated bubble size.
  7. Record your results.

Note: Alternatively, one can use the "Subtraction" code listed as well. This code requires turning the video into a series of frames (using videoprocessing.m), the same calibration (using calibration.m), inputting that calibration into lines 11-12. This code will output the diameter of the bubble in a graph and variable d_eq in millimeters. We found this code to be more inconsistent and require higher-quality video than the Ellipse Imposition code offered by the Harris Lab and therefore chose to exclude it from our final testing:

scaleh = 155/10 %pix/mm - Horizontal

scalev = 155/10 %pix/mm - Horizontal

If both of these methods (Ellipse Imposition and Subtraction) are not working or are inaccessible, one can manually check the diameter of the bubble. First, figure out your calibration (using calibration.m or any other program that allows one to discern how many pixels constitute a set distance on the ruler). Then, find several frames of the video in which your bubble appears to be fully formed. Using the same calibration technique, manually find the bubble diameter. Do this with several frames (at least 3) and average your final result. For more details, refer to the Code page.

Image analysis is not perfect! While we are often tempted to assume that computers execute tasks with perfect accuracy, computerized image analysis is subject to flaws. Error sources in a digital image analysis system discusses a number of potential flaws in image analysis including reflection, lens quality, and other optical effects, as does a presentation from the Sandia National Laboratory entitled Quantifying errors in image-based measurements. While considering the accuracy of image analysis is beyond the scope of this report, we encourage readers to check out these sources and consider how errors may affect their measurements if ultra-precise bubbles are needed.