Skip to content
firepick1 (pixel) edited this page May 29, 2015 · 12 revisions

tstph PH5Curve PHFeed Test

The tstph FireStep command continuously sends pulses to traverse a PH5Curve line. The traversed curve is trivially, a straight line, and the test actually exercises the PHFeed, which can be of great value in tuning stepper drivers trimpots.

**CAUTION:** DISENGAGE DRIVE BELTS FROM STEPPERS BEFORE RUNNING 
THIS TEST OR YOU MAY DAMAGE YOUR MACHINE. THE TEST REQUIRES 
UNOBSTRUCTED STEPPER TRAVEL.

Pythagorean Hodographic Curves

FireStep is designed around quintic Pythogorean Hodograph Curves (PH5Curve). Briefly, PH5Curves are quintic polynomial curves computed from on-curve control points. Given that they are quintic, PH5Curves have C2 continuity and therefore continuous acceleration. This property of C2 continuity is critical for smooth and fluid CNC path traversal.

Here are the position, velocity and acceleration profiles of the standard tstph curve, which in this example has 50 piecewise-linear segments (@20 ms) and a total traversal time of 1 second:

The Sound of a PH5Curve

Since the velocity is measured in pulses/second, it is actually audible, and the profile shown above is given in Hz. The sound of a PH5Curve depends on:

  • the maximum velocity (in this example 12800 pulses/second)
  • the time to reach maximum velocity (in this example 1 second)
  • the length of the PH curve (in this example 6400 pulses for 16-microstep 0.9-degree stepper)

The PHFeed module of FireStep uses the above parameters to scale the maximum path velocity (in this example scale=1) and will add a constant-velocity cruise section if needed. In general, each PH5Curve traversal will have its own individual sound, but all will share the continuous rise/fall of audible velocity.

Digital Quantization

FireStep is digital, and digitization aliasing is unavoidable. Digitization manifests itself in various ways. For example, FireStep represents acceleration for each of the path segments using a single 8-bit signed byte (FireStep Arduino).

Although FireStep byte digitization affects acceleration, it is minimally disruptive on positioning. In the chart below you can see the quantization of acceleration used to traverse the curve documented in this example:

The digitization of acceleration also sets limits on representable curves. On the Arduino, FireStep uses an 8-bit signed byte and can therefore not represent a 200 pulse velocity change. To compensate, FireStep will automatically increase the number of path segments (which is limited by memory constraints).

See also

Clone this wiki locally