Skip to content
firepick1 (localhost) edited this page Jul 24, 2015 · 2 revisions

Machine Topology: Raw Stepper Pulses (MTO_RAW)

This document is an extension of the JSON-Reference that details the JSON commands for systo:0, which is a barebones machine controlled directly by stepper pulses.

Raw Stepper Coordinates

MTO_RAW gives you great control over individual stepper motion down to a single stepper pulse. For example, MTO_RAW position '1' is one microstep pulse away from position '2'.

General:mpo Motor Position

Stepper position is provided for each axis, but can also be accessed by motor/axis mapping using the mpo group to set/get the motor position. Motor position units are in microstep pulses. Example:

{"mpo":""}
Attribute ✏️ Default Description
1	| :pencil2:	| 0	| motor 1 axis position
2	| :pencil2:	| 0	| motor 2 axis position
3	| :pencil2:	| 0	| motor 3 axis position
4	| :pencil2:	| 0	| motor 4 axis position

You can set the motor position as well. Setting the motor position does not move any stepper, it just changes the coordinate space origin. See mov for comparison.

Motion:mov Move To Position

FireStep supports simple direct motion via the mov request, which can be used for positioning to a specified coordinate. The mov request is not designed for continuous complex path traversal. However, it can be used to specify single moves easily.

Attribute ✏️ Default Description
1	| :pencil2:	| 0	| motor 1 position
2	| :pencil2:	| 0	| motor 2 position
3	| :pencil2:	| 0	| motor 3 position
4	| :pencil2:	| 0	| motor 4 position
x	| :pencil2:	| 0	| X-axis position (must be mapped to a motor)
y	| :pencil2:	| 0	| Y-axis position (must be mapped to a motor)
z	| :pencil2:	| 0	| Z-axis position (must be mapped to a motor)
a	| :pencil2:	| 0	| A-axis position (must be mapped to a motor)
b	| :pencil2:	| 0	| B-axis position (must be mapped to a motor)
c	| :pencil2:	| 0	| C-axis position (must be mapped to a motor)
lp	| --	| :arrow_right:	| number of loop() calls (for calculating pulses/loop)
mv	| :pencil2:	| sysmv	| maximum velocity (pulses/second)
pp	| --	| :arrow_right:	| peak rate (pulses/second)
sg	| :pencil2:	| 0	| number of segments in path (0:auto)
ts	| --	| :arrow_right:	| actual stroke traversal time (seconds)
tp	| --	| :arrow_right:	| planned stroke traversal time (seconds)
tv	| :pencil2:	| systv	| seconds to reach maximum velocity
  • ➡️ output value only

The short form of mov executes an immediate move on the specified axis and omits statistics (e.g., ts). The following command therefore moves the Y motor after it moves the X motor:

{"movx":10000,"movy":5000}

Motion:prb Probe To Position

FireStep can probe from the current position to a designated position, stopping when the limit switch on the specified probe pin triggers. The result returned specifies the stepper coordinates at which the limit switch triggered. If the probe never contacts a surface, the command result status s will be STATUS_PROBE_FAILED.

Probes are directional and you can use any motor/axis combination to specify the exact probing movement. For best results, choose a probe destination that is orthogonal to the probed surface.

Attribute ✏️ Default Description
1	| :pencil2:	| no probe	| motor 1 probe destination
2	| :pencil2:	| no probe	| motor 2 probe destination
3	| :pencil2:	| no probe	| motor 3 probe destination
4	| :pencil2:	| no probe	| motor 4 probe destination
x	| :pencil2:	| no probe	| X-axis probe destination (must be mapped to a motor)
y	| :pencil2:	| no probe	| Y-axis probe destination (must be mapped to a motor)
z	| :pencil2:	| no probe	| Z-axis probe destination (must be mapped to a motor)
a	| :pencil2:	| no probe	| A-axis probe destination (must be mapped to a motor)
b	| :pencil2:	| no probe	| B-axis probe destination (must be mapped to a motor)
c	| :pencil2:	| no probe	| C-axis probe destination (must be mapped to a motor)
ip	| :pencil2:	| false	| invert probe limit logic
pn	| :pencil2:	| required	| probe limit switch pin
sd	| :pencil2:	| syssd	| probe search pulse period (microseconds)

Typical probes will first move quickly to the probe starting position, then immediately follow with the actual probe, which is slow and careful. Here is an example of a Z probe at the XY origin for FirePick Delta for a RAMPS1.4 FireStep using pin 2 as the limit switch:

{"mov":{"1":8000,"2":8000,"3":8000}}
{"prb":{"1":8200,"2":8200,"3":8200, "pn":2}}

See Also