Sunday, November 19, 2017

Tangle-Free 3D Printer Spool Holder

One of the common problems in 3D printing is filament tangling on spools.  It is primarily a user problem because the filament comes from the manufacturer in an untangled state.  Improper handling of filament spools is the main cause of tangles.  Whether it should be possible to cause tangles through mishandling at all is a subject for another blog post.

Proper handling means keeping the free end of the filament under control at all times when loading and unloading a spool on the printer.  When you take a spool off, you must thread the free end of the filament through one of the holes in the flanges, or secure it some other way.

There is also a mechanical aspect to the problem.  Specifically, stiff filaments like PLA like to uncoil from the spools and will do so any chance they get, especially when they are fresh and the spool is full.  Most spool holder designs will allow the filament to spring over the flanges which easily results in filament tangling and failed prints.

A few months ago I designed a spool holder that prevents the filament from springing over the flanges by pressing rollers against the flanges.  The spool rests on two bottom rollers and a third roller, at the top of the spool, moves down and locks in place with the twist of a nut.  The rollers turn on F608zz bearings that I had left over from the UMMD build.  The rollers are tapered to keep the spool centered in the holder.

Filament spool holder for 3D printer from Mark Rehorst on Vimeo.

I printed and assembled two of the spool holders, one for use on UMMD and one for use on SoM at the makerspace.  After using them for a while I discovered two problems.  First, filament spool flanges aren't always perfectly round (and neither are 3D printed rollers).  I found that adding a couple rubber bands to pull the top roller down against the spool did a better job of keeping the flanges in contact with the rollers and keeping the spool centered.

Rubber bands were added to both sides to ensure that the top roller stays in contact with the spool flanges.

The other thing I found was that as simple as it is, my spool holder design was too complicated for some people.  I have found the spool holder at the makerspace taken apart on more than one occasion, and a couple times I found a spool mounted on the top roller!

I decided to try to fix that problem.  I redesigned the spool holder based on a design I saw on Thingiverse or Youmagine - I can't find the original as there are literally hundreds of design for spool holders on both sites.  It has 4 rollers instead of 3 and they're mounted on levers so that the weight of the spool causes all four rollers to press against the flanges, thus preventing the dreaded spring-off and resulting tangles.

The new design uses bearings salvaged from hard disk drives- the same type I used in the 3D printed Van de Graaff generator.

Head lever bearings from HDDs

The rollers were printed using single wall vase mode in Slic3r so there would be no seam or little bumps at layer starts/stops.  The printer nozzle was 0.6 mm in diameter and the walls are 0.75 mm thick.  I printed a test piece to get the right size to be a tight, press-fit on the bearings.

Test block used to get the hole sizes to press fit on the bearings.  Holes vary by 0.1 mm in diameter.

One of the rollers in Slic3r.  It used single walled vase mode with inner and outer brims to help keep the part stuck to the bed.  Each roller took about an hour to print.

The lever arms are printed ABS and the roller bearings screw into the plastic.  The pivot bearings (red) press into the levers.

The base was printed using PLA with  10% infill, 2 perimeters, and 3 top and bottom layers.

Here's the base printing.  It used almost the full width of the bed.

And now, here's what you've been waiting to see...

Fits 200 mm spools...

Tapered rollers keep the spool centered.

Fits 160 mm spools, too...

If you have a printer with a large enough bed, you can print this spool holder.  Here are the design files.

Using a Laptop as a Desktop Computer

My 9 year old desktop PC has been having trouble keeping up with my CAD and 3D modeling work.  It was a pretty hot machine in its day, but that day has long passed.  Recently the graphics card has been crashing and only sort-of recovering, and I've been getting BSODs from Win 7.

I started looking for a replacement that would have a CPU with at least 4 cores (even though most software uses only one core, I use a couple programs that can take advantage of multiple cores), lots of RAM, and a graphics card with at least a couple GB of dedicated RAM.  USB 3 would be nice as would bluetooth, and dual band wireless networking.

I started pricing out components for a new build and quickly got up to about $800-1000 range.  Ouch!

Then, before I could start ordering parts, someone at the makerspace informed me that he had a couple 4 year old laptops he recently picked up at an auction, for sale at the very reasonable price of $100 each.  The machines are Lenovo W530 with a quad core 2.7 GHz i7 CPU, 8 GB of RAM supporting up to 32 GB in 4 slots, an Nvidia K1000m 2GB graphics card, bluetooth, dual band wifi, USB 3.0, lighted keyboard, full HD antireflective/antiglare display, SD card slot, fingerprint reader, 720p webcam, DVD burner, etc.

I was hesitant at first, but after looking up the machine and its specs, I started to change my mind about it.  The CPU would run rings around the CPU in my desktop machine, likewise the graphics card.  $100 got me the laptop with a battery in unknown condition, no power brick, no HDD and no OS.  A quick scan of ebay turned up plenty of cheap parts and accessories for these machines which were corporate work-horse type computers.  There's also plenty of documentation and software support on Lenovo's web site.

What I had:
Win 7 install disks
240 GB SSD
keyboard and mouse
3D mouse
32" BenQ display
USB hub

What I needed/wanted:
RAM- 32 GB DDR3 1600 SODIMM- $180 via ebay
HDD caddy to replace the DVD drive - $8 via ebay
170W power brick-  $30 via ebay
mini displayport to displayport cable - $8 via ebay

What are the advantages of using a laptop for a desktop?  Smaller, quieter, lower power use, and a built in UPS (the battery) that will prevent loss of work if AC power fails.  I can take it with me if I really need to.  What's wrong with it?  Some inconvenience powering up because it's a laptop.  Otherwise, it's all good.

When I got the laptop, the battery had just enough juice in it to power up the machine and run some diagnostics- all good.

The power brick was the first thing to arrive, so I installed the SSD and Windows 7 (will probably dual boot with Linux, later).  After charging the battery I found it was able to power the machine for 5-6 hours at a time, so the battery was in great shape.  After installing Win 7, someone else at the makerspace suggested that I try installing Win 10, so I gave it a shot and it turns out the machine had a corporate license associated with the CPU so Win 10 Pro installed itself and registered just fine!

I installed the 500 GB HDD in the optical drive slot, moved all the user files to that drive, and installed all my CAD and other programs to the SSD.  The machine boots fast and programs load very quickly.

The computer sits on a shelf above the display on my work table where it is within easy reach to disconnect things and move it if I need to take it with me somewhere.  I have a USB hub on the worktable to plug in things like my Yubikey, thumbdrives, phone, etc.

I adjusted the power settings to shut off the display after 10 minutes of disuse and never sleep.  When I am finished with the computer for the day I hit the sleep button on the keyboard.

It's cold in my basement, so I run an electric heater when I'm working down there.  A few days ago the heater blew the circuit breaker on the power strip that it and the computer were plugged into.  The display went dark and I was momentarily panicked, but then I realized that the computer has a battery and sure enough, when I flipped the circuit breaker, all my stuff was still there, ready to go.

Update: I bought a docking station for the W530 via ebay for $20. Now I just drop it onto the dock and all the connections are made automatically.

Sunday, October 1, 2017

Note Taking in School (and Illustrating a Blog)

When I started this blog I did so because it was becoming too cumbersome for me to update my web site.  I don't like spending my time that way, and wanted to do something that would allow much faster updating and be more portable.  After a web search and comparing a few different options I decided on Blogspot.

So far I'm happy with it.  I can update the blog quickly, from anywhere I have computer access and it's much easier to do things in bite-size chunks that are more likely to get posted, as opposed to the huge effort it took to build my web site and maintain it.  I don't know how many hundreds of pages of stuff I produced that never got posted because of the difficulty in getting all the links working, etc.

One of the things I wanted was to be able to post pictures and diagrams of things because they are usually a lot faster than typing (two fingers- I'm from that generation before computers when girls learned to type and boys took shop class) and editing a lot of text.  I considered many ways to get diagrams into my posts including drawing on a whiteboard or paper and taking pictures of the drawings.

Then I remembered how I got through dental school.  I had two years of didactic classes which consisted primarily of PowerPoint presentations.  The instructors would make the presentation available and we'd all follow along and make notes on our computers.  Then I saw something really incredible.  It was called a Livescribe Smartpen that recorded whatever you wrote and put a copy on your computer.  Not only that, it recorded audio (binaural!) and linked the audio to the text.

The audio recording quality is good, but when you use the binaural mic, it's great!  Recording lectures can be tricky.  You could hear and understand everything being said, but for some reason recordings usually come out echoey and difficult to decipher.  The binaural mic records audio exactly as you hear it because the microphone capsules are almost in your ears.  If you could understand what the lecturer said during the lecture, you'll be able to hear it exactly the same way when you record it with the binaural mic.

Whenever the instructor said "this is going to be on the test", I'd write the word "test" in my notebook.  When it was time to study, I played back the audio recording of the lecture and tapped the pen on the word "test" the audio would jump right to what was said when I wrote that word.  It made my studying extremely efficient and effective.  My notes primarily consisted of slide numbers -when they changed a slide, I mark the number down, creating a link in the audio recording- and occasional keywords like "test" "final", etc.  If I was going through the PowerPoint presentation and didn't understand something on a slide, I'd tap the pen on that slide number in my notebook and the audio would immediately jump to the lecture at that slide.  By minimizing my note taking that way I was able to pay more attention to the lectures than my note taking and I think I learned more of the presented material.  My pen had 1 GB of storage which was enough to store an entire month's worth of audio lecture recordings and written notes. If you are in school, or have a kid or grandkid in school, I can't recommend the Livescribe pens highly enough.

My 1st generation Livescribe Smartpen's battery had long since died (it was only 10 years old).  After a futile attempt to get the thing apart so I could try to find a replacement battery, I gave up and bought a second generation of the pen, a 2GB Livescribe Echo.  The Livescribe smartpens use special paper that has a dot pattern that allows the pen to know exactly where it is on the page.  Don't worry, the notebooks are cheap, especially considering the utility that the system provides.  There are plenty of other paper options, too.

If you've read any of my blog posts, chances are you've run into some of my handwritten notes and drawings that look like scans from a lined notebook.  Those were made using the Echo Smartpen.  I draw/write the note, connect the pen to my computer and transfer the notes, then export the note page as a png file.  I open the png file and crop it then save as a jpg file and upload it to the blog.  The whole process takes only a minute or two.

 There's an interesting paper that describes the technology of the whole system here.

Here's a photo of a note I made using the Echo pen and notebook:

And here's what shows up on the computer when you connect the pen via USB cable:


The image of the writing can be captured with or without the blue notebook lines, as you'll see in some of my blog posts.

I've misplaced the earphones/binaural mic that came with my original SmartPen or I'd link to an audio recording made with it.  

Anyway, for me it was great in school and now it's a very portable way to make notes and diagrams to put into this blog.  If you have a kid in school, I can't recommend this pen highly enough.

Saturday, September 30, 2017

This is What You Can Do With a 3D Printer, No. 2

UMMD was built to print decorative objects like large vases and lamps.  A couple failed test prints, including this one at the Milwaukee Maker Faire:

Looks great, doesn't it?

It's too bad the back side wasn't so great.

That taught me a lesson: you can't print a single-walled, ABS vase with 0.4 mm line width and 0.2 mm layers that is 500 mm tall.  Between the cooling plastic shrinking and the weight of the print distorting its shape, the nozzle will eventually miss the previous layer and the print will fail.

I switched to a larger nozzle, adjusted the slicing parameters a bit and produced this:

This one made it all the way to 500 mm with only a couple minor issues.

This was made using transparent ABS which looks like frosted glass when it prints, and transmits light very nicely.  I used a 0.6 mm nozzle on the extruder, printed in 0.3 mm layers, 0.6 mm line widths, and printed with 3 shells/perimeters, all at 60 mm/sec.  It's 500 mm tall, took about 39 hours to print and used 781 g of filament.

466 mm, on its way to 500 from Mark Rehorst on Vimeo.

I'm not sure why the slicer has the extruder going all over the place like that, so there may be more tweaking to do, but this one is definitely a success.

I still have to mount it on some sort of base, and add a light source, but here's what it looks like with an LED flashlight lighting it up from the inside:

Unlike a single walled vase, this thing can be handled without worrying about it breaking apart.

When the vase was removed from the print bed, the bottom layer had a couple small cracks, possibly because the 95C bed temperature was a little higher than it should have been for almost 40 hours.  I'll drop the bed temperature a little more for the next one.

There are a couple small layer separations on the back side which may have been because the temperature inside the printer was a bit too cool for ABS.  ABS is usually OK with 45-50C but during this print the temperature in the enclosure was only about 38C.  When I drop the bed temperature, it's going to be even cooler inside the enclosure, so I'll be adding a heater to make it a little warmer in there.

This could be printed with PLA and the layer separation issues would probably go away, but I have to make sure that the print is never subjected to heat, either from a light source or from being transported and left in a hot vehicle.

How I created the model

I started with a program called ChaosPro to generate a Julia set fractal.  After tweaking the parameters for a while I found a shape that I liked, then created an image series that varied one of the parameters of the fractal over a specified range of values.  That left me with 500 or so images.

Next, I opened ImageJ and used it to stack the images to make a solid object from them, then exported the STL file of that solid.

It's all explained in step by step detail here.

I liked the rough texture that resulted from the process, so I skipped the smoothing that the guy did using Blender.

I have tried to print this model using Slic3r's spiral vase mode but it seems to choke on the STL file (maybe the surface is too rough in some places and slic3r can't follow it) and does strange things that wreck the print.  I've been using Cura to slice it, and Cura applies some sort of minor smoothing that leaves most of the rough texture intact but fixes the problems that trip Slic3r.

Thursday, September 28, 2017

This Is What Can You Do With a 3D Printer, No. 1

Here's a project I did about 11 years ago, years before I built my first 3D printer.  It's a Van De Graaff generator (VDG) that produces about 400 kV (that's enough to thrown painful sparks about 300 mm in dry air!).

I never liked the look of the wood box on the bottom, and it was all a little heavy, so a few months ago I decided to update the design.

I redesigned the base and rollers to be 3D printable and found a small DC motor that could be mounted on the base without the big wood box.  The rollers use bearings pulled from hard disk drives.  I printed the parts using PLA.

Full details and CAD and STL files are available on Instructables.

I took it to the Milwaukee Maker Faire last week just to show what can be done with a 3D printer, and after it sat unnoticed for a few hours, decided to move it closer to foot traffic and plug it in.  If you ever want to attract kids to a booth at a product show or Maker Faire, just bring along a VDG!  As these people demonstrated a Van De Graaff generator can be a lot of fun!

I suspect this was Kylee's favorite thing at the Maker Faire.  She spent a lot of time with us!

Fun for all!

3D Printed VDG Hurting My Fist from Mark Rehorst on Vimeo.

 In the photos below I used a 30" exposure time and high ISO, then boosted the brightness and contrast to get what you see.  The photos don't quite capture the blue glow that accompanies each big spark.  The big sparks usually look like a thin, bright line surrounded by a pale blue cloud.

Photographing the sparks is a little tricky.  I prefocused the camera with the lights on, then shut off the lights and opened the shutter for 30 seconds.  IRIC, the camera was set to ISO 3200 and f4.  While the shutter was open I walked over to the generator and moved my hand around near it and got the sparks to jump.  That faint purple glow you can see surrounding some of the bigger sparks in the picture is there with every spark.  It just doesn't show up very well in the photos.

3D Printed Van De Graaff Generator with a Plasma Ball Zapping My Hand from Mark Rehorst on Vimeo.

Update 3/8/18

I changed the top terminal from 11" to 14" diameter (still using Ikea Blanda salad bowls) which should allow the generator to hit 520 kV.  It now discharges continuously from the top terminal to the brush on the bottom of the machine, so I slid one of the original 11" bowls down the tube to cover the bottom of the generator and this is what it did:

The distance from the top bowl bottom edge to the bottom bowl top edge is 550 mm.

I still have some optimizing to do- the sharp edges of the bowls have no insulation, so they tend to create corona discharge.  I'll probably get another 14" bowl for the bottom, and maybe a longer piece of pipe...

Tuesday, September 19, 2017

Comparing Gates LL2MR09 and Chinese 2 mm Pitch Glass Core Belts

I recently saw a couple pictures someone posted of two identical prints, made on the same machine with the same gcode file, one using very inexpensive Chinese import glass core GT2 belt and the other using a more expensive Gates belt.  I was impressed by the reduced ringing in the print made using the Gates belt, so I decided to try this experiment for myself.  Unfortunately, I've lost track of the link to those pictures.

I located a source and ordered 50 feet (the minimum quantity that Gates distributors will sell) of the Gates LL2MR09 belt (about $2 per ft. shipped).

One of the things that has always bother me about the Chinese belt was that there are exposed glass fibers along its edges.  Well, the Gates belt has that, too.  Both belts are neoprene with fiberglass core, both 2 mm pitch, and both 9 mm wide.

Part NumberLL2MR09
Pitch2 mm
Top Belt Width per strand (mm)9
Tensile CordFiberglass
Core MaterialChloroprene
Fabric CoverNylon
RMA Oil and Heat ResistantYes
Min Order Qty50 ft
Max Cont Length (feet)300 ft
Product Number93960052

The Gates belt has nylon facing on the teeth which Gates says decreases wear and increases the life of the belt (and pulley?).  Gates also specifies an operating temperature range of -54 to +85 C, so it should be fine inside a heated enclosure for printing ABS.  I was unable to locate any operating temperature range spec for the Chinese belt.

The Chinese belt doesn't seem to have a nylon facing on the teeth, but I can see what appear to be the ends of threads embedded along the tooth surface under a microscope.

Gates belt specs

In the following photos the Gates belt is on the bottom and the generic Chinese belt in on the top.

Chinese belt on top, Gates belt on the bottom.  The gates belt has nylon coating on the teeth.

The chinese belt, top, appears to have fibers embedded in the tooth surface, and the teeth look slightly larger than the Gates belt teeth.  Glass fibers (brown) are visible on the edges of both belts.

Glass fibers are visible in the edges of both the Chinese and the Gates belts.

Notice there are 17 glass cords in the Chinese belt, top, and 20 in the Gates belt, bottom.  Cord diameters appear to be about the same, spacing between the cords doesn't appear to be well controlled in either of them.

One minor difference is that the slicing of the Chinese belt doesn't seem to be particularly accurate.  If you watch the edges of the belt as it moves on the printer, they seem to move up and down as if the top and bottom edges aren't parallel everywhere.  The Gates belt doesn't do that.

I ran some print tests and there didn't appear to be any difference in print quality.  Maybe the parts I printed weren't good for showing the differences.  I'll be trying more prints and if I run into anything that reveals a big difference I'll post it here.  It was enough effort to swap the belts that I don't expect to be doing it again without a really compelling reason.

This video shows one of the test prints- I turned up junction deviation to 0.2 (from 0.05) to induce ringing, and made the straight runs long enough to allow a peak speed of 250 mm/sec.  I used the same gcode with the only difference between the prints being the belts in the XY stage.  To my critical and microscope assisted eye, the prints are essentially identical.  The ringing looks the same, the layer registration at the corners looks the same.  Meh.

UMMD printing ABS at 250 mm/s from Mark Rehorst on Vimeo.

In the short term, these belts seem to perform pretty much the same, but print quality isn't the only criteria by which to judge a belt.  If one belt outlasts the other and the drive pulleys used with one or the other last longer, one belt or the other might be better.

Friday, August 25, 2017

UMMD 3D Printer LED Lighting

Some people like to dress their printers up with 24 bit RGB variable color LED lighting that they can control from a phone.  Meh.  I just wanted plenty of light in UMMD so I could see what is happening and to make it easier to do maintenance and repairs, if they're ever needed, and to photograph prints.  To that end I installed two 8W cool white LED strips on either side of the lower front opening of the printer, and two smaller 3W strips on the underside of the top cover.  Together they provide plenty of light.

Plenty of white light!

I have taken Son of MegaMax to the Milwaukee Maker Faire for the last couple years and will be taking UMMD this year.  One of the more popular events at the Maker Faire is the Dark Room where we set up things that look impressive in the dark.  There are always lots of interesting displays done with projectors, LEDs, blacklights, etc.  Here's one that's very popular...

Knight in Armor vs Big Tesla Coil from Mark Rehorst on Vimeo.

This year I'm planning to have UMMD in the Dark Room for one day of the Faire, so I'm installing UV LEDs and will print something interesting with fluorescent filament.  I initially bought some UV LED strips via ebay that worked OK, but weren't as bright as I wanted.  So I did some more shopping.

SoM has a 400 nm UV light bar that does a pretty good job, but I always felt it produced too much visible, pale blue light along with the deeper purple that causes the fluorescence.  So I looked for shorter wavelength LEDs, hoping they would produce less of the pale blue light.  I bought a bunch of 1W 360 nm LEDs on 16 mm diameter aluminum circuit boards and wired some of them to test.  I found that 360 nm LEDs cost about 4-5X what 400 nm LEDs cost and both produce about the same pale blue light, and both cause the same fluorescence, so there's no point in buying the more expensive, shorter wavelength LEDs.  I also realized that it's a PITA to mount all those round PCBs and then wire them all together.
The UV light bar in SoM is mounted at the top, front of the printer's frame using printed snap-in brackets.

The UV light has a very nice effect when you use fluorescent filament.

1W LEDs usually use 350 mA.  UV LEDs typically drop 3.4-3.8V each at that current.  The easiest way to power LEDs is to connect them to the printer's 24V power supply.  24/3.4 = 7.06 and 24/3.8=6.3, so I needed to find a narrow circuit board that would allow me to connect 6 or 7 LEDs in series, and allow easy coupling to a heatsink.  I searched ebay and some of the Chinese sites and found some 300 x 10mm aluminum circuit boards designed to wire 6 LEDs in series.  I ordered a 5 pack for $6.

Next I looked for 1W UV LEDs without any circuit boards.  I found a pretty good deal on some 400 nm LEDs so I bought 30 of them for $15.

Finally, LEDs, like other semiconductors tend to drop more voltage as they heat up, which is another way to say that if you operate them from a constant voltage supply, they will take more current.  That leads to more heating, which leads to more current, and pretty soon you have a condition known as thermal runaway and your LEDs burn up.

The best way to avoid thermal runaway is to power LEDs with a constant current source.  You set the current to 350 mA for a string of 1W LEDs and they all get 350 mA and it doesn't matter if the LEDs heat up a little, the current source automatically adjusts its output voltage to maintain the set 350 mA.  They also maintain constant brightness when you use a constant current source.

This works great for a few LEDs, but if you're trying to run 30 UV LEDs at 350 mA, you need a current source that can deliver up to 30 x 3.8V = 114V.  That's a problem if you only have a 24V power supply.  You can probably find an expensive boost converter that will provide a constant current, high voltage output, but there are other ways.

Since UMMD has 24V available (I'd prefer not to run another 117 VAC supply), I can drive up to 6 LEDs in series (6 x 3.4V = 20.4V).  I have 5 circuit boards with 6 LEDs in series on each, so all I have to do is wire the circuit boards in parallel.  Since each board needs 350 mA, I could use a constant current supply that delivers 350 mA x 5 =1750 mA.  But what happens if an LED dies?  Now there are 4 boards sharing 1750 mA- they all get brighter for a while, then they probably burn up.  So constant current isn't the best way to power LEDs wired in series-parallel.

Powering LEDs from a constant voltage isn't ideal, but it is easy/cheap when you're using a low voltage power supply.  I found a 35W buck converter that will take the 24V input and convert it to a voltage/current limited output for $8.  This device can be operated as a constant current source by setting the voltage output to maximum and then adjusting the current limit pot for whatever current you want up to 3A.  Or, it can operate as a constant voltage source by turning the current limit all the way up and setting the output voltage you want up to about 22V.  Or you can operate it in between, and set both voltage and current limits.

I had my LEDs, and my power source, now I just had to mount them.  I used some 3/4" x 3/4" aluminum L stock.  It was rigid and could be mounted easily, and serves as a light guide that blocks the direct view of the LEDs when looking at the printer from the front.  I mounted the PCBs on the aluminum L using some printed ABS clips.  They snap on and hold the aluminum PCB in tight contact with the L stock, transferring heat away from the LEDs.

Aluminum LED PCB mounted on 3/4" x 3/4" aluminum L as a heatsink/mounting bracket/light guide, using printed ABS clips.  The clips hold the PCB tightly against the L to ensure efficient heat transfer.

One of the printed ABS PCB clips.  It snaps on tightly, ensuring heat transfer from the PCB to the L heatsink.

One of two 12 x 1W UV LED light bars that will be mounted vertically on the front of the printer.  The bright green objects are the brackets that snap into the t-slot frame of the printer.  The white LED bars will be mounted alongside the UV strips.

I found that the heatsink got pretty warm if I operated the LEDs at full power, so I dropped the voltage a bit and gave up just a little of the brightness in exchange for much cooler operation.  I set the buck converter for about 19.6V output and limited the current to 1.3A.  The voltage setting limits the current through the LEDs initially to just over 1A.  If the LEDs heat up because they are inside a warm printer enclosure, they'll try to suck more current from the buck converter, and when it reaches the set limit, the converter will operate in constant current mode and that will prevent thermal runaway.

Here's a short video of the printer putting down some fluorescent yellow filament with the lighting switched between the white and UV LEDs.

UMMD 3D Printer White and UV Lighting from Mark Rehorst on Vimeo.

Here's a still photo in which I tried to tweak the exposure to match what the eye sees when the UV lights are lighting up a fluorescent yellow print.  The photo just doesn't do it justice- in real life it's almost painful to look at the print because it glows so brightly.

Tuesday, August 15, 2017

Thermal Performance of UMMD's Print Bed

UMMD, my recently built coreXY 3D printer, has been at the Milwaukee MakerSpace for the last week while I put the finishing touches on it before it's public debut at the Milwaukee Maker Faire at the end of September.  One of the members, John Olson, brought his FLIR camera to the makerspace meeting tonight and we were able to make a couple images of the bed with it.

In case you haven't seen UMMD's bed design, you can read all about it here.  The bed is a piece of 300 x 300 x 8mm, MIC6 cast aluminum tooling plate with a 0.7 mm layer of PEI on top and a 750W line powered heater on the bottom.

In the images below, I set the bed temperature in the controller and left it for a few minutes to stabilize.  The controller uses PID temperature regulation and drives an SSR that switches power through the bed heater.

In the first image, the controller was set to 70C, typical for printing PLA.  You can see there is some offset between the controller reading and the FLIR temperature reading.  But more important than absolute temperature, you can see that there is only about 3C variation in temperature across the bed surface, with some droop at the corners and edges, as expected.  There appears to be a hot spot at the front edge of the bed- that's actually just a reflection of the hot-end.

In the next image, the controller was set to 105C, a temperature typical for printing ABS.  Again, the bed temperature is a few degrees lower than the controller thinks.  This time there's about 5C  variation in temperature across the bed surface, expected because the higher temperature will cause more convection that cools the edges and corners of the bed.  

It's hard to beat cast aluminum plate for even heat distribution.  Between the flatness,  even heating, and PEI print surface, I have very few problems with prints releasing from the bed before they are finished.

Saturday, August 5, 2017

Setting Up a CoreXY Printer's Origin and EndStops

In this explanation, I'm going to use SmoothieWare as an example for the config file entries, but there are similar entries for whatever firmware you are using. Look them up!

If your printer is not a coreXY type, please refer to this post for setting up its origin and end stops.

I will refer to the motor that connects to the X or alpha output on the controller as the alpha motor, and the motor connecting to the Y or beta output as the beta motor.  The Z axis motor connects to the Z or gamma output. I will largely ignore the Z axis because it's pretty straightforward- you're going to have an endstop at the Z=0 position at the top of the Z axis (where the bed touches the nozzle).

CoreXY motion can be a little confusing when trying to set up endstops and motor direction in firmware. The printer's firmware needs to know:
  1. That a corexy mechanism is being used
  2. The locations of the printer's endstop switches and origin
  3. The length of each axis
  4. The direction to spin each motor

Step by step CoreXY firmware setup

  1. Build your printer, and mount the motors and limit switches.
  2. Choose origin location
  3. Set home_to direction for each axis, plug in the endstops
  4. Assign appropriate ordinate values for each axis
  5. Set motor rotation directions for all three motors.

Mounting Motors and Switches

You can mount the motors either pulley-up or pulley-down or one up and one down - it doesn't matter.  You can put limit switches at either end of either axis, but you have to make appropriate assignments in the firmware and plug the switches into the appropriate inputs on the controller board. We'll get to that in a minute.

Example corexy layout, viewed from the top of the printer, that will be used to illustrate firmware configuration.  Motors are at the front of the machine, origin is at the left-front (L-F) corner, X axis endstop is at the right (bright green box), Y axis endstop is at the rear (red box).

First things first: you have to tell the controller that your printer uses a corexy mechanism.  You do that in SmoothieWare by using this line in the config file:

arm_solution corexy

In RepRap Firmware (Duet board):

         M667   S1 ;  set up corexy kinematics

Origin Location

The printer's origin (0,0,0) can be located literally anywhere but the directions of increasing ordinate values must be in the proper orientation for right-hand-rule coordinates or your prints will come out mirrored because the CAD software that designed the print used right-hand-rule coordinates. People typically set the origin up at the left-front (L-F) corner (X increases as the extruder moves to the right and Y increases as the extruder moves to the rear) or the right-rear (R-R) corner of the bed or printer (where X increases as the extruder moves left and Y increases as the extruder moves toward the front of the machine), but there are some significant advantages to setting it up at the center of the bed. Continue reading this post, and once you understand it, see the newer post, here, about setting the origin at the center of the bed.

Slicers commonly default to showing the origin at the left-front, and the jog controls in Pronterface assume a left-front origin, so you can save yourself some mental gymnastics by doing the same. There is no explicit statement in the config file that tells the controller where the origin is- its location is implied by the homing directions and endstops used.

The Z=0 position is at the level of the bed surface. Z increases as the nozzle goes up relative to the bed (the bed moves down relative to the nozzle). 

Setting "home_to" Direction for Each Axis

If the switch is at the origin end of its axis, you'll set that axis for home_to_min.  If it's at the far end, set that axis for home_to_max.  

X axis
Y axis
endstop location
alpha home-to
endstop location
beta home-to

Let's say that the origin is at the L-F and the switches are located at the right and rear.  In SmoothieWare, you'll have entries like this:

corexy_homing true
alpha_homing_direction home_to_max
beta_homing_direction home_to_max
gamma_homing_direction home_to_min
In the example above, the alpha and beta endstop switches are both located at the maximum ends of the X and Y axes, so you have to plug the endstop switches into the Xmax and Ymax endstop inputs on the controller board.  The Z endstop should plug into the Zmin endstop input, assuming you have positioned the Z limit switch at the physical top of the Z axis, at the level of the extruder nozzle.

In RepRap Firmware (Duet board) it will look like this:

          M574 X2 Y2 Z1 S1              ; Set active high endstops

X2 and Y2 define the positions of the endstops at the maximum end of the X and Y axes.  Z1 means the Z axis endstop is at the minimum end of the Z axis.  S1 sets them as active high.  The endstop switches will be plugged into the X, Y, and Z endstop inputs (there are no min and max inputs, just a single input for each axis).

Set Ordinate Values for Each Axis

Measure the length of the X axis by manually moving the extruder carriage from the far left to the far right.  Do the same for the Y axis by measuring the distance the extruder nozzle moves from the front to the back of the machine.  And, of course, measure the usable Z range of motion.

Let's say the X axis range of motion is 380 mm, the Y axis is 340 mm, and the Z axis is 400 mm.  In SmoothieWare you'll have entries like this:

alpha_min 0
alpha_max 380
beta_min 0
beta_max 340
gamma_min 0
gamma_max 400
In RepRap Firmware (Duet board) the assignments will look like this:

          M208 X0:380 Y0:340 Z0:400          ; Set axis minima:maxima

Setting Direction of Rotation

Setting direction of rotation is done either by reversing the connectors at the motors or controller board (only with power off or you may destroy the motor driver chip!), or by inverting the direction logic via the firmware.  

Here is how the mechanism works, ignoring any of the electrical stuff (rotation of the drive pulleys, viewed from above, motors at the front of the mechanism):

Left Motor
Right Motor
Extruder Motion

Remember, when homing the mechanism, the location of the switches are important, not the location of the origin.  Homing should always send the extruder carriage toward the switches. Using the table above, just the top four entries, notice that, when homing, if the switches are at the
  • left and front, the alpha motor must turn CW.  
  • left and rear, the beta motor must turn CW.
  • right and front, the beta motor turns CCW
  • right and rear, the alpha motor turns CCW
In Smoothieware, the motor rotation direction is set by these lines in the config file:

alpha_dir_pin 0.5 
beta_dir_pin 0.11
gamma_dir_pin 0.20
We can use the table to easily set the motor rotation directions.  For example, if the switches are located at the right and rear, manually push the extruder carriage to the center of the build area, tell the controller to home all axes (G28), and watch the rotation of the alpha motor.  It should turn CCW.  If it doesn't, reverse its direction either by shutting off power and reversing the cable connection to the motor, or by appending a "!" in the config file, like this:

alpha_dir_pin 0.5!

Once the alpha motor is turning the right way, push the extruder carriage to the center of the XY space, send another home-all-axes command (G28), and watch the mechanism.  If it moves toward both switches, both motors are turning in the right directions.  If not, reverse the beta motor direction like this:
beta_dir_pin 0.11!
The Z motor should likewise move the bed toward the limit switch, normally at the level of the extruder nozzle.  If you have positioned the switch at that location, Z is homing to minimum (Z=0) and the G28 command should drive the bed upward, toward the switch.

In RepRap Firmware (Duet board), P selects the driver and S sets the rotation direction:

          M569 P0 S1          ; motor A goes forward
          M569 P1 S0          ; motor B goes backward
          M569 P2 S1          ; Z motor goes forward

Endstop wiring

If you are using simple, reliable, snap-action switches for the endstops, they can be wired either normally open (NO) or normally closed (NC).  For safety, it is best to wire them NC. That way, if a wire breaks or becomes disconnected the controller will interpret that as a switch closure and it will quickly become apparent that something is wrong.

The SmoothieBoard config file defaults to NC. If you wire any of the switch(es) NO, you have to invert their inputs in the config file.  Refer to the SmoothieWare endstop configuration documentation here.

Be sure to plug the endstop switches into the appropriate inputs on the controller board.  For example, if the Y axis endstop is at the maximum end of the Y axis, plug that endstop switch into the Ymax endstop input.

The Duet controller boards have only one endstop input per axis, and it is defined as a minimum or maximum using the M574 command as above.