This wont make much sense unless you have read the previous posts about leak testing my rebreather counterlung. These are more lab notes than anything. Also, there are no good pictures until the end.
The first thing to do when you get some data is to ask if it makes any sense. Much of the time, some small mistake has been made, like inverting an axis. In this case, there is some strange behavior. The pressure (blue line) is going up. That is pretty weird since the volume is not changing, and gas is not being added to the device under test.
But now, looking at the temperature, it starts to make sense. if the whole room gets hot, and the air in the bag cant expand, the pressure will go up! I created the green line, which represents the expected pressure based on the initial temperature and pressure, assuming no change in volume. But as you can see, that line looks about right, but is quite a bit higher than the blue line.
Lets plot the difference- this is the temperature-compensated pressure drop after the whole test has run. The X axis here is roughly in minutes, so over six hours, it 300 Pa is the calculated difference between what was measured at the end of the test (accounting for pressure) and what we should have had! That is about 1.2″ H2O- a fairly small leak- about 30 ml of air at NTP, or .04 grams of gas.
These are the final iteration of plots I am using to look at leak behavior. The first one is the temperature compensated pressure shown with the internal pressure. From here you can eyeball the pressure difference. This is displayed above the temperature chart, so its easy to see that temperature correlates to pressure. In the top right chart, the gas loss is shown, which is convenient since that is applicable to design. Finally, the bottom right chart shows gas loss rate. It is not as useful as I expected.
This was a long test done with the air conditioner on in a sunny room. Here there is some additional bad behavior. This test was done with the counterlung lying in a pool of water, with a thermocouple taped to the outside (on top). Interestingly, from the top two charts we see that we start and end with roughly the same gas volume- no leakage, which makes sense because this test was done at only 2.7 inches of water (~675 Pa), a very low pressure differential. However in the middle of the chart, the Temperature compensated pressure is up to ~900Pa lower than the measured pressure, which ends up going back to 0 at the end of the test.
This shows something that has not been compensated for- thermal lag of the air compared to the sensor, and any temperature difference between the air in the the bag and the the sensor. The sensor is very small, and is not well connected to the air in the bag, while the air in the bag is lying in a pool of fairly thermally stable water. However, the data still seems good if the temperature is allowed to settle, as it does towards the end of the test.
Leak Flow Behavior
In comparison to a lot of high pressure leak tests, the flow from the bag is certainly not “choked”, like it would be in something like a constant mass flow orifice. We know this theoretically, because the upstream pressure:downstream pressure ratio is only 1.03, and because it is easy to see that the leak rate changes significantly with pressure in the chart above.
Unfortunately, barometric (atmospheric) pressure is very important for long term tests. Barometric pressure, usually reported in inches of mercury, changes throughout the day. 1″ Hg is 13.6″ of water, which is quite significant for these tests!
If the atmospheric pressure goes down 1″ Hg, the differential pressure should go up, while if the pressure increases, the pressure differential goes down. Since I am only measuring a pressure differential, ending and starting at different barometric pressures will throw the test off. However, short term test results or tests that are conducted on stable weather days seem like they should be ok. Obviously adding a barometer to this (an absolute pressure gauge) would make it much better but I don’t think I need that information to decide if my bag is airtight enough over the short term.
I do have a barometer, in my watch (and probably one in my phone, now that I think of it), but it is not simple to import that data into my testing process. However, the data I do have shows that the pressure is usually pretty stable- within 2-3 mbar, on “nice” days.
I think after all this testing that the leak rate seems low enough. Although there is technically a little bit more I could to to verify the leak rate, it seems like a roughly a few inches of water/hour, at ~15″ of water, which is the maximum operating pressure. Since the leak rate should go down with a smaller pressure difference, I expect to be well within the EN limits for a single valve. Before I do a bunch more testing, I will want to get all the rest of the fittings onto the counterlung.
Some notes on data:
A nominal atmospheric pressure and a 13 L volume were assumed for mass loss calculations.
Just to clarify why everything looks so smooth: data was smoothed with windowed averaging with a window size of 10, different data rates appear throughout the data, with the original tests I did being at a rate of 30s/sample and later tests being at ~1s/sample to provide better averaging.
Gas, for the most part, should stay inside of a closed circuit rebreather- that’s sort of the entire point. So leak testing is very important- important enough to automate to get really good data. Unlike reading a gauge with your eyes, automated data capture, if done right, can make it easier to capture a lot of data, and it takes out errors caused by a person interpreting an analog gauge face. I also wanted to add temperature measurement, as that seemed likely to cause pressure deviation, even to the point that the pressure in the volume under test seemed to go up.
Automated data logging is nice since it is much less tedious and usually allows for a lot more data and more data sources to be reliably sampled. In this case, I didn’t have a lot of bench space to dedicate to this, and the sampling rate was low, and I wanted to use stuff I already owned. So I ended up using an arduino as the “data collector”, a MAX31850 as the temperature sensor, and a the dwyer 605-20 as the pressure sensor.
I think the most annoying part of this is the pressure sensor- its just not really meant for this application, as its powered at a somewhat high voltage (10-35 VDC) and outputs 4-20 mA (current, not voltage) across the span of 0-20″ of water. While measuring the current is possible, and even possible to automate with some of my gear, it would take up a good amount of space, and it not really necessary.
Of course, since the pressure sensor basically becomes a current source, it is possible to stick a resistor in there to create a voltage drop. The resistor can’t be too big (requiring too much current) and making it too small will mean there is not a large enough voltage drop. I managed to find a 200 ohm resistor in my junk pile, which turned out to work well:
.02 A * 200 ohms = 4 V
.004A * 200 ohms = .8 V
Max Power Dissipation:
200 ohms * (.02 A)^2 = .08 W
According to the datasheet, 200 ohms and running at 15 V would work fine for the pressure sensor, so I had to pull out a power supply. It seems weird that I could turn the voltage up to 35V and still have the pressure sensor work fine and output the same voltage, but I guess that is the magic of it being a current source.
Here we have 15 minutes of data- it was being recorded every 1 minute. As you can see, the pressure dropped about 1 inch of water over that time period, with little change in temperature. Since I have a differential pressure gauge, changes in barometric pressure should be zeroed out. So we can finally observe a leak! Given a rough volume of 13 liters (stated volume of drybag), and a nominal room temperature, it comes out to about 30 ml of gas lost over 15 minutes.
How Good is Good Enough?
People say that if you can measure it, you can change it. That might be true, but making something completely leak proof is more or less impossible- just keep looking and you can find a leak at some pressure or with some penetrant (like helium, a very small gas!). It’s important to know when something is good enough!
EN-14143 is a European standard for rebreathers, so lets look there for some leak rate and pressure information.
5.6.5 Exhaust valve The apparatus shall have an exhaust valve, operated automatically by excess gas in the breathing circuit. The exhaust valve shall prevent the pressure in the breathing circuit exceeding 40 mbar. Testing shall be done in accordance with 184.108.40.206 after the test according to 220.127.116.11. The operation of the exhaust valve shall not be degraded or leaking after being subjected to a) a constant flow of 300 l min-1 for a period of 1 min; b) a static negative pressure of 80 mbar for a period of 10 s (when in the wetted condition). The leakage of the exhaust valve (when in the wetted condition) shall not exceed 0,5 ml (STP) min-1 when tested with a negative pressure of 7 mbar for at least one minute.
from EN-14143 which I found somewhere online. Emphasis mine
According to this, the maximum pressure the device should experience is 40mbar across the counterlung. Anything greater should be vented by the overpressure valve. Additionally, it looks like .5ml/min of leakage at 7mbar (2.8″ water) is permitted. At a higher pressure of 15″ water, it seems like the leak rate is about 2ml/min. This is encouraging since this is the leak rate for the whole system, at a much higher pressure. However, it still merits a test around 3″ of water.
Another analysis would be to consider gas supply vs leakage, since there is not a lot of gas in this rebreather. Assuming a worst case leak rate of 2ml/min, for a 30 minute dive an additional 60ml of oxygen would be lost. As a person requires somewhere around 500ml-1000ml of oxygen per minute, this seems like a very small amount to loose- less than a minute of dive time.
Overall I am surprised and pleased with the leak rate, and with an automated setup, it should be easy to take a look at this whenever I want, or across different devices and iterations. Fortunately, it looks like I might not need to do much to reduce leak rate.
The counterlung is a pretty important part of a rebreather- for the design I am pursuing, it is doubly so- not only is it a single counterlung, providing both buoyancy and breathing gas, but it houses the scrubber canister. In addition to housing the scrubber, gas addition and gas dump are located on the counterlung.
Obviously, water should be kept out of the counterlung, and gas should be prevented from escaping the counterlung. There are some qualitative tests that can be done to tell if something is leaking- spraying it with soapy water to see bubbles, or holding the counterlung underwater can show if gas is coming out. Or, the counterlung could be filled with water and I could look for water leaking out. However, both of these tests require careful observation and it is not always easy to see where the leak is coming from- for examples bubbles or water can leak from one area, get trapped, and appear to come from somewhere else. Its also hard to quantify how bad a small leak is. For a rebreather, there should be no bubbles at all.
For a more sensitive and quantitative assessment of leakage, a pressure decay test can be used. This is easier than measuring extremely low gas flow rates. The concept and execution are simple- fill the counterlung up to a pressure, and observe it the pressure goes down. This gives you an idea of how leaky something is, and its used on everything from respirator masks to space craft parts. The leak decay is much better than pressing the bag by hand, since the test can be preformed at the operating pressure of the bag. Ideally, its never more than ~20″ of water, from roughly the mask of the user to the bottom of the counterlung. Not coincidentally, 16″ of water is 40 millibar, and is the EN-14143 specification for the cracking pressure of the overpressure valve.
Here is the pressure gauge I’m using. Its a transmitting gauge, which means at some point I’ll hook it up to some kind of data acquisition device to get some time series data, but for the moment I am just reading off the gauge face. It is also extremely sensitive- each division is .018 PSI or ~125 pascals.
To give an idea of the sensitivity of the gauge, I was pleased and surprised that it can indicate a change in pressure when the sealing bar on the bottom loads the walls of the bag (by lifting the bar with my hand, it takes the weight off the fabric structure). This is important because hopefully the leak is very small and very slow.
Issues with data collection
There are a few issues with collecting good data. One is that temperature plays a huge role in pressure, and so a room full of windows and a struggling AC (temperature fluctuation) and storms rolling in and out (air pressure fluctuation), its hard to measure a small pressure differential. I have actually seen the pressure go up, which is the opposite of what you would expect in a leak decay test.
To resolve this, I might do one of two things- either test during a calm night when the solar effects and weather effects are minimized, or add a temperature sensor and automatic data logging to try to correct for the temperature swings.
Another annoying detail is that my hose is a hair too small, and sometimes it starts to slip off the very delicate barbs (which occasionally snap). So I may need to characterize the leak of these barb connections to make sure I don’t accidentally characterize that leak as the leak of my system, if the leak is significantly large.
Two important things were done- first, qualitative submersion test to look for gross leaks. A few were identified around the sealing bar, which is by far the sketchiest seal. The leak always occurred right in the middle of the bar, where the seam from the bag was. Replacing the hand-tightened nuts with nyloc nuts and cranking down with a socket solved this issue.
I also ran a few leak decay tests, which turned up the aforementioned pressure problems. However, the pressure did hold for a few hours at only seemingly a loss of a few inches of water, which seems acceptable but I think further testing will be important to do.
I recently had an issue with tightening bulkhead connectors. Since one side is round, its hard to really crank down on the nut that seals the flange! Grabbing the tiny, round flange just does not provide enough torque, no matter what you do. I am using these on a new counterlung design, so my goal was to make some small tools for assembling or breaking down the rebreather, but they needed to be hand-operated. While I did consider drilling holes in the flange and making a pin spanner that would be annoying since that is a sealing surface and because I would need to modify off she shelf parts whenever I got them. So I decided to build a arbor to grip the ID of the part.
Typically an arbor is pretty simple- a wedge is screwed into a slitted block, and the block (in this case a cylinder) expands. This is pretty simple, and is a wonderful one piece construction. However, if you tried to print this it would be unlikely to work because of the huge stress concentrator at the root of the cut, and because you are creating a torque that is pulling right where the weak layer lines of the print would have to be!
Flexures are cool
My solution was to use single-extrusion-width flexures instead. A flexure is more or less a skinny piece of material that is bendy and stretchy…but on purpose. Because the material is thin, the maximum compressive and tension forces on the material stay small, even when the material is bent. Consider a piece of polycarb bent to make a face shield vs a sheet of bulletproof glass. If you bend one, it will spring back to being flat, while the other one will snap in half!
Another important note about flexures is that they can be very rigid in some directions, but flexible in others. That is how flexure motor couplings work- they are rigid in rotation, but flexible in other directions, as you can see. And since they (should) operate in the fully elastic region of the materials stress, they should also operate more or less forever, with no maintenance. This is highly desirable compared to multi-part assemblies.
However, flexures tend to be long compared to the amount of motion they can produce. A good rule of thumb is the length of the flexure (including total length of a zig zag) will be 10-20x the length you can expect it to move.
I had already done some experimentation with single-extrusion width flexures for a small parallel motion flexure, so I knew they worked. I had not tried to make a zig-zag of them, but I knew in theory the slicer would slice them and that they would be extremely flexible.
Here you can see the folds of the zig-zag flexure. To increase the amount of friction, I glued a piece of 1/32″ EPDM to the outside with superglue. Superglue seems to have ok bonding properties with superglue, as long as it is glued to something rigid. I could probably peel the EPDM off of the mandrel if I wanted, and in previous tests the EPDM has failed, not the superglue (CA glue). One thing to note is that some of the zig-zags are actually stuck together by stringing on the 3d printer- this is really annoying, and this design would benefit from better retraction settings, or more space between lines.
Here you can see how it works- two cones are pulled together, which acts on a conical surface in the arbor core. This pushes the wedges outward, and into the ID of the part. This is achieved with a heat-set M3 insert on one side, and a long m3 bolt that goes through the whole assembly. While it would be possible to have just one wedge, I thought that two would be better since it would prevent twisting the flexures and create an expanding cylinder shape instead of an expanding cone shape.
Another critical feature seen here are the fins on the cones that go into matching slots in the flexure. These prevent the nut from spinning freely, and it also allows transmission of torque from the handwheel to the arbor, once the wedges are locked in place rotationally.
Here it is in use. the large diameter of the bottom wedge is for gripping- it is about the same size as the grip for the nut, and by using these two the nut can be tightened about as tightly as I could want.
Notes for successful flexure printing:
-make the width of the flexure the same width as your nozzle/whatever width your printer thinks it is printing
-flexure bending axis will be paralell to z axis for this technique. I could imagine a way to make a flexure on the build plate but that’s different than this technique
-try to convince your slicer to prioritize outside “skin” layers, including the flexure.
-Explicitly tell the slicer not to put the z-seam on the flexure. While flexures are bendy, the z seam in theory/in practice is thinner and weaker, and putting it on a flexure is a good way to snap it. A few seams here and there are ok
-Attempt some kind of strain relief where the flexure goes into the part-put a biiiig radius on the flexure before that point. since we are relying on a single width of filament to bond to the rest of the shell here, adding a radius here probably wont help since even the smallest printable radius is much much stiffer than a single wall thickness.
What I would do differently/what went wrong
The flexure I made is pretty aggressive in terms of width between folds. I could probably go down to fewer folds since the wedges dont need to move very far. This would give me more clearance between lines, which would help with the stringing issue Or I could even go down to just two wedges, which would give me a lot of room for flexures and could even give me some extra surface area.
Additionally, the angle of the wedges is a little narrower than some previous prints. This makes them tend to get stuck, as less of the restoring force of the flexures is pushing them up and back out of the cone of the flexure. Its only about a difference of 8 degrees included angle, but it is significant. This makes it a little fiddly to get the flexure out of the hole once it has been set. this could be improved by reducing friction between the printed surfaces, but it seems simpler to make it work right off the printer. It would be distracting if you were servicing something using the tool.
I will also probably change to some kind of hand-operable and fully captured screw. as it is, it requires an additional screw (allen key) to actuate the clamp. While that is ok, it would be very convenient to have a clamp that did not require a small, easily corroded tool, and it would be nice if the screw couldn’t fall out.
At this point this rebreather has been dived “wet” four times and it seems like a good time to make some notes on how it preforms. It certainly seems adequate-to-usable as an underwater breathing device, and as of the latest dive, I have even achieved a semblance of neutral buoyancy.
This is not a definitive “How to dive an O2 rebreather” manual. This is how I dive my scary prototype rebreather, usually alone, and unsupervised. I have no formal training and you shouldn’t use this as a basis for any kind of diving. That said, here is what I do to dive this thing:
The first step is to assemble the unit, including packing the scrubber. The scrubber should be filled with an appropriate amount of sorb appropriate for the dive (or more). As previously discussed, its about 4″ per cylinder of oxygen, for this given scrubber. The sorb should be shaken to allow to settle, and then the screen and spinner (see drawings) should be screwed on tight. At the end of this step, the oxygen should very slowly and very carefully be turned on, but not injected into the system yet.
The second step is a 3 minute pre-breathe. The goal of the pre breathe is to ensure that all systems, such as the MAV and regulator, are operational, and to warm up the scrubber. After putting on a dive mask, suck all the air out of the couterlungs and exhale it through the nose into the atmosphere. I exhale completely through the nose to empty the lungs, then start to fill the counterlungs and inhale. This ensures that there is minimal nitrogen in the system. Having too much nitrogen could cause a loss of consciousness if the mix goes hypoxic (hilariously unlikely with an O2 rebreather). Excess nitrogen could also allow nitrogen loading (leading to the bends). At the end of the pre-breathe, have a buddy or use a mirror to check the canister for condensation and for warmth. Condensation and warmth indicate that the CO2 scrubbing reaction is proceeding in the absorbent.
The third step is a bubble check. Divers should descend to 2-3 feet under the water and check each other (or use a mirror) to check for bubbles coming out of the unit- there should not be any. Bubbles coming from the unit call for an immediate abort- its not a rebreather anymore, its open circuit!
If the bubble check is negative for bubbles, the dive can proceed for up to 10 minutes (or other gas/scrubber limits). It is recommended to terminate the dive after 10 minutes since there is no convenient way to see how much gas is left (no SPG). This does not take into account chronic oxygen exposure toxicity of O2 at depth, but it is difficult to run up the O2 clock in only 10 minutes.
Once back on the surface, the DSV should be switched to the surface position and the diver can come off the loop.
Buoyancy has been a challenge with this unit, but only because I am improperly weighted, since I only have one 10lb weight. The unit itself is about neutral to negatively buoyant in fresh water, and I am about neutral to negative in seawater (even with a partially inflated lungs). This leaves the wetsuit and a few liters of air to be balanced out by the weights- way less than 10lbs.
On open circuit, this additional weight can be balanced with a sac of air that the diver can fill and empty (a buoyancy control device). The remaining net small amount of positive or negative buoyancy is trimmed out by modulating breathing. Deep breaths and spending more time with more lung volume increases buoyancy, and the opposite decreases it.
With a rebreather, this is completely useless, since breathing out simply moves the gas to the counterlungs, which are still attached to the body. So the whole loop volume is what needs to be trimmed against the rest of net buoyancy of the diver, which, in this case, is very negative with 10lbs of weight.
However, it is still less than the volume of the counterlungs, so it is possible (as seen above) to achieve neutral buoyancy!
Trim has not been a big issue so far. Folding up my legs moves my center of mass close to the center of buoyancy, so I don’t have much trouble staying horizontal in a nice streamlined position. This might need more investigation, since I have not dived it in particularly calm water yet, and most of my time has been spent swimming, which helps keep a good trim.
Attitude and Work of Breathing
Work of breathing (WOB) is a big figure of merit for rebreather design. Work of breathing depends on counterlung (CL) position, and for any given rebreather the CL position changes as the diver moves around. In particular, pitching and rolling change the pressure of the lungs vs the counterlungs. I don’t have a way of measuring WOB, but it has been breathable through 90 degree rolls to either side, and about 30 degrees of pitching up. Pitching down tends to result in incurable mask squeeze, since the nose essentially makes the mask the lowest connected air volume. It is much more comfortable to avoid that, unless you really want to look at something in a deep hole. On another note (often echoed by rebreather divers), I have not had any issues with dry mouth or feeling “thirsty” during my dives, since the air is quite warm and humid when breathed- even in the chilly waters of the northeast.
A couple easy, but substantial improvements could be made to the harness. It is very inconvenient to put on, involving an intricate dance of bending over and weaving the harness behind your back, while balancing the unit on your shoulders. Bolting it to a backplate or having seprate waist and hip connections (maybe even a chest strap) would make it much easier to don, and easier to tighten to prevent it from floating around underwater.
Additionally, it would be helpful to be able to clip off the MAV so that it lives somewhere on the users chest, enabling either hand to find and use it.
On the bright side, the hoses are fairly non-intrusive when diving, even though they are somewhat long, and even thought the unit is wide, it does not impede any movements to the front of the body, which is where the arms usually are while diving.
Cleaning and Storage
The unit is pretty small, and since most parts are plastic andhave no moving parts, it doesn’t require a huge production for cleaning. Everything just goes into the storage bin, gets rinsed, and then is set in the storage bin to dry. The two exceptions are the MAV and the Oxygen valve- the MAV gets soaked, and the oxygen valve gets soaked, while worked open and closed. These soaks happen with hoses installed, since I want to prevent the inside surfaces from getting salt/salt crystals inside of them.
This thing is pretty darn fun, and not as sketchy as I imagined it would be. It really does let you get a lot closer to fish and animals. I’d love to take it somewhere shallow and calm and clear, like blue heron bridge or crash boat beach, or a nice warm lake somewhere.
There is something romantic about making a machine that to allow you to travel past the limits of terrestrial physiology. From the early sci-fi of Jules Verne to the Apollo missions, life support systems have been an icon of adventure for hundreds of years. Here I will document my own prototype oxygen rebreather, as well as some figures for those seeking to make their own dive equipment, including detailed drawings of the prototype rebreather I made.
Theory Of Operation
Click through slideshow for annotations
The type of rebreather I built is the oldest and simplest type- an oxygen rebreather. As its name implies, the gas that is breathed and added is 100% oxygen. If a human breathes in a breath of 100% oxygen, they will breathe out a mixture of CO2 and oxygen. If the toxic CO2 is removed, you can re-breathe the remaining gas- hence the name.
In a rebreather, CO2 is removed by a chemical scrubber, which is the white stuff in the horizontal tube in the above photo. In order for the CO2 to be removed, it needs to be pushed through this tube of scrubber. In a rebreather, the lungs of the diver are used to move gas by breathing. Obviously, a diver would not be able of compressing all the gas in their lungs into a rigid container, so there are soft counterlungs in the gas path. The gas moves back and forth from the lungs of the user and the counterlungs, through the scrubber. The simplest oxygen rebreathers do not even move gas in a loop- they are of a type called a “pendulum rebreather”, where the bulk of the gas is in the counterlung or in the lungs of the user. This rebreather is slightly more sophisticated- the gas moves in a loop instead.
This is achieved by a one-way valve in the mouthpeice. It only allows exhalation to one side of the scrubber, and inhalation from the opposite side of the scrubber. In a pendulum rebreather, it is easy to have dead volume on the ends of the pendulum- short breaths can create a buildup of CO2 which is bad. This is less likely to happen with a loop.
Of course, with oxygen is consumed by the body, and CO2 is absorbed by the scrubber chemicals, so over time the volume of gas in the loop decreases until the diver can no longer breathe. The silver item with two hoses coming out of it is the manual add valve (MAV). This allows injection of oxygen into the system.
Experienced divers (or even beginner divers, or anyone familiar with boyles law) will realize that on ascent, gas expands and that there needs to be some kind of gas dump. In order to minimize leakage potential, the gas dump for this unit is the users nose, which vents from the lungs to the water.
The driving philosophy behind this rebreather was to make something that was simple, but not too simple. For example, instead of using zip ties, clear PVC tubing and hose barbs, I went to the trouble of machining fittings for proper scuba hoses- in my opinion these are a lot safer, even though they are more expensive and require more complicated machining. On the other hand, there is no overpressure dump valve, because I did not want to botch something that could accidentally allow water into the system, which would be unpleasant.
Engineering and Physiological Constraints
The kernel of this rebreather design and sizing is the duration that it can be used to support life. In this case, the limiting reagent is oxygen. If you use more oxygen, you will be up and out of the water faster. The amount of oxygen also determines the amount of scrubber which is appropriate. For this prototype, I am using disposable welding gas cylinders. They are quite low pressure, roughly 450PSI*. This is calculated from knowing that there are roughly 30L in the cylinder, and the volume of the cylinder is about 1L. Therefore it should be 30*15 PSI. This corroborates the information found here.
*N.B. feeding this directly into scuba inflator hoses violates the hoses 300 PSI rating- a regulator would help with that. However, the volume of gas is so small that after only a small amount of O2 is dispensed, we are back under the pressure rating. I can’t say anything here aside from that I turn the O2 on very slowly, and that these hoses will probably have a very low cycles.
An M4 medical cylinder of about the same size filled to 2200 PSI might carry 113L of gas, and a scuba AL6 cylinder would carry ~160L gas. These are all very similarly sized cylinders, but the higher pressure allows for a HUGE improvement in capacity.
One question to ask is “how long will 30L of O2 allow someone to live?”. The answer (as always) is that it depends. The rule of thumb for O2 consumption that I used (pulled from here) is 3.5mL/(kg*min) at one MET where the weight is you body mass. That means as a 90 kilo person I consume about 19 L of oxygen per hour at one MET. One MET (metabolic equivalent) is if I am sitting in a chair- a walk might be 3 MET and something like running could be higher- therefore, the duration that the oxygen will last is heavily dependent on body size and personal physiology. However for a very relaxed dive, it seems like 30L could last 15 minutes or so (testing on the couch seems to confirm this rough estimate). Unlike OC scuba, there is no volumetric penalty for breathing at depth, since the gas is recycled- although more gas is required to fill the lungs to the minimum volume at depth.
The next question to ask is “How big should the scrubber be?”. One of these disposable oxygen cylinders contains about 32.5 L of oxygen, which is 44 grams. Using some math (and chemistry) we can see that 44 grams of O2 means that there are 60.5g of CO2 produced. I used this paper to derive what the ratio mass:mass of sofnolime to CO2 should be. The paper gives the time until complete scrubber breakthrough, where ppCO2 is about .1 Atm, which suggests a 3.3:1 ratio of sofnolime to CO2. I backed off of that to where the curve started to really take off around .05 Atm, and calculated using a 3.7:1 mass:mass ratio. In my calculations I also added a factor of safety of 2 to account for any variations in scrubber quality or condition. This gives me a scrubber length (for the designed diameter) of about 4″, but embarrassingly I decided to make the canister much longer to match it with the width of the O2 bottle+regulator I had, assuming they would also be mounted horizontally. On the bright side, I could pack the scrubber once, do a dive, swap tanks, and then get in another dive. You can see my math here.
On this iteration, I decided that the end caps of the design would route the hoses out horizontally. Ultimately, this made the unit very wide, and I think it would have been wiser to have the hoses routed straight up. However, this did allow for more configurations- front mount or back mount with a larger bend radius, and therefore less force on the divers jaw.
The next few sections describe details of various components of the rebreather.
A dive surface valve (DSV), allows the loop to be closed off by closing the opening to the mouthpeice when at the surface. This is useful for when you are between dives and do not want to let ambient air into the system. The DSV I chose is labeled NOT FOR REBREATHER USE- it is the Argonaut kraken DSV. It’s definitely another part that one could make, but the complicated shape makes it more appropriate to buy since it will be easier to maintain/replace.
The previous design I worked on had a huge counterlung problem: the lung tended to form a bubble at the top, far away from the hole which led back into the loop. This caused the fabric of the lung to close up against the inlet, like a flapper valve. Gas would get trapped in an un-breathable portion of the lung, which led to excess buoyancy and to gas getting trapped outside of the loop- this is bad for breathing, and scary for the diver.
For this next design, I opted for two counterlungs- one on either side, which should make it easier to breathe at any diver attitude. I used hydrapak 4L “seeker” bags. As best as I can tell, these are RF welded urethane, and they are tough and O2 compatible (or at least they are not contraindicated).
The new design better accommodates changes in diver attitude. Rolling to one side should cause at least some gas to be forced into the other lung. Pitching up and down should be accommodated by the piccolo tubes fitted to the lungs. The volume of the lungs was determined by breathing into empty 4L hydrapak seeker bags. The metric here is vital capacity- the most you can breathe out after the deepest breath (about 6L for me). My tidal volume is much much lower than that, and that is the minimum the bags need to be inflated to. However, excess capacity is not bad, in that it can help prevent immediate lung overinflation on ascent.
These 4L bags were fitted to pipe unions, allowing them to be removed and rinsed. The sheet metal casing of the unit forms a boundary for the lungs as well, preventing them from floating up and torquing the scrubber, or pinching themselves off. Two colors were used to indicate inhale and exhale, as one piccolo tube is longer than the other for hose routing reasons.
The last system was the MAV. Originally it was to have a CMF orifice as well, but that was not installed due to concerns about pre-dive leaks/overfilling of the lungs prior to the dive. The MAV is one of the more fraught parts of the system in terms of cost and rework, and thought. Originally I was planning on machining the whole valve myself, but that is annoying- parts corrode quickly in seawater, and I don’t want to have to re-do hours of lathe work every time it leaks. I want to build a rebreather, not a valve.
After some research, I found Duncan Price’s website which turned me on to clippard cartridge valves. These things are awesome! Drill a hole, drop it in, and you are good to go, aside from the rest of the plumbing.
Ultimately, that plumbing consists of two BC hoses with the 3/8″ end screwed into the MAV, and a single -4 SAE port plug to plug up the end where the valve goes in. Because the hoses are very different lengths, I opted to make both connections on the MAV side the same, because there’s little danger of assembling the unit with the wrong length of hoses.
The hoses place the MAV mid chest for ambidextrous use, which is very important, since the MAV provides life-giving oxygen.
Mistakes Were Made
I think it is important to address a few safety errors in the design of the unit. The two major lapses in the design are the use of aluminum in the MAV and scuba hoses which are not rated for an appropriately high pressure.
The hose issue is obvious in retrospect, and could easily be resolved with a regulator by finding a higher pressure rated hose and actually, I have no idea what the output pressure of the regulator I have is- I dont have an gauge that can read it- I have assumed it was tank pressure, but it may be reduced. The real trouble is with material compatibility and high pressure oxygen.
I recently got a copy of Vance Harlows Oxygen Hackers Companion (highly recommended- worth the money and you won’t find a pdf). It explains in great detail that material compatibility with high pressure oxygen is critical for preventing rapid unplanned and uncontrolled oxidization (oxygen fires). While unlikely, a sparking metal shaving, accelerated by the high pressure oxygen from the cylinder, could spark and cause the MAV to catch fire. Brass would be a much better material than 6061 (NB- 6061 does contain a small amount of iron and could possibly create sparks) brass is considered to be “non-sparking”.
On the bright side, the lack of ferrous metal shavings and oils by careful cleaning seems to have prevented any kind of unpleasant exothermic reaction. The only removable threaded connection is that of the oxygen cylinder to the brass regulator. The regulator is very soft and is unlikely to create steel slivers from the steel oxygen bottle. The other two connections are scuba BC inflator hose QDs which do not have tight metal-to-metal fits.
Here are the drawings of the entire unit, including part numbers for off the shelf parts. N.B. that all the mistakes under the “Mistakes were made” heading are documented here- not corrected. Keep that in mind when you look at them.
CEDU diver website, by Robert R. lannello. Down to earth and tongue-in-cheek (or perhaps very serious?), this website has a huge amount of information for and shows what you can do with a garage and a little knowledge.
Right up there with Dr. Bob is Alex Pierce. His youtube series covers many many dive subjects, including a DIY O2 rebreather that he and his friends built!
The rebreathersite is of course, about rebreathers. It is probably the greatest resource for research, complete with detailed photos of commercial and DIY units, including non-diving rebreathers. It also has information on the theory and operation of rebreathers.
DIY rebreathers has a lot of information, but is mostly a good collection of links to random information.
Rubicon foundation (possibly down) hosts some amazing images/text from the development of early rebreathers, including early lambertsen reabreathers (LARU).
The airspeed press has great books on technical subjects for divers, especially divers playing around with voodoo gasses. I have read the oxygen hackers companion and I am excited to dig into the rest of the books published there soon!
Richard Kinch’s website, which is mostly not about scuba, but provides some good tips on how to make a dash 3 SAE ORB fitting without a reamer.
Written by Hans Haas, an influential oxygen rebreather diver, is an honest-to-goodness book. “MANTA: Under the Red Sea with Spear and Camera” is an interesting look back at history, and a lens into early diving. Some parts of the book have not aged well, but the photos and the sense of adventure it conveys are worth a read.
These websites also are chock-full of useful info and are staffed by smart people. The difference compared to the above is that they will also sell you stuff! Good stuff!
Mcmaster-carr.com (need I say more?) Screws, aluminum extrusion, aluminum sheet…almost anything you could need.
After coming back from two weeks of traveling with my normal sized soprano uke, I decided it would be neat to build a smaller, quieter, and more robust travel uke before I headed to red river gorge to go climbing for a week. The goal was to go from a sketch in my notebook to a finished instrument in five days. Since I have limited woodworking experience, no experience with building instruments, and barely any experience playing instruments, I knew it would be a challenge.
This is a pretty text-dense post, but it should give you an idea of what I did. With only a few days to finish this, there was no time for taking nice photos!
Day 1: Research prior art, initial design, order long lead time items
With only five days, there was no time to reinvent the ukulele, or even the format of a travel uke. After looking at a lot of different designs I settled on a travel uke design by circuits and strings. It avoided a lot of things I did not have time or experience to deal with, like building an actual body for the uke. It was also suitably small and seemed to be quiet, which would be great for playing without disturbing anyone.
However, aside from the shape, I decided I would need to redesign the instrument. This was a pragmatic decision, since the tools and experience I have are very different than what the original designer has.
The major parts that I needed to fabricate or buy were:
Some of these (strings, tuners, frets) were only available from online specialty stores or amazon. Acquiring and fitting these parts was critical to the project, and if there was going to be any second chances on component selection, I needed to order them as early as possible- so I did.
After looking at many tuners, I decided that friction pegs were out, and geared tuners would be awkward to accommodate on the inside of the body, so I went with banjo tuners, because they use a planetary gear system. Unfortunately, they are heavy, and it is difficult to adapt lower profile knobs on them, so next time I would go with a typical gear tuner- even one that requires a tool.
I decided I wanted to make most of the other parts out of brass, which I imagined would look good on the maple body. In retrospect, walnut might have given it more contrast. These parts required some modeling and sizing to get right, so I waited to order them. Due to coming from mcmaster carr, they would arrive in one day instead of two.
Day 2: Wood removal begins
On this day, I bought a large piece of maple (5″x .75″x 60″), chosen carefully to have a straight grain, and to be a quarter-sawn piece to avoid cupping/warping issues. Instead of printing a paper template, I laser engraved the template onto the wood, which gave me very accurate hole dimensions and fret locations. This made it very easy to drill out the holes for the strings, and to circular-saw out the “caps” of the slot on the bottom. After that I started removing the waste from inside the slot.
Day 3: Wood removal continues, frets go in!
After finishing the slot, I roughed out the outline of the body, and cut down the thickness of the neck down to about 3/8″. After a lot of rasping, the neck started to round out and become comfortable to hold. After the neck started to look good, I sawed the slots for the frets very carefully on the lines I had cut, and installed the frets. This was harder than it looked! I definitely should have practiced the cuts more, and tested a little more to make sure I had the right width of kerf on my saw!
Day 4: So much machining!
On this day I machined the bridge, turnaround, and the pin that holds the turnaround. The bridge was CNC milled, and the pin and turnaround were turned manually. I also CNC machined special heads for the tuners, but these ended up being impossible to install. This is something that I could not have know was going to happen until I got my hands on the tuners, which did not arrive until the previous night.
With pretty much everything on hand, I decided it was time to install the tuners and cut the slot for the bridge. I also sanded the body down and gave it its first coat of tru oil. The obvious thing for this is to sand and finish the body before installing hardware, but it was too late for that because the frets were in,
Day 5: Details and Assembly!
This was the last day to work on this before getting into a car for 16 hours and going rock climbing for the week, so I had a pretty hard stop. This is when I dealt with details, like cutting the holes for and installing fret markers (sections of turned down 1/8″ brass), as well as installing the bridge and tuners.
Things that did work:
The ukulele makes the right sounds when you fret it, and it is pretty compact and tough. The zero fret works surprisingly well. It is also very quiet compared to a normal uke, but audible. And loud if you use an amp!
Things that did not work:
The low profile brass tuning knobs I made did not work- they were impossible to install because they require a profile to be cut in them that is hard to mill (but easy to broach), and because my design for them did not allow any downward force on the shaft- this is bad because the tuners require friction to prevent them from turning backwards, because it is only a 4:1 reduction.
I also went with an aluminum saddle instead of a polystyrene tube saddle. The polystyrene deformed under even moderate string tension, which seemed to make it hard to tune.
Things I would change:
Instead of brass I would use aluminum for most of the parts, or significantly reduce the size of the brass parts. Brass is heavy!
I would also get rid of the banjo tuners and go with open geared tuners. They are lighter and easier to use, and probably easier to clean if grit gets into them.
The holes for the strings could use some modification. A relief for the knot to go into on the backside would be nice, and the holes themselves need a little reinforcement- the strings cut into the wood a little.
There are two big electronic questions to answer about the activite:
Why does the double tap not work well?
What are all the parts on the board?
I have decided to document my answers to these questions in a narrative form because I think it is interesting to hear how people solve problems.
It is pretty obvious that the double tapping is going to be sensed by the accelerometer, the ADXL362. Unlike the popular STM accelerometers, the ADXL362 does not have built in double tap detection, although it does have a acceleration-based interrupt that can wake it from sleep. In order to see how the accelerometer was configured, I stuck a logic analyzer on the SPI lines of the device and took several logs of the device in various states, especially power-on and while being tapped.
I used a saleae logic 8 and the logic software to capture the logs and exported them to text files to be parsed by python, which was necessary since each log was several hundred entries long. This made it easy to distinguish between things that are important that change across logs from things that are not important, like slightly different acceleration readings.
The gist of what the device does on startup is:
turn on the device and read some ID registers
Read the registers again, set some thresholds*
Set up FIFO and FIFO watermark
Read status until FIFO watermark overflow
The asterisk-ed items are the most interesting, since these are he registers that carry over to the actual operation of the device, and to detecting taps. Since they get reconfigured several times, we need to look at the register states at the very end of all the configuration. It is odd to me to see that the ID registers are poked so much and that the device is reset and read again-it makes it seems like they are using some boilerplate library to set this up.
The relevant registers that have been touched are:
THRESH_ACT_L 0XC7: sets the activity threshold to 199, which is about 1/4 g when FILTERCTL is set to 0x41
FIFO_CONTROL 0X0A: puts the device in stream mode, set MSB in FIFO buffer watermark, and turns off temperature measurement
INTMAP1 0X24: interrupt on pin 1 on either hitting the inactivity threshold or the fifo watermark
INTMAP2 0X10: interrupt pin 2 on hitting the activity threshold
FILTERCTL TO 0X41: +/-4 g range, at 25 hz, half bandwidth off
POWER_CTL 0X02: put into measurement mode
So there you have it- the device is just waiting for a signal of more than a quarter g, and then it will signal the host processor that an activity occurred. But lets dive in a little deeper on the double tapping to see how it is detected.
In practice, we can investigate this behavior with the logic analyzer by sniffing the SPI lines as well as the output pin to the minute hand that moves when you double tap. Circled in blue is the minute hand moving, and in red is the SPI transaction that detected the double tap. The block of transactions in the middle is very similar to the power on interactions mentioned above. I saw this pattern in several instances about 5 seconds before the minute hand ticks.
zooming in on the red part shows us that there is a long time where the chip is selected, but not being read. Lets take a look at the accelerometer data from that read.
The pink line is the total acceleration, and the horizontal line is the activity threshold, which the tap threshold is probably greater than. The blue line is the “break” in reads. Since the total number of reads is the whole FIFO, it seems like the window for tapping is at most about 6.8 seconds (512 records % 3 * (1/25Hz)). Likely the window is smaller than that- assuming the break happens right when the second tap is detected, we can see that the window from the last tap to the previous one is about 25 records, or about 1 second.
This is backed up by a second reading, in which the second tap was detected after about 25 readings. This very strict timing and a relatively high acceleration threshold is probably why it is so hard to get the double tapping to work. One thing that could make it easier on users is having a larger or more permissive window, but to only sense tapping one direction- it would reduce the cost of having to sift through 1/3 of the data, and it would probably be less prone to noise. Or you could just do what I did and bang on the face of the watch all day.
What is on the board?
The board is shockingly bare. In the upper left hand corner, there is the NRF51288, and its accompanying crystals (silver). Right below it is an almost invisible ST micro Balun. Just south of the crystals at 9 o’clock is some kind of mystery part with an inductor, or possibly an antenna. South of that looks to be a reverse polarity protection diode. At 6 o’clock is the motor, and at 5 o’clock is the motor driver, marked “1X W48” At 1 o’clock is the ADXL 362 accelerometer, mounted right next to where the chassis PCB is screwed to the case. Just CCW of that looks like some antenna balancing circuitry, but it is hard to be sure.
The really interesting thing is what is not on the board. Very frequently with this kind of product, you will have some kind of voltage converter and a memory chip. And for the relatively higher-current steppers, I would expect to see some kind of h bridge or FETs.
For the pop, it seems like a voltage regulator (or converter) is not needed since there are so few components, and the two heavy hitters on battery usage- the NRF and the ADXL, need to be on in low power sleep or collecting data all the time. Since they sleep so much it is possible that the quiescent current to keep the converter running would overcome the savings in power from running at a lower voltage.
As for memory, this is the AA variant of the chip which has the expansive 256 kB flash (twice the AB variant), but only 16 kB RAM (Half the AC variant). I imagine most of the records are then processed in some way and stored on the chip. This saves on parts, and power on a second chip, but apparently limits the tracking 38 hours between syncs.
The motors that drive the hands (the movements) are probably driven from the 5mA high-current outputs on the NRF. There can be up to 3 at any given time, meaning that a the NRF can dump a shocking 15mA out at a time, at the battery voltage. This is consistent with reports form users that at the end of the battery life, the hands stop working, even though the watch knows what time it is. At the end of the battery’s life, the voltage will drop, and less power will be delivered to the motor- some of these motor movements will fail, and the clock face will be wrong. Above you can see the current output (green line) from driving the motor- the peaks are around 15 mA above the “floor”.
On the other hand, the motor is too large for the NRF to handle, so some kind of FET arrangement is used to drive it. It takes 60 mA (peak) from the battery! That is why setting a lot of alarms is taxing on the device.
This is a pretty simple electronics-wise for such a sophisticated device, which speaks volumes about the team that designed and built it- it is pared down to the absolute minimum complexity, with only the barest of sensor packages. Yet I feel the device does deliver on what it promises to do.
The best looking wearable I have seen, and this is the cheap version
Shockingly, nobody has taken the time to do a detailed teardown of the engineering marvel that is the Withings Activite. I snagged the “pop” version for $40 bucks on ebay and wore it for a few days before tearing it down. I noticed a couple of things in that time:
it’s not good at measuring bouldering as activity
the double tap function almost does not work
the alarm seems like it works pretty well
you cant read it in the dark, which makes it pretty useless as a watch
Now for the teardown- this will be the first of several posts. This just details actually taking the thing apart. The next two will look at the interesting electrical and mechanical aspects.
Step one is to pry off the back with a screwdriver using the small divot under the button. This is the official way to replace the battery, although withings recommends taking it to a professional screwdriver user to do this. NB if you are not going to destroy your watch, it is probably a good idea to do this with a soft, wide, rounded tool, not a random screwdriver. This will avoid marring the case. In the rear case there is a tiny spring plunger, a piece of foam to back up the battery, and an o ring.
Here you can see the back, the battery, and the watch. Note the holes on the left bottom of the watch. These cover a programming/debug header.
Once the screws are removed, the vibration motor needs to be carefully pried off of the plastic, since it is still attached to the PCB with wires.
At last, the PCB is unmasked. Here you can see the vibration motor (6 o’clock), dome switch (12 o’clock, yellow), debug/programming header (6 o’clock to 9 o’clock), and battery clips. Also sprinkled throughout (and important) are a number of screw heads (silver) and test points (yellow).
With the smallest screws in the world removed, we can now separate the PCB from the movement of the watch. The V-twin in the middle is from the minute and hour hand, while the single-cylinder looking thing drives the activity meter. We can also see the front of the PCB for the first time. Interestingly, the movements are attached electrically to the thin PCB with ENIG plated pads being screwed directly to metal standoffs in the movements. Behind the movements is a piece of plastic, which serves to help orient the components and seat the vibe motor.
Here is the PCB. Major components include:
-NRF51288 Bluetooth SOC, of course. This is the WLCSP BGA version, which makes sense because much of the board is covered by the movements. (11 o’clock, rectangle)
–ADXL362 accelerometer by analog devices. A super low power accelerometer. It will be interesting to think about why they went with that over something cheaper from ST micro. (1:30, square)
-Probably an h-bridge or motor driver (4 o’clock, square)
The rest of the paraphernalia is the usual flotilla of antennas and crystals. Interestingly, there is a non-pop 8 pin device, 3 pin device, and 2 pin device. I will have to think about what those might be.
The next step of course is to remove the crystal/glass (in this case, lime glass). This is so I can take off the hands, which will let me take a closer look at the movements by detaching them from the face of the clock. I was not sure how everything was held in, but I suspected glue, since a press fit would be a bit risky (and possibly not very water tight). After evenly heating to about 275 C to soften any glue, I was able to press everything out of the front of the watch with my fingers.
At this point, the hands were still pressed onto the shafts of the movments. Like most dials, these can be removed with a careful application of tweezers as pullers near the shaft that they are pressed onto.
Here the hands are removed, the double shaft/collar of the hour/minute hand is exposed. The hour hand rides on the outer hollow shaft, and the minute hand goes on the inside. The activity hand is much smaller and brass, while the two other hands appear to be aluminum.
With the hands removed, the movements are no longer constrained to the face of the watch. Here is the top of the activity movement, showing the output shaft. Those four silver things are actually tiny machine screws.
Here is the bottom of the movement. The four gold colored metal bits are threaded metal standoffs. Tiny truss head screws pull the traces on the movement into intimate contact with exposed traces on the PCB. On the reverse side of the copper-coated laminate, the two electromagnets are soldered to copper on the other side, connecting them to the PCB.
A shot from the side showing the internal gearing of the drive. The complicated stackup of fiberglass, metal, plastic and tiny gears can clearly be seen.
With the screws removed, I managed a closeup shot of the magnet that drives the mechanism.
To determine how it worked, I screwed the movement back onto the PCB and connected to the app to “set the time” which works by positioning all the hands to reference positions. This let me rotate the hand arbitrarily. By putting a very tiny dot of prussian blue on the magnet, I was able to see that it was in the same spot every other tick- in other words, the magnet rotates 180 degrees per tick.
Most fitness trackers are a variant of a PCB in a box with some kind of typical (LCD, OLED, LED) interface. Even the iconic nike fuelband is just a cool rendition of LEDS inside of a piece of plastic. The activite is a well-crafted and very complicated departure from what I normally expect from an activity tracker. It feels a lot more sophisticated and it blends into everyday clothing compared to a colored piece of plastic with a glowing display. Since it has a primary battery, it does not even intrude in my daily thing-charging rituals. I think I understand why people would choose this over a fitbit or garmin vivo-thing.
After chilling out in my parts box for a few years, I decided to drag out my old panasonic GRID EYE thermopile array, because lets face it, we all want thermal vision. I felt like last time I worked with it, I did not do the sensor justice.
So I whipped up a quick model for an enclosure. I was not sure how I wanted it to look, but I settled with something like a pana-view stero viewer. The device really does not need to be any bigger.
After printing out the enclosure and writing some code, it is working! But I ended up using the lens and the enclosure shape for the gopro viewfinder instead. I guess I will have to do something else with this sensor.