-
Notifications
You must be signed in to change notification settings - Fork 3
RaftMotorControlConfiguration
Rob Dobson edited this page Mar 3, 2026
·
1 revision
MotorControl is a DeviceManager device. Configure it in SysType under DevMan -> Devices with class MotorControl.
{
"DevMan": {
"Devices": [
{
"enable": 1,
"class": "MotorControl",
"name": "MotorControl",
"bus": "SERA",
"homingPattern": "homing-seek-center",
"motion": { },
"ramp": { },
"motorEn": { },
"axes": [ ]
}
]
}
}| Field | Type | Description |
|---|---|---|
enable |
bool/number | Enables the device when non-zero. |
class |
string | Must be MotorControl. |
name |
string | Device name used by /devman/cmdjson and /devman/devdata. |
bus |
string | Optional serial bus name for drivers that use UART (e.g., TMC2209). |
homingPattern |
string | Default pattern used by the home command (default: homing-seek-center). |
motion |
object | Motion and kinematics configuration. |
ramp |
object | Ramp generator and pipeline configuration. |
motorEn |
object | Motor enable pin and disable timeout configuration. |
axes |
array | Per-axis configuration (max 3 axes). |
| Field | Type | Description |
|---|---|---|
geom |
string | Kinematics type: XYZ or SingleArmSCARA. |
blockDistMM |
number | Max split block length in mm (0 disables splitting). |
maxJunctionDeviationMM |
number | Junction deviation for cornering in mm. |
homeBeforeMove |
bool/number | If true, homing is required before any ramped move. |
outOfBounds |
string | Default action: allow, clamp, or discard. |
arm1LenMM |
number | SCARA arm 1 length (SingleArmSCARA). |
arm2LenMM |
number | SCARA arm 2 length (SingleArmSCARA). |
maxRadiusMM |
number | SCARA max radius (defaults to arm1+arm2). |
originTheta2OffsetDegrees |
number | SCARA theta2 origin offset (default: 180). |
| Field | Type | Description |
|---|---|---|
rampTimerEn |
bool/number | Use timer ISR for ramp generation. |
rampTimerUs |
number | Timer period in microseconds. |
pipelineLen |
number | Motion pipeline length. |
| Field | Type | Description |
|---|---|---|
stepEnablePin |
string/number | Enable pin name or GPIO. |
stepEnLev |
bool/number | Active level for enable pin. |
stepDisableSecs |
number | Seconds before motors are disabled after idle. |
MotorControl supports up to 3 axes. Each axis entry has name, params, driver, and optional endstops.
| Field | Type | Description |
|---|---|---|
unitsPerRot |
number | Units per rotation (mm or degrees). |
stepsPerRot |
number | Steps per rotation. |
maxSpeedUps |
number | Max speed in units/sec. |
maxAccUps2 |
number | Max acceleration in units/sec^2. |
maxDegPerSec |
number | Max degrees/sec for speed limits. |
homingDegPerSec |
number | Homing speed in degrees/sec. |
minUnits |
number | Minimum unit bound for this axis. |
maxUnits |
number | Maximum unit bound for this axis. |
isPrimaryAxis |
bool/number | True if axis is part of primary motion distance. |
isDominantAxis |
bool/number | Dominant axis for kinematics (if used). |
isServoAxis |
bool/number | True for servo-style axis (no stepping). |
| Field | Type | Description |
|---|---|---|
driver |
string | Driver type (e.g., TMC2209). |
hw |
string | Hardware location (local supported). |
addr |
number | UART address for driver (if used). |
stepPin |
string/number | Step pin name or GPIO. |
dirnPin |
string/number | Direction pin name or GPIO. |
invDirn |
bool/number | Invert direction. |
noUART |
bool/number | Disable UART configuration. |
writeOnly |
bool/number | Write-only driver register access. |
extSenseOhms |
number | External sense resistor value. |
extVRef |
bool/number | Use external Vref. |
extMStep |
bool/number | Use external microstep selection. |
intpol |
bool/number | Enable microstep interpolation. |
microsteps |
number | Microsteps per step. |
minPulseWidthUs |
number | Minimum step pulse width. |
rmsAmps |
number | RMS motor current (amps). |
holdModeOrFactor |
string/number | Hold mode (freewheel, passive) or numeric factor. |
holdDelay |
number | Hold delay. |
pwmFreqKHz |
number | PWM frequency (kHz). |
statusFreqHz |
number | Status read frequency (Hz). |
Each endstop entry defines a switch for one axis.
| Field | Type | Description |
|---|---|---|
isMax |
bool/number | True for max endstop, false for min. |
name |
string | Endstop name. |
sensePin |
string/number | Sense pin name or GPIO. |
actLvl |
bool/number | Active level for the switch. |
inputType |
string | Input mode (e.g., INPUT, INPUT_PULLUP). |
Note: Extra fields not recognized by MotorControl (for example gearFactor or debug) are ignored by this device and may be used by application-specific tooling.
{
"DevMan": {
"Devices": [
{
"class": "MotorControl",
"name": "MotorControl",
"bus": "SERA",
"homingPattern": "homing-seek-center",
"motion": {
"geom": "SingleArmSCARA",
"blockDistMM": 10,
"homeBeforeMove": 0,
"maxJunctionDeviationMM": 0.05,
"arm1LenMM": 95,
"arm2LenMM": 95,
"originTheta2OffsetDegrees": 180
},
"ramp": {
"rampTimerEn": true,
"rampTimerUs": 20,
"pipelineLen": 250
},
"motorEn": {
"stepEnablePin": "4",
"stepEnLev": 0,
"stepDisableSecs": 100
},
"axes": [
{
"name": "shoulder",
"params": {
"unitsPerRot": 360,
"stepsPerRot": 9600,
"gearFactor": 3,
"maxSpeedUps": 90,
"maxAccUps2": 45,
"maxDegPerSec": 360,
"homingDegPerSec": 60
},
"driver": {
"driver": "TMC2209",
"hw": "local",
"addr": 0,
"stepPin": "15",
"dirnPin": "16",
"invDirn": 1,
"writeOnly": 0,
"extSenseOhms": 0.15,
"extVRef": 0,
"extMStep": 0,
"intpol": 1,
"microsteps": 16,
"rmsAmps": 0.12,
"holdModeOrFactor": 0.5,
"holdDelay": 1,
"pwmFreqKHz": 35
},
"endstops": [
{
"isMax": false,
"name": "0min",
"sensePin": "39",
"actLvl": 0,
"inputType": "INPUT"
}
]
}
]
}
]
}
}{
"DevMan": {
"Devices": [
{
"enable": 1,
"class": "MotorControl",
"name": "MotorControl",
"bus": "SERA",
"motion": {
"geom": "XYZ",
"blockDistMM": 10,
"outOfBounds": "allow",
"homeBeforeMove": 0,
"maxJunctionDeviationMM": 0.05
},
"ramp": {
"rampTimerEn": 1,
"rampTimerUs": 100,
"pipelineLen": 100
},
"motorEn": {
"stepEnablePin": 27,
"stepEnLev": 0,
"stepDisableSecs": 1
},
"axes": [
{
"name": "X",
"params": {
"unitsPerRot": 360,
"stepsPerRot": 768,
"maxSpeedUps": 100,
"maxAccUps2": 100
},
"driver": {
"driver": "TMC2209",
"hw": "local",
"addr": 0,
"stepPin": 15,
"dirnPin": 12,
"invDirn": 0,
"writeOnly": 0,
"extSenseOhms": 0.5,
"extVRef": 0,
"extMStep": 0,
"intpol": 1,
"microsteps": 16,
"rmsAmps": 0.5,
"holdModeOrFactor": 0.5,
"holdDelay": 1,
"pwmFreqKHz": 35
}
}
]
}
]
}
}