3D printing basics: Understanding steps per millimeter and using Prusa’s calculator

Learn what parts go into the “steps per millimeter” value and how to use the Prusa calculator to figure it out.

Prusa’s calculator

Pololu Allegro A4988 page
Pololu Texas Instruments DRV 8825 page

Understanding steps per millimeter

Hello everyone, i’m Tom, and as a follow-up to last week’s miscalibration video, today i’ll show you how to use the Prusa calculator as that has been requested, and in the process of that, i’ll explain what the things you are entering there actually mean.

So the Prusa calculator takes many of the calculations that would go into setting up a printer from scratch and conveniently does them for you. And that ranges from filament volume calculations (hint: 1kg of PLA actually has quite a bit less printing range than 1kg of ABS) over steps per millimeter calculations, which is the part we’ll be looking at today, for both belt and leadscrew systems, so typically XY as the belt axes and Z as the leadscrew axis. Then it goes over optimal layer heights to hit full steps on you stepper motor – more on that later – which can give you more consistent layers if you’re not using an auto-paralleling setup with a Z-probe. And the last part is a calculation of the actual speed an axis can reach for given travel lengths and acceleration settings. You’ll routinely see people proclaiming that they are printing at insane speeds, but in reality, their printer can’t actually accelerate to those speeds for the short moves that it’s doing. And that’s what you can verify with this last bit down here.

But we’re going to stick with the steps per millimeter calculations for now. So to start out, what does that number, say 100 steps per millimeter for a fairly normal setup, actually mean? You see, everything past the microcontroller on your printer’s control board only has a very limited idea of what it’s doing. The stepper motors and their drivers only get the command to move forward or backward one increment at a time – this is a step. And because of the way your drive system is set up, each step moves the corresponding axis by a set distance. Now, when the microcontroller, or rather, the firmware running on that microcontroller gets the command to move an axis by, for example, one millimeter, it uses the steps per millimeter setting and calculates how many electrical pulses – one for each step – it needs to send to the stepper driver to get the desired distance in the end.

Now, when we look at the Prusa calculator, you’ll see that there are four variables that determine the steps per millimeter value in the end. Now, in the simplest case, the stepper motor would rotate by one step for each pulse the microcontroller sends out and its driver receives. The step angle or steps per revolution is simply a data-sheet value that determines how many full steps the motor has until its shaft makes a complete rotation, 360°.

Typically, our motors have 200 steps per revolution, some more precise ones use # 4 00, while cheaper or salvaged motors somtimes have only 48. Which, of course, means that the steps are laid out much coarser throughout a revolution than in a 200 or 400 step motor, reducing the final resolution of that axis by quite a bit. So, typically, that setting is 200, but you can also easily look it up if you know the part number of your motor.

Now, because 200 steps per revolution actually means that each individual step is still rather large, stepper drivers can add some electrical trickery to split each step up into finer /# microsteps. So, for example, when your driver chip, typically an Allegro A4988, is set to one sixteenth microstepping, the motor will only move approximately one sixteenth as far per step pulse as without any microstepping. Now, i’m saying approximately because microstepping, especially in the Allegro driver can be somewhat unpredictable and doesn’t always position the motor at the exact sub-position it intends to. Still, it’s a nice way to give stepper motors a bit extra resolution and, as a bonus, it also means that the motor will be a bit less noisy. The microstep setting for each axis is typically set with jumpers next to each stepper driver, but newer boards often make them software-configurable instead. Which jumper settings mean which microstepping setting is explained pretty well on Pololu’s site, which i’ve linked to in the video’s description. Typically, that setting is one sixteenth with all jumpers installed, if you’re using Texas instruments’ DRV8825 drivers, you can go up to 32 times microstepping, but that might mean that the puny Atmega microprocessor on your control boards runs out of processing power and slows the entire printer down.

So right now, we have the microcontroller # receiving move instructions and # sending pulses to the driver, the driver doing its thing and splitting up the motor’s physical steps into microsteps and the motor’s shaft finally rotating in accordance to what currents the driver is sending its way. That poor motor never had a choice.

So basically, we have the entire software and electric side covered of what goes into the steps per millimeter figure. So the last two things are the belt pitch and the pulley tooth count. Now the belt pitch is manufactured extremely accurately, so that’s actually a figure that we can rely on. Nowadays, pretty much the only belt used is GT2-2M, so a belt with a profile that’s compatible with HTD, GT, GT2 and GT3 pulleys and with a 2mm pitch. Meaning each tooth is precisely 2mm from the last one. Earlier printers used T5 belt with a 5mm pitch, I use HTD-3M, so a 3mm pitch, on my big Mendel90, and some US manufacturers also use imperial belt with the XL or MXL profiles, which have a 5.08mm or 2.03mm pitch, respectively.

They are not compatible with pulleys for metric GT profiles and are actually rather rare these days with everyone moving to GT2-2M.

Anyways, it’s pretty easy to figure out which belt and pitch you have, as it usually says so on the back of the belt. If not, well, the article description should have at least included that bit of information when you bought the belt. Also, in the 3D printing sphere, GT2 is often used as an abbreviation for 2mm pitch GT2-2M belt, even though it’s technically incorrect or at least not precise.

And the last part of the puzzle is the tooth count of the pulleys. And that is sometimes noted on the side of the pulley, but it also something that you can simply count. You know, how many teeth there are on the pulley. Mark one and then make your way around.

So when you have gathered all that information, you are ready to punch it into Prusa’s calculator, which gives you a couple of presets for most parameters. The output can be used with the M92 command to temporarily set steps per millimeter for each axis or used in the firmware’s configuration to permanently use it. Now, there is a note that you might still need to calibrate this further, but like i’ve said in the previous video, that will likely make things worse instead of improving them. The steps per millimeter value we just calculated is extremely close to what your printer is actually doing, and for regular printers, any tiny error here is within the tolerances of the FFF process anyways.

So that was the process of the belt-driven axes, and for the Z-axis, which is usually driven by a threaded rod or, in better printers, a real leadscrew, it’s even simpler. You don’t need to know a belt pitch or pulley tooth count, but instead simply the pitch of your leadscrew. If that’s a threaded rod, it’s usually an M8 or M6 one with a 1.25 or 1mm pitch, while leadscrews can have all kinds of pitches. Look it up in your printer’s documentation if you don’t know it.

And that’s it for today, one more thing, i used to have a Surveymonkey survey under each video, but as it turns out, Surveymonkey is pretty greedy and was like “hey, cool survey you have there, shame if anything would happen to it. You know what, just pay us an 24€ a month and you’ll actually get to see the new answer to that survey.”. And i wasn’t really happy with that, so i moved that over to Google forms. Which is free. And unlimited. And awesome. So, don’t use Surverymonkey, use Google forms. But it also means that i lost all responses from that survey, so if you’ve already answered the Surverymonkey one, please do it again on the Google Forms one. Linked in the description. And that survey is really helpful to me for picking topics that you actually want to see.

And now, that’s really it. Feel free to use the like and share buttons if you feel like it, thanks for watching and i’ll see you next week. Or rather, you’ll see me next week. Since i don’t actually see my viewers. But that’s ok. I guess.

Music by Cosmic Analog Ensemble


You can support me without spending a single penny!