So I was using my 3d printer for about a year, and I decided that I wanted to print parts in ABS. One of the key differences that ABS has, is its higher glass transition temperature. This means it doesn’t start to get soft (and deform under pressure) until it reaches a much higher temperature than PLA, 100C+ vs 60C.
So to improve the chances of a successful 3d print using ABS, I wrapped my printer in cardboard in order to emulate a heated enclosure. In this case, the enclosure is heated by the waste heat from the heated bed. This went decent for a print or two, until I noticed I started to have some axis creep, where the head was slowly moving in one direction. As the prints progressed I found out it was doing this because the x carriage was starting to melt! A couple more prints later, and both the X Carriage and the extruder had destroyed themselves and were no longer usable.
My father, in the meantime had been building a XYZ table for a drag engraver. He was using really nice linear rails that he had purchased off ebay. He found himself another small CNC machine that made his XYZ table obsolete, and I managed to convince him to donate the table to the cause, and thus my ABS printer was born!
The X and Z axis are 6mm pitch ballscrews, powered by NEMA17 style steppers. They have encoders on the back, but I am not using the encoders at this time.
The Y axis (table), is a 10mm pitch ballscrew, powered by a NEMA23. I was initially driving all three steppers from the Sanguinololu board with pololu stepper drivers.
After everything was installed and wired up, I fired it up and got started running some simple movement tests. Figured out that 600mm/s^2 is a decent acceleration, it’s not super quick, but running the pololu’s at 1 amp it keeps it from skipping steps. I can likely crank this up once I get more power for them.
Doing speed tests, I was able to get up over 100mm/second running back and forth, but I quickly noticed I was having some odd resonance issues with the X axis. Around 60, and again at 80mm/second, it made some quite loud noises, and would occasionally stall for a moment.I did some digging and research, and found out that they DO make stepper drivers to prevent this, but the $10 pololu’s won’t. For the time being, I limited my speed to 40mm/second.
Tried a few test prints and I was having extruder jamming issues, very weird issues. Fiddled around for a few more hours and discovered some…. issues with the extruder itself. Tore it apart, widened some of the the holes, put in a j-head slot plate and put it all back together. No more jamming filament, no more slipping hotend!
At this point, I was up and running! I had my ABS printer, it did alright for smaller prints. For larger prints, I started having delamination issues from the lack of a heated environment, as you can see below. This is really a major issue on large parts, but shows up as corner warping on smaller parts.
So I made an attempt at a heated enclosure….
More on my experiments with that, including a proper frame later
I started noticing that certain prints would cause missed steps during rapid small infill. Lowering my acceleration values didn’t have any effect at all, so I started looking into exactly what parameters managed this. Turns out it was something that reprap calls “JERK”. Anyone familiar with motion control knows what jerk is, but in this case it is entirely literal. Jerk is the maximum velocity change the printer is willing to do instantaneously. Sure, instantaneous acceleration isn’t possible but it tries really hard to do it anyway. If I disable this feature, then the printer goes from point to point, acceleration and deceleration, coming to a stop between points. Totally unusable.
So my options were, turn down the speed REALLY far for the whole print so it’s not an issue, or live with it. I chose to find a different controller.
Enter; LinuxCNC. My dad had a spare G540 stepper driver that he said I could play with so I put LinuxCNC on a liveCD, loaded it on a spare CarPC that I had laying around which happened to have a parallel port. I had to cut all the connections to the stepper connectors I had, and solder them into some DB9 connectors to plug into the G540, but I got all that finished fairly quickly. I plugged it in, started linuxCNC, and got fiddling with GCode to get it to work.
A couple key differences between Reprap and LinuxCNC gcode. Reprap is primarily G1 commands for movement, with M commands interspersed for extruder/bed temperature and the like. Simply commenting out all M codes, and changing all E references for extruder to A for the 4th LinuxCNC axis is all that needs to be done for the GCode file to be loadable by LinuxCNC.
Because I don’t yet have a way to run the bed/hotend from LinuxCNC, I kept them hooked up to the Sanguinololu, and used my own utility to turn them on and off, but I do need to have that controlled by LinuxCNC at some point,
Once I was able to load the GCode, I set my home positions, got the hotend and hotbed hot, and then hit Go. It printed magnificantly! Way more smooth, way quieter with the G540 stepper drivers, able to go faster due to the anti-resonance characteristics of the G540. I was limited however to only 70mm/second, since the PC I was using wasn’t great in terms of jitter, but it prints at 60mm/second beautifully with no issues.
So right now I have a spare CarPC connected to a loaned G540 plugged into my stepper drivers, with a Sanguinololu connected to my hotend/hotbed. It’s quite a contraption as you can see below but it is a very good proof of concept!
Next step will be to figure out what stepper driver I want to go with (G540, or as an alternative MX3660 would work as well), and figure out how I will be getting a faster step clock. My PC is running with a 33uS step clock, which is only fast enough to get up to 70mm/second with the G540 10 microstepping. The 3660 would allow me to drop to 1/4 microstepping, increasing my maximum speed to 140mm/second, and switching to a beaglebone would reduce my step clock to <10uS, increasing my potential speed well beyond what I am looking for.
Just a couple of weeks ago I got my hands on a PMDX-432 (http://www.pmdx.com/PMDX-432), which allows me to truly do a standalone beaglebone/linuxcnc based solution. More on that in the next post…