Obviously altering the speed of the motors will increase or decrease the travel speed of the attached mechanics on your motors.

I like to work in mm/min (Millimetres Per Minute) where as others prefer mm/sec (Millimetres Per Second), but for this explanation I will stick to mm/min which is how many millimetres are travelled in 1 minute.

A simple example is to have a motor with a ballscrew that has a 1mm pitch. If we require to travel a distance of 2000mm over a minute (2000mm/min), we would run the motor at 2000RPM. Then as we increase the size of the ballscrew pitch we simply divide down the speed. So with a 5mm pitch ballscrew we would only need to run it at  400 RPM.

This why sometimes you see big CNC machines running at silly speeds, they are increasing their ballscrew pitch up to 20mm or higher and with strong motors and low speeds they can shift the gantry around with no problems. Obviously we are loosing resolution, so again workout what is important to you, speed or resolution and find middle ground.

A thing to remember is that the calculations are fine if you are moving a single Axis in a straight line and not using Interpolation between 2 motors (Interpolation covered further down), but when you are running 2 Axis’s to say draw an angle then you have to calculate based on the Vector Travel distance.

As you can see above if you ran both X and Y Axis’s at 1000mm/min you would actually be doing a speed of 1414.2136mm/min for your tool in the middle of the X/Y frame.

If you dropped the speed of the X-Axis and Y-Axis to 707.1068mm/min then the Vector Speed would be 1000mm/min as desired.

So keep this in mind when calculating your speeds.

Sending out Pulses

So easy enough to work out running speeds but we are sending pulses here to run the motors and if we have our Stepper drivers at to 1600 pulses per revolution and a ballscrew with a 5mm pitch then we know that it is 5.0/1600=320 pulses to travel 1mm. To travel 2000mm we would need to send 2000*320=640’000 pulses over exactly 1 minute.

How to send out our 640’000 pulses in exactly a minute is to convert our RPM to frequency in Hz.
1Hz is equal to one cycle per second or in our case one Pulse per second.
As there are 60 seconds in a minute then we can safely say that 1/60=0.01666666666Hz is the speed of the cycle per minute.

Calculating the RPM

To calculate our target speed of 400 RPM we can do it a couple of ways.

As we know that we need to send 640’000 pulses in a minute then we can take our 640’000 pulses and multiply it by our result of cycles per minute 640000*0.01666666666=10666.66Hz.

Or we can take our Pulses Per Rev of 1600*0.01666666666=26.666666656 and multiply the result by the required RPM required 400*26.666666656=10666.66Hz

The frequency needed to get 400 RPM with a motor set to 1600 Pulses Per Rev, we would need to drive it at 10666.66Hz (10.66666kHz)


As you can see by our example above we need our pulses to be spot on and a resolution of two decimal places.

With the PTHAT are using Direct digital synthesizer processors (DDS) on each channel, which give a very accurate, clean pulses and allows us to go to speeds that you will probably never need.
Also having the resolution allows us to get better interpolation between each Axis as will be explained further down the page.

Share This