Monday, September 2, 2019

SoM Gets a Duet WiFi and PanelDue 5i Controller

A few months ago, the SmoothieBoard in SoM died when I managed to short something while working on the printer, so we installed an MKS Sbase board that one of the MakerSpace members had handy and also runs SmoothieWare.  Unfortunately, it was a piece of crap and didn't reliably read SD cards, and more recently, jogging the Z axis also moved the Y axis for some reason.  It had crappy DRV8825 drivers, too, that I never liked.

I decided to do the only sensible thing and install a Duet board, and since I had experience with the Ethernet version, I decided to try the WiFi board with a PanelDue 5i interface.

My experience with the Duet Ethernet board in UMMD has been mixed.  It has been very reliable, the drivers are really quiet, I like the Panel Due interface.  But I prefer to run printers from SD cards for reliability and not having to connect a computer to the printer.  The Panel Due 7i has a uSD slot along its bottom edge.  Unfortunately, the way the panel is installed in UMMD, I can't readily access the card slot and even if I could, it's a little too far from the controller board (you need to use a short ribbon cable to make the connection).  The Panel Due has the option of rotating the screen 180 degrees, so I could theoretically flip it over and make a hole in the top of the printer to access the uSD card slot, but then I'd have to worry about things falling into the slot and jamming it up.  Even though I have relatively small fingers, and mad hand skillz, handling a uSD card is a lot more difficult than an SD card.  I'm looking into fixes for that - maybe an outboard SD card slot that will plug directly into the Duet board.  With the Ethernet board and Panel Due 7i I found that I needed to keep a computer connected to the printer just to load gcode files.  That feels like a backward step to the bad old days when I was using Arduino/RAMPS and Pronterface to control the printer.  At least it uses a reliable network interface instead of USB with flaky drivers.

Sure, a Duet WiFi controller board would eliminate the need to have the computer physically connected, but if I take the machine to a MakerFaire or other location, I won't always have a reliable wifi connection to use, and I don't like having to waste time debugging flaky wireless connections.

I tested the Duet WiFi in the sand table before I installed it in SoM.  In the sand table the wifi controller is especially nice- I don't have to have any controls on the table which means I don't have to try to hide them.  I have ordered a Duet WiFi board for the sand table and will write a post on that when I get it installed.

Networking a 3D Printer?

Call me a Luddite, but I really don't see a big advantage to having a 3D printer on a network.  I clean the bed and verify that the filament spool that's loaded has enough filament to finish the job before every print.  If I have to go to the machine anyway, why not just plug in a card and start the print while I'm standing there?  The Duet's web server provides some data and control that is still missing from the Panel Due, but a lot of the data isn't particularly useful to me. The missing control capability in Panel Due can easily be added via macros, and I'm hoping that one day the Panel Due firmware will catch up to RepRap Firmware that runs on the Duet board.

Some people go out of their way to add a RPi running octoprint to network their printers.  If I were a baseball fan, I'd probably like staring at my printer while it's printing and enjoy the enormous amount of "stats" octoprint can produce, but I have better things to do I'm not impressed or entertained by data that isn't particularly useful, so I don't care too much for either baseball or octoprint.  I have no desire to try to impress people by starting prints using my phone, though it might be handy to be able to stop them when they fail (pretty rare).  It makes no sense to me to do the slicing on an RPi when I use CAD to design the parts I print on a higher powered, much faster laptop.  Maybe slicing on an RPi is OK for people who just download stl files to print, but I don't know many 3D printing people who remain at that stage for very long.  Sooner or later, almost everyone who gets into 3D printing wants to print their own designs.

Panel Due 5i Enclosure

I decided to try the Duet Wifi board to replace the controller in SoM.  Who knows, maybe I'll be impressed enough to change my mind about using SD cards and wireless networking.  But just in case I don't, I designed and printed an enclosure for the Panel Due 5i that leaves the uSD card slot accessible.  In SoM the Panel Due is close enough to the Duet board that the uSD ribbon cable works, so I have the option of using either the wireless network or the uSD slot to transfer gcode files to the printer.

The enclosure design was based on a GrabCAD model of the Panel Due 5i board.  Kudos to whoever uploaded the Panel Due 5i model because to my pleasant surprise, it was very accurate and my enclosure fit on the first attempt.  Even with the accurate model, I managed to spend far too much time designing the box.

This box was designed to allow easy access to the uSD card slot.

The top of the box has labels for the erase and reset switches that are used when updating the Panel Due's firmware.

The bottom of the box has holes for mounting it on a panel (I'll probably just use velcro tape) and slots that allow the ribbon cable and 4-wire cable (not shown) to pass through the wall of the box.

The circuit board is mounted on the top cover using 4 small plastic anchor screws.  The top cover snaps onto the bottom cover and holds securely.  The bottom cover has bosses that provide mechanical support for the top cover and circuit board.  I have since updated the bottom cover design to include some webbing to give it more rigidity.

The enclosure prints in 2 pieces without any support material.  The board screws to the top cover using 4 small screws, and the two halves snap tightly together and can be pulled apart as needed to access the the board for firmware updates, etc.  The Fusion360 CAD file is here.  It includes the GrabCAD model of the Panel Due 5i.


Before doing anything else, I updated the firmware in the Panel Due and added my own splash screen.  I used Irfanview to put red text on a green background (to match the color of the box), cropped it to 800 x 480, saved it as a .bmp file, compressed the .bmp file with escher3d.exe, then added it it to the firmware file using a "copy" command per the instructions, here.

I went through the cables in the printer and labeled them (probably should have done that years ago) as I pulled them off the MKS board so they'd be easy to identify and connect to the Duet board.  I replaced a bunch of the connectors with the much better quality ones that came with the Duet board.

I mounted the Duet board in the printer's electronics drawer on of the board mounts I designed and printed for UMMD.

Configuring the Duet Board

I used the online configurator and checked it against UMMD's config file to try to minimize problems.  I mounted the board and started hooking up the various connections, testing them as I went along to make sure they were working right and tweaking the config files as necessary.  It took about an hour getting everything working right, so it was pretty easy.

SoM had a DSP based driver and 32V power supply for the Y axis motor that was used back when it had a ball screw drive.  I did a couple experiments and found that the driver on the Duet board could deliver sufficient current to drive that motor, so I took out the DSP driver and power supply.  Simplification!

I ran into one problem after installing the Duet.  The X axis was making a lot of noise and vibrating.  Maybe it had been doing it for a long time and the noise was masked by the noisy ball screw that used to drive the Y axis.  I didn't pay much attention to it when I put the MKS board in the machine- that was a temporary measure to get it back up and running.  Now that the Duet was in and I was using high microstepping ratios, I expected quiet operation and was bothered by the noise.  I looked closely at test prints and found the vibration in the X axis was causing closely spaced vertical lines in the X parallel sizes of prints.

The problem had nothing to do with the Duet board.  It was a result of some small metal flakes getting into the motor and interfering with the motion of the rotor.  I wrote a separate blog post on that.  That problem was easily fixed, once I knew what was happening, and the X axis now runs quieter than it ever did thanks to the 128:1 ustepping in the Duet board.

Here's the inside of the electronics drawer now that the Duet is in place.  I know, it's ugly, but it's really easy to service, especially now that I have all the wires labeled.  I used this type of label- they are really tough.  I tried using them in a laser printer and found that the fuser heat distorted the labels and they tended to peel apart and even curl off the backing sheet, so I decided to just write on them with a permanent marker instead and had no further problems.  UMMD will get the same type labels the next time I have a reason to open the electronics enclosure.

Inside the drawer- no more 32V supply and DSP driver for the Y axis.  I used a custom splash screen that is displayed for a few seconds every time the printer is powered up.

A Motor "Failure" in a 3D Printer

Troubleshooting 3D Printer Motion Problems

Stepper motors are some of the most reliable machines human beings have ever invented.  And they should be- all they are is some steel, and some magnets spinning on bearings, and some coils of wire.  There are no brushes to wear out, so as long as you don't get it so hot that the insulation burns off the wires or demagnetizes the magnets, a stepper should work for many years, especially in the relatively benign environment of a 3D printer. 

The typical driver chips on 3D printer controller boards don't have enough current drive capability to burn up motor windings of typical motors used in 3D printers, though I suppose it would be possible for one of them to fail shorted and send a lot of current through a motor.  So unless you have a failed driver, it is very unlikely that you have a burned up motor.  If you do have a burned up motor you will be able to tell by its smell, and you will surely have a dead driver chip, too.

What I'm trying to say here is that in general, if you have a motion problem in a 3D printer, the least likely cause is going to be a failed motor.  So look carefully at everything else before you start replacing motors.  Everything else includes cables and connectors (very high failure rates) and driver chips (also high failure rate, especially if you use plug-in driver modules), drive pulleys and couplers, (are the screws tight?) and configuration issues.

If you've ever built a kit-type printer or even read a stepper driver data sheet, you'll have been warned about connecting or disconnecting motors while the printer is powered up.  The problem is that when you connect or disconnect a motor while it's powered, a large voltage spike that can kill the driver chip is generated by the inductance of the motor coils.  Now what do you think happens if you have an intermittent connector or motor cable?  It will connect and disconnect the motor and destroy the driver.  If you have a dead driver, carefully inspect the cable and connectors before you put a new driver in your printer, or you may end up with another dead driver.

An Atypical Failure 

I recently did some long overdue maintenance and mods on SoM which resides at the Milwaukee Makerspace.

I rebuilt the Y axis entirely, eliminating the noisy ball screw and converting back to belt drive.  I also put in a Duet controller and set it up for high microstepping ratio.  That quieted down the Y axis, but then I noticed that the X axis was making a lot of noise that it didn't used to make.  The noise sounded like something was vibrating, and it left closely spaced vertical lines in X axis parallel sides of prints.  Ugh!

This fine pattern was showing up on X-parallel sides of prints because the X axis motor was vibrating.

When I inspected the X axis and noticed some belt dust on the motor mount, I didn't think much of it. The machine has a Gates belt and a standard, cheapo GT2 drive pulley on the motor, both of which have been on there for years.  I disconnected the belt and tried moving the extruder carriage along the linear guide- it was as smooth as could be.  No problem there.

I tried running the motor without the belt and sure enough, it was vibrating.  I verified that the screw terminals and connectors were in good condition and tested the cable with a meter and found no issues.  I thought maybe it's the driver, so I swapped driver on the controller board- nope- the motor kept vibrating.  It had to be the motor itself.

I tried turning the motor shaft with my fingers and found that it took an unusually large amount of force to start it turning.  That's not right!

In SoM, the X axis motor was mounted hanging below the X axis, with shaft and pulley pointing up.  I thought that maybe some of the belt dust I saw got into the top bearing in the motor and was gumming things up.

I replaced the motor with another, pulled from an old stratasys printer mechanism.  It ran almost completely silent again, like it used to, so I did an autopsy on the failed motor.

The failed motor, with belt dust.
Cover removed- pretty simple...  There's very little clearance between the rotor and the stator pole pieces, so it wouldn't take much to jam it up.

All the pieces laid bare. I tried spinning the shaft on the bearings and it spun freely.  So much for the belt-dust-in-the-bearings theory.
I tried spinning the bearings and expected the top one to be sticky.  Nope.  Both spun freely.  Hmmm.  I inspected the rotor and found a couple small ferrous metal flakes (sorry, I didn't take a picture) stuck to the magnetic rotor.  After carefully removing the flakes and inspecting the entire rotor under a microscope, I blew out the inside of the body of the motor with some compressed air and then put the whole thing back together.  It spun freely like it used to, with just the normal, gentle bump-bump of the magnetic detents.  I suspect that metal flakes were getting between the rotor and stators and it was jamming things up.

So where did the metal flakes come from?  Hmm.  I think the bearings are the most likely source.  The motor was industrial surplus when I installed it in the printer about 6 years ago.  There's no telling how much use it had seen before I got it, so maybe the bearings are at end-of-life.  I'll order new ones and install them.

If you ever have an axis that starts vibrating a lot, inspect the motor!

A Coin and Wallet Holder for Prius

About a month ago I was driving down the highway when a pickup just ahead and to the right of me slammed into the barrels at the start of a concrete barrier.  That spun him around and I swerved to the left, but the rear end of the truck caught the right side of my car and tore it up pretty badly.  The driver of the pickup suffered a minor injury when his airbag went off, but I came out unharmed and no airbags blew.

My car was a 2008 Audi TT convertible.  I really liked that car.  Unfortunately, it had a lot of years and miles on it so it wasn't worth much.  The body and most of the frame were made of aluminum.  That means you can't hammer out dents or bend the chassis straight.  Anything that is damaged has to be replaced, and that gets expensive in a hurry.  The result is that the repair costs would have exceeded the value of the car, so the insurance company totaled it, wrote me a check, and I had to find a replacement.

My poor car!

I had been planning to sell the TT at the end of this summer anyway, so my plans got moved up a little.  I replaced the TT with a Prius.  I chose the Prius over the available all-electric options mainly because of its ability to haul stuff, reliability (I had a 2007 Prius and it never needed fixing), and low operating cost.  My next car will be electric, after the wheels fall of this Prius.

Yes, it's a big change!  The two cars are on opposite ends of the performance spectrum, but now I'm getting 60+ mpg, which is pretty satisfying in a different way.  I went for the "limited" version so I'd get heated seats and steering wheel, and a decent audio system.  It's also got adaptive cruise control, lane departure warning/assist, blind spot warning, and even parallel parking assist.  It also has a nice big 11" display for the GPS that I can read without glasses.  It's a huge improvement over the 2007 base model Prius I used to own.

New Car, New Problem

I hate sitting on my wallet, and I hate having to dig in my pockets for coins when I order coffee at a drive-thru, so I needed a place to put my wallet and coins when I drive.  The most obvious place in the Prius is the center console that has a tray that sort of works, but it's pretty easy to spill the tray inside the console, and then you have to dig all the coins out from the dark abyss that is the console's interior.  As the cowboy said in the Big Lebowski, it's "Darker than a black steer's tuchas on a moonless prairie night."

This is the console with the tray full of coins and my wallet.  Yes, that's my wallet- it's made from polyester and kevlar sail cloth, not duct tape.  I chose it to be easy to spot in a dark bag or console in a car.
There's a pocket in the driver's door, but I wouldn't want to take a chance on my wallet falling out when I open or close the car door, and it doesn't seem like a good place for coins.

There are two cup holders up front, but I'd rather keep those available for drinks.

The glove box is too long of a reach.

I decided to go with the center console but not the tray that was already in there.  I wanted the coins organized and easy to grab without having to move my wallet out of the way first.

I checked Thingiverse and Youmagine for other people's designs and came up with nothing, so I set about designing it myself.

Designing A Coin and Wallet Holder

Step 1- measure everything.  I looked up US coin specs and got the dimensions and bumped the diameters up by about 0.7 mm so the coins would very easily fit into their slots.  I also measured the tray in the console (130 mm wide) and my wallet.

Step 2- layout.  I wanted the coins stacked vertically so they'd stay put and I wanted to drop my wallet into a vertical slot so it wouldn't take up too much lateral space in the console.  Everything had to be easy to reach and remove, and I didn't want crud to accumulate in the bottom of the wallet slot, so I left it open.  The wallet hangs over the thin back edge of the holder, and I put in a wide enough slot that it can easily hold even George Costanza's wallet.  The coin slots are 40 mm deep, so they'll hold quite a bit of change.

A Fusion360 render of the coin and wallet holder.

Step 3- print it.  This is going to be in a hot car so no PLA!  I printed it in ABS, 15% infill density, 0.2 mm layers, and turned on support material for the tabs at the top.  

Printing on UMMD.  The image is one of a sequence captured at 2 minute intervals using my old cell phone camera to monitor the printing process.  I printed in fluorescent green so it will be very visible in the darkness of the console.
More coins than I'll ever need, but if I ever forget or lose my wallet, enough to get a sandwich or a couple gallons of gas.

When it finished printing I loaded it with about $8.50 in coins and tried it in the car.  You have to rotate it a little to get it past the console's top cover, but once it's in, it's in.

It fits with or without the original tray and holds about $8.50 in coins.

The Fusion360 CAD file for the coin and wallet holder is located here.  You can download and edit the file or just export an STL file to print it as-is.

Update- Already!

After using it for a couple short trips in the car, I found that unless I was very careful lifting the wallet out of the holder, the wallet tended to pinch the holder and lift the whole thing.  It would be easy to spill the coins doing that!  I don't want to have to be careful- I want to just grab the wallet when I get out of the car. 

I added a printed plastic loop to the bottom of the wallet slot to allow me to drop the wallet into the slot and have it lifted high enough that it was easy to grab without lifting the coin holder.

Printed loop added to the wallet slot to lift the wallet a little higher than the coins.

The loop printed in about 20 minutes.  I solvent welded it to the coin holder with a couple drops of acetone.  Perfect!

A couple drops of acetone weld the loop to the coin holder.

Now the wallet stands up above the coins, making it easier to take it back out when I get out of the car.

The wallet fits easily and doesn't interfere with closing the top of the console in the car.
Putting it in this way risks spilling coins if you carelessly remove objects from the console.

Putting it in this way protects the coins from spilling.  They're still easy to take out when you want by sliding the coin holder back a little.

Wait a Minute!

After I designed and printed the coin and wallet holder, it occurred to me that there's no good place to put my sunglasses in the Prius.  Hmmmm.  As we used to say in high school drafting class, "back to the drawing board!"

I'll make another post when I come up with something.

Monday, August 5, 2019

Putting An Old Cell Phone to Good Use

Several months ago I cracked the screen on my 3 1/2 year old Droid Turbo cell phone, and recently, the battery which used to power the phone for two days on a charge, got down to about one day's use per charge.  The cracked screen stopped buttons from working on some applications.


It was time to replace it, and I wanted to get away from Verizon's crapware, slow updates, and expensive service, so I opted for a Google Pixel 3 with Google Fi service.  Like the Turbo, I expect to be using this phone for at least the next 3 years.

The Droid Turbo's camera wasn't bad except for some pincushion distortion in its images (see video, below), and is very high resolution (24 MP stills, and 1080p video), so I didn't want to throw it in the trash.  I already designed and 3D printed adapters to mount it on a couple microscopes and a telescope so it would still be useful for those functions.

Droid Turbo with microscope adapter from Mark Rehorst on Vimeo.

Droid Turbo mounted on surgical microscope.

Lot's of magnification!

This is how I inspect 3D print quality.  It's amazing what you can see with a little magnification!  Those are 0.2mm layers of a 3D printed vase.

The same type of adapter works on a telescope.

Shot with Droid Turbo mounted on a Meade ETX 90 telescope.

The telescope and microscope adapters are located here:

At the makerspace we have a couple RPi based cameras set up to monitor 3D printers.  They're pretty good but relatively expensive and pretty low resolution compared to my old phone camera.  I thought it would be nice to be able to monitor UMMD with a high resolution camera, so I decided to make it work.  I needed a hardware solution to mount it on the printer where it could see what was going on, and a software app that would let it take pictures every minute or so and post them to a web page.


As usual, I started by creating a simple model of the phone, then took the phone to the printer and measured the angle that gave the best view of the print bed (about 35 degrees from horizontal).  Next I played with several designs of 3D printed mounts and kept simplifying and ultimately decided that this was not a job for a 3D printed part.

I have some 65 mm suction cups that stick very nicely to the front doors on my printer, so I decided to use them.  They are designed to mount on thin, flat, sheet, so I decided to use some of the 1.65 mm aluminum sheet I have in my materials collection.

I thought about making printed brackets to hold the phone (I have a printer, so all problems are solved by printing, no?) to the sheet aluminum but realized that the easiest thing to do was just bend the aluminum to the appropriate angle and put Velcro tape on the bracket and phone.  Here's what I ended up with:

It couldn't be much simpler than this.  The suction cups will stick to the smooth polycarbonate front doors on UMMD and velcro tape will hold the phone on the bracket.

And here's what it looks like in real life.  I made the whole thing, mostly using hand tools, in about 30 minutes. I stuck it to the printer's door and left it there for a week and it didn't fall off, so I think it's going to work well.

Here it is, with a perfect view of the bed plate.  When it's actually being used to monitor prints I'll plug the charger into the phone's USB port.
Here is a drawing with the dimensions of the aluminum bracket.  I folded it about 40 mm from the top edge in the photo above.  The angle of the fold was chosen to provide an entire-bed view with the phone's camera and the way my printer is set up.  You may need to do something else for your phone and printer.

Now that I had the hardware ready to go, it was time to add the software.


I don't want to watch my printer print via my computer or phone any more than I want to stand next to it and watch it print, so I don't need a video feed.  I just want to take a high resolution photo every few  minutes and upload it to a web site (or Google Drive, etc.) where I can take a look at it to check print progress.

I searched the Google Play store and found a whole bunch of apps that let you use a phone as a baby monitor or security camera.  I loaded and tested a few of them.  They were all videocentric, and all required a subscription to get rid of the tons of ads that display all over the apps.  Yuck!  I was so disgusted that I won't bother to list their names here.

I was ready to start studying App Inventor so I could write my own app for this, but then, just by chance, I posted a question at slashdot and someone pointed me at an app called Open Camera.  It's a FOSS app that allows you to control the camera in an Android phone.  You can set it up to snap a photo at specified intervals and most importantly, store the photo wherever you specify, with a name you specify, in a location that will automatically back it up to Google Photos or Google Drive.  Woohoo!

When you want to check the print progress, you open Google Photos from wherever you are and take a look.

Open Camera is on the Google Play store, it's free, and there are no ads!  Instructions and more info are available here.

I went into settings, selected "use storage access framework", then selected save location "camera" to put images in the normal camera save location so they'll get backed up via Google Photos.

Then I set "repeat" to "unlimited", and repeat mode interval to 5 minutes, and finally turned "timer beep" off.

I selected one of the high res modes for the camera.  Now when I power up and start the Open Camera app, I see the print bed, start the print and then touch the shutter button on the camera.  That takes a photo immediately and starts the interval timer that conveniently counts down on the camera screen.

Turn on "back up and sync" in the Google Photos app so that the images from the phone get uploaded to Google Photos.  You can select specific folders to back up, so even if you save the images in a "nonstandard" folder on the phone, you can still get them backed up.  Each image is uniquely named based on the time and date, so you can string them together to make time lapse videos if you want, otherwise just delete them after you've seen what you want to see.

There may be a way to fix the save-file name so that it just overwrites and you don't end up with a series of images...


Already!  Someone at the makerspace (thanks Dan!) pointed me at this:  For those of you with slightly more advanced kung-fu, there's a free app called Rsync Wrapper that can be used to schedule repetitive jobs like uploading a photo (or any other file) to the web server of your choice, so you don't have to rely on Google Drive or Google Backup and Sync to do it.  Just like Open Camera, no ads, no subscriptions... just goodness!  Woohoo!

I've said it before and I'll say it again:  find and join your local makerspace!

Update again!

Folks at the Duet forums recommend the IP Webcam app which gives video or high resolution still images, and can be viewed on local network or can be linked with Ivideon for cloud broadcast to access video from anywhere.  There's a pro version for only $4 that eliminates ads.

Here's one of a recent sequence of images captured by Open Camera and saved to my Google Photos account.  I had some problems when I started trying to use Open Camera- it would take several pictures then stop.  I went into settings and turned off the display maximum brightness option and that seems to have fixed the problem.  When the display was on full brightness I think the phone may have been overheating and shutting down to protect itself.

Making Movies

You can turn an image sequence into a video file with some free programs- in the past I have used ImageJ and VirtualDub.  Just point them at the first file in the sequence and they can easily create a timelapse movie from the still image sequence.  There's more info on software for this sort of conversion here.

Be careful about making movies from long sequences of high resolution images!  You may end up with a gigantic video file.  This can be prevented by batch converting the high resolution images to lower resolution images before you make the movie.  Irfanview is a great photo viewer/editor that can do the batch conversion for you.

The original resolution of the photo above was 3264 x 2448 pixels.  I downloaded the sequence of images to my computer, batch cropped and reduced the resolution to 600 vertical pixels.  Then imported the sequence into ImageJ and used it to spit out an .avi file.

In IrfanView's file menu, select Batch convert, point it at the first file in the sequence, check the "advanced options" box and open the advanced options and specify the new resolution.  You can also change the file names if you want.

Tuesday, July 16, 2019

An Electrostatic Nanoparticle (?) Precipitator for UMMD

This is a project I started and then abandoned.  I recommend you don't do anything similar, and I don't mean "nudge-nudge wink-wink don't do it".  I mean really, don't do it.  The idea was to capture particulate emissions from my printer using an electrostatic precipitator (ESP).  As the project progressed, I kept reading more and more scientific papers about the process and about the type of device I was using.  In the end, I came to the conclusion that an ESP that emits ozone is a very bad way to capture nanoparticles because the ozone will react with everything in the environment and may produce nastier stuff than it captures, including more nanoparticles!  I have added links to many of the papers I was reading at the end of the post.

There are plenty of harmful things you can inhale that have no odor, and plenty of unharmful things that do have an odor.  Absence of odor is not a reliable indicator of the efficacy of a filter unless all you're trying to do is eliminate odors. 

What follows is stuff I was writing as I was working on the project:

In the last few years, there have been several research studies of the particulate and gas emissions from 3D printers (see the list below for some papers of interest), many suggesting unhealthy levels of both, especially if you print ABS, though at this time the long term health effects are unknown.

As a result, a lot of people are trying to make air filters that will capture the scary nanoparticles and volatile organic compounds (VOCs) produced by 3D printers.  Most go the route of using HEPA filters made for vacuum cleaners to capture particles and activated carbon filters to capture VOCs.

The one thing they all have in common is a lack of any objective measurements of the results.  Instruments that can count nanoparticles in the air are uncommon, expensive, and few people know how to use them well enough to get valid results.  So amateur attempts to mitigate 3D printer produced environmental air pollution is a guessing game at best.  And no, your nose is not an adequate instrument for testing, unless your only measure of success is elimination of odor.  Maybe your filter works, maybe it doesn't.  Maybe it captures the nanoparticles, or maybe it only captures the bigger particles that are currently assumed to be less harmful.

A different approach

I found a few research papers on air scrubbing systems that are used to remove nature's nanoparticles, commonly referred to a viruses, from the air in clean rooms and research facilities.  They use a combination of electrostatic precipitation (ESP) and "soft" (low energy) X-rays to electrically charge the particles and remove them from the air.  ESP's are commonly used to remove dust from the air in homes and commercial buildings, and to scrub particles from smoke stacks in industry.

In one paper, the author made comparative tests of the efficiency of electrostatic precipitation alone vs electrostatic precipitation plus soft x-rays.  He tested it at different voltages in the precipitator and found that above about 8kV, the ESP alone approached 100% efficiency at capturing the nanoparticles.  At lower voltages, the ESP alone wasn't so efficient and the soft x-rays, presumably because the tinier particles don't always get charged in the ESP, pushed the efficiency back up to 100%.

ESPs can be made very inexpensively.  Why would anyone want to go to the trouble of adding the soft x-rays, greatly increasing the expense of the system?  At the very high voltage where the ESP is 100% efficient at particle capture, there will be some corona discharge (sparks).  That corona does a couple things.  First, it appears that it manages to apply a charge to even the tiniest nanoparticles so they can be removed from the air, hence 100% efficiency at particle capture.  The other thing it does is produce ozone.

Ozone is triatomic oxygen and is reactive with many things in the environment including VOCs.  It also makes up a pretty large part of the brown haze in the air over cities on polluted days and isn't very healthy to breathe.  Ozone is commonly used to remove odors from homes that have had fires, gruesome criminal activity, and unfortunate accidents that result in bad smells caused by VOCs.

Oxygen prefers to be O2, not O3, so ozone happily gives up the extra oxygen atom to almost anything nearby that's willing to accept it.  That means ozone is unstable and and has a half-life of just a few minutes.  As temperature increases, the half-life decreases, so inside a heated 3D printer the ozone produced won't be around for long.  Hopefully, the extra oxygen will attach itself to VOCs, breaking them up, instead of attacking the rubber drive belts.

ESP construction

The image below shows the construction of the ESP used in one of the papers I've linked above and below.

Diagram of ESP with Soft Xray emitter used in this study.
It's just a metal tube with a wire running down the center, and has I/O for air flow.  Pretty simple.

How I built It

I chose to make a similar thing, but without the X-ray emitter.  I arranged a 40mm fan at the end of a piece of metal pipe (the collecting electrode) about 32 mm in diameter, and a thin wire down the center for the negative electrode.  I used a 12V to 20 kVDC converter, purchased for $10 via ebay, to provide the necessary electrical charge, and stole 12V from one of the DC-DC converters in the printer that I set up to do stuff like this.

I wanted the whole thing to be easy to clean, so I built it so that the pipe could easily be removed without having to do any major disassembly.

After a few failed and suboptimal attempts, I settled on a design printed in six parts.  There's a mounting bracket to hold the assembly on the printer's Z axis frame, an end cap, spring bar, a HV mount, a HV contact, and a fan mount.

The bracket has a ridge that fits into the frame t-slot and there's a single screw/t-nut to hold it in place.  It has slots for zip-ties that will hold the rest of the assembly in place.

The bracket screwed to the back of the Z axis frame and waiting for the rest of the assembly to be mounted.

The end cap fits on the top end of the pipe and holds the spring bar that puts tension on the central wire electrode.  The end cap and wire connection have to be removed to take the pipe out for cleaning.

This is the end cap and spring bar that is used to tension the central wire electrode.  The spring pulls on the wire and prevents is from touching the pipe.

The HV mount is a close fitting tube into which the pipe electrode slides, and also mounts the HV converter module.

The HV contact part fits over the pipe holder and the pipe and has a spring that makes contact with the pipe when it is inserted into the tube.

The HV contact has a spring inside that touches the pipe when it is inserted into the assembly.

Finally, the fan mount has the electrical connection for the central wire electrode, an air baffle that forces the air coming into the pipe to spin, and holds a 40 mm fan to blow air through the whole assembly.

This is the fan mount.  The blades force the air to spin as it flows through the pipe.  The negative electrode wire feeds through the hole in the center.
How do you mount a square fan on a round tube?  Fusion360 makes it easy using the loft function.  I drew the square-with-rounded-corners fan shape on one sketch and about 40mm above it, I drew a circle that would become the outer surface of the printed fan and tube mount.  Then I used the loft function in the "create" menu to connect the two as a solid, and finally, I used the shell function under the "modify" menu to hollow it out.  The resulting print varies smoothly from the square fan to the round pipe.  I used the same function to make the blade inside the fan mount that twists the air flow.

Here's the assembly set up for initial testing.  Left to right- 40mm fan, fan mount, HV contact, HV mount, end cap, spring spring bar.

There were a couple problems to deal with in this design.  I needed the pipe and tube to be easily removable for cleaning so I couldn't solder the HVDC wires to them.  Making the electrical connections foolproof and reliable was a bit of a challenge.  Also, I wanted it to be very easy to reinsert the pipe even if I couldn't see down inside the assembly because of its position in the printer.  That meant I had to design it to guide the pipe into the correct position to make electrical contact without effort.  I ended up with a spring as the electrical contact for the pipe.  It sits in a groove at the bottom of the pipe holder and when you push the pipe into it, the spring contacts the pipe that was sanded to bare metal.

The central wire electrode is just soldered to the HV lead coming from the converter module.  The end of the wire has a loop that hooks onto a spring at the far end of the pipe.  The spring is held in place by a printed plastic end cap and the removable spring bar.

Here's a look down the pipe with the HV converter running.  You can see the purple glow of the corona discharge along the central wire electrode.  It produces a little bit of fresh-smelling ozone that will hopefully break down VOCs from melting plastic in the printer.

Does it work?

I'll be printing ABS with it over the next few months and see if there's any ABS-stink while and after it runs.  I'll run a clean rag through the pipe to see what sort of particulate stuff it manages to pick up.  I don't have anything to count nanoparticles in the air, so this will be like everyone else's build-it-and-hope-it-works approach.

Relevant articles (some may be pay-walled):

Acute health effects of desktop 3D printing (fused deposition modeling) using acrylonitrile butadiene styrene and polylactic acid materials: An experimental exposure study in human volunteers

Characterization and Control of Nanoparticle Emission during 3D Printing

Ultrafine Particle Emissions From Desktop 3D Printers

Characterizing 3D Printing Emissions and Controls in an Office Environment

Destroy VOCs (Chemical Pollutants) at their Source | SanusAer Ozone Generators

Saturday, June 29, 2019

3D Printable Wago 221 Lever Nut Mounting Blocks

I like to use Wago 221 lever nuts in place of screw terminals and have started replacing screw terminals in my 3D printers with them.  To that end I designed a few printable mounting blocks to hold single and multiple lever nuts.

The Wagos come in 2, 3, and 5 wire parts (221-412, 221-413, and 221-415), handle 24-12 gauge wire, handle 32A up to 450V, and have multiple safety certifications (unlike the much cheaper Chinese made knock-offs).  Full specs are available here.  When I first got them I inserted some wires and then pulled at them and was unable to pull any of the wires out. They really hang on tightly to solid and stranded wires.  All the wires will connect together in each block.  The 5 wire blocks are great for making DC power distribution blocks in a 3D printer, as I did in UMMD.

I have printed the 2x2 and the 221-415 mounting blocks using ABS.  The other blocks are based on the same dimensions so they should work fine.  You insert the back end of the lever nut as far as it will go into the mounting block, then press down hard on the open end and it will snap into place.  They fit and hang on tightly so there's little danger of the lever nuts coming out of the blocks, and even if they do, the bare wires are entirely enclosed within the lever nuts, so nothing is going to short.

Here's the 1x5 mounting block with a 221-415 block installed.

Yes, they're pretty small.

Here's the 2x2 mounting block.  It uses 2 screws to mount on a flat surface or t-nuts to mount on t-slot.

Here are two vertical mounting blocks that hold 4 of the 221-412 lever nuts.  The one on the left has an 8 mm tang that prevents rotation in a t-slot (so you need to use bed-only support material when printing) and uses a single t-nut to hold it in place.  I used that one to make bed heater and thermistor connections in UMMD.  The one on the right is intended for mounting on a flat surface.
The CAD file is easy to edit for any combo of lever nuts you want to make.  You can DL the Fusion360 CAD file for the mounting blocks here.