Monday, March 28, 2011

Installing the Makerbot Stepstruder upgrade on the Cupcake Ultimate (now called a CUPTHING)

Oh boy, upgrading to a MK6 stepstruder was an adventure. It would be nice if future versions of ReplicatorG would have support for cupcakes upgraded with a MK6. However, for those who can't wait for a pre-configured edition of ReplicatorG to appear, here's how you can upgrade right now! Given that you have the MK6 upgrade kit and three long bolts to mount the stepper board above the extruder board, you should have everything else provided by the kit. Here are the general steps I followed:
  • Print out a stepper board bracket so the stepper board can mount over the extruder board. (I tried having Makerbot make the holes in the correct spot but I finally just drilled some mounting holes manually)
  • Take apart mk5 extruder. Then use mk6 plates and new stepper motor.
  • Hardwire in a fan to the unused 4-pin connector from the power supply. I didn't bother putting mine on a switch so the fan just stays on when power supply is on. Use a volt meter to find the correct voltage for the fan.
  • Plug in stepper motor to 12V supply. Then calibrate the stepper motor pot voltage values as described HERE
  • Make a custom control cable to connect stepper board to extruder board.
  • Use Ubuntu Linux 10.10 and download replicatorG24.
  • Make a new .xml "cupcake MK6 with HBP profile" file with stepper motor .xml tags in it (see below)
  • download precompiled firmware for extruder board and put into correct place (see below).
  • Make reference to it so I can use Replicator program to upload firmware to the extruder board (see below)
  • Install rpmify script so post processing can substitute geared motor for stepper motor Gcodes (see below)
  • Edit the "start.gcode" file (see below)
  • Make a new Replicator profile that works using the new stepper motor.
For mounting, I recycled my DC bracket I used for the earlier H-bridge problem. Fortunately, the boards were practically the same size. As for standoffs, I found using 6/32 screws with cut tubing for standoffs works well. Don't bother buying tubing. You can use a bit of tubing that comes with the makerbot reel holder.

Wire-wrapped connections should be wired to make the equivalent circuit as described in this diagram HERE. If you're lucky enough to have some ribbon cable with with dip connectors on each end, cut the ribbon cable in half, then glue the two dip connectors together with superglue. The pins plus the use of a wire-wrap tool make a nice break-out box. That way, there is no soldering needed plus it's easy to troubleshoot and correct if the pin-outs are wrong. I also found using the edge of a 6 pin connector on the extruder's 3 pin connector is easier than soldering together a 3-pin connector to ribbon cable. Also, by accident, I discovered getting pins 7 & 8 reversed makes the circuit act like the motor has either noise problems or a firmware problem. Once I discovered that, I got out the wire wrap tool and was able to quickly correct that connection. Since then, I've had NO noise problems!

Now, for the software changes. I'm using Ubuntu Linux 10.10 with a downloaded version of ReplicatorG ver.24 . Also, remember to make sure you're using JAVA 1.5 and Python 2.5. There are several really handy pages to refer to:

http://wiki.makerbot.com/stepstruder-mk6-with-gen3
http://wiki.makerbot.com/stepper-driven-extruder#toc12

So, let's first make "Cupcake with HBP and Makerbot MK6 stepstruder" appear as a profile choice in the menu. This is important since we're going to be turning on a GUI control not normally seen if a Cupcake is just using a geared motor. To do so, go into the ReplicatorG directory structure. Go to the "machines" folder. You'll see all the profiles available. Let's make a copy of the "cupcake.xml" and call it "cupcakeWithMK6.xml" Then, in text editor, find the .xml "tool" tags and replace any "pinch wheel extruder" settings with this string instead.

name="Mk6" stepper" type="extruder" material="abs" motor="true" fan="true" heater="true" heatedplatform="true" motor_steps="1600" default_rpm="1.9"
Oh, and for the profile you're likely to use, don't forget to change the description tag to something like "cupcake with Mk6".

Once that is done, go into ReplicatorG, then pick "Machine" then "Driver" and see that a new entry for a cupcake with a Stepstruder now exists. Yay! Pick it. Now, go into the control panel and you'll now notice the old PWM box that controlled DC motor speed is still there. However, there is now a new RPM box below it that allows entry of stepping rate. Usually for an extruder test, "Full speed" for the DC motor was 255. However, an equivalent RPM speed using a stepper would be something like "1.8" So, now we have a new text box GUI control, we'll exit ReplicatorG and come back to this screen later.

We now need to make our extruder board be able to drive a stepper. So, we'll need to upload a new version of firmware to the extruder board. We COULD install all the packages required to compile our own firmware, then upload it to our board manually. Fortunately, we don't need muck about doing that! A very nice person compiled firmware that works great with the MK6 stepper. If you are using Linux and have GIT, you can download the Koenkooi pre-compiled firmware HERE. I use the pre-compiled hex file version 2.5. To install using a file manager, make sure you can view hidden files. Place this downloaded hex file the ".replicatorg" directory which is located in the user's home directory (usually this directory is above the desktop directory)

Now, make the firmware entry appear in the ReplicatorG firmware menu. Edit the "firmware.xml" file. There should be entries for other firmware choices that would appear in the ReplicatorG "firmware" menu items. Just make another "firmware" tag to point the hex file you just downloaded.

Once the firmware upload capability is in ReplicatorG, just take the programming cord, plug it into the extruder board, then use the menu to upload the pre-compiled firmware to it. Easy!

Inside ReplicatorG, Skienforge also needs to be adjusted. I've decided to only configure the Skienforge35 settings. That means when I generate Gcode, I pick Skienforge35 rather than going with the default Gcode generator.

Now, the really clever bit. You COULD post-process the Gcodes to substitute all the PWM speed codes (M 108 S) codes for RPM speed codes (M 108 R). However, you can instead add a script to do this automatically in Skienforge. This feature can also be turned on/off via check box. The script has instructions for installation right in it. The first step tells you where to copy the script to. The second instruction adds the script functionality to the menu. Get the script HERE.

Also, one last thing. You might want to set other initializations in the Skienforge profile you're working on. Here's how...
Go to .../replicatorG/skein_engines/skienforge-35/skienforge_application/prefs
Make a copy of one of the Thing-o-matic profiles that use an HBP, then rename it SF35-CupcakeWithMk6-HBP. Inside the directory structure, there should be a directory called "alterations" with a file called "start.gcode". I found it was helpful to take out the "homing" commands since my build area is smaller than a Thing-o-matic. If not, when the build starts, the platform will try to move the length of the larger build area with obvious bad consequences.

Once I reached this point, I found my simple shapes came out about as well as using the geared motor and they had the benefit of having fewer strings. However, raftless prints were disappointing. So, I made some tweaks to the replicator profile but that process is worth a whole different posting!