Saturday, July 25, 2015

Clock repair

Just a quick repair post today. The clock/timer on our stove has been starting to make a low hissing/squealing noise that was very quiet but sounded a little like the gas was on, which makes me nervous, and also the display has been ghosting.

This was pretty clearly a bad capacitor issue, acting exactly like the filtering was going out on the power.

I took a peek at the caps under a magnifying glass and discovered that one of them had some splooge around its base. I desoldered it and put it on the parts tester (I love this thing, it's ridiculous how useful it is).

It's supposed to be a 47uf cap, at 50v, which should have a 0.5 ohm ESR. It's measuring 150 ohms and only 38uf.  So there's yer problem.

I only had 25v caps in the bin but I tested the circuit and only saw about 2 volts across the cap so I just went for it, and it's fine now.  Gotta love the easy ones.

The weird bit is that these were 105*C Nippon Chemicon caps. The stove is 20 years old at this point but I'd have thought that in a relatively benign environment like this they'd last longer than that.

The vacuum fluorescent display is getting a little weak. When it decides to go, I guess that'll be an opportunity to build a whole new unit.  Maybe I'll put an ESP8266 in it and have it get the time from an NTP server :)

Monday, July 13, 2015

CTC to RAMPS conversion - completed and reverted

OK, long story short, I got the CTC to RAMPS electronics conversion done, but I wound up reverting it. Marlin has some great stuff I wish was in the CTC, but it is missing some key stuff, mainly change filament.  The CTC has a completely closed extruder. Marlin theoretically has a change filament item under the Tune menu but I have no idea how to get to Tune. It just seems to magically appear sometimes, then disappear under equally mysterious circumstances.

Anyway, I blew 10 hours on the conversion, so I'll post my problems and solutions here.

Problem 1: thermocouples
The Makerbot clones use thermocouples instead of thermistors to read the temperature of the heads. Thermocouples do not interface directly to any standard RepRap electronics. You can do it with thermocouple amplifiers, but I decided I'd rather just put thermistors on the heads, since they work fine and I have thermistors just sitting around.

Here's the thermistors being removed, they're the big lugs that were screwed into the head.

Here's my solution: I took wiring lugs, spread the wire position out to form an inverted wedge so that I could slip a thermistor in from the front, pull it tight into the position and have it held in place. I also greased it up with thermal paste and then wrapped it in kapton tape:

Problem: I didn't want to cut the connectors. So I made adapters out of RepRap style connectors soldered to various things that fit the CTC/Makerbot connectors. After putting them in place, I used hot glue to secure and insulate them.

Problem: The CTC power supply is 24 volts. Most Arduino Megas do not appreciate being run on 24 volts and mine was no exception. It ran for about 2 minutes before the voltage regulator started to overheat and fade.

As a solution, I wired up a voltage regulator on a separate board to drop the 24v down to 12, and I unsoldered D1 from the RAMPS board and wired the regulator board across it (24v out one side, 12v into the other). You can see the regulator board on the top of this photo, with the red, yellow and black wires snaking over to the RAMPS board (D1 position is under the X motor driver).

You can also see a terminal block on the bottom of that board. It's for distributing 24V to the fans. The RAMPS board does not have the capability to switch the two hotend fans on as the Mightyboard does, so I opted to just run them constantly.

The board you see there is a hunk of 1/8" hobby plywood cut the size of the mightyboard, drilled to mount on the same screws, then with the RAMPS board mounted on it to line up the USB socket in the same location.

CAUTION - If you are thinking about doing this and want to reuse the motor drivers BEWARE - I think they are compatible, but they are FLIPPED OVER. The pins come off the other side. This is a sensible move on Makerbot's side since the driver chips are soldered to thermal vias which dump heat through to the other side of the board. By flipping the board over they are able to put heatsinks directly on the thermal pad on the bottom which is FAR more effective than the other method of gluing a heatsink onto the plastic top of the chip, which does some good but is far less effective.

Anyway if you want to reuse a Mightyboard driver board in a RAMPS board, you'll have to unsolder the pins and resolder them on the other side. If you don't you will have a very bad day - I plugged in a motor board wrong once and it smoked ALL the electronics including the USB port on the hub that it was plugged into. I don't actually know if you can get the pins in alongside the heatsink and still plug it in - probably not, I'd guess the heatsink would hit the capacitor under the driver socket. I just wanted to point this out to save you from smoking a bunch of stuff.

Another problem is that the RAMPS board is quite a bit taller than the Mightyboard, and the adapters don't help either.  It's a mess and you can't really get the bottom cover back on.

Anyway, in the end it worked. It would print, but it just wasn't very good and I wound up reverting. Hopefully someone can get some use out of this info.

Thursday, July 9, 2015

CTC (makerbot) to Reprap (RAMPS/Marlin) conversion, day one

This is day one of replacing the horrible Makerbot (clone) firmware with a RAMPS board running Marlin.

I wish Marlin would run on the Mightyboard, it's a very nice piece of hardware. Shame about the horrible, 2009 feeling firmware. If it were running Arduino I might take a stab at it but I don't think it is. It is an ATMega chip and I suppose I could probably cram an Arduino bootloader on it. Might be worth a play once I get the RAMPS board going. Right now I don't want to potentially wind up with a completely bricked printer. Even if I get a bootloader running I'd have a lot of fooling around in pins.h to get all the I/O running on this thing. It is an open design though so it's not reverse engineering, just time.

Anyway, I was just poking around today, looking for pitfalls I'm going to encounter. I really don't want to cut any wires and make this irreversible. First challenge was that the stepper motor connectors are using large connectors about the size of molex connectors. I found that 14 gauge solid copper wire, removed from Romex cable, goes in just fine so I can make an adapter. Also the last two pins on the endstops can be wedged in, though since the X and Y are max stops and the Z is a min stop, I may not be able to fit the Z in very well.

Today I just got the firmware compiling, the LCD is working, I hooked up to a bench power supply and just attached the X motor and endstop and made it home that axis.  Worked fine first time.

Next up is to pull the print head and install thermistors instead of thermocouples, since the RAMPS electronics does not have thermocouple amplifiers like the Mightyboard does, and I don't really want to pay $30 for a pair of amplifier boards for no good reason - there's nothing wrong with thermistors.

Sunday, July 5, 2015

CTC printer tuning

So I was printing some stuff on the new CTC printer this evening and found that it was printing a bit small. I tried printing a 50mm calibration square, and it was coming out 46mm.  Well that's useless.

So I looked for the steps/mm setting in the firmware and couldn't find it.  I tried forcing it with M92 X100 Y100 - no luck.

I tried loading the gcode into ReplicatorG and printing from there. Better, it printed 49mm.  Still not really good enough.  But it's weird that the same GCode would print differently.

Finally I looked into gpx.exe, and found that there was a s3g-decompiler python script. I ran that on the x3g file and examined the output, and discovered that apparently Makerbot's s3g/x3g files do the steps/mm calculations in the file generation, and the printer just moves the specified number of steps.

This seems pretty backward to me, it means that the x3g/s3g files are specific to a given printer. It's not really horrible but it's not what I'm used to.

So it turns out that I needed to create a custom machine configuration to get precise settings.  The X/Y/Z are pretty easy, the extruder less so.

I started with a calculation, 16 tooth gears, 3200 step per revolution, 2mm belt pitch, should have resulted in exactly 100 steps per millimeter. But for some reason, it didn't work out.

I eventually used a dial indicator (I gotta get a new dial indicator - the one I have reads in inches. I never EVER want to read anything in inches) and wrote some quick GCode to home, then wait 10 seconds between moving to +10mm and 0 repeatedly. This allowed me to zero in to within about a hundredth of a millimeter.

I did similar for the Z axis, putting the dial indicator underneath.

For the extruder, I wrote some GCode to just heat up, wait 10 seconds, then extrude 100mm of filament. I marked with a sharpie up 100mm from the inlet of the extruder, then let it go. It came up a few mm short the first time, after some adjustments it was fine.

In the end I came up with a config file for this printer that results in good prints:

And here's the file:
Put this in your GPX directory, then when running GPX, use a command line like this:
(gpx directory)/gpx.exe -g -c (gpx directory)/CTC.ini (gcode file) (output x3g file)

Hope this is helpful.

Thursday, July 2, 2015

eBay "CTC" 3D printer - first impressions

I have been building my own 3D printers for several years now and I'm pretty happy with what I have.

But I have been keeping an eye on what's coming up on eBay recently, and I finally decided I had to get a better look. The one I picked up is a clone of the Makerbot Replicator 2, including dual extruders, for $500 shipped from the US.  I ordered it on a Friday and it arrived in Michigan on the following Wednesday.

TL;DR: Here's a photo album because photos are nice.

This seems to be a very close copy of the Replicator 2 as far as functionality and use goes.  It's made from laser cut plywood, painted black. The electronics is an exact clone of the Makerbot Mightyboard. They are distributing the Makerbot software and drivers.  Two years ago I would have been indignant about such a thing. Right now I don't feel that Makerbot deserves any sympathy whatsoever.

The machine arrived about 98% assembled. The only remaining step (ideally) after removing it from packaging was to use two screws to attach the printhead, four zip ties to attach the filament feed tubes, screw the spool holders on the back and get busy learning the process.

In reality there were some bumps in the road.

The most obvious was that there was NOT ONE WORD of instructions printed.  Eventually I found that the included 2GB SD card, besides the software, had a manual, if you can call it that. The manual was in DOCX format - apparently they believe that everyone has a copy of Microsoft Word. I had to download and install about 60 megabytes of Microsoft viewer and compatibility packs to view it. They should distribute this in PDF or HTML form.

The manual is not very good.

If you get one, here's a guide to not breaking the printer in the first 5 minutes:

  • Remove from all packaging.
  • Remove boxes except the ones under the print surface.
  • Remove all of the zip ties holding the motor and carriage from moving, unwrap the extruder (printhead).
  • SLOWLY lift the print surface up. You're spinning a motor when you do this, and that generates electricity which feeds back into the electronics. If you pull motors on a printer around fast, you stand a chance of damaging the electronics.  You can see the LEDs flashing sometimes if you move motors, even with the printer unplugged.
  • Get the boxes out from under the print surface.
  • Attach the printhead to the carriage. I don't think any of the screws I got were the right length. Either too long (bottomed out) or only caught about 3 threads on the aluminum block. I grabbed some M3x10s out of my workshop and they worked fine.

Hardware issues:

  • One printhead was quite a bit (2mm) lower than the other. This made the printer unusable as it was - I had to partially disassemble the extruder and adjust the height on one of the heads until they were even. (see photos below)
  • The spool holders it came with are too large a diameter for many of my spools. I suppose they work just fine with officially licensed and priced spools.
  • They just whack three strips of blue tape over the kapton, with huge gaps, and expect that's how you'll print. It's picking nits but it is kind of weird.
  • The ad said it came with ABS, it actually came with PLA.
  • The instructions don't even mention installation of the flexible feed tubes, and it didn't come with the cable ties required to put them in place.  There was only one feed tube supplied.
  • Several screws were loose. One had fallen out. TIGHTEN THOSE SCREWS.  ALL OF THEM. I missed a few and it bit me in the ass:
  • After a bit of printing, I had an issue where the right extruder was very low again. I disassembled the printhead, it was within 0.02mm of the same height, so that wasn't it. Eventually I discovered that a screw had fallen out on one of the gantry supports on the right and it had sagged a bit.  So tighten those screws to avoid frustration.

The software install was pretty horrible. It's partially in Chinese, has a few random English words, and a lot of just garbage characters. The only recognizable English is the name "Replicatorg" - even the "install" buttons are just Chinese characters. I poked a few things at random and eventually installed Replicatorg.  All of the device driver installs failed (Windows 10). More about the software later.

Here's the biggest major issue with the printer as it came (I figure most people can figure out to tighten screws). As stated above, one printhead was not inserted all the way into the heatsink block properly, so it was impossible to level the printbed properly.

The solution is to remove the fans and heatsinks from the front, then loosen the setscrew holding the hotends in place (they did NOT include a wrench that was the right size for this - one that was close but as far as I can tell does not actually fit anything on the printer) and shove the hotends hard up against the bottom of the extruder body. Once I did this, the tips of the hotend were within 0.01mm of one another by my gauge.

Firmware / printer control:
This is a total rip-off of Makerbot's firmware, so I suppose they should get the blame. The firmware on this printer is just "functional" but not "nice" from the point of view of anyone who is used to Marlin on a RepRap. You can't change printspeed during a print, you can't alter printer parameters (hotend temp, etc) during a print. I suppose I'll live with it, but if there were a build of Marlin that ran on the Mightyboard, I'd be installing it right now.  I might consider it anyway, and maybe even mount a rotary encoder for control.

Heck, I might even rip out the Mightyboard and just cram in a RAMPS board.

Anyway in short, functional, but not very nice.

I quickly found out that the Makerbot firmware can't read a standard GCode file, which is just weird. You have to convert into their goofy format.  ReplicatorG can do it, as can some other software.

Anyway I decided to just try ReplicatorG for a bit, maybe it'll impress me.


Maybe this is some kind of hacked version, but it doesn't seem so.  Apparently Makerbot people actually put up with this.  OMG Replicator is a horrible piece of software. It's straight out of 2011, which is about when dinosaurs roamed the earth in 3D printer terms.  Skeinforge?  Seriously? Who uses friggin' Skeinforge anymore?  It's not 2009.

I also can't change the settings. It takes me into Skeinforge settings, but when I hit "Save All" then exit, the thing is locked up. I had to hard reset my PC to get control back.  Later I found out I could kill python from the task manager and get control.

The software is mostly a pretty shell around some very outdated core functionality, with extra "proprietary file format" stuck on the top for icing.

Since I couldn't do anything to change profiles or anything, even when I told it to use a lower temp it still insisted on using ABS temp of 240 to print (and you can't change temps from the control panel mid-print - very medieval this control panel), it printed way too hot for PLA.  Here's a sample printed from Slic3r (left) and Replicatorg (right) showing what happens when the temp is too hot.  Also showing that it insists on using a friggin RAFT!!!  Seriously, why use a raft unless your print bed is badly warped?

Actually GOOD software:

My recommendation: Use Slic3r.  Generate GCode from that, and then then use the program found here: to convert to the x3g file needed.  A command line for this printer would be as follows:

 (program path)\gpx.exe -g -p -m r2x (sourcefile.gcode) (destfile.x3g)

Personally, I unzipped gpx files into d:\apps\gpx and created the following in the file gpx.bat:
d:\apps\gpx\gpx.exe -g -p -m r2x %1 %1.x3g

Then in Slic3r, go to Print settings / Output options and enter the full path to the BAT file:

You'll also want to go to the "Printer Settings" tab, then under Custom G-code, put in the code from this page:

There's other good stuff on there.  You'll want to create a single left, single right and dual extrusion profile.

One hint I missed at first on Slic3r for this printer:
in Printer Settings, set the print bed to 225x145mm, with the origin at 112x72.  The firmware puts the origin in the MIDDLE of the printbed, which is unlike all other printers I've seen and this really threw me for a while - it kept starting to print on the rear right corner of the print surface.

I always print from SD card. I've had prints fail due to various PC related issues, so I just don't do that anymore.

In the end I managed to get over all the speed bumps and do a dual extruder test print. It took probably 6 or 8 hours of f'ing around though, largely fighting with what I thought was a plastic problem, then I thought was a printer problem, and in the end wound up being a Slic3r bad config file, then had that screw come loose and the gantry collapse a few mm and I thought I had 3 different problems.  After all that, here's the sample. There's a bit of a gap, but that's a setting in Slic3r that I can fix easily:

The printer itself is absolutely amazing for the money. Hardware wise it's far above any of the RepRaps I've built to date. Construction was a bit slipshod, with the loose screws and the misaligned printheads. The PC software is mostly laughable compared to Slic3r or Cura from Ultimachine; but remember, this is Makerbot's software, so even if you bought a Makerbot you'd be running the same regrettable software. If I were paying real money for a printer, I'd buy from Ultimachine any day of the week before Makerbot, from what I've seen here. The firmware is acceptable. There aren't a lot of options, but honestly, few people actually adjust the acceleration curves in the middle of printing, so it's not a huge problem.

I think that anyone buying this as their first printer had really, REALLY better get a mentor. I think a 3D printing newb with no guidance might as well set fire to their money. But honestly, that's almost true of any 3D printer. Even with a modern, proper Ultimachine or Makerbot I think there's a huge learning curve, and without a mentor many people would be driven to distraction.

So: amazing printer, even without adding "for the money" to that. The low price comes with a few problems, but nothing surprising or insurmountable - 30 minutes of fiddling for someone who knows what they're doing. With ANY 3D printer, if you haven't used one before, you NEED to find someone to mentor you, even if it's just online.

All of the software, whether Slic3r or Cura or Replicatorg, have their own learning curve. Design has a curve as well.

It's a hell of a fun hobby, but it's NOT for the impatient.

Photo album:

Comments on the new Slic3r (1.2.9)

Recently a new flagship version of Slic3r was released, which rolls up all of the stuff that has been experimental for a long time into one stable release, version 1.2.9.

If you have been keeping up with Slic3r, I don't think there are any HUGE surprises. If you haven't looked for a few months, you may find it a much more mature, stable and feature-rich environment than you expect.

I'm not going to go into everything, just a few things that I am excited about and a few that bit me today.  For a better rundown, see the blog post here:

You should go get it.

One feature which I have needed FOREVER is XY Size Compensation on Print Settings. This allows you to fine tune your slicing to produce proper dimensions on your printed objects. Without this (for years) I have spent dozens, perhaps 100 hours and bunches of filament printing test pieces, tuning the size of holes and other pieces, to get them to fit properly. Just yesterday I printed a piece to fit on a motor drive spline, and though my measurements were correct, the thing didn't fit. I did some measurements, put -0.2 into this field, and immediately got a properly fitting piece. This is going to save me MANY HOURS of frustration and printing.

Here's a sample printed at -0.2 (which makes it correct) and +0.2 (which makes it worse) to show what's going on. Basically what happens is that without this correction, Slic3r is underestimating how far out the plastic from the nozzle squishes, which means the plastic area is a bit larger, which means the holes are a bit smaller than required.

One thing that changed at some point in the past (I think) and I didn't realize it until I started using it heavily in the last day is how the user interface has changed. I had been using it in a really idiotic way, just manually changing all of the stuff whenever I wanted things changed. This worked OK as long as I was dealing with a single, one extruder printer, but now that I have a couple of printers and one is dual extruder, Slic3r's new method makes way more sense. 

Basically you go into the tabs and set up profiles. You can set up profiles for different printers, different filaments, etc.  Then when you go to the first tab (the plater), you just select the profiles you want to use:

Once you get your profiles set up, this makes it much easier and more foolproof. I've wasted a lot of time and plastic because I forgot to change one thing in one tab.  This breaks it down into just a few profile selections to get everything right. Until I figured this out, I was struggling a bit. Now it's easier than ever. As always, learn your software and use it the way the author intends, or pay the price in time and frustration. Or, you know, write your own software if you don't like it.

One thing that I'm missing - on the File menu, according to the docs, there's supposed to be a "Combine multi-material STL files" option. I know it used to be there, I used it once over a year ago. It's gone. I don't know if it's intentionally gone and they haven't updated the docs, or it just got omitted. I can work around by putting both objects on the plater and manually aligning them, then manually choosing different extruders for the two objects, but the ability to make an AMF file to get all this done was nice. Maybe my "workaround" and then exporting an AMF is what we're supposed to do now. If so the docs need to be updated.

One thing that's not new that I should warn you about: when you upgrade Slic3r, I would HIGHLY recommend killing your configuration and starting over. Slic3r has a bad tendency when you upgrade versions of getting really wacky if the old configs are still there. I spent HOURS yesterday with things not showing up on the dialogs for dual extrusion, and with one extruder badly underfeeding. Eventually I got on IRC and LoH showed me a screenshot of what it should look like, and suggested deleting the config.  FYI the config on Windows is in C:\users\(name)\appdata\roaming\Slic3r - I'd suggest renaming that to something like "Slic3r-hold" then restarting Slic3r and letting it build new configs.

Here's a before and after of a dual extrusion attempt. The "before" is when for some reason Slic3r was under-extruding by about 95%: