I'm going to document my conversion of my Taig CNC mill to print 3D parts. Rather than buy or build a dedicated printer, I decided to use the Taig and just add an extruder. This will let me try out a 3D print capability with only about $150 invested. There are advantages and disadvantages to using a CNC mill: Advantages: - a 4 axis control system that is very robust. The electronics have been working for almost 10 years, so all the trouble shooting is done. - good precision. All the axis are square and I know very precisely how far they move for each pulse. I can address to the precision of 1/16000" and actually achieve position within 0.002" (my backlash). - a very flat bed to print on. I recently built a vacuum chuck on the mill and achieved a flatness within 0.0005" Disadvantages: - relatively slow movement. My maximum speed will be 31.5mm/sec and I'll print at 20 - 25mm/sec. That's in spite of the servos being capable of pulling almost 20 amps at 48 volts. The bed of the mill is heavy and makes a pretty good clunk when you reverse an axis at full speed. - G-code for the printers has been expanded with extra features that will not be available to me on the mill. One example is the code to control the temperature of the extruder. To make sure that the g-code would work with my controller I did a quick experiment. I grabbed an STL of a calibration cube and ran it through a slicing program. I did have some issues with the comment structure, but I was able to use Word to edit those. The resulting file did run on my machine.
I started the construction of the extruder by putting a E3D hot end on my birthday list. While waiting for that to arrive, I worked on the cold end of the extruder. I grabbed some gears, a surplus NEMA 17 stepper motor and designed a structure that I could cut with my CNC machine out of plywood. After some minor issues, the cold end is together and running great. It's mounted using the t-slots on the spindle and two bolts, so it can be removed easily. One of the advantages of having a 4th axis on the mill, is that it is easy to cut the drive gear. I just put a V-cutter in the spindle and make a groove every 8 degrees all the way around. It has proven to have great grip.
I received the E3D hot end and assembled it per the directions. Putting the thermistor on with Kapton tape was fun, but the rest went together pretty easily. With the hot end mounted on the cold end, I was ready for some testing. I didn’t have my thermostat ready, so I manually controlled the heater for the test run. There’s a meter to measure the resistance of the thermistor, a 12 volt power supply for the fan and heater element, and battery charger in “foam cut” mode to control the power to the heater. Not shown is an IR thermometer that I planned to use to check the temperature as it heated up. The first run up went fine, but I rapidly realized that the IR thermometer was not working very well. It would not read over 220 degrees C and I wanted to go to 300 degrees C. Because I didn’t have a table of the temperature to resistance for the thermistor, I had no idea how hot it was. Later, when I had the table to consult, I realized that I had gone way above 300 degrees C. I even burned the Kapton tape. The next step was to test the whole setup with some PLA. I loaded some PLA and started the hot end heating, manually stopping when the resistance said it was about 200 degrees C. As you can see, I did get some plastic to extrude. As I was messing around, my stepper motor got very hot. I didn’t realize how hot it was until it stopped running, making me think that the extruder was jammed. I think that I got the motor so hot that it may have demagnetized. Scratch one surplus motor. With the motor shot, I turned to troubleshooting the heater and thermistor. I realized that I have a k-thermocouple for my meter that is good for over 700 degrees F. So I ran a couple of cycles up to 250 degrees C, comparing the thermistor to the thermocouple reading. The readings were significantly off from what they should have been and they were different for each run. So scratch one thermistor. Lessons learned: 1) prepare better for tests, 2) make sure the amp limit on the stepper driver is set right, 3) thermistors have a temperature limit and 4) IR thermometers are crap severely limited. I have a new thermistor, stepper motor, and some Kapton tape on order. Demolishing equipment will commence again when they arrive.
There's a current kickstarter project to do 3D printing on a Taig: https://www.kickstarter.com/projects/39240967/cnc-to-3d-printer?ref=discovery It mentions a 'Mach3 plugin for generating g-code'. I'll be interested to hear how this goes -- I've thought about doing it for my Chinese 6040 router, but I have too many other projects at present! Do you have any details of your vacuum chuck? Is that a vacuum bed?
Slic3r already has Mach 3 g-code built in, so it is fairly easy to use. It converts the extruder E designation to A for the CNC 4th axis and also puts very few comments in. I have to go in and strip the header, footer, and extruder temperature codes and then it is ready to use. Cura is a little harder, since I have to use the Marlin g-code option on that software, which is more verbose and requires more editing. The kickstarter looks interesting. I think he is probably re-inventing too much of the electronics, but time will tell. If he just wanted to run more powerful stepper drivers, he could have just pulled the step and direction signals off a RAMPs 1.4 card and used them as the input to any driver he wanted. The rest of the RAMPs could have been used without modification. My step 2 plan is to basically do that. I'll get the Arduino and RAMPs setup and use it to drive my Taig through the step and direction outputs. That will help me learn the firmware portion while keeping the motor drivers unchanged. The vacuum chuck was built to mill printed circuit cards. It only has a usable area of 3" x 5" so it falls short of a vacuum bed. I made it using these chucks as inspiration: http://www.nemi.com/vacuum_chucks.htm
What are you using to control the extruder's stepper motor? A lot of the common cards have overcurrent sensing built in. Saved my extruder motor when I had a jam with that bad batch of gold filament. It jammed in the middle of the night, and when I woke up, the extruder motor had been shut down for at least 3 hours. The rest of the printer was running the pattern, but no plastic and no destroyed extruder parts.
I have a Xylotec stepper driver on the extruder motor. It's an older card but it works well and does have current adjustment. I had the current limiting set to about 1.5 amp. I knew that was a little high, but I had no specs on the stepper motor so any change I made would have just been a guess.
1.5A shouldn't be trouble for a NEMA-17... That's weird. Hope it's not damaged, I'm enjoying watching your progress!
I'm not worried about the controller, it's pretty robust. I've killed one before, but it took a direct short to do it. The surplus stepper was out of an old printer, so it was pretty cheaply constructed. Tugboat - When you had the jammed filament, did also shut down the heater element in the hot end, or does it just continue to cook?
The controller on the Mendel is not smart enough (with that firmware, in any case) to do that. the filament sat there and cooked. Now that you've stirred the pot, I am contemplating adding some code to the Rostock firmware to kill the print if the filament drive trips offline.
If you are using mach, you might want to look into custom M codes and / or brains to see if you can get it to properly interpret the parts of the code you are currently removing. You can do a lot of interesting stuff with custom codes/scripting & mach 3. (I made an automated metal punch machine using mach a while back for a job that worked well using the scripting language)
I'm using DeskCNC, which is an integrated CAM, g-code interpreter, and serial interface. I don't believe that I can program any macros or new M-codes. I could re-purpose the existing relay or spindle control M-codes if I wanted. Since the only control that would be really useful is the hot end temperature, I probably won't bother. The thermostat I plan to use is very simple with no computer interface.
That being the case, since you'll probably be present at the start of a print, for ABS printing, I'd warm the bed up to 110C and leave it there until the first layer is complete, then turn it down to 105C for the rest of the print. Manual control of the heated bed is not really a handicap since it doesn't vary after the first layer is down and you ramp down to the lower temp and leave it. For PLA, it's fine running the whole print at 40-45C, although it'd be nice to have it automatically shut off the bed heat at the end of a print. Does DeskCNC have the option to control fans on the print head? Cooling the plastic immediately after extrusion is helpful in PLA for forming nice bridges and overhangs without drooping or gooping