Testing the oxygen sensor will need to be done over a wide range of temperatures and PPO2s, and the cheapest, easiest, safest way of doing this seems to be to not use pure O2 gas. Not only is O2 a somewhat “spicy” gas, but I don’t have a huge tank of it sitting around in my house.
Instead, I intend to increase the PPO2 by increasing the pressure of the air- this will also prove out that the sensor works “at depth”. While that might seem magical, its pretty easy to imagine- as gas density increases at higher pressures, there are just more oxygens per volume bouncing around. The odds that one of these O2s bounces off the sensor go up as the pressure increases, and it is linear with depth.
The Science Junior
With this in mind, I set about what I am calling the Science Junior, since it looks like a generic science widget from KSP. Basically its just a small pressure chamber with a window and some NPT ports, which can be used for various purposes:
Pressure port via schrader valve from bike pump
Sensor wire pass thru
Gas infeed (?)
For those interested in the construction, the O ring is a just superglued out of cord stock and the sensor wires are run through a 1/8-27 NPT hose barb and epoxied in place.
Designed for a maximum pressure of 150 PSI, the 1/2″ thick polycarb cover and 8x M3 bolts should be more than enough to keep things together. There is about 1lbf per PSI so at 150 lbf I didn’t bother with the math.
One thing I would do differently is to use something removable for the sensor wire infeed, probably something that would get dropped in through the front and get captured by a lip on the inside, as shown in the sketch.
Testing and Learning
For testing, I set the bias voltage and logged the pressure (using a pressure to voltage transducer) and current of the sensor simultaneously while varying the pressure, which controls the PPO2. When the pressure is plotted against the current, it should be roughly linear. The chart above shows the sensor working reasonably well- however there is an odd drop of in current after being pressurized which manifests as a non-linearity in the chart above.
If we turn the scatter plot into a line plot to represent it as a time series, it looks a lot like a typical plot of hysteresis, but that seems like a red herring.
Looking at the normalized time series of the test, we can see that the sensor seems initially very linear, but then the current drops off after being exposed to pressure.
Here is some data from another test- the same strange trend occurs.
Looking at several sets of data we can see some that are complete garbage (blue data, yellow data, orange data) while some seem highly linear (green, red). Not exactly a good look for a mission-critical sensor that is helping you make life support decisions. Imagine trying to drive the speed limit if your speedo didn’t work!
I strongly suspect that pressure is playing a role here. First, sometimes gas is trapped under the sensor membrane, which causes the sensor to always read high, and to actually drop in current as pressure is applied. This seems to happen as the gas contracts and the membrane basically vaccum seals to the cathode. While oxygen is now coming into contact with the cathode, there is no opportunity for it to interact with the electrolyte, and this causes the current to drop.
Another factor is that in order to get the membrane closer to the cathode, I have had to burp out some electrolyte manually. This probably causes a slight negative pressure on the sensor as the membrane tries to regain its shape- I suspect that this can pull in gas and cause the gas blocking problem.
To solve this, I tried reducing the gap between the top lip of the sensor and the cathode, and making the sensors up “underwater” in electrolyte. This did seem to help with bubble elimination, but I still had a maddening and slow loss of current over time- uA over minutes or hours. these sensors show that good linearity can be achieved, but this drift is unacceptable for rebreather applications.
Additionally, I suspect that the sensor may not be fully watertight. That’s no good, since there needs to be electrolyte in there or it wont work! Some of the slow DC drift that I see could be due to this, or to evaporation through the teflon tape. The volume is <<1ml so even a small amount of evaporation could have an effect. I may try to remedy this or I may try to make a galvanic sensor…it turns out all I need is a little zinc or lead.
I originally started by writing this post, but then decided to write a little more about the theory of polarigraphic O2 sensors first. This will skip most of the theory and just talk about how I built the thing.
Aside from a few small wires and a small knob of delrin, this is what is needed for an oxygen sensor. A teeny chunk of platinum, a silver tube and Potassium Hydroxide (sold for making soap).
Based on some unscientific googling, I made up a ~4M solution of KOH because it seems to be a relatively common concentration. The electrolung used a .5 N (normal) solution and other papers quote 1 N solutions. For KOH, normality is the same a molarity, so I will need a much less concentrated solution in the future.
The three big takeaways here are that:
1) KOH seems to be kinda nasty stuff, and it should stay far away from your skin.
2) KOH is hygroscopic (picks up water), so it should probably be baked at 100C to remove water before weighing. I didn’t do this so who knows what molarity my solution really is- its “4M or below”
3) Mixing KOH into water is exothermic and also takes a while to fully dissolve. If you don’t know what you are doing, it seems best to let the angry little salts do their own thing.
After writing this and doing some testing, I found that KCl was also a fine electrolyte. 1-3M solutions can be purchased for a reasonable sum on amazon as dissolved oxygen (DO) cell storage solution. It would also be quite easy to make a solution of KCl, but I didn’t want to deal with dehydrating the salts.
KCl is my preferred electrolyte since it is more like salty water than draino. It feels a lot safer to be pipetting salty water at my desk vs super draino, and were I to re-do this I would skip the KOH for this sensor.
The 6mm diameter platinum electrodes were cut from a small sheet of 95% Pt 5% Rh from Rio Grande. Pt is surprisingly dense, and actually very annoying to machine for many reasons- it is tough, and compared to other materials, expensive. So to get as many parts as possible, I went with a “boring” operation using a .5mm 4fl carbide endmill with ~.00025″ chip thickness and .0015″ feed per revolution. I think that sawing electrodes out with a jewelers saw is probably a little easier, since my fixturing method (2 side blue tape + superglue) did not hold up to machining for one of the electrodes. Fortunately, I recovered that electrode with some filing (which worked very well). The short version of this is that there is absolutely no reason to CNC machine this stuff.
The silver anodes (999 Ag tube) were machined on a lathe. Aside from the fancy oring gooves, there’s no reason this could not be done with a hacksaw (gently, so as to not mess up the tube). Originally I wanted to use a rubber boot instead of orings, but that would have taken longer with what I had on hand. The electrodes are 6mm long with an OD of .375″ and an ID of .335″.
The body of the sensor was made of delrin. As you can see in the cross section above, there are some grooves here and there for things like wiring the Pt electrode as well as a pocket for the electrode. There is even a hole for wiring the silver electrode, which is not necessary (but it is nice).
Since the o-rings were a last minute addition to avoid finding and drilling a hole in rubber, I also made a delrin sleeve to fit over the orings and hold on the membrane.
First a wire was soldered onto the Pt disc. This was done with normal SnPb electronics solder. This wire was run through the sensor body, and a dab of silicone was used to seal it to the body housing. NB these electrodes are pricey and a pain to make, but are also extremely reusable. Using silicone makes them more recoverable. For a “real” sensor, there is also room in the wiring hole to fit a thermocouple for temperature compensation.
Next, the silver electrode was added, and a wire was soldered on. This extra hole gives me some pretty slick wire routing. NB this was done by sanding down the silver a little to get the solder to wet. I don’t think silver oxides are easy to solder to so this needs to happen before the sensor is used.
With the orings assembled, a few drops of electrolyte are added to the surface and a teflon membrane was stretched overtop, before placing on a retaining ring to hold the teflon in place (pinched between the orings and the ring). The “teflon membrane” is plumbers pipe tape.
With the sensor wired up, of course I was curious if I had just completed an expensive art project or if I had actually made an oxygen sensor. Fortunately I had enough spare rebreather parts around to shoot some O2 at the sensor.
Initially I was disappointed because the sensor seemed to not do anything aside from operate like a galvanic cell that reacted to oxygen (see previous post). However, after switching to a very sensitive DMM (keysight 34465a) I was able to read uA changes based on O2 concentration with .6-.8 V of bias voltage. Typical current of the cell in air was very low- maybe less than 10uA. Blasting it with oxygen bumped it up to ~100uA. The response time was extremely low (immediate, as far as I was concerned).
I intend to do a little more work on this sensor, including improving the membrane, making up a proper electrolyte solution, and (of course) testing and temperature compensation. This kind of sensor is cool- unlike gold-lead galvanic cells, it seems like they can be revived with a little electrode cleaning and adding fresh electrolyte (kind of like sea monkeys). In the electrolung, they were actually hard-wired into the rebreather*.
According to the electrolung designers, they are also less sensitive to water covering the membrane. Another nice feature is that in theory, because they constantly consume all the O2 in the electrolyte, a polarographic sensor should fail low if it looses contact with the gas to be measured. This is more obvious than a galvanic cell that may have an O2 concentration “locked in” by water, which could make the PPO2 appear good when it is not good. A cell failing low will be an obvious indication that it has gone off the rails because if the cell reads 0 and you are still breathing, there must be oxygen somewhere.
To Be Continued…
This does not mean that is necessarily a good idea. The electrolung was not a huge success, in part because sometimes people drowned while using it. Additionally, to my knowledge, nobody has decided to use polarigraphic sensors in breathing equipment since then, although they are used for some really cool stuff like measuring cellular respiration rates and dissolved blood gasses.
If I had a dollar for every time someone tells me I’m going to die using my oxygen rebreather, I would have about $6. However, I did royally freak out two local divers who were mystified by how I could use a rebreather and not know my ppo2. While I kind of know my PPO2, I thought it would not be a bad idea to actually measure it. And with O2 sensors in a global shortage, and with a smidgeon of knowledge from rebreather history, I figured I would try to build my own. This has turned into a much bigger project than I expected initially, and the project is certainly not done, but I have learned a ton about oxygen sensors.
History: The First PO2 Sensors
1969 is when Walter Stark and John Kanwishwer introduced the ‘Electrolung‘, which was among the first electronically controlled rebreathers. It seems like it was the first time that one could really know their PO2. John Kanwisher had recently improved the Clarke Electrode (1962, used to prove that extracorporeal oxygenation works), creating a non-fouling oxygen sensor by using a teflon and polyethylene as an oxygen permeable membrane to protect the electrode.
Construction of the Electrode
Mechanically, as you can see, the electrode is pretty simple. A Platinum disk with a silver-silver oxide electrode is covered by teflon, after trapping some KOH electrolyte underneath it. Less simple is the reaction. As I understand it, at the platinum electrode, dissolved O2, water, and electrons from the bias voltage to form hydroxides. At the silver anode, silver and hydroxides form silver oxides and electrons. One difference between the original clarke electrode and modern electrodes is that modern cell use KCl. Both certainly work, although KCl makes AgCl instead of Ag2O. I believe the reason for this switch is that KOH solutions are very chemically active and will turn people into soap, while KCl is a lot less active. Oddly both are food additives, although KCl has an LD50 of about 10x that of KOH.
The original paper suggests sticking the whole sensor into a vat of KOH solution and capping the sensor under the solution, so it seems a lot less scary to do that with salt water instead of a strong base. I hope they wore gloves (but I suspect they didn’t)!
Most importantly- it is key to understand what dissolved O2 is supposed to do in this sensor- it allows current to flow with a bias voltage across the cell (variable impedance), unlike a galvanic cell which causes current to flow (fuel cell/battery).
Observed Sensor Behavior
This type of oxygen sensor seems simple, but there are some subtleties that make the behavior a little difficult to understand. Below I will try explain some interesting observed behaviors of the sensor, and why these things happen. The chart above is a handy key to the rest of this post, which will discuss what happens as the bias voltage on the sensor is increased from 0V.
No Bias Voltage (Galvanic Mode Pt-AgAgO cell)
In this mode, the sensor is producing a voltage instead of a current. As most people know from things like potato clocks and glavanic corrosion, two dissimilar metals in an electrolyte will tend to produce a voltage (across the metals). Based on my measurements and not my knowledge of chemistry, it seems like it is still the case with this cell- a small voltage (500mV) is produced between the Pt and Ag in the electrolyte. However, when exposed to oxygen, it seems like that voltage is reduced, probably by discharging the accumulated charge (voltage) back through the electrolyte. This can be considered an internal short across the electrodes of the electrical cell. However, measuring oxygen based on the blocking of this charge accumulation (voltage) does not make for a good sensor and since the voltage source is very weak, has a long recovery time (minutes/seconds). It also reads 0V (saturates) below an amount of oxygen that is useful to measure. In other words, the readings get clipped below the O2 fractions that would be useful.
Insufficient Bias Voltage (constant current)
In this mode, there is enough oxygen that the cell produces a constant current, since the “use” of the O2 is much slower than how fast the O2 is replenished. This mode should be avoided for sensing since an increase in O2 will not be noticed, since the O2 in the cell is always not depleted.
Sufficient Bias Voltage (Current proportional to O2)
In this mode, the voltage is high enough that O2 is immediately used when it enters the sensor. Therefore, the current that is produced is related to how much O2 is moving across the sensor membrane. This is the “sensor” mode of a polarigraphic O2 sensor. Again, if the size of the electrode is too small or if the membrane is too large, at high O2 concentrations the O2 diffusion could possibly catch up to the current and saturate it.
One interesting thing is here is that when the bias voltage is switched on, there will be a large spike in the current for a short time (<1s) before it settles into its “sensing” current. This is the current produced when the dissolved oxygen in the sensor is initially depleted, and it can be large- on the order of 1000s of uA (~1 mA)! If operated in the insufficient bias mode, this spike will not be seen.
Hydrolysis Bias Voltage (Constant current)
At this voltage, the water in the electrolyte will start to break apart and form gas. I would imagine that the current here is dominated by the conductivity of the electrolyte, but I haven’t made any measurements here.
What the heck is a Polarograph?
That’s a good question- the polargram is a representation of the sensor output, so called because it measures the response vs the electrode vs. the polarization voltage. The chart above shows what we should be able to measure with the sensor.
What O2 Sensors Really Measure
In the sufficient bias range, more oxygen speeds the reaction and therefore increases the current. Current is proportional to the dissolved oxygen in the electrolyte, which should be limited by the diffusion across the membrane and the size and proximity of the Pt electrode to the membrane.
Polarigraphic and galvanic lead-gold sensors are sensitive not to oxygen mass or oxygen fraction (% makeup of gas that is O2), but essentially measure the rate of diffusion across the membrane (assuming they are working right). This is then calibrated to some known O2 concentrations, usually two of whatever is conveniently available- 0% (nitrogen purge), ~21% (air) and 100% (O2 purge).
This diffusion should be related to the prevalence of O2 in the sensed gas or liquid. Normal air, at a higher pressure, will have a higher availability of O2, and O2 will diffuse faster. Oxygenated media flowing by the sensor will have a higher availability than non-moving media. Temperature will also affect gas solubility and diffusion.
Oxygen Gas Sensors for Diving
For diving, the pressure plays a large role in O2 sensing. As breathing gas is compressed, the pressure increases quite a bit (up to about 4x pressure at recreational limits). When divers talk about oxygen sensors, they really are talking about measuring the oxygen partial pressure. Given some container and gas mixture, a partial pressure is the pressure a gas would have if it were allowed to take up the whole container without the rest of the gas mix. Surprisingly (or not) the sum of the partial pressures equals the pressure of the whole mix.
For nitrox-savvy folks, reading PPO2 at the surface works out easily to O2 fraction (% of gas by volume) since the oxygen measurement is happening at the surface at 1 ATA. For nitrox, this PPO2 is then used to figure out how deep you can go (increasing PPO2) before you hit a maximum PPO2 limit.
For rebreathers applications, the thing that is interesting is direct reading of PPO2, so there is no need to convert to O2 fraction. As pressure increases, so does partial pressure of oxygen, creating a higher pressure differential of oxygen across the sensor membrane, resulting in faster diffusion, which is then sensed.
After feeling a bit like a snail in a shell in my last rebreather, I decided I wanted to make something a lot smaller and more ergonomic. Hence the next generation of the rebreather being called the Nudibranch- Latin for “naked lung”. A suitable name for a design with a scrubber-in-lung and with the counterlung unenclosed in a shell.
Improvements over i3
I knew there were some features I wanted to keep from the previous revision, and some things that needed to be improved. The materials for example, all proved to be robust and appropriately resistant to chemicals. the manual add valve (MAV) functioned well, and the counterlungs were of a comfortable volume. Scrubber duration was adequate as well. However, there were some issues with i3:
Difficult to reach gas controls
MAV hard to locate
Low gas volume
Assembly took too long
With a focus on simplifying the assembly, i4 looks and feels more like a simple rebreather rather than some kind of science project.
The main inspiration for the new design was the Drager Model 138 rebreather. This model was famously used by Hans Hass in the Red Sea and later went on to be a “sport rebreather” diving system used for leisure, re-branded as the barrakuda or medi nixie. It turns out that it got a lot of things right.
One of the interesting aspects of the model 138 is that it is mostly cloth. When working at the scale of the human body, the cost of materials and the size of parts can add up quick. The last rebreather was encased in a large aluminum shell bolted to an 80/20 frame. This frame covered the gas cylinder, as well as two 8L couterlungs. Since the scale of these parts is cm, the small offsets to accommodate things like the counterung bulkheads or the gas addition fitting took a lot of room. Wrapping that all in aluminum made the shell quite bulky. comparing the two units above, you can see that i4 is much smaller.
The breathing hose routing is a lot cleaner, since the hoses run over the shoulder instead of straight outwards. This means I need less hose length. In the future I hope to convert to 1.5″ diameter hoses that are ~6 in shorter, for lower work of breathing.
Gas Volume/Valve Access
The Model 138 also has front mounted gas, which means all the valves and controls are easily accessible to the diver. They also are not mounted on a whip/hose like on the i3. With the i3 it was possible to “loose” the MAV since it was not mounted to anything.
The i3 valve was accessible, but it was extremely challenging to reach and required flexibility. On the i4, the valve is in the front and stationary, and only requires one intermediate hose compared to the two for the i3.
I knew from my previous design that I wanted a lot more gas so that I could stay underwater longer. I still haven’t figured out the best way to reliably get oxygen fills, so I stayed with the hardware store welding bottles, but I doubled up on them. More can be read about that here.
Ultimately, the only real issues I had with this design were MAV related. The gas regulators seem to restrict the flow far more than the old regulator, which makes the counterlung fill very slowly. It also seems like they cut off at a higher pressure, leaving a significant amount of gas left over in the tank. This makes buoyancy and breathing comfort a challenge, and limits range. However, twice as much gas is twice as good, and dives up to 45 minutes have been conducted without complete gas exhaustion.
Counterlung material selection and design
This is really the complicated part, and its particularly fraught since it is where all of the rebreather magic happens. The bag must be, relative to the demands of the dive (duration, pressure, volume of bag) completely watertight and made of a waterproof material. Some leak rate is permissible, but it has to be low. In order to capitalize on pre-existing materials and advanced technology, I decided to use a drybag. The other options are to sew a bag and seal it, heat seal a bag, or sew and completely impregnate a bag with silicone.
Sealing the end of the bag
Since I managed to find an appropriately sized drybag, I ended up just buying one. Testing of several bags revealed that the stock roll-top seals of dry bags are inadequate. Specifically, the way that most of them close is by clipping the ends together and rolling them shut. While this is fine for splashes or even putting it ontop of water, submerging the bag will squeeze the air out of the wrinkles created by bending the rolled up seal.
Without bending the seal, it is possible to get good enough contact between the two sides of the bag that it will form an airtight seal. However, the particular bag I chose had stiff mounting points for the buckles- these interfered with collapsing the seal in that area, and provided a leak path. Absolutely fine for a drybag, but not good enough for a counterlung.
By removing the stiffener and making some aluminum clamps, I was able to seal the bag well enough. I flipped the bag inside out so the smooth urethane coating was on the inside of the bag, instead of the textured nylon surface. Additionally, it is important that the bag material was very thin so the seam in the material does not disrupt the seal.
This is really a dream for scrubber access and drying since the whole lung can be rinsed and turned inside out to dry.
Making holes in the bag
I knew there would need to be at least 3 penetrations into the bag- inhale, exhale, and gas add, in addition to the large hole in the bottom. all of these of course, are leak paths!
The inhale and exhale penetrations are sealed with these (put link here) handy PVC bulkhead fittings, which conveniently fit a piece of 3/4″ pipe stub on one end to attach the breathing hose. Instead of the stock gasket, I used an oring and a retaining groove. The gaskets that were provided may have worked, but I wanted to be sure that I could get good contact along the whole circumference. The provided gaskets had a rectangular cross section and were hard- requiring a lot of force to seal. The replacement orings are soft, have a reduced cross section, and a much finer surface finish.
As you can see in this diagram, some water is actually allowed into the bag via the threads on the bulkhead fitting, but it is stopped by the oring and the glue on the bulkhead.
The other hole is a standard dump valve/BCD inflation port. These were “successfully” used on the i1 and i2 rebreathers- successful in that they did not leak, less successful in terms of actual diving.
The last (and yet tested) item is the drysuit exhaust valve/ overpressure relief valve. Once installed properly, this should help avoid over pressurizing the lungs on ascent. Its stock cracking pressure is adjustable between 3-10″ H2O, but by modifying the spring spacer I bumped it up to 8-16″ H2O. This is probably the leakiest of all the valves because it requires a large hole- a larger hole is harder to seal because the seal is longer. Usually these are installed with a sort of large rubber washer with a C-cross section. The material the seal is attaching to goes in the open part of the C, and the washer is glued in. Since I don’t have that washer, I haven’t installed it yet and I have been avoiding overpressure via the “oro-pharyngial” valve.
Intensive leak testing (more here) allowed me to validate the design before committing to a whole build. That was important, because a lot of things did not work initially. For example, I couldn’t apply enough torque to the brass thumbscrews to seal the bag, so I had to switch to a nylock nut. Another example is that the original gasket for the bulkhead seals was determined to be inadequate.
Just like with i3, the last thing I was really prepared to deal with was attaching this to my body. Unlike the i3, I knew that this challenge was coming. I considered something like a vest a la model 138, but that would require buying a few yards of fabric and knowing what to do with it, and getting a sewing machine. Instead, borrowed some inspiration from an oxydiver design (link) and backplates and designed in slots for a hogarthian harness. In the end, I actually think this is better since it is now compatible with all kinds of 2″ webbing accessories.
Of course, there is no backplate, and the gas is mounted on the front of the diver. After playing around with a bucket of sliders and clips I came up with a simple loop around the two canisters, with a 2″ long loop at one end to put the waist strap through.
This rebreather is actually very fun to dive. I would actually consider diving this over OC on shallow dives. However, no project is ever perfect. The three things I will likely seek to improve in the inevitable i5 are:
Terrestrial O2 regs rust and fail. O2 is expensive in small disposable bottles, and having a million of them around is silly. There is also no SPG. Normal scuba cylinders and regs are far superior.
No place to put an inflation cylinder for drysuit. Even in 20′ of water I think I would prefer a drysuit over wet- especially if I were to dive in the winter.
People say YERGONNADIE if you dont know your PPO2. There is some merit to this claim, but I feel it is not likely if you respect the depth limitations of an o2 rebreather.
A lot of these changes or issues have implications- if you have an inflation cylinder, why not make it breathable as backup? If you add oxygen sensing, why not add that breathable cylinder as dil? If you give an engineer a cookie…
The more gas you have on a dive, the more time you have underwater, and the larger a safety margin you have- although for an oxygen rebreather in a non-overhead environment, it mostly adds to dive time. I wanted to be able to carry not one, but TWO disposable oxygen bottles on a dive, so I went ahead and built a “manifold” based on the MAV components from my previous rebreather.
Here is the MAV 2x in the exploded state. With all brass components, galvanic corrosion, should be kept to a minimum. I may also try nickel plating them after polishing, for even more corrosion resistance. Polishing reduces surface area, which also helps combat corrosion.
At the bottom are a couple of off the shelf mini-oxygen bottle regulators. These have a male (thread) B-sized oxygen fitting on them, for an oxygen hose. Since I want to stick these into a manifold and not have the bottles interfere, I needed a rigid connection that lets the two sets of threads be independent. These fittings are right in the middle- one end is NPT and one end is a female B size fitting (P/N WES-123 for the curious). The NPT end is affixed to the manifold, and then the nuts are tightened onto the regulators. Since the threads are on the nuts, and not on the stem attached to the NPT, the bottles can be in any orientation.
This is very similar to the original MAV, but it has been simplified by putting the MAV directly on the cylinders, which will be front mounted on the diver. This simplifies the gas routing, and eliminates a connection. Another improvement is that the bore for the cartridge valve is not a through hole- this means that the back does not need to be sealed up, eliminating an extra seal.
The cost for the reduced leak path count is that chip evacuation is more difficult in the long hole (roughly 4.25″ x .25″ drill- 17xD hole) and there is an additional, difficult to machine cover that retains the cartridge valve. If this is not installed, the cartridge valve will shoot out of the MAV under pressure. It is definitely an area to watch out for when the valve is pressurized. However, with such a long bore, there is not a good way to be able to machine the valve bore from the reverse side. Fortunately, the cross sectional area of the valve is quite small, so even at 500 PSI, which is the tank pressure, the cover only needs to resist ~50 lbs, across four M3 screws.
Of course, not every dive requires two oxygen bottles, and with no gas installed the inside of the regulator would be filled with water. So that the future rebreather can be operated with just one cylinder, a 1X MAV was produced. Cant wait to try it out!
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 126.96.36.199 after the test according to 188.8.131.52. 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.