Thursday, May 7, 2020

More This is What You Can Do With a (Tall) 3D Printer

Another Lamp!

Ever since I made the first lamp that my son took to his dorm room in college, my wife has been after me to make one for her. COVID-19 isolation has granted me some time to get caught up on projects like this...

First, The Shade

I created the pattern using ChaosPro and saved a sequence of images. The shape is a power 3 Julia set fractal with one of the parameters swept from a negative to a positive value. I imported the image sequence from ChaosPro into ImageJ and saved it as an STL file, then loaded the STL file into PrusaSlicer and scaled and sliced it to fit on UMMD.  It was printed in 0.25 mm layers using transparent PETG, with 6 solid bottom layers, 3 perimeters, and no infill or top layers. If I recall correctly, it took about 24 hours to print. It is 503 mm tall and weighs 430 grams.

One of the images from ChaosPro that was used to make the lamp shade.

The shade is 503 mm tall, transparent PETG.

The top of the shade.

The surface of the shade has a very interesting texture that results from the limited resolution of the math that generates the fractal shape. There were a LOT of very fine cob-web like hairs because I used PETG to print. I pulled/clipped off the larger ones and "disappeared" the finer ones with hot air from a heat gun. There's still a little cleanup left to do.

After printing I cut a hole in the bottom of the shade to match the diameter of the LEDs on the circuit board from the light bulb. 

The hole in the bottom of the shade matches the diameter of the LED board from the light bulb.

A test using this shade with a long warm white LED bulb.  It has a nice look to it, but will need some work on the base.  I may make some of these.

The Light Source

I used a wi-fi controlled Feit Electric multicolor bulb that was rated for 1600 lumens. I took apart the bulb and found the usual two-circuit-board construction- one for the control electronics and the other for the LEDs. The base of the bulb is made of aluminum and acts as a heatsink for the LEDs.

This is the bulb I used.  On sale for $17 when I bought it.

LED board from the lightbulb. This board plugs into the controller board using the two 4 pin sockets on either side of the slot. The slot is for the wifi antenna that stands off the controller board. The blob of putty was covering the controller board- I suspect it was intended to be thermal insulation to protect the controller from the heat of the aluminum heatsink in the base of the bulb. The six big LEDs around the slot provide all the colors, the rest are for white light.

Inside of the bulb, putty and LED board removed - the controller board fits in the plastic covered aluminum base.  The white thing in the center is the wifi module. This board connects to the LED board via the two sets of four pins above and below the wifi module.

I wanted the light source to reside at the very bottom of the shade, pointing straight up, so the entire shade would be lit, and so that the light shining through the open top of the shade would make a nicely shaped pattern on the ceiling. That meant I had to separate the circuit boards from the light bulb and figure out how to mount them in some sort of base for the lamp. I also had to figure out how to fit some form of heat sink into the base so the LEDs wouldn't burn up.

The Base

The base was designed to hold the two circuit boards and heatsink.  It is designed in two pieces- a top plate to which the LED circuit board and heatsink mount and the bottom that holds the control board and power switch so the lamp can be turned on and off even if wifi isn't working properly. The bottom of the base is open to allow some air flow, though there probably won't be much. Time will tell if the heatsink I made is adequate.

Prototype of the base to check fit.  I printed this while I waited for delivery of the white PETG that I intended to use for the final design.

Top plate prototype.

The top plate has a hole that's just big enough for the LEDs to fit. The LED circuit board is trapped between the printed top plate and the aluminum plate heat sink. I put a couple dollops of heat transfer compound on the LED board before final assembly. 

The final base with LED board in place.  Notice the brown spots where the printer deposited charred blobs of PETG. Fortunately, they are covered by the shade.

Underside of the base.

Wiring between the controller and LED boards.  The aluminum plate is the heatsink for the LED board.

Clean looking back of the lamp.  I think the power switch came from a coffee maker.

Here it is.  The shade is attached to the base with some clear silicone.

The LED board has two four pin sockets to connect to pins on the controller board. I soldered wires to the controller board pins, covered them with heat shrink tubing, and then inserted the stripped wires into the appropriate connector holes on the LED board. Then I squirted a drop of hot-melt glue on the back of each connector to keep the wires from pulling out.

The Result

I am very happy with the way this turned out, but I'm already thinking of some improvements I can make in future projects like this one. First, PETG is good material to use for the shade, but white PETG is not so great for the base.  PETG has an annoying tendency to build up on the nozzle and then leave charred globs on the print at the worst possible locations, usually on the front of the print where it will be seen. Maybe I need to work on that nozzle wiping project a bit more... I think dark colors should be OK. I want to add some weight to the base to improve stability, too.

I'll probably print with the appropriate sized hole in the bottom of the shade for the next one, instead of cutting the hole after-the-fact.

The image projected on the ceiling by many LEDs shining up through the opening at the top of the lamp shade.

The lamp makes a very nice pattern on the ceiling as expected, and lighting from the very bottom really does light up the entire shade.  When set for white light at full brightness, it's almost too bright.  Fortunately, you can dim it via the wifi app for iPhone and Android.

Thursday, April 23, 2020

Fancy, No-Hack, Layer-Synchronized Time Lapse Videos of 3D Prints

A while back I wrote up the method I use to monitor 3D prints and even make time lapse videos. I use an old cell phone with a cracked screen and an Android app called Open Camera to snap pictures at specified intervals. Google Photos backs up the images as they are snapped so they can be viewed on any web browser. When the print is done I batch scale and crop the pictures in Irfanview, and finally turn them into a timelapse movie using ImageJ.

Since the Open Camera app is snapping pictures based on time interval, the extruder carriage appears to bounce around all over the place while the movie plays. I use lift-on-retract, so the bed bounces up and down in the video, too, like this:

If you want to snap a picture without the extruder somewhere over the print, you need to do two things- move the extruder carriage away from the print and then trigger the camera. Moving the extruder away from the print is easy- use some custom layer-change gcode in the slicer. If you trigger the camera immediately before or immediately after a layer change, the bed will not bounce in the video. The trick is in triggering the camera once the extruder gets to wherever you send it.

If you're using a phone (or some SLR cameras) to take the pictures, the semi obvious answer to triggering the camera is bluetooth. A couple years ago I got a free selfie-stick (remember those?) with a little Mooni handheld bluetooth button to trigger a cell phone camera. I didn't think much of it at the time and it ended up sitting in a drawer for the last couple years. But now I have a use for it! If you do a search for "bluetooth camera shutter button" you'll find dozens of similar things available from $5-20.

I continue to use Open Camera, even though layer synchronized time lapse doesn't need its intervalometer function, because it has both exposure and focus lock capability, not found in the native Android camera app in my Droid Turbo. In the video above, I did not set the focus lock and you can see the focus changing throughout the video, mostly depending on where the extruder carriage was in the frame when each picture was captured.

Three Steps to Success

Step 1:  Make sure your bluetooth button works with Open Camera on your phone/camera. I paired the button with the phone, started Open Camera, and pushed the button.  It worked!  That was easy.

Step 2: Figure out how to drive the bluetooth button device from the printer's controller. 

I recently posted about the very high precision of optical endstops and wondered about applications for rehoming the extruder at every layer change.  Maybe you could wipe the nozzle clean, detect layer shifting, etc.  Now there's one more use- trigger a camera so you can make fancy time lapse videos in which the print appears to grow out of the print bed with the extruder nowhere near the print.

I thought about chopping into the bluetooth button's PCB to add some wires but then I had to figure out how to get a signal out of the controller on every layer change, after the extruder was moved away from the print.

Then it occurred to me that there's a much easier way to go - just mount the bluetooth button in a location where the printer mechanism can push it.  No weird configuration in the controller and no wiring hacks needed, just send the mechanism to the button using custom gcode on layer change in the slicer. It can, but doesn't have to be, the home position.

Step 3: Figure out the best place to mount the bluetooth button on the printer and how it will get pushed. I designed and printed a bracket to hold the bluetooth button on the right side Y axis corner pulley block, and a corresponding "bumper" on the right side X axis pulley block. The bumper has a screw adjustment to set the Y position where the button gets pushed over a few mm range. In operation, at every layer change, I'll move the extruder to a specific X coordinate, then home the Y axis. When Y hit's home, it will also push the button and snap a picture.

It took a couple quick test prints to get the shape and size of the bracket to fit the bluetooth button, but once it fit, I finished the bracket design and printed it.  Simple!  Here's the Fusion360 model of the Mooni button and the slot that holds it. You'll have to add whatever it's going to take to mount it on your printer.

Mooni bluetooth button mount and pusher mounted in UMMD.  The Mooni button just drops in the slot.

Custom GCODE

I can send the extruder to any X ordinate (left-right) because it has nothing to do with pushing the button to make the photo sequence, but the extruder has to go to the back of the printer (Y=150), which means sending the entire X axis back there, in order to push the button. I could just move the extruder to the back of the printer without sending it to a specific X ordinate, but then it would be bouncing back and forth at the rear of the printer in the timelapse videos. I decided it would be best to send the extruder to the center of the X axis (X=0 in UMMD) to minimize the time it spends traveling, and so minimize print quality issues because of the relatively long time the extruder spends away from the print.  It also makes for nice symmetry in the photos and finished time lapse video, and my brain likes symmetry.

I created a custom printer profile (called "UMMD TL") in PrusaSlicer for making these movies that includes this custom gcode in the "after layer change" box:

G01 X00.00 Y145.00 F9000        ; go to (0,145) at 150 mm/sec
G01 Y150.00 F1200       ; go to (0,150) at 20 mm/sec and push the button
G04 P300                       ;  hold button for 300 ms
G01 Y145.00 F1200       ; back off the button
G04 S2                           ; wait 2 seconds for the picture to be taken
G01 F9000                     ; go back to the print at 150 mm/sec

If your printer's origin is located elsewhere, just set up the appropriate coordinates.  The 2 second delay is there because there seems to be a lot of variability in the time between pushing the button and actually snapping the picture. 

Note: I didn't use a G28 Y command to home the Y axis because that calls the Y homing macro in RepRap Firmware which moves quickly to the home position, then backs up and then slowly moves to home again. I didn't want that type of behavior for this.

As you will see in the layer synchronized time lapse video, below, moving the nozzle away from the print for a few seconds leads to some blobbing at the start of the new layer. The retract and unretract settings in the custom printer profile have to be tweaked to eliminate that problem.

Other Considerations

Making pictures this way adds a total of 3-5 seconds per layer. If the print is 100 mm tall and made of 500 layers, it will add 2500 seconds, or about 42 minutes to the print time. The time taken to snap a picture will depend on how large the print is, where it's located on the bed, and how fast you can move the extruder carriage out of the way to take the pictures.

When you move the extruder away from the print, you want it to do so after the filament retracts (that's why the custom gcode goes in the "after layer change" box).

Open Camera allows you to select the resolution of the pictures right up to the maximum that the phone is capable of. That means you can see details in the print, which can be very useful. It also allows you to crop to a specific area of the still images to make your time lapse video. But, you have to be careful about selecting the resolution. If Open Camera runs out of memory to store the pictures, it stops making them. So do a little math- if your phone has 8GB of memory available, and your pictures are 15 MB each, you'll only be able to make about 500 images before the memory fills up. The same is true of Google Photos- the space to store images is limited by your account with Google. Choose a resolution to ensure that the phone/Google Photos won't run out of space before the print finishes.


When it's time to make a time lapse movie of a print, I slice using the custom time lapse printer profile, connect the bluetooth button to the phone, slide the button down into the bracket, mount the phone on the printer, start Open Camera, lock the focus and exposure, and start the print. At every layer change, the extruder goes to (0,150) which is the rear of the printer at the center of the X axis. When the Y axis reaches 150, it pushes the button and snaps a picture. Printing then resumes.

When I'm not making a layer synchronized time lapse movie, I just slice with a "normal" printer profile and leave the Mooni button out of the bracket. The screw that bumps the button has nothing to bump so everything behaves normally.

The Mooni button doesn't seem to mind the 50C enclosure temperature when I'm printing ABS.

Making a Movie From an Image Sequence

Once I have a sequence of images in the phone/camera, I copy them to a folder in my PC and use Irfanview (free) to batch process the images- crop, resize, color correct, rotate, etc., in one operation. Finally, Import the image sequence to imageJ (free) and Save As an avi file. That's it!

The Result

Here's an example of a layer synchronized time lapse video made using this setup:
As you can see, there's some interesting looking blobbing taking place at the back of the print.  I need to tweak the extruder retract and unretact settings to eliminate that.

You can expect to see more of these videos in future blog posts.

The user manual for the Mooni button is here.

Tuesday, April 21, 2020

COVID-19 Printing Projects

People all over the country are printing stuff for healthcare workers to help make up for shortages of PPE even though we have the GREATEST healthcare system in the WORLD! 
I have been doing some printing with a bunch of people from the Milwaukee Makerspace.

Bias Tape Folders

First it was bias tape folders for people sewing face masks. People were printing a design from Thingiverse.  I loaded up the bed and printed 50 of them in one go.  It took something like 20 hours. The design was excessively solid- like you could drive a tank over it.  Unfortunately I didn't keep any photos of them printing.

The original bias tape folder design from Thingiverse.  This is used to fold thin strips of cloth so it can be sewn to the edges of masks. It will never have any real mechanical force applied, yet the walls are 2 mm or so thick.

I redesigned it using the basic dimensions I pulled from the STL file on Thingiverse (why don't people post the CAD files?).  The new design used much less plastic and printed much faster because most of it is just 1.2 mm thick perimeters, so 3 passes with a 0.4 mm nozzle.  I printed a couple batches of 77 parts at a time, about 12 hours per batch.

My bias tape folder design.

The new design is more than solid enough to do the job of folding strips of cloth and will easily withstand being stepped on, though I can't say the same about the foot doing the stepping!

77 at a time.  I probably could have bumped it up to a 9 x 13 array.


Next was earsavers for people who wear the masks with elastic ear loops. I know from experience that those things can get pretty uncomfortable. 

Earsaver in use.

I printed a dozen of the preferred design from Thingiverse and it took 2 hours and 28 minutes. I managed to break a couple of them when I tried to pry them off the bed. Looking at the design and the way they print I decided to see if there was a better design out there, so I checked all the remixes on Thingiverse and didn't see anything I liked. 

The Thingiverse design for earsavers.  I can fit 12 on the bed at one time.

It was time for another redesign. There were numerous problems with the original design. It was too thick and inflexible (that's why they broke while I was taking them off the bed), there were many areas where the extruder has to lay down infill, which takes much too long, and there were too many sharp corners, all of which slows down printing.

Come on people!  We're trying to use a slow process (3D printing) to mass produce stuff as quickly as possible. You have to think in terms of how the slicer and printer work to minimize print time.  The forces applied to an earsaver by the elastic ear loops in just a few 10s of grams.  It doesn't need to be thick to do its job, and it's better for wearer comfort if the thing is flexible, and that means thin. If you want it to print fast, you want perimeters only. That means the structure of the print should be a small whole number multiple of the line width. Infill takes a long time, so eliminate it!

I designed the new earsavers so that everything would be a perimeter. I copied the gross dimensions and shape from the original STL file. The ribs are 2.4 mm wide, so 6 passes of a 0.4 mm nozzle at perimeter speed, and no infill. They print in only three, 0.25 mm layers using about 1 g of filament each, and 12 of them print in about 37 minutes (at 150 mm/sec).

Earsavers from Mark Rehorst on Vimeo.

The new design earsavers print in <1/2 the time and use much less filament, and come off the bed without breaking. They flex easily so are more comfortable to wear than the original design.

Here are the Fusion360 CAD files for my bias tape folder and earsaver designs.  You can DL the CAD files or just export STLs.

For anyone building a 3D printer, notice the location of the prints and the skirt in the photo above. You really can print literally edge to edge on the bed without autotramming and auto zeroing if you build the printer right.

Sunday, April 19, 2020

Tube Organizer for the Refrigerator

What are you supposed to do with all those tubes?

We eat a lot of Japanese food in my house. Many of the seasonings that are used in Japanese cooking come in squeeze tubes. They aren't very heavy and they tend to fall down in the refrigerator door shelves and get lost under the taller bottles and cans. 

At my wife's request, I designed and printed an organizer that will keep the tubes upright and can also hold some of the pouches of soy sauce and wasabi (or Taco Bell hot sauce, mustard packets, etc.) that typically come with grocery-store sushi. The shape is narrow so it will fit in the door shelves, but can also be put on a regular shelf in the refrigerator. Initially I designed it without a bottom, but later realized that it will be easier to deal with on a regular shelf if it has a bottom. Then you can just pick the whole thing up and take it to the table when you're eating, and put it back in the refrigerator when you're done.

Normally, when I design anything, I model the stuff that has to fit in the printed part first, but this was so simple I just made a couple measurements of tubes we had in the refrigerator, and the width of the refrigerator door shelves and started drawing.

This is it. About 10 minutes to draw and 5 hours to print at 80 mm/sec.

Overall size is 195x83x52mm. I designed it with 1.2 mm thick walls- just 3 quick passes of a 0.4 mm nozzle, and tough enough to withstand any sort of abuse it might have to endure without being excessively overbuilt. It'll probably hold up fine if you drop it on the floor. It's tall enough to keep things upright but still allow you to see the labels on the tubes.

Here it is on the printer, waiting for the bed to cool off before attempting to remove it. If you try to take it off while the bed is hot you're liable to damage the print.

It used about 37g of ABS filament. 
PETG would probably be good for this print, too. 

And here's the finished print.

The Final Test

This thing is going to hold food and there will eventually be leaks because someone didn't screw a cap on tightly, etc.  Wouldn't it be nice if you could just put the thing in the dishwasher with the dishes? I was curious about whether this thing (or any ABS print) would hold up under the chemical and thermal assaults of a dishwasher so I put it in with a load of dishes and ran a "sanitize" cycle that gets pretty hot.  No problem!  It came out looking perfect- no distortions or cracks anywhere.  Of course, that's just one cycle - the result may be different after 20 cycles.  I'll update in a year or two after many cycles through the dishwasher.

The Fusion360 file is here.

Thursday, April 16, 2020

iHSV Servomotor Information

I recently ordered a couple iHSV42-40-07-24 78W servomotors from China with the intention of trying them in the sand table and probably also UMMD. There isn't a lot of information on these things out there, and I spent quite a while searching, so I decided to place everything I found here so others may be able to make easier use of the motors.

The motors all appear to be made by Just Motion Control in Shenzen, and are sold by many companies that list on ebay and Ali-express. The specific motors I ordered are NEMA-17 size, but the same controller is found on NEMA-23 and NEMA-34 size motors, too.  One manual covers all of them.

The motor driver accepts 5V step/direction/enable signals like many stepper motor drivers, so you can drive these motors using anything you would use to drive a stepper. I spotted this device in a youtube video and it appears to be very useful for anyone who might be playing with either stepper or servomotors of this type:

You can find them on ebay for under $10. There are other parts with similar function, but this type can handle supply voltages up to 160VDC so you won't need a separate power supply to power this device for almost any stepper or servo motor you may be testing. Here's a link to an ebay seller, but it may disappear at any time.

I made a Fusion360 CAD model of the iHSV42-40-07-24 that you can download. It is primarily useful to get the overall size, but details such as the mounting hole spacing, length of the shaft, etc., are accurate enough to design mounts.  When I found differences between the actual motor and the drawing in the manual, I used measurements from the motor itself, so the CAD model is of the specific motors I received from China. As always, what you recieve from China may be slightly different!

Fusion360 model of the iHSV42-40-07-24 motor.

Printed motor mount for the sand table that I designed around the CAD model of the motor. There's an F625 bearing in the top of the mount to support the free end of the motor shaft.

To get optimum performance from the motors, you have to tune them for your specific application. That is accomplished by making an RS-232 serial connection to the motor and then using software that JMC provides to tweak about 100 different parameters.  You can use a USB to serial converter of this type to make the connection, if your computer doesn't have a DB-9 serial port. How do you know what to tune? There's the rub!

Software to tune the motors is here, and here.

I did find some useful info on tuning servo motors at these sites:

I ran into a few youtube videos of people doing various things with the NEMA-23 and 34 versions of the motors. There's a good series of videos, in German, that go into some detail about tuning the motors for a CNC machining application:

Saturday, April 11, 2020

Cell phone Mount #2 for UMMD

Who Needs RPi?

A while back I posted some info about using an old cell phone to monitor 3D print progress.  I used my old Droid Turbo phone with a 24 Mp camera, an app called OpenCamera, and Google Photos to capture the images and make them viewable via any web browser, all without any advertising or subscription fees.

The mount for the camera used suction cups to stick it to the clear front panel of the printer. 

That works fine when I need to keep the printer closed to print ABS, but looking through the cover reduces the image quality a bit. When I'm printing PLA (rarely), TPU, or PETG, I can keep the printer open, so I decided to design a mount that will allow me to put the phone on the printer's frame without the front cover in place.

The New Design

The mount prints in 6 pieces-  3 thumbwheels, the camera mount, an armature, and the frame bracket. It uses a t-nut to mount on the 4040 t-slot frame of the printer.

CAD rendering of the phone mount. The phone slides into the mount and is held securely.  Everything is repositionable. 
CAD rendering of the back side of the phone mount.

The thumbwheels are my "standard" type, that were detailed in this post.

Here is the finished phone mount on the printer:

The camera's field of view captures the entire print bed.

The underside of the phone mount.
Back side of the phone mount.

Another view.  The white dots on the back of the phone are the velcro tape that secures the phone to the original suction cup mount.

Mounted on the printer. This mount would work even when the printer is closed, except that the front slot gets covered by the lower front cover.

You can see what the camera sees here.  In operation the camera will be powered via the uUSB port on the far right edge of the phone.
The Fusion360 CAD file for this design is here- you'll probably have to make a lot of modifications to suit your phone and printer, but it's there if you want it.

I may cut a notch in the lower front cover of the printer to allow this phone mount to be used even with the cover in place.

Here's a high resolution time-lapse video of a 14+ hour print I made a week or so ago.  This one is looking through the front cover of the printer. I reduced the high res images to 720 vertical pixels to make the video.  The only thing I don't like about OpenCamera is there doesn't seem to be any way to fix the focus of the camera, so it tends to hunt a bit and focus on different areas in different frames, especially if the extruder carriage is anywhere near the center of the frame.  Actually, Open Camera does allow fixing the focus- it is one of the options in the settings menu, just not very clearly labeled. In the video below, I did not use the fixed focus setting, but will do so in the future.

Sunday, March 29, 2020

Testing UMMD's New Z Axis Optical Endstop and Differential Screw Adjuster

I recently posted about the optical endstops in put into the X and Y axes and a couple prints that I ran to test them. I also installed an optical endstop in the Z axis, and now it's time to test it.

Two Tests

The new Z axis optical endstop is a unique design that uses a differential screw to enable fine adjustment of the bed position. I devised and ran two tests to see how well it performs.

The first test is simply to check the precision, meaning the repeatability, of the optical endstop. I wanted to know if the bed goes to the same position every time it is homed and if it doesn't, how much the position varies.

The second test is of the differential screw mechanism. It is designed to move the bed 100 um for each full turn of the thumbwheel adjuster over a 2 mm range. The thumbwheel has 10 bumps on it, so if the screw behaves perfectly, each bump represents a 10 um movement of the home position of the bed.  I wanted to find out how accurate it is.

Test 1: Precision of the Endstop

I tested the X and Y endstop precision by running two identical prints, one homed only at the start of the print, and the other rehomed at each layer change. If the precision were poor, the layers of the rehomed print would not stack on each other very well and the print quality would be bad. The result of that test was nearly identical prints indicating that the precision of the X and Y endstops is very high. I expected no less from the Z axis endstop.

For the Z axis homing precision test I mounted a gauge on the printer's frame and moved the endstop down the frame so the print bed wouldn't smash the gauge, then homed the bed, zeroed the gauge, and then moved the bed down different distances and rehomed the bed, checking the home position each time.

Here's video of the test:

As you can see, 8 out of 10 times, the gauge went right back to 0.00 mm, and the other 2 out of 10 times it went to 0.01 mm. That is the excellent performance I expected.

My gauge has a basic accuracy spec of 0.03 mm and a precision spec of 0.01 mm.  Assuming those specs are to be believed, the readings made are at the limit of the gauge's ability to differentiate the position of the bed. 

Test 2 : Accuracy of the Differential Screw Adjuster

For this test, I positioned the endstop and backed out the adjuster screw, homed the bed, zeroed the gauge, then turned the adjuster one full turn and rehomed the bed multiple times.  Each full turn of the adjuster should move the bed 100 um. The thumbwheel on the adjuster screw has 10 bumps, one of them proud of the surface so it is easy to tell when the screw has made a full turn.

This is the differential screw adjuster and optical endstop.  Notice the one tall bump on the thumbwheel that makes it easy to index the amount of rotation applied.

Here is video of that test:

03290007 from Mark Rehorst on Vimeo.

As you can see, when I turn the screw one full turn the home position of the bed moves by about 100 um. I used an ordinary M5 screw that I modified using a lathe and a standard M4 die to cut new threads. The thread pitch probably varies slightly in both the M5x0.8 and M4x0.7 portions of the screw, and the printed plastic parts flex a bit whenever I adjust the screw, which explains the not exactly 100 um behavior, so I am pleased with the result. This makes small adjustments to the bed position very easy compared to trying to do the same with an ordinary M4 or M5 screw that would move the bed 700 or 800 um per turn.

A couple people have suggested that a differential screw would be a great way to move the levelers of a kinematic printbed mount.  You usually have to make very fine adjustments there to tram the bed to the printer's X and Y axes.