3D Printing Hearts with Valves

Improving Valve Representation in Cardiac Stereolithography by Spatially Registering Magnetic Resonance Imaging and Echocardiography Tyler Robert Moore MDa, Erin Janelle Madriago MDb, and Michael Silberbach MDb Introduction Additive manufacturing, a means of fabricating objects layer by layer though extrusion or sintering, has the potential to impact biomedical research, patient imaging, and medical therapies. One example is personalized anatomic modelling, the creation of tangible models representing the anatomy of an individual patient.1 Of particular interest is the creation of cardiac models in patients with congenital heart malformations.2 The benefits of such models include physician education,3 operative planning,4 and procedure simulation.5 Patient-specific heart models are readily created from cross-sectional data acquired through computed tomography (CT) and magnetic resonance (MR).6 Despite improvements in cardiac-gated CT and MR,7 the temporal resolution of fast moving cardiac structures such as the valve leaflets is limited. Standard three-dimensional echocardiography can acquire volumetric data up to 20 Hz, allowing superior resolution of the valve leaflets.8 Spatially constrained volumetric data is a more recent development in echocardiography that allows for its use in creating heart models through additive manufacturing.9–11 While echocardiography can be used to create very accurate models of the valves, its limited field of view precludes representation of the entire heart, great vessels, and adjacent thoracic structures in a single model. Integration of multiple modalities allows for more comprehensive modelling of the heart by exploiting both the larger field of view inherent to CT and MR as well as the detailed valve anatomy acquired with echocardiography. Combining modalities requires a means to spatially register the data sets. If there are several anatomic fiducials, corresponding points that are readily identifiable in both data sets, they can be used to determine a linear transformation between the coordinate systems of the two studies.12 Preliminary results have demonstrated the feasibility of combining cardiac MR and three-dimensional echocardiography to create such models.13 Materials and Methods Subjects Subjects are less than 18 years of age. Cardiac models are created from cardiac MR and three-dimensional echocardiography performed in the course of the subjects’ care. The Oregon Health and Science University Institutional Review Board approves maintenance of a cardiac imaging data repository for the creation of heart models for pediatric subjects. Source Data MR is performed using a 1.5 Tesla Philips Ingenia with Philips REV5 software. Sequences used directly for modelling include a pre-gadolinium Fast3D sequence, a pre-gadolinium BFFE cine sequence acquired in the short axis plane that included the atrioventricular valves, and a post-gadolinium angiographic sequence. Gadolinium enhanced sequences are performed using a bolus of Gadavist at 0.1 mmol/kg. Subjects under 12 years of age are routinely sedated by a pediatric anesthesiologist as part of the institutional routine. Three-dimensional echocardiography data are acquired using a Philips iE33 xMATRIX with an X7-2 probe. Volumetric data sets are acquired in 30 temporal phases per heartbeat with 208 slices per phase. Visual inspection allows retrospective selection of the temporal subset corresponding to the appropriate phase of the cardiac cycle. Software Mimics Innovation Suite v17.0 (Materialise, Belgium) is

Read More

Tesla Tinkering

Tesla Tinkering

The Tesla Model 3 has more cool features than you can throw an eclectic CEO at. From Autopilot to Emissions Testing, there is always another creative innovation guaranteed to amaze. One such fun feature is the ability to record video from the vehicle’s cameras. There are two situations where this can be done. At any time during vehicle operation, you can save the last several minutes of video by tapping the Dashcam icon. When in Sentry Mode, video recorded during detected events is automatically saved. The car doesn’t have onboard or cloud storage for recorded video. To enable the feature, you must format a USB flash drive with a FAT32 file system, add a root directory called “TeslaCam”, and plug the drive into the USB slot in the car. To access the stored video, remove the USB and plug it into a device to view or move the video files. Once the USB is full, the feature is not available until you free some of the USB storage by manually deleting files. This is great, but it begs for improvement. It would be wonderful if the video would automatically stream to a data storage service like Google Drive or Dropbox. An embedded device that emulates a USB flash drive but then connects to your WiFi and uploads your videos would do the trick. I dont know enough about USB to do this myself in the time that I have. Fortunately, it’s 2019. The open-source movement is so strong that not only has someone probably already done whatever you want to do, they probably made it available for free with detailed instructions on how to do it, and a team of volunteers now maintains and improves that project. That’s exactly the situation with Tesla’s video logging. An Open Source Solution Enter TeslaUSB, an open source project based on the Raspberry Pi Zero by GitHub user cimryan. The Raspberry Pi is a very small computer designed to run a simple Linux Operating System like Raspian. While the Raspberry Pi Zero only consumes about 0.7 W of power (much less than an incandescent light bulb), it has computing power similar to your smartphone. The TeslaUSB project takes a Raspberry Pi and turns it into a device that can be plugged into the Tesla USB port. The Tesla only sees a normal USB Flash drive and stores video on the Pi as it normally would. However, when the Pi detects your home WiFi network, it connects and moves the videos to a data storage service. This frees up its own storage space so that you never need to manually delete the videos. In fact, as long as you periodically drive your car within your home WiFi range, you don’t even need to think about it. While the open source community can sometimes lack in maintenance and documentation, its strength is that anyone can pitch in and bring new life to a project. The forums from early this year are full of users who had

Read More

Personal Goal: Accomplished

Personal Goal: Accomplished

Today, one of my personal goals was realized. I made a small contribution to a large open-source project. The project is the Arduino core for the ESP8266. The ESP8266 is my workhorse microcontroller, but the Arduino core provides a framework to quickly develop software. It contains numerous features that are based on the Arduino platform but adapted for the ESP8266. It also has many features unique to this device. While working on μDAQC, I was trying to store login credentials in a secure way, but the existing Arduino core didn’t have functions that allowed me to do it. Instead of writing my own implementation, I took the plunge, forked (made my own copy of) the repository, and modified the core itself. Once I’d tested the change, I submitted the change as a Pull Request – my very first one. The folks who maintain the project reviewed it. Once I responded to their feedback, it was approved. Today, my fork was merged into the current development branch, and my changes will be a part of the next release. My little bit of code probably won’t be used for it’s intended purpose by too many people, and I seriously doubt it’ll ever actually protect anyone’s information from an intrusion. Still, once the next version is released, it’ll be sitting there on thousands of hard drives, ready if it’s needed. Here is a link to the pull request on GitHub if you’d like to see the details.

Continuous Measurement of Fluid Density, Part 2: Parts and Plumbing

Continuous Measurement of Fluid Density, Part 2: Parts and Plumbing

Before the hiatus, I made an attempt at creating a Continuous Fluid Density Sensor. Here are the primary components: Two dip tubes in the fermenter MPXV7002DP differential pressure sensor ADS1115 16-bit analog to digital converter Generic, chrome plated brass, 2.5 mm hose barb to M3 adapters and 2.5 mm pneumatic hose Generic 12V aquarium diaphragm pump (model no longer listed on eBay) Plumbing The first step was to install new dip tubes into the fermenter. These are just two tubes in the tank that terminate with their openings directed downward. They are connected to cam-lock adapters on the outside of the tank for attachment to hoses. I also wanted the portions of pipe inside the fermenter to have as few recesses as possible to limit contamination by undesirable microbes. I soldered the NPT stainless fittings using acidic flux (I used Stay-Clean). The 1/4″ stainless tubing connects through a compression fitting. These leaves less room for leaks and microbes. Now that we have dip tubes between which to measure the pressure difference, the first step in design is to calculate the expected difference in the pressure at the tip of each tube. The difference in their heights is approximately 15 cm. The conversion between Pascals and centimeters of water is , so the differential pressure between the two tubes due to a column of water is: The original gravity for a generic pale ale is approximately 1.05, so the differential pressure at the beginning of fermentation would be: The final gravity for a generic pale is about 1.011, so the differential pressure at the end of fermentation would be And finally, the change in the differential pressure is . The dip tubes need to be connected to a differential pressure sensor. The pressure sensors in the price range for this application connect via 2.5 mm pneumatic hose, but there are no adapters between pipe fittings (what I use in my brewery) and this diameter hose. So, I made adapters by taking a short length of 1/2″ NPT copper pipe and soldering a brass hose barb into it. The plating on the brass interfered with the soldering, so grinding down the threads on the barb before soldering was necessary. Diaphragm Pumps Lastly, the dip tubes will have a tendency to fill with fluid. Measuring the differential pressure will require a means to push the fluid out and fill the tube completely with gas. That’s accomplished with two diaphragm pumps. These simply take gas from the top of the fermentor and push it through the tubing leading to the dip tubes. MPXV7002DP This device is a differential pressure sensor. It operates at 5V and outputs an analog voltage between 0.5V and 4.5V that is proportional to the pressure detected by the device. Specifications dictate that this device detects a -2.0 kPa to 2.0 kPa range at 2.5% average and 6.25% maximum error. The first question is whether this is a significant error. At a range of 4000 Pa, the average error is 100

Read More

Continuous Measurement of Fluid Density, Part 1: Concept and Design

Continuous Measurement of Fluid Density, Part 1: Concept and Design

Introduction One of the chores every brewer performs is measurement of the density of a fluid. This measurement gives two critical data from the brewing process. First, a measurement right before fermentation tells how much sugar is in the wort. This is called original gravity and is one of the key parameters of any beer recipe. A large portion of the work that goes into a brew day is to control the quantity and types of sugars that are in the wort. Second, since the density of the beer decreases as the yeast convert sugars to ethanol and other byproducts, measurement of density allows the brewer to monitor the progress of the fermentation. When fermentation is complete, the last density measurement is called the final gravity. The difference between the original and final gravities can be used to calculate the alcohol content of the beer. There are two methods available to brewers to measure density. The simplest device is the hydrometer, a glass bob that is submerged in a cylinder of liquid. The denser the liquid, the higher the hydrometer floats. The other device is a refractometer, which measures how much the fluid refracts light. Sugar and alcohol in the beer change its refractive index, so a few calculations can yield the concentration of sugar and alcohol in the fluid. Considering how important a task this is, it’s embarrassing to admit that I absolutely hate doing it. Each of the above methods requires collection of a sample of the fluid. I don’t mind this on brew day, but collecting a sample from the fermentor using sanitary technique is a hassle. I like to be hands off during fermentation; that’s why I went through the trouble of building an automated temperature controller. It’d be great to add density measurement to my existing system. I’ve been slowly tinkering with a solution, but the idea of automatic specific gravity measurement on a homebrewer’s scale isn’t new. The homebrew forums have been kicking ideas around for years, and have beaten it to death. Then, the Beer Bug hit the scene with what is probably the best solution. If I’d known about it sooner, I probably would have bought one. However, I’ve put a fair amount of work into my prototype, and I’d like to see it through. P&ID Legend There are a few diagrams to follow, and I’ll use symbols that are mostly self-explanatory. Two that may not be well known require some explanation.This is a manual valve. It sits at the bottom of my fermentor. I open it when I want to collect yeast or transfer the beer to a keg.This is a check valve, or a one way valve. It allows fluid to flow in the direction of the arrow, but not the other direction. Concept One of the simplest ways to find the density of a fluid is to measure the pressure caused by a height of the fluid. The diagram above shows the fermentor and two ports at different heights connected to a sensor. The

Read More

Santos

Santos

My first brew day since the Core exam was spent making a beer with my buddy Cody. We took a shot at a clone of one of his favorite beers, St. Arnold’s Santos. They call this a Dark Kölsch and admit that this is very much a contradiction. Breaking brewing rules sounds like good fun to me. I couldn’t find any recipes for this clone, so I used Brew Target and the ingredient list from St. Arnold to come up with something. Recipe Mashed at 153 for one hour: 9 lb US 2-row pale 9 lb US pilsner 2 lb German Munich 1 lb Black Patent Hops: 1.5 oz Hallertau, 60 min 1.0 oz Hallertau, 30 min 1.0 oz Hallertau, 15 min 0.5 oz Hallertau, 5 min One hour boil, fermented at 16 degrees C (or as close as I can get) with Wyeast 2565. OG: 1.050 FG: 1.01 ABV: 5% A New Tool This was the first batch for which I used a new tool that I built, which is just a small stainless pot modified with a thermometer and a dip tube that I’ll use to make yeast starters. I attached a small aquarium air compressor to the dip tube to agitate and oxygenate the wort in an effort to improve the yeast health and number. I was a little more structured with my yeast starter this time, which was made with 2 liters water, 4 cups dry malt extract, and a half-cup of dead yeast. I should have also been able to use the compressor to force the yeast out of the bottom into the fermentor by attaching it to the top port I added, but a little of the dried medium created a small leak in the silicone gasket sealing the top of the pot. Maybe next time. Brew Day Cody and his wife Stephanie joined us for this brew day, and it was a great time full of laughter, delicious beer, and great food. Trang made double squid ink pasta with crab, and Cody supplied lots of Santos. Brewing went as smoothly as my brew days ever go, and I was a little rusty. We did multiple sparges and almost nailed the target OG of 1.051. It’s taken the temperature controller a couple of days to get the temperature down to the target of 16 C due to the warm weather, but it’s holding nicely. Here’s a screenshot from my JavaFX application that interacts with my Arduino-based temperature controller. Will this beer taste just like Santos? Probably not. Will it be as awful as the beer I brewed for Jeff and Adam? Impossible (sorry, guys!). I think it’ll be tasty, and I hope to have some carbonated by the time my dad visits late this month. Cheers!  

Punch Out!

Punch Out!

I’m still a slave to the books, but I occasionally decompress with a little eBay browsing. I’m accruing material for projects I’ve got planned for my glorious post Core Exam days, but I couldn’t resist giving one cool little tool a test drive. A common need in making brewing hardware is a hole in sheet metal for a valve or instrument. You can buy a pot with the parts already installed, but you can also do it yourself. So far, I’ve just been using a step drill bit. This certainly gets the job done, but it takes forever, leaves a lot of metallic swarf that’s hard to clean, and leaves a jagged edge that takes a lot of sanding. The hole punch is a better tool. This is  a bolt with a threaded punch and die that cuts a clean, perfectly sized hole. The Greenlee brand is popular but expensive; the 7/8″ punch required to make a hole big enough for a 1/2″ NPT bulkhead costs over $80! I lucked out and found a used one for $13 on eBay, so I pounced. Drill a 7/16″ hole for the bolt, place the hole punch, and tighten down until the punch passes into the die. The punch is definitely the way to go. This hole is in my hot liquor tank for a thermowell. A little Teflon tape and silicone sealant goes on the outer threads, which are 1/2″ NPT. A 13/16″ ID x 1 1/16″ OD silicone o-ring goes into a 1/2″ NPT locknut and will secure the thermowell on the inside, making it water tight. There we are. A newly mounted thermowell. A thermometer with 1/4″ threads to match the thermowell goes inside. The nice thing about the thermowell is that I can later install a digital thermometer when I want to automate the hot liquor tank. All that’s left is to pressure test it. No leaks! Now I want to find a 1-1/4″ hole punch to put electric heating elements in my pots, but that will have to wait. Back to the books. Just a few more weeks until the big test.

Dark Strong

Dark Strong

A couple of friends and I have been planning a brew day, and we’ve been looking forward to it for months. It was tough to wait this long between brew sessions, but it was well worth it. In building the recipe, we decided to be ambitious and attempt a clone of pFriem’s Dark Strong Ale. As far as I’m concerned, there’s no style superior to the Belgian Dark Strong. Jeff found pFriem’s ingredient list, but neither of us could find any posts about an attempted clone. A little tinkering with BrewTarget yielded a first draft recipe. While the style demands little hops, Adam nudged the hop additions a little higher than what BrewTarget initially suggested would put our bitterness in range for the style. Fine by me! Finally, a great Belgian style deserves a great Belgian yeast, so we went with Wyeast 3787, their Westmalle strain. This yeast is not only used by the Westmalle Abbey but the Westvleteren Abbey as well. As always, the practical substitutions had to be made at the brew store. Here’s the full recipe: Mash 23 lb 2-row pale 1 lb Carafa II 2 lb Caramunich Mash at 162 for 75 min Boil 5 lb homemade Dark Candi Sugar, 60 min 1 oz Fuggle, 60 min 1 oz Norther Brewer, 30 min 1 oz Tettnanger, 10 min Fermentation 800 ml starter Wyeast 3787, fermented at 23.3 degc OG 1.103 SG to be measured More than anything, the available food and libations stood out this brew day. Between the three of us, we built quite a menu of beers to quaff, and we nearly finished them all. Furthermore, not only did Trang’s mom watch My Lan for the day, she made her incredible chicken wings. All grain brew days are long, but we were neither hungry nor sober! I’ve only made a few small changes since the last brew day. First, I modified a pressure cooker to supply pressurized steam for sanitizing my heat exchanger. I just drilled a hole in the top for a cam lock fitting. When it’s time to sanituze, I put the pressure cooker on a hot plate and attach it to my exchanger. Voila, low pressure steam does the sanitizing for me. I previously had to boil water and pump it through, so this is obviously much faster and doesn’t tie up my brew pump for half an hour. Second, I added a manifold to my rig. This allows me to divert the recirculating wort to the brew kettle as well as direct water from the hot liquor tank to the mash tun without any fumbling around with hoses. The pump inlet piping still needs some work. Lastly, I built a stand for my hot liquor tank so it can drain into the mash tun by gravity. We had some trouble with the flow getting hung up at a high point in the flow path, so I’ll have to pay it more thought. The improvements were small but made it my

Read More

Dial it in

I attempted a clone of the Houblon Chouffe IPA Tripel last week. Here’s the recipe: Mash 26 lb 2 Row pale 2 lb Munich 1 lb Crystal 80 1 lb Belgian Biscuit 2 lb Sucrose Mash at 145 F for 20 minutes and 155 Friday for 40 minutes 11 gallon boil volume, 10 gallon final volume Hops 1 oz Columbus, 60 min 3 oz Saaz, 10 min 1 oz Columbus, 10 min Yeast WLP500 OG 1.064 FG 1.008 ABV 7.4% As you might guess from the gravity after the boil, my efficiency was a terrible 50%. This was my second attempt at fly sparging, and it has also failed miserably. I’m ready to switch exclusively to batch sparging. This beer will not be much of a clone, but I hope it will be a respectable IPA anyway. Just look at how full this hop sack is! At least, a few leaks aside, the RIMS and exchanger are working great. Cheers!

Better with Family

Here we go! Today is Belgian-style Stout day, and I got to do it in the company of family. Alex and Connie were kind enough to help out. The RIMS was up and running in no time. Strike water heated from 60 degF to 156 degF in about 40 minutes. Today’s Recipe 60 min mash @ 156 degF 18 lb 2-row pale 5 lb Belgian pale 5 lb German Munich 2 lb Caravan I I special 1 lb Midnight wheat 1 lb British chocolate 2 lb Special B 3 lb light roasted barley 2 lb homemade candi sugar (added at flame out) 4 oz Norther Brewer, 60 min 2 oz Cascade, 5 min White Labs 500 Initial wort gravity: 0.075 OG: Approximately 0.084 (estimated, see explanation below) FG: To be measured. The mash was messy. It barely fit, and my hose ended up pointing upwards, losing about a pint of wort all over me and the ground. I guess I needed equipment losses somewhere. That’s what I get for running my mash tun right at capacity. This seems to be a recurring theme. Sparging went smoothly enough, although I underestimated my sparge volume. Boil went smoothly with only a small mess with the hot break. Chilling went great! It was much easier to manage with the pump mounted to the cart. Also, I used the new GUI for the data from my countercurrent exchanger. This is just a modification of my fermentation cabinet GUI, with the data feed coming through the serial connection to an Arduino Uno attached to an nRF2401L and programmed to relay data from the board monitoring the exchanger. The only hiccup during chilling was a malfunction with a new piece. As you can see in the screenshot, there was a hang in the middle of chilling where all temperatures dip low. This happened because flow stopped on the wort side, while water flow continued and cooled the entire system! A bit of troubleshooting revealed the problem. After last brew session’s big clog, I installed an inline Y strainer. Unfortunately, the mesh in the strainer is too fine, and the small amount of debris from the pellet hops completely clogged it! Thankfully, I was only trying out this piece and had a redundant, coarser strainer at the bottom of my kettle. Surprisingly, I also had the foresight to mount it with cam locks on each end for easy cleaning. I removed the Y strainer from the line and continued cooling. After chilling was done, I pitched my yeast and called it a day. During cleanup, however, I realized that my homemade candi sugar was still cooking in the slow cooker! I took some dredges from the bottom of the kettle, made a slurry, and poured it through a funnel into the conical. It was messy but things worked out okay. The biggest problem is that I didn’t get a sample reflective of the actual original gravity. The running from the mash came out at 1.075. With two pounds of candi sugar

Read More