Sunday, February 23, 2014

Introducing the Coherent Extruder: A 4 Color, 2 Motor Cold End

I have been closely watching the development of multiple nozzles and I've been especially excited by to the release of the Kraken by e3d which is a 4 color hot end. Looking forward, the main problem that I see with this push toward many filaments is figuring out how to drive it all. I found this blog did a great job getting all 4 colors working but the downside was that it required 4 separate motors and an expansion board to plug everything into.

In an effort to hopefully simplify this push toward driving an arbitrary number of filaments with two motors I designed a new extruder. This is a 2 motor extruder that is capable of independently driving 4 filaments by utilizing a single drive motor and a separate cam selection motor. Thanks to Fritzgutten's extruder which helped me think about utilizing cams for this purpose.

Here is a front view that shows two yellow cam selection gears that are driven by a motor on the right. The filament is fed in the top and comes out the bottom.


You'll notice that contrary to the original design of the Kraken, this is essentially a direct drive configuration. An internal piece routes the bowden tubes to directly under the hobbed bolt so that the filament is properly constrained after passing through the drive gear. The cooling lines are routed out via two holes on either side of the extruder.


Side view of the extruder mounted onto a Mendel Max 2.0 X-axis. Since its weight is about the same as two extruders, the wobbling isn't an issue for such a rigid frame. Even though it doesn't appear like it, the extruder does not fall over when rested on a table so it appears to be more or less balanced.

Here you can see two idlers (red) and the cam selectors (purple) that dictate which idler is engaged. One cam selector is obscured by the cam endstop that calibrates its position. When not engaged, the idlers sit gently against the filament.

The other side of the extruder shows the drive motor. Since the Kraken only drives 1.75 mm filament, the gear ratio is not super critical especially with beefy Nema 17 motors
Here you can see that the right cam selector gear has a second gear that is used to drive it with the motor. Due to the required spacing of the cams from the central hobbed bolt, it was necessary to have a second gear that the motor drove to allow the motor to be reasonably close to the rest of the extruder body. 

Here is a cutaway view of the hobbed bolt. Two hobbed sections are required along the length of the 8 mm bolt and two filaments are driven by a given hob on each side. The oversized holes on the bottom of the idler ensure that there is little force of the idler when not engaged. In the real version, the filaments would be guided toward the Kraken block via slots in the purple piece (I have a photo of this later in the post).

Here, the filament feeder top has been removed to be able to see down the extruder. 


Here are some pictures of it assembled!


 Here are the idlers in action! In this photo the lower idler is activated while the upper one is not activated.
Rotating the idler gear disengages the lower idler and activates the upper idler.

The nice thing about these cams is that the asymmetric part takes up a small enough angular profile that you could easily have 6 or 8 cams that wouldn't overlap at all.

This is what it looks like hooked up to the printer itself. 


An angled view into the extruder.

A cutaway that shows how the filament is fed through the extruder. The plastic tubing goes directly from under the hobbed bolt into the Kraken Block. 



I am pretty pleased with the performance of the extruder so far- it holds the filament extremely tightly when engaged and has almost no force otherwise so the other filaments don't budge. There are several caveats that will need to be addressed before this is printing up a storm. 

1) The Kraken itself is actually giving me some issues driving the filament. I am using PLA and even when heating it up to 250 C, the PLA requires a ton of force to get it through the hot end. I have previously used jHeads so it is possible that there is just a learning curve with a stainless steel hot end.

2) The firmware will need to be tweaked so that it can use a single motor and a selector motor to switch between the 4 filaments. Tweaking this in the gcode is pretty straightforward (just pause, move selector motor to new position, advance filament a little, resume print with new offset based on the position the new nozzle is from the old one). I am not sure what is involved with supporting it in Marlin or Repetier Firmware with Cura/Pronterface/Repetier Host Software.

3) An electronics expansion board needs to be built to support the additional thermistors and heaters. I have this worked out and I'll be publishing the schematics soon.


Sunday, February 16, 2014

The Kraken Unboxing!

I am super excited because I just received my Kraken in the mail. It came in a small box that was very efficiently packed.  The gummy bears and the sticker were a nice touch!

Here are all the components laid out:

A close up of all the hot ends in a bag, disassembled:
This is the cold block that the hot ends slide into. You can see the cooling line barbs sticking up in the middle and the 4 holes for the filament tubing in black.
This is the cooling pump for the cold block. It is quite tiny but the mounting stand is a nice touch.
Here are the thermistors. I believe that they are the 100 K Ohm NTC kind.
I have big plans for this Kraken so stay tuned for a new extruder I am working on.






Saturday, February 8, 2014

Formatting SD Card for Marlin / RAMBO

I have been happily printing from my SD card for a while but after pulling out the card too early one time, I had to reformat the card to get it to work. Unfortunately, RAMBO is super particular about how to format the card.  Here is what I did which eventually got it to work on a Mac:

1) First I have to figure out which disk is the SD card. I opened the Terminal in OS X and typed "diskutil list". This is what I found:

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            190.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:       Microsoft Basic Data BOOTCAMP                60.0 GB    disk0s4
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.0 GB     disk1

   1:                 DOS_FAT_32 SCJ                     4.0 GB     disk1s1

The primary drive is disk0. The SD card is disk1 and the primary partition on that disk is 1.

2) Unmount the SD card by opening Disk Utility from the Utilities folder, find your SD card on the left and unmount it by pressing the button at the top.
3) Next, you have to format the SD card in terminal. Since I know my SD card is disk one I type: newfs_msdos -F 16 /dev/disk1s1. Yours may differ so really make sure that it is correct.
4) Open Disk Utility again and verify your disk.

For me, this was the only way to actually get this disk to read. For whatever reason, formatting the drive as a fat 16 in Windows 7 did not provide the same results even when I did a format with all 0s.

Tuesday, January 7, 2014

Safety First- Remotely Monitoring and Killing Your Jobs on the Cheap

I am always nervous about leaving my printer printing when I leave the house because I have these visions about it suddenly bursting into flames. I have wired a lot of things for 120 V but until I can get a UL certification on my home built printer I am never going to be perfectly comfortable with my wiring job. This culminated last weekend when I had a date with my fiancĂ© that I had to leave for but the print wouldn't be finished for another few hours. I wanted a way to remotely monitor the job and kill the power to everything at the end.  Unfortunately, I did not have it and the fear of the unknown sat in the back of my mind the whole night until I finally got home and saw that everything had finished normally.

For those wondering, there is a way in the G-code to cut the power to everything after the print finishes but I like redundancies. Here is what I add in Slic3r under the Custom G-code section:
G1 X12.0 F4000
G1 Y170 F4000
M104 S0- Set the extruder temperature to 0
M140 S0- Set the bed temperature to 0
M84- Turn off idle hold on the motors

To prevent this nervousness from happening again I wanted a way to remotely monitor and cut the power to everything if something happened. I had seen a lot of great work done with Octoprint and a webcam but since wiring a kill switch there required additional wiring and a relay that I was going to have to do myself (and thus was not UL certified), I wanted a commercial option. I went with a wifi enabled WeMo switch that the printer plugs into and you can control it remotely from your iPhone. This works even over 3G/LTE so you do not need to be in the same network.
WeMo wifi enabled switch.

The web interface is pretty slick too. You can turn off the printer manually or there are additional rules so you can have it turn on/off to correspond with the time of day, when the sunrises, or other rules. I bet this could help with workflow if someone wanted to have a printer turn on and automatically warm up the heat bed before you got up but that is far more use than I have for my printer at the moment.
WeMo iphone interface.


The next logical piece is adding the webcam functionality. Although the idea of using Octoprint to automatically slice and then submit jobs is pretty amazing, I didn't feel like forking over the $90 for the hardware and instead went for the less expensive iCam program on my iphone ($5). It works by streaming your webcam over to the iCam servers and then you can connect to it on your iPhone or Android device.
Mac OS X interface for streaming the progress of your printer.

iPhone interface for monitoring the print.

Together these work pretty well and I'd recommend it to anyone who wants a cheaper plug and play option to monitor their prints.

Experimenting with Taulman 618 Nylon

Most of my experience on this Mendel Max has been with PLA. I have calibrated things well enough that I can pretty much press print, walk away and be reasonably sure that my print will come out perfectly. For those who have the same printer that I do, my firmware might be a good place to start if you have issues. Unfortunately, the downside with PLA is that it can be prone to cracking under stress and I have some parts that I want to print which need extra durability. I purchased some Taulman 618 Nylon because I thought that this might the perfect material to print with that could take a beating.

To start, I read Richrap's article on Nylon and he states that Garolite is the material of choice for printing on. Unfortunately being in the US, it was difficult to track down. The only place I found it was McMaster Carr but I had read some bad reports about it not being flat in the Reprap forums so I decided instead to use cardboard from a cereal box. I taped it down with simple painter's tape and let it print a test cube.
Printing a test cube with Nylon 618.

I heated the hot end to 330 °C and did not bother warming the bed. I had read that it is important to dry the Taulman 618 before use and although I did see constant steam emanating from the hot end while printing, it did not appear to affect the print much. After finishing the cube, I noticed slight curling at one of the corners of the cube but it was in the same spot that I had not taped down the cardboard well so that should be an easy fix going forward. The Nylon bound so strongly that upon pulling on the cube, it actually tore up part of the cardboard!
Damages from pulling up the test cube. Note the slight curling in the upper left of the cube.

Getting a reasonable print the first time using Nylon was a surprise itself, but I was even more shocked when I stress tested the block. The fill density is 0.3 so it is mostly air on the inside but even after compressing the box with a monkey wrench as hard as I could, I barely made a dent in the block.
This stuff is strong!

The rigidity of the nylon also surprised me greatly. I had heard that 618 Nylon was quite flexible so it didn't surprise me that I couldn't crack the block but I found that even deforming it was a challenge. Due to this strength, I would have no hesitations in the future using this Nylon for something like an extruder gear. After considerably more work I was able to split the block in two at the small crack you see in the above image. The thin top part could be folded in half but it required a wrench. There was no cracking or irreversible damage and the bottom part shows how hollow the part actually is.

The two halves of the block after pulling it apart still show remarkable durability. 

Now that I have a general idea of how to print Nylon, I am excited to see how future prints will work out. Has anyone found any really good uses for it?





Monday, December 30, 2013

Getting the Smart LCD Screen working with Rambo and Marlin

I have been running into issues where I couldn't get my Rambo electronics to work with my Smart LCD screen in Marlin. It worked fine when I had the screen hooked up to Rumba but when I switched over to Rambo, I just had a series of white boxes instead of the normal display:


I had some hope when I came across a forum post where they detail how to get the LCD support working with Polygonhell's Repetier firmware but not Marlin, which is what I am more familiar with.


I went with the non functional LCD screen for several months but recently, I came across a nice post by Os1r1s and an alternative build by John Oly that claimed to get the Smart LCD working with Rumba and Marlin. To my dismay it did not initially work until I noticed that Os1r1s specifically mentioned using Arduino version 0023 and not the most current version. I downgraded and replaced the newer pins_arduino.c file here: arduino-0023/hardware/arduino/cores/arduino.

After restarting the Rambo board, the screen worked perfectly!
I was able to reproduce the white boxes with taking the exact same firmware and putting it back on the newest version of Arduino so it is clearly an issue with the software. Halopend, on the SeeMeCNC forums solved this problem on the latest version of Arduino by replacing pins_arduino.h with this updated file here:

/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/variants/mega/pins_arduino.h

If you are on a Mac you can get there by right clicking on the Arduino program and clicking "Show Package Contents".

Thanks for the help everyone!

Monday, September 30, 2013

LCD Panel Mount for Mendel Max 2

I wanted to install an LCD screen on my 3d printer so that I could run it from SD cards without a computer constantly needing to be plugged in. I was inspired a great deal by a panel mount that Ohm Eye developed but I have a reprap discount LCD which will not fit Ohm Eye's configuration. I saw a different case by Wersy where it was designed for the correct LCD/SD card combo I have but it fit on a Prusa Mendel. Through the wonders of 3d modeling I created a mashup that had the best of both worlds.
The front has the LCD, a click wheel and a reset button (white oval below wheel). I also added a power switch to easily flip the power to the power supply on and off. The power comes in from the outlet to a fuse at the back of the printer. The 120 V then hooks up to the switch like this:
I bought the switch from Pololu.

On the side, I put a slot for the SD card. 
The front of the mendel max has 4 holes so I wanted an accompanying 4 holes in the panel mount as well. Unfortunately, since the model is printed layer by layer with that front face on the bed, this created a problem since the panel curves at an angle.
See what I mean? Since it will be printing the upper hole supports last, unless the stripes went all the way up, there would not be a way to support the upper tabs (without the support feature turned on in slic3r). This works great except that with the supports going across there isn't a good way to get the LCD in! To solve this problem, I inserted the LCD while it was printing. I waited until  the print had finished 60% and just dropped it in.
I was lucky because had I mis-engineered the box and needed to print a new one, this wouldn't be the easy to remove without breaking the box. A messed up box wouldn't do me any good anyways so it probably would have been okay to break at that point if I had issues.

Configuring the firmware
I have been primarily using Marlin as my firmware so after installing the LCD I set the following settings and booted it up:

#define MOTHERBOARD 301
#define REPRAP_DISCOUNT_SMART_CONTROLLER


Unfortunately, it appears as if there is an incompatibility with the combination of RAMBO, reprap discount smart controller and Marlin because my screen just displayed a series of white boxes:

I at first thought it was a bad solder point or cable installation. Installing a specially modified version of Repetier that was set up by folks over in the Rostock Max forums corrected the issue. I think the click wheel works and that it is just the screen itself but there are enough differences between Marlin and Repetier that I can't figure out what to copy and paste yet. I am still stumped by this problem so let me know if you have any suggestions! 

Download the files at my Github or thingiverse.