Fastest Thing-O-Matic EVAH!

With a pair of low-resistance and (relatively) high-torque NEMA 17 stepper motors driving the X and Y axes, I re-ran that torture test.

At 750 mA with just the aluminum sub-plate:

  • X can traverse at 6000 mm/min
  • Y begins losing steps at 4000 mm/min

Increasing the Y driver to 900 mA, the Y motor can traverse at 6500 mm/min. It began losing steps at 6600 mm/min.

Increasing the X driver to 900 mA, the X motor can traverse at 6000 mm/min with both aluminum build plates.

At 900 mA with both aluminum build plates, both axes can dependably traverse at 6000 mm/min = 100 mm/sec.

Large moves shake the printer, small patterns rattle it like a castanet, and you (probably) can’t print plastic at that speed, but the XY axes can traverse at 100 mm/s. That’s with about 200 g of aluminum plates atop an HBP, making it far heavier than even the ABP.

Because the firmware does not apply velocity ramping (aka control the motor acceleration), the stages must start or stop within two full step positions to avoid stalling the motors.There’s some belt deformation (not stretch), the Y idler pulley isn’t rigidly mounted, and the stages themselves have plenty of slightly bendy parts.

At 200 full step/rev, a 17 tooth pulley, and a 2 mm pitch belt, 1 full step = 0.17 mm and 2 step = 0.34 mm. I don’t have a good measurement for the other factors, but let’s assume a little bit of slop and go for 0.5 mm of total start / stop distance.

The acceleration required for an abrupt 100 mm/s speed change is therefore:

(0.12)/(2 * 5x10-4) = 10 m/s2

The entire XY stage assembly weighs about 1 kgf, so F = m·a tells us that the force is 10 N. There’s another 1 kg = 10 N from belt / pulley friction, so the total force is 20 N.

The pulley radius is 5.5 mm, so torque = F·r tells us the required motor torque is 20 * 0.0055 = 110 mN·m.

Although I don’t have the exact motor specs at hand (a peril of using eBay as my parts locker), NEMA 17 motors with 38 mm case lengths produce around 200-300 mN·m at 1 A. That matches the Y axis numbers pretty well, given the one-significant-figure accuracy of the measurements.

The X stage motor has a 34 mm case length and is likely good for 150-ish mN·m at 1 A. The 0.5 kgf of X axis belt friction dominates the acceleration force, so that result is in the right ballpark, too.

The motor have winding resistances around 2 Ω, so they’re dissipating something under 2 W at 0.9 A. The cases and driver chips get barely warm to the touch; there’s no need for heatsinks or active cooling!

Because the motors run well within their rated currents and the winding voltage is far lower than 12 V, microstepping is in full effect. The motors hum quietly and the stages move with authority. This is the quietest motion I’ve ever heard from the Thing-O-Matic; isolating the bolt heads from the panels probably improved that, too.

Remember to increase the per-axis speed limits in machines.xml to allow higher speeds; it’s all too easy to fool yourself that changing F6000 to F7000 in the G-Code file makes a difference, even while the XML file caps the speed at F5000.

Now that RepG has a setting for the homing speeds, I can set the maximum XY speed to 6000 mm/s, home at 2500 mm/s, and be done with it.

I might just saw the leadscrew off the damn Z axis motor and replace that puppy, too, although that’s not in the critical path right now.

Note: Don’t replace the motors on your TOM without going through the whole mechanical and electrical upgrade process I’ve described over the last few months. The X axis rod follower is extremely important, but the rest of the mods I’ve described help make the printer work smoothly and reliably. Adding more power won’t make those problems Go Away; you’ll just break something else!

33 thoughts on “Fastest Thing-O-Matic EVAH!

  1. Your blog is great!!! I was wondering if you have a list of recommended upgrades?

    1. a list of recommended upgrades?

      Carmiac has been maintaining the definitive TOM Upgrade list on Thingiverse, which includes some of my tweaks. Do those and you’ll have a world-class DIY 3D printer…

      The absolute minimum, IMO, would be:

      • Extruder Controller power mods
      • Cartridge heater
      • X rod follower
      • Geared stepper extruder (not MK6 Stepstruder)

      Swapping stepper motors requires Quality Shop Time, alas, but you can get good results with the MBI motors if you eliminate mechanical binding, keep the speed down, and dial the maximum current down to the minimum required.

      And then you can Just Print… pretty much, anyway.

      Welcome to the club!

    2. Good analysis. Thanks. I found most of my problems came when it was trying to fill a skinny wall. That machine-gun rattle would hit some resonance and lose Y steps.

      On to other problems !

      1. fill a skinny wall

        Ouch. That’s where acceleration control would really help: it’d never reach top speed, but it would also never shake the machine apart…

  2. Let me see if I understand this:

    1) running at ~34mm/s translates to 1 rev/s, meaning each microstep takes .625ms
    => therefore, running at 100mm/s would only allow about .210ms/microstep

    2) .625ms is about half the time constant for the MBI motor, meaning that the current at each microstep is lower than the nominal current at a given microstep according to i-actual = i-microstep * (1-e^(- t-microstep/tau))

    3) What this means is that the torque available is limited by the current (in both windings), and since this is a linearly proportional relationship we can use the time constant for a given motor to determine the available torque, and therefore to determine the maximum speed at which we can run

    For example, using Anaheim automation 17Y302S-LW4:
    L = 11 mH
    R = 6.6 ohm
    V = 5.6 V
    I = 850 mA

    tau = 11/6.6 = 1.667 ms

    so at 850mA and 100mm/s:

    i-actual = 850 * (1-e^-(.210/1.667)) = 101.8 mA

    which is 101.8/850 = 12% of the maximum current. Since according to the datasheet, the max torque is about 40 oz*in or 282mN*m, we’d take 12% of that, or about 34mN*m as the maximum torque we could expect from this motor at the given speed – clearly not nearly enough torque to work properly. Rerunning the calculations for required force in your post above and iterating the calculations here, we arrive at at a speed that requires the available torque at the corresponding microstep time: 47mm/s at about 67 mN*m required torque and .452ms per microstep. If the stage were lighter the speed would increase; similarly if the resistance in the bearings were reduced.

    I’m trying to piece together a number of your posts here to get a fairly complete picture of the factors involved in selecting steppers compatible with the Gen 4 electronics. Frankly, I feel like I must have missed something, since in your above post you don’t mention torque reduction due to time constant issues and a cursory search of NEMA steppers doesn’t make it seem like a time constant lower than around 1.1ms or so is available. It seems equally unlikely that the steppers you have are 5X as strong as the example here, but maybe they are. Did I go wrong somewhere?

    I’ll add that assuming I got this right it would presumably be possible to either run the motors through a gearbox or tweak the pulley sizes to reduce the required motor speed and therefor boost torque. Unfortunately, increased pulley size would also increase required torque, and gearboxes are expensive.

    1. You’ve got it very nearly right; your analysis applies to motors driven from power supplies close to their rated voltage.

      For motors intended for microstepping, the missing piece of the puzzle is the difference between the motor’s winding voltage (equals resistance times current) and the supply voltage. That’s what’s available to drive the current change at the start of each (micro)step. The motor’s rated voltage should be much less than the voltage you apply to it at the start of each microstep.

      For a winding voltage around 2 V, you have 10 V (less losses & IR drops) driving the change, so the final current would be crazy high if the driver wasn’t applying current limiting when the current reaches the trip point for that microstep. The MBI motors have a winding voltage that’s basically equal to the power supply, so there’s nothing left to drive the current change: the final current is the same as the rated winding current, so your analysis applies.

      That’s why industrial stepper drivers use 24 or 36 or 48 V supplies with 2 or 4 or 6 volt motors: more voltage yanks the current around faster.

      The key equation relating the voltage across the winding to the rate of current change is
      V = L di/dt
      For 6 V across an 11 mH winding, you have di/dt = 6 / 11 mH = 550 A/s, which means the current can change 550 A/s * 200 us/microstep = 110 mA. Given that the difference in current between successive microsteps is smaller than that, the current will reach the target in less than one microstep. You’d want to do a full analysis on it, but it’ll probably work; for a 12 V supply, though, something around 2 to 4 V might be better.

      I must sort all that stuff out and write it up; at the moment I’m exploring printing around 80 mm/s… the results aren’t pretty and the TOM won’t last long at that speed, but it works!

      1. Thanks for the explanation. I’m a little confused by how you applied V = L * di/dt to calculate the available current only using 6V – should that calculation be made using the actual supply voltage? It seems like using 6V suggests that that’s the voltage you’re using to drive the motor. [I’m not so sure about this now – see below].

        In any case, if I follow you we should compare the current rate of change for the motor with the required current change for each microstep (or at least the maximum change, since the change is different for each microstep). For 850 mA max current:

        i-first-microstep = 850mA * ~.20 = ~170mA

        Since from the above analysis the current can only change 110mA in the time allowed for this microstep, we won’t reach maximum torque. If torque is proportional to current and the microstepping is calculated to provide the rated torque (not completely clear on this, but I think that’s correct), we’ll only reach 110/170 = ~65% of the rated torque. For Anaheim 17Y302S-LW4, that would be:

        282 mN*m * .65 = ~183 mN*m

        which would still be enough to drive the TOM at 100mm/s since that requires about 110 mN*m. For the next microstep the current should be:

        i-second-microstep = 850 mA * 38.3% = ~325 mA

        i-actual will be 220mA (~67.5% of max) using a linear di/dt from V = L*di/dt, since that’s how much the current can change in the time for two microsteps. For successive steps the necessary change decreases but the di/dt stays linear, so we’ll approach the maximum torque more closely. Have I got that right?

        However, all that doesn’t seem to agree with the time constant analysis above (as you explained in your post), which gave a torque of ~34 mN*m at that speed. What I’m unclear on is when we should apply the analysis in this post instead of the time constant analysis. I’ve plotted the calculated current for various voltages using the exponential and time constant against the linear di/dt from V = L*di/dt for the Anaheim motor and it looks like the linear approximation corresponds to the exponential at a supply voltage of 12V. Would I be right in thinking that this is how we’d decide the break point for the motor? In other words, to perform as we’d expect from the datasheet we’d need to drive the motor at a minimum of 12V? This contradicts the idea of using the supply voltage in the di/dt calculation suggested above, but there you go.

        1. calculate the available current only using 6V

          The circuit model for the winding is a resistor in series with an inductor, so the voltage across the inductor is the supply voltage minus the voltage dropped in the resistor. The voltage drop is the product of the winding current (whatever that may be at the time) and the winding resistance. So at the peak of the microstepping curve, where the current is nearly the full rated current, the inductor sees about (12 V supply) – (6 V resistance drop) = 6 V. That’s the total voltage available to change the inductor current.

          Then V = L di/dt tells you how the current changes at the start of the microstep: you know the applied voltage, so you know how fast the current will change. If the microstep is much shorter than the time constant, you can assume the current will change linearly at that rate for (most of) the entire microstep: the total change is di/dt times the microstep duration. Rough and ready, but it’ll get you close if the total current change is small with respect to the starting current.

          When the winding current is zero, then there’s no IR drop and the full supply voltage appears across the inductor: you get a faster rate of change.

          it looks like the linear approximation corresponds to the exponential at a supply voltage of 12V.

          Except that you don’t have the full power supply voltage available unless there’s zero current in the winding. Once you account for the IR drop, you’ll see how that works.

          In order to perform properly, the winding current must reach the specified value for each microstep very quickly. Ideally, you’d have a step function, but that can’t happen. Knowing the voltage drop in the winding (given by the current at the start of the microstep), you can figure the voltage available to change the current during that microstep. Figure the initial slope, then figure the time until the current hits the target value for that microstep. If that’s a small fraction of the microstep duration, you’re golden. If not, then the motor won’t develop full torque.

          I must draw pictures!

  3. Ok, I think I get the idea. So to do a full analysis we’d take the initial current, calculate the resistance drop, subtract that from the voltage and calculate di/dt? We’d then multiply that by the time per microstep and compare that with the required change for the present microstep. If the calculated current meets the required current for the given step then everything is fine (more or less), if not then we’re not getting full torque. Yes?

    Starting with i0 = 0 mA and 12V supply:
    voltage drop = 0 mA * 5.8 ohms = 0
    and di/dt = 12 V/11 mH = 1090 A/s
    => to reach 850 mA * .2 will take .850 A * .2 / 1090 A/s = .156 ms
    which is less than the .210 ms per microstep, so we’re fine on the first one

    The next step would be i1 = 170 mA and 12 V supply
    voltage drop = 170 mA * 5.8 ohms = ~.99 V
    => di/dt = (12 V – .99V) / 11 mH = 1001 A/s
    the change in current to the next step is 850 mA *38.3 – 170 mA = ~155 mA
    => to reach 155 mA will take .155 A / 1001 A/s = ~.155 ms, so we’re fine on this microstep


    Is that more or less right so far as it goes?

    1. Is that more or less right so far as it goes?

      Yup, although it should be painfully obvious why we engineering bears vastly prefer using a circuit simulation program. The linear assumption rule-of-thumb only gets you so far out on a limb; sawing it off requires a simulator!

      However, when the rule-of-thumb says you’re in trouble, that’s generally a good sign something is amiss.

      .156 ms which is less than the .210 ms per microstep, so we’re fine on the first one

      Actually, you’re not: the current takes 75% of the microstep to get up to the target where the driver will apply current limiting, so the step is badly starved. You want that down around 10-25%, tops.

      Suppose you had a 36 V supply, which gives di/dt = V/L = 36 V / 11 mH = 3300 A/s. That hits the target in 51 us, about 25% of the microstep. That’s more like it… and that’s why you see much higher voltages around steppers in CNC machines.

      1. Is taking 75% of the microstep time and starving the step all that bad in cases like this? It seems like the motor in this example is able to provide more toque than we need at this speed, so taking what I assume (hope) would be a relatively mild performance hit on account of not reaching the microstep current fast enough shouldn’t be a deal breaker – or is it?

        I ask because in this case we’re looking for a motor to interface with a control circuit and supply voltage we didn’t design. So short of scouring the earth for exactly the right stepper at any price or redesigning the supply/controller, when should we call good enough good enough – just as a rule of thumb?

        Or put it this way, if you’ll forgive me for asking you to go out on a limb: if you were to recommend a replacement stepper for the TOM (I don’t have one, by the way, but I’m looking to upgrade to gen 4 electronics which looks like it means a stepper upgrade as well) for under, say, $50 each, what would you suggest? To me it seems like the anaheim motor in the examples would work just fine – which is why I picked it. But I’ll be the first to admit that I’m flying pretty much blind here.

        Thanks again for your explanations, by the way. They’ve made this issues involved with stepper motors much clearer to me.

        1. starving the step all that bad in cases like this?

          Well, it depends on whether you want the motor to run properly or not… [grin]

          Until the torque exceeds the load on the shaft, the motor doesn’t move, so the object of the game is to make the applied current not resemble a ramp. Remember that there’s another winding and proper rotor position depends on both currents; in order to make things happen properly the driver must control both currents.

          when should we call good enough good enough

          With all that in mind, I think any motor with a winding resistance under 5 or 6 ohms and a pull-in torque up around 200-300 mNm at a few hundred full step/sec should do the trick. I bought mine from eBay for under ten bucks a pop (admittedly, in groups to save on shipping), so I haven’t done a whole bunch of catalog surfing and price shopping.

          But that’s the point: random eBay motors work just fine. Once you get a motor with “enough torque” then the printer will behave properly; this really isn’t a close-to-the-cutting-edge situation. It’s just that the original motors weren’t really intended for use with microstepping drivers that’s causing all the problems.

          The gotcha is that the MBI pulleys won’t fit on the 5 mm shafts that everybody else uses. That’s another accident of history, alas.

          made this issues involved with stepper motors much clearer

          For me, too, because I really had to sit down and work through the numbers. I’m glad it’s helping you (and other folks!) figure out what’s going on.

  4. Ed, While I like the idea of replacing the motors-what happens if we just increase the power supply voltage?
    The drivers are rated for it if we remove the 5 volt linear regulator. Something reasonable to start-like say 24 volts.

    In thinking this-
    I know the current motors get too hot if run at rated voltage – would the over voltage cause them to run hotter, because we would be increasing the time spent at near max current/ voltage specs? In other words, I fully understand the inductor relationship with respect to the time constant of voltage rise, so pushing more voltage up to the resonable current limit (400 mA rated), would mean more power, and thus more disipation? This would mean uppping the voltage is either going to work or let the smoke and bad smell out of the motors. Being that they don’t work well anyway, sacraficing one or two doesn’t seem like a horrible experiment this weekend. I’m testng my new RepRap anyway, and the motors are in the open for easy temp measurements.

    1. just increase the power supply voltage?

      The motors produce so little torque even at their rated current that they’re not worth the trouble. They’d actually run cooler, though, because the driver chip could manage the winding currents properly, and sound much better.

      So I’d expect a marginal improvement that wouldn’t be obvious on a well-adjusted TOM.

      The real problem would be the temptation to crank the current up and up and up in search of !!MOAH POWAH!!, which would incinerate the motors in short order.

      One careful measurement is worth a kilo-opinion, though. Give it a try and report back…

  5. Need to add, these are stock MBI motors, with the gen 4 drivers, so this should be fun. I have 2 power supplies rated at 24 V 4.5 Amps, one for each axis.

    Also, just curious, do we know the scaling constant for the ref voltage VS current—it looks like you guys said .6 V is the right number to max out at 400mA.

    I’m just curious for my other stuff to know such as adjusting to reach 1 amp or 1.5 amps for other stepper motors I have around. It seems this is a good Idea to raise source voltage for the MK6 too, to get it into true microstepping /current limiting.

    1. the scaling constant for the ref voltage VS current

      It works out to a convenient 2 V = 1 A, so 600 mV -> 300 mA, which is all you’re going to get from a 12 V supply anyway. If you want 400 mA from a 24 V supply, then set REF = 800 mA.

      You’ll still run up against the high inductance = long time constant problem, but it’ll be a start.

      raise source voltage for the MK6 too, to get it into true microstepping /current limiting.

      That should work, because it runs so slowly in full-step mode that you really don’t need microstepping: 2 rev/min = 7 step/s = 150 ms/step. If you’re doing reversal at 60 rev/min, however, then it must accelerate instantly to 200 step/s = 5 ms/step.

      Back of the envelope: at 24 V the current in the first step changes at 24 V / 29 mH = 800 A/s. In full step mode, each step runs at is 70% of 805 mA = 600 mA, which would take 750 us = 15% of the step time. That should be fine.

      [Update: The pulse width in full step mode is twice the step time, but you really want to get the current up there quickly during the first step. So the timing is right, even if the nomenclature seems a bit dodgy.]

      You can run similar numbers for microstepping, although I think anything beyond 1/2 step won’t buy you much at all.

      That would also help pin down the “it misses steps” issues with 1.75 mm filament. If running it at 24 V and full rated current doesn’t solve the problem, then we have a useful lower bound on the torque required for an extruder…

  6. I run my X and Z replacement motors ( ) and the original MBI motor in the Y stage all at 35v.

    They do not run any hotter if the current is set correctly. Well, maybe a little hotter since there will be more magnetic losses. When printing the power supply ( ) reads 0.8amps at 36v.

    I do run these ( ) heat sinks on the Gen 4 stepper driver, but that is mainly because I had the heat sinks lying around. Well, and they look cool.

    Less technical than Ed’s typical analysis:

    1. all at 35v

      I’d back that off to maybe 30 V, because 35 V is the A3977 absolute maximum rating. There’s certainly some margin built in to the chips, but … the additional voltage won’t buy you very much in the long run, other than maybe a dead driver.

      Well, and they look cool.

      Heck, if I had some of those, I’d stick ’em on the plywood, too! [grin]

      1. > 35 V is the A3977 absolute maximum rating

        Interesting. It is both the “Max.” in “ELECTRICAL CHARACTERISTICS” and also listed as an Absolute Maximum. I read that as “Run it all day at 35, but do not go over. Ever.”

        I guess that is like our 1972 Audi 100 LS owners manual whose specifications confidently listed:

        Cruise speed: 104 MPH
        Maximum speed: 104 MPH

        And of course my brother and I took it on the abandoned freeway in the Idaho desert one night, mashed the throttle into the floor mat, and it got up to 104, but never actually touched the 105 mark. Several miles at that speed did not seem to phase it.

        1. “Run it all day at 35, but do not go over. Ever.”

          Lest the chip emit Magic Smoke

          You may have control over the DC level, but you don’t have control over the transients and those will kill the chip very nicely, too.

          Maximum speed: 104 MPH

          Yeah, where do they get those numbers? It’s not a nice even km/h value, either, which is usually the case.

    2. Hmm, Sounds like a plan as i also have several HP printer supplies rated at 30-32 volts and 1500 mA.

      While I’d love to upgrade the steppers-those Digikey ones are $60+ each!!! Ouch. My Gecko servo drive seems much more viable the more I mess with this. The drivers can power just about any motor (within some reason) and the fact I’ve figured out how to interface the position detectors from printers makes this a no brainer.

      But yes, I’m giving some thought to trying a voltage upgrade and see what happens.

      1. those Digikey ones are $60+ each!!!

        Well, being a bottom feeder, I got ’em from eBay for under $10 each…

        interface the position detectors from printers

        I suspect the total retail price of a servo axis will be higher than for a stepper axis, although I’ll grant you smoother operation.

  7. Ed, many machines that have such drastic direction/speed changes are dampened. The MB machines had a built in damping via the constrained axes. Now, that you have taken the constrained axes as a source of machine/motor damping you would likely benefit through introducing a little engineered in damping.

    In the mid 80’s a mechanical engineer from HP’s printer division taught our engineering design class. He stressed the requirement of introducing damping within moving systems to lessen the effects of mass in motion. Such was HP’s trials on early printers and within copiers and among other consumer products.

    If one were to look inside devices with moving components one would find small coil extension springs which place a slight damping on the moving part’s motion and are placed for a neutral tendency. I’d suggest two springs on either extreme of the axes to provide a neutral tendency to center. Once dampened you may find your bouncing system quiets down and you may be able to increase those blazing speeds with less machine jerk and vibration.

    1. The MB machines had a built in damping via the constrained axes.

      Well, that’s definitely the cheeriest description of that situation I’ve ever heard… [grin]

      Serious machines with stepper motors often include dampers on the motor shafts to reduce harmonic vibration at specific rotation speeds. That’s less of a problem with microstepping drives, but can ruin an otherwise stable system when it must operate at those speeds.

      introducing damping within moving systems

      I think the belt deflection and remaining friction from the belt pulleys (in particular) provide entirely enough cushioning and energy loss to handle that.

      The real problem comes from trying to jerk a kilogram of XY stage into motion and jam it to a stop without acceleration limiting. Add that feature and I predict everything else will become a matter of fine tuning.

      My kludged build surface puts far too much weight too far from the axis actuators / guides to qualify as a good design. If you were doing it for real, you’d pay a lot more attention to reducing the moving mass, balancing it around the drive points, and controlling the motion properly. Maybe next time…

      springs on either extreme of the axes

      That’d be tough, because the XY stages stop very close to the end of the support frame. A simple spring would need far too much extension: the X stage, for example, starts 40 mm from the left side and stops at 155… a 30 mm spring would stretch 1.3 to 5.0 and that’s a lot!

  8. Hey – you are an electronics guy!

    My re’butt’al is – — The belt and axis (constraint, drag) within the OEM design would provide ample damping. But, the drag/constraint in your axis is mostly gone. The belt will work to cushion/dampen the slam start/stop from the motor jerks but not through the fling cycle. Once the axis is in motion the belt will jerk the carriage to stop or change directions. You explain that this could be removed with special circuitry.

    The belt will have some elasticity but this is only beneficial at the extremes – starts, stops and direction changes. While your axis is in motion the belt will provide your system no benefit but, constant force – Note: With the current configuration the belt will actually be jerking your axis forward then yanking it back inducing oscillations into the system. Now, more than before the belt tension will become important to your system. The unconstrained mechanical system (circuit) needs damping. The system requires the addition of a load (spring or rubber band) otherwise the free floating weight/mass will introduce spikes (oscillations) into your circuit (machine axes). With damping your power circuit will be filtered from peaks and valleys.

    Remember – once your axis is flying it is free wheeling. So when you go to stop and/or change directions you have a jerk. If you put on the damping of a spring [It could be done with a string ‘n’ spring or rubber band.] You only need to span half the bot to make center neutral. One spring and some string and a couple of rollers would do the trick. Bet, you could get to 200mm/s. :-) —- Oh, I’d made an english mistake on my other post about this. You would need damping from both sides not ‘either’ side.

    1. mechanical system (circuit) needs damping. The system requires the addition of a load (spring or rubber band)

      You’re misusing the term damping; see the spring-mass-damper system example.

      A spring cannot provide damping, because (ideally) it does not dissipate energy. Opposed springs do not provide damping, because neither dissipate energy.

      The classic example: a weight suspended from a spring. Pull it down, let go: ying ying ying in simple harmonic motion. Add a spring pulling downward, do the same thing: more ying ying ying. No damping. Attach a square foot of cardboard perpendicular to the springs as an air damper. Pull, release: whoof wibble. It’ll stop in a very few oscillation. Large energy loss to the air = heavy damping.

      Only frictional loss counts as damping and there’s plenty of that from the idler pulleys. If there wasn’t, it wouldn’t require so much effort to push the axes from end to end with the belts properly tensioned.

      By my admittedly loose measurements, it’s 9 N for the Y stage, which something like 50 mNm of torque. How much more (frictional) load do you think would be needed for good damping?

      You only need to span half the bot to make center neutral.

      Where does the slack spring go when the axis reaches either end? If you don’t want slack springs dangling on the innards, they must maintain some tension at all times. That means you must have a spring shorter than the minimum distance that can stretch to the far limit, which looks to be a 40-to-150 mm range. That’s a lot to ask of a small coil spring.

      In any event, with the balance point at the center, the additional load increases linearly from zero toward either end. By your argument, the springs do nothing near the center, so the XY stage would behave essentially as it does now.

      In order to have any meaningful effect at the travel limits, you’d probably want the additional force to exceed the existing frictional loss by a factor of at least five. That’s an additional torque of 250 mNm that contributes nothing to accelerating the stage, but has absolutely no effect near the middle of travel.

      Frankly, I’m not seeing the point of all this.

  9. I had a situation _kinda_ like this, where I use a 3/4 horse garage door opener to move two heavy barn doors. In order to reduce the load on the motor at start and stop, I put inline compression springs ( like these ) on the end of the cables where they attach to the doors. (Look for the “Barn Restoration: Electric Sliding Doors” post in this thread: for further reading) That did the start/stop cushioning trick nicely and the garage door opener has not torn itself apart after 2 years of use.

    Now if there were a similar miniature mechanism on the X stage, I can see how it would help cushion the start and stop, and let us get away with higher speeds, since the acceleration for the first couple of steps could be stored in the spring. It would not help the damping, and possibly make it worse. You could get the same result with a rubber spider coupling on the stepper motor, simpler, and the rubber may damp the resonance.

    But you do not know _how_ that first few steps of acceleration is going to happen, so likely we would get squiggly corners.

    Either of these mechanical solutions is avoiding the real problem: we need acceleration curves in the firmware, unfortunately, doing two axes of independent acceleration along a path, with speed splicing at the path ends while coordinating the extruder speed to slave to path speed is not a trivial task, especially in fixed point on an 8-bitter. Not impossible, just challenging.

    1. But you do not know _how_ that first few steps of acceleration is going to happen

      Yeah, for garage doors it’s not so critical, although (having replaced a broken cable over the weekend) you do care about balancing the forces well enough to keep the door traveling straight in the tracks. You (well, I) just can’t move a door with only one spring, no matter how little acceleration we use.

      unfortunately, doing two axes of independent acceleration along a path, with speed splicing at the path ends while coordinating the extruder speed to slave to path speed is not a trivial task, especially in fixed point on an 8-bitter.

      Which is why I think Arduino-based printer controllers are dead ends. I fear the next step will involve migrating “the same code” to a 32-bit microcontroller, whereupon the hardware cost will go up even more and the architecture will become even more rickety.

      EMC2 already provides multi-axis coordinated acceleration control at lower hardware cost. Re-inventing those functions is wasted effort that would be better invested in 3D printing functions.

      Getting motion control right is hard. Doing it on the cheap is really hard. Doing both requires leveraging all the existing work other folks have accomplished, not rolling your own hardware and software.

      I may have to do an EMC2 printer, just to show how well it works…

      1. I think Brian has a point about damping the stage motion with a spring, but he didn’t define clearly which part of the system needs damping. What I’ve observed on my cupcake is that because the build platform isn’t all that securely attached to the x-y stage, and because the aspect ratio of the bearings to the size of the build plate is quite small, the build stage wobbles when moving at high speeds. In this case the “spring” of the mass-spring system representing the build stage is the bearing-stage-magnets-build platform stack, which wobbles when jerked at high speeds. If we were to add a force to the stage it might help stabilize this wobble – in other words, the spring in Brian’s suggestion is adding a damping force to the springy x-y stage, a la gravity or a large piece of cardboard. Opposing springs would just ensure that no matter what direction the stage traveled there would be adequate force. Since the majority of speed changes happen when the stage isn’t perfectly centered it shouldn’t be all that big a deal that the forces balance (i.e. no net force) when the stage is centered.

        Having said that, there are other ways of removing the wobble in the build stage, and I’m not sure that adding additional forces to stabilize the stage is the best way of doing it. In the long run you’d be better served by re-engineering the x-y stage to remove the factors that make it wobble. But retrofitting springs is certainly simple enough and would be fairly easy to add to an existing machine – it could be worth a try.

        On the electronics side, I’m much more interested in the integrated EMC2 box – I have a feeling that that’s the way to go, and if someone with EMC2 experience works out the basics of implementing the hardware layer for a skeinforge compatible FDM machine I’d be very tempted to use it in the next machine I build.

        1. the spring in Brian’s suggestion is adding a damping force to the springy x-y stage

          Ah! That’s preload, which is a different thing entirely: you’re biasing the whole affair to eliminate backlash.

          The spring force must exceed the acceleration force applied in that direction, so that the preload can hold the widgetry in place; otherwise, the acceleration rattles the widgetry. Of course, in the other direction, you must accelerate the widgetry against the combined force of friction, preload, and inertia. There is no free lunch.

          That would work best for a low-mass, low-friction load, so the spring need not provide all that much force to preload the widgetry, even in the face of high accelerations. Given a high-mass, high-friction printer stage, I doubt any practical spring would have enough travel, provide enough preload, and still leave the stage able to accelerate the other way.

          One careful measurement is worth a kilo-opinion: try it anyway and report back!

          someone with EMC2 experience works out the basics of implementing the hardware layer for a skeinforge compatible FDM machine

          Several folks have done EMC2 RepStraps of varying niceness, but IIRC none of them come close to the performance levels of even a stock Thing-O-Matic. I want a printer where the physical limits come from its (in)ability to hose down the platform with molten plastic fast enough to keep up with the axes.

          I’m thinking, I’m thinking…

  10. I am working (in my head only at this stage) on a design that moves the Y stepper motor off the platform.

    The X would be about like it is.

    The Y would be a longer belt that serpentines in a figure 8, with a single pulley for differential on the build platform. Three corners of the figure 8 would be idlers, one corner a driven step motor. Moving the belt around the figure 8 with the step motor would cause common-mode movement on the build platform pulley, which would result in the Y movement.

    Moving the X stage while the step motor is stopped would only give differential movement at the build platform pulley which would (in theory) cancel and give zero Y movement.

    In some ways reminiscent of the old cable drafting tables.

    In any case the mass of the build platform would be reduced to:

    1) a toothed idler pulley (used as the differential)
    2) perhaps some idler bearings on the back side of the belt to make sure the teeth engage with the differential pulley
    3) support bearings (linear on one side, of course, and top + bottom ball on the other)
    4) whatever plastic it takes to hold it all together
    5) the actual build platform and heater

    Should be significantly lower mass than the current get-up.

    1. reminiscent of the old cable drafting tables

      I love those things: they seem impossible until you puzzle over the cables & pulleys for a while!

      Somebody did a plotter based on a fabric sheet with that sort of linkage, but I haven’t a clue where I saw the thing. It was fairly low speed, but that’s all they needed for the application.

      Figuring the control algorithm for coordinated motion / acceleration would be interesting…

Comments are closed.