I am new to these makerbot forums so please go easy on me if I ask a few silly questions. I work for an automation house, and I am fairly familiar with the components in use within these makerbots (and most other 3D printers). I also have a lot of the components available to me for basicly free. There are a few things I would change about the layout of the machines I see here and I was wondering how versatile the "Makerbot Generation 4 Electronics Kit" is to accepting alternate hardware. These printers are built with low power NEMA 17 steppers, and the stepper driver is reasonably small (as it should be). I was wondering if I could replace the driver board with something a little more reliable, like a gecko drive, and nema 23 motor? I assume the driver that the "electronics kit" comes with is recieving a standard, digital, step and direction string to make motion possible? Also the kit specifies a positioning resolution, if I introduce my own mechanics, is the software easily adjusted to adapt to mechanics that have different ratios than the standard makerbot? Thanks in advance for any help!
Yes, you can do just that, or even go servo drive using Geckos as well with linear position detectors. http://www.thingiverse.com/thing:6814 with video links as well
The machines folder in replicator-G has the machine.xml (named for each machine) and I have also written how to calculate stepspermm but the math is right there as well.
See in the XML file (edit in wordpad) the system used to calculate the steps
Pulley dia: 10.82mm / 1/8 step = 1/(10.82 * pi / 1600)
So, you need to know the "effective" pulley diameter (a function of the number of teeth and the belt pitch-found by looking off the pulley spec), the number of steps per rotation of the motor at full step mode (typical is 200 or 1.8degree, but the next one is 400 or 0.9 degree). then multiply that by the denominator of the level of microstepping so 1/16th means it takes 3200 pulses to make 1 complete rotation. So take pulley diameter times 3.14 divided by the number of steps to make 1 full rev and then the 1/x key on the calulator and you'll end up with the stepspermm value.
Sorry, posting code here gets wierd so ignore the strikethrough
<name>Thingomatic w/ HBP and Extruder MK6</name>
<geometry type="cartesian">
<!— different pulleys on X and Y axii >
<axis id="x" length="106" maxfeedrate="4000" homingfeedrate="500" stepspermm="47.069852" endstops="min"/> <! Pulley dia: 10.82mm / 1/8 step = 1/(10.82 * pi / 1600) >
<axis id="y" length="120" maxfeedrate="4000" homingfeedrate="500" stepspermm="47.069852" endstops="min"/> <! Pulley dia: 10.82mm / 1/8 step = 1/(10.82 * pi / 1600) >
<axis id="z" length="106" maxfeedrate="1000" homingfeedrate="500" stepspermm="200" endstops="max"/> <! TR-8x8 Z axis = 1/(8/1600) —>
Cupcake example
http://www.thingiverse.com/thing:10651
Thank you for that! Would adapting speeds and feeds be as easily addressed? Can you tell me if increasing resolution at the stepper would drive up print quality? I can only assume that is why someone would want to go servo with a smart feedback device. I am also looking to increase the printable part size, so what are the limitations for this? The electronics kit comes with three limit switches, so I am guessing the overtravel is software limited in one direction for all three axis?
Speeds are easy and really nothing needs adjusted.By that, I mean the software is calculating and sending the pulses in a timed manner to achieve the motion (whole point of the machine.xml calibration)
Adjusting stepper resolution is a false premise. The motor physically has 200 steps. When we microstep, we partially turn on adjacent coils or "cog"s at the same time and "assume" each microstep will be an exact fraction of the step, but variances in magnetics, load and other factors mean that there is NO precision between those microsteps. Microsteps reduces precision (the ability to hit the same commanded point physically each time), and while to the layman it increases resolution 3200 steps VS 200, without precision, that # is somewhat meaningless.
So the whole reason for going to microsteps is to quiet the machine down. This is because at speed, the microsteps are looking like a sine wave at the motor coils and not a square wave. It just so happens this was my primary motivation for going servo and you can hear it in the video (or not hear it-the whole point). The other reason for going servo was because prints take hours, there is nothing worse than skipping a step 4 hours into a print. Since steppers have no feedback (yet another assumption moment) we assume they always move to the right spot. The issue is if the motor is marginally strong enough, then there is a chance, mechanical binding or just speed and inertia can cause the motor to skip a step. Since there is no feedback, the print continues but now all coordinates are shifted and the print is ruined.
External servo drive like I implemented is not perfect either, but massively improves the situation. Basically, the servo attempts, to the best of it's limits, to hit the commanded position. If for some reason it cannot (mechanical bind), it still knows where it's at and will still attempt to hit the next position accurately. This means it's still possible for a mechanical issue to cause a distortion or problem in the print, but instead of the whole print being failed, we simple have a spot that is not perfect.
Also, we must take the nozzle into the factor. Running a 0.4 mm nozzle, we know we much slightly smash each layer flat to ensure good bonding vertically between layers, so we net about 0.5mm stripe. Obviously, plastic feed must exactly match forward motion of the nozzle if we are to maintain an exact strip width (think using a caulk gun and varying feed and flow and how hard that is to do with a 1/2 inch bead of caulk). Because filament coming off the spool has minor variations in diameter, we also loose some precision because we "assume" again a fixed filament diameter feeding into the extruder. Don't forget about backlash in the belts moving the head or the build platform and then also flex in the frame. All of those factors add up to the final precision the machine can hit which is likely closer to half the nozzle width. That's "good enough" considering even injection molded parts are subject to variations due to the massive contraction of ABS when it cools.
Again, let me be clear, the servo drive experiment happend on the first T-O-M, when they were using the old motors from cupcake which were not low inductance and had a lot less torque than the moons motors. I was constantly skipping steps and it was a horrible time for the T-O-M. This is what caused MBI to switch to using the moons motors. That said, the real fix is to modify the design to use the longer frame NEMA 17 with 5.5kg/cm torque, nearly double what even the moons motors make.
So basically what I'm saying is that the current motion system is more accurate than the nozzle anyway, thus you won't change anything and you are just making it cost more and be far more complicated.
Here's a good related discussion on the Ultimaker about the large NEMA17s
http://groups.google.com/group/ultimaker/browse_thread/thread/6398dee3b9da6a0d
And this thread was a lengthy discussion about increasing the drive voltage to the stepper drivers to prevent skipped steps and why I showed that doesn't work.
http://groups.google.com/group/ultimaker/browse_thread/thread/44c1dbbbd0bc0e94/5534ce5951885e66?lnk=gst&q=motors#5534ce5951885e66
Realized I didn't truely answer the questions:
I am also looking to increase the printable part size, so what are the limitations for this?
The problem is ABS contracts far too much when it cools and thus anything much over the current 12x12cm printbed of the T-O-M is likely to either crack from stress built up in the part, or curl upwards at the edges. Only using PLA plastic which has a much lower rate of expansion/contraction can larger objects even be printed. Even then, the 20 x20cm build area of the Ultimaker is about the practical limit.
The electronics kit comes with three limit switches, so I am guessing the overtravel is software limited in one direction for all three axis?
No, there actually is no overtravel limitation. By this I mean literally, there is nothing in the software (replicator-g) that prevents you from sending commands (gcode) that is outside the physical tavel limits. In the machine.xml file (where you set stepspermm) there is also the axis size. This changes the grid and bounding box in replicator-g to show the physical area of the build platform so that you the operator decide if a print "fits". That said, you can install the other limit switches (so both + and - ends of the axis) and they work with the firmware to stop sending pulses to the steper driver. The note of caution here is that means the machine continues to print the rest of the object so you end up with a flat wall at the limit switch side (basically cutting off that end of the part).
Either way, it's you the operator who must ensure you:
A. set the correct size in the machine.xml
B. ensure when you generate gcode it fits inside the bounding box
C. you calibrated the offsets using the calibration script for the center of the bot.
As a note to C., you must likely modify the stock calibration script and your start.gcodes if you modify the machine to be larger. This is because the homing command has a time based limit built into the firmware. So, lets say you made the x and y double the 120cm stock. Then you need to double the home command (home command back to back twice in the gcode) in order for it to actually hit the limit switch. Since the calibration script must home the bot to the limit switch to set the intitial offset, it must be doubled in the calibration script. Then, the same thing has to be doen to the start.gcode of the profile used to gnerate gcode,since the start.gcode is appended to every gcode you generate.
The bottom line is that yes, gen4 and rep-g can run a house sized bot and I can tell you how to modfiy the configs to make that happen. It's not that hard. The issue is, there are several reason why a larger bot doesn't work (mostly material issues). I have no doubt some of the aluminum fram designs up on thingiverse are nice, and they do add stiffness. Going to bigger motors can force the bot faster if the frame is stronger to counteract the intertia shake and flexing. Conversely, just going slower improves resolution of the current hardware and a little bit a patience goes a long way. That said, you do realize that even at 28mm/s feedrate, we are 3 times faster than any commercial bot such as a Z corp or 3D systems? There is a reason why the big commercial machines go slow.
One additional small note. It has been pointed out in the forum that there is a time limit set on the axes homing travel time to twenty (20) seconds. Assure you machine.xml configuration homing speed for your axes will meet this limit or search the forum for instructions on how to set another time period and recompile code. Otherwise, do as all instructions above from Vernon (jetguy). He does lift a lot of bot.
Hi JetGuy,
You said:
"External servo drive like I implemented is not perfect either, but massively improves the situation. Basically, the servo attempts, to the best of it's limits, to hit the commanded position. If for some reason it cannot (mechanical bind), it still knows where it's at and will still attempt to hit the next position accurately. This means it's still possible for a mechanical issue to cause a distortion or problem in the print, but instead of the whole print being failed, we simple have a spot that is not perfect."
And:
"That said, you can install the other limit switches (so both + and - ends of the axis) and they work with the firmware to stop sending pulses to the steper driver. The note of caution here is that means the machine continues to print the rest of the object so you end up with a flat wall at the limit switch side (basically cutting off that end of the part)."
Couldn’t you also modify the firmware to have it do the bounds calibration after every few (or single) layers, then using that data re-center/align the system, so if there was an error, it’d correct as soon as it checked the end stops?
There is one unmentioned benefit to having a bigger build area, is allows for multiple prints without using the ABP. If you doubled the X and Y axis, then you could print 4 objects at a time. This would be very nice for printing lots of very short objects (like Legos) without the ABP.
Just a Thought.
Couldn’t you also modify the firmware to have it do the bounds calibration after every few (or single) layers, then using that data re-center/align the system, so if there was an error, it’d correct as soon as it checked the end stops?
Sure, or you could just encorporate encoders.
The point is the complexity and cost it adds to the kit, it takes massively longer to print anything, and still may not "solve" the problem of using weak motors. The bottom line is to properly engineer the system, use larger stepper motors and drivers, calculate the thermal requirements, reduce the mass and flex of the moving parts, do not overconstrain the axis, and it will work just fine open loop.
I have built my own custom makerbot, and before that a CNC mill. I used Gecko drives and nema 23 steppers on my mill and I used stock Nema 17 motors with Makerbot drive boards. I would go with the nema 17 motors and M/B drivers. The Gecko drives are three times as much and you don't need that resolution they give. you only need 1/8 step. As far as power the Makerbot set-up has PLEANTY! I was skeptical about the nema 17 but they provide pleanty of power, even with marginal alighnment of the bearings and shafts. I think the stock setup is the way to go.
Good luck.
Gregg