Skip to content
Tercio S1

Parameters

1 min readFirmware v2 · protocol v2

All 36 settings of the S1, grouped as in Tercio Control. Generated from the same definitions the control panel uses, so names, ranges and defaults match.

  • Changes apply at once and live in RAM. SaveConfig (Tercio Control: Save to motor; Python: motor.save()) writes them all to flash. Calibration, homing and auto-tune save their own results.
  • Some can only change in a certain state. When stopped settings are refused with Busy while the motor moves; When disabled ones need the bridge off. The badge on each setting says which.
  • Positions, speeds and accelerations are in turns on the wire (turns, turns/s, turns/s²). Tercio Control shows them in your chosen unit; the libraries’ set_param takes turns.
  • On the wire, a value is always 4 little-endian bytes: integers zero-extended, booleans 0 or 1, floats as IEEE 754 single precision. The reply to SetParam carries the value as applied. See GetParam and SetParam.
  • Factory reset (only while disabled) restores these defaults in RAM, keeping the node ID. Save afterwards to make it permanent.

Tercio Control can export a motor’s settings to a file and import them into another motor: the buttons are at the top of the Settings tab.

from TercioBridge import Param
motor.set_param(Param.RUN_CURRENT_MA, 1200)
motor.set_param(Param.MAX_VELOCITY, 5) # turns/s
print(motor.get_param(Param.KP))
motor.save()

Max velocity

0x20Any time

Upper speed limit for every move.

Default
10 turns/s
Range
0.001 – 200 turns/s
Wire type
f32
Python
Param.MAX_VELOCITY

Max acceleration

0x21Any time

Ramp steepness for every move.

Default
100 turns/s²
Range
0.01 – 100000 turns/s²
Wire type
f32
Python
Param.MAX_ACCELERATION

Soft limit, min

0x28Any time

Moves never go below this. Active when min is less than max.

Default
0 turns
Range
-1e7 – 1e7 turns
Wire type
f32
Python
Param.SOFT_LIMIT_MIN

Soft limit, max

0x29Any time

Moves never go above this.

Default
0 turns
Range
-1e7 – 1e7 turns
Wire type
f32
Python
Param.SOFT_LIMIT_MAX

Enable at power-up

0x2AAny time

Energise and hold position as soon as the board starts.

Default
On
Range
On / Off
Wire type
bool
Python
Param.ENABLE_ON_BOOT

Proportional gain

0x22Any time

Correction speed per unit of error. Higher is stiffer; too high oscillates.

Default
20 1/s
Range
0 – 1000 1/s
Wire type
f32
Python
Param.KP

Integral gain

0x23Any time

Removes steady error under constant load. Usually 0 for steppers.

Default
0 1/s²
Range
0 – 100000 1/s²
Wire type
f32
Python
Param.KI

Damping gain

0x24Any time

Acts on the velocity error. Usually 0.

Default
0
Range
0 – 10
Wire type
f32
Python
Param.KD

Deadband

0x25Any time

At rest, errors smaller than this are ignored so the motor does not hunt.

Default
0.0005 turns
Range
0 – 0.1 turns
Wire type
f32
Python
Param.POSITION_DEADBAND

Full steps per revolution

0x10When stopped

200 for 1.8° motors, 400 for 0.9° motors.

Default
200 steps
Range
20 – 1000 steps
Wire type
u16
Python
Param.FULL_STEPS_PER_REV

Microsteps

0x11When stopped

The driver interpolates to 1/256 internally; 16 is a good default.

Default
1/16
Range
1/1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256
Wire type
u16
Python
Param.MICROSTEPS

Run current

0x12Any time

RMS coil current while moving. The board delivers up to about 1.77 A.

Default
1500 mA
Range
50 – 2000 mA
Wire type
u16
Python
Param.RUN_CURRENT_MA

Hold current

0x13Any time

Current at standstill, as a share of the run current.

Default
50 %
Range
0 – 100 %
Wire type
u8
Python
Param.HOLD_CURRENT_PCT

Quiet mode (StealthChop)

0x14When stopped

Near-silent at low speed. Above the switch speed the driver uses SpreadCycle.

Default
On
Range
On / Off
Wire type
bool
Python
Param.STEALTHCHOP

Quiet mode up to

0x15Any time

Motor speed where the driver switches to SpreadCycle. 0 keeps quiet mode at every speed.

Default
1 motor rev/s
Range
0 – 100 motor rev/s
Wire type
f32
Python
Param.STEALTHCHOP_MAX_VEL

Reverse direction

0x16When stopped

Flip which way is positive. No recalibration needed.

Default
Off
Range
On / Off
Wire type
bool
Python
Param.INVERT_DIRECTION

Gear ratio

0x17When stopped

Motor turns per encoder turn. 1 with the on-board encoder.

Default
1:1
Range
0.01 – 1000:1
Wire type
f32
Python
Param.GEAR_RATIO

Encoder

0x30When disabled

Changing the encoder clears the calibration. Disable the motor first.

Default
On-board AS5600
Range
On-board AS5600, External AS5600 (I²C), External AS5048A (SPI)
Wire type
u8
Python
Param.ENCODER_TYPE

Encoder reversed

0x31When disabled

Set by calibration. Change by hand only if you know you need to.

Default
Off
Range
On / Off
Wire type
bool
Python
Param.ENCODER_INVERT

Calibrated

0x32Read-only

Run Calibrate to set this.

Default
Off
Range
On / Off
Wire type
bool
Python
Param.CALIBRATED

Method

0x50Any time

Seek a limit switch, or push gently into a hard stop.

Default
Switch IN1 (negative)
Range
Switch IN1 (negative), Switch IN2 (positive), Hard stop, negative, Hard stop, positive
Wire type
u8
Python
Param.HOMING_MODE

Search speed

0x51Any time

Keep it slow for repeatable results.

Default
1 turns/s
Range
0.001 – 100 turns/s
Wire type
f32
Python
Param.HOMING_VELOCITY

Search current

0x52Any time

Reduced current while searching, so a hard stop is gentle.

Default
800 mA
Range
50 – 2000 mA
Wire type
u16
Python
Param.HOMING_CURRENT_MA

Back-off distance

0x53Any time

How far to move away from the trigger point before setting zero.

Default
0.05 turns
Range
0 – 1000 turns
Wire type
f32
Python
Param.HOMING_BACKOFF

Hard-stop sensitivity

0x54Any time

Following error that counts as hitting the stop. Smaller is more sensitive.

Default
0.03 turns
Range
0.001 – 100 turns
Wire type
f32
Python
Param.HOMING_STALL_ERROR

Give up after

0x55Any time

Maximum search time.

Default
30 s
Range
1 – 3600 s
Wire type
u16
Python
Param.HOMING_TIMEOUT_S

Stop at limit switches

0x40Any time

IN1 blocks negative motion, IN2 blocks positive motion.

Default
Off
Range
On / Off
Wire type
bool
Python
Param.LIMIT_SWITCHES_ENABLED

Switches pull to ground

0x41When stopped

On for normally-open switches wired to GND.

Default
On
Range
On / Off
Wire type
bool
Python
Param.LIMIT_SWITCH_ACTIVE_LOW

Follow step/dir input

0x42When stopped

Take position commands from the STEP/DIR/EN connector (3.3 V logic only).

Default
Off
Range
On / Off
Wire type
bool
Python
Param.STEP_DIR_MODE

EN input active low

0x43Any time

Polarity of the external enable input.

Default
On
Range
On / Off
Wire type
bool
Python
Param.STEP_DIR_ENABLE_ACTIVE_LOW

Stall threshold

0x26Any time

Following error that counts as a stall.

Default
0.05 turns
Range
0.001 – 1000 turns
Wire type
f32
Python
Param.FOLLOWING_ERROR_LIMIT

Stall confirm time

0x27Any time

How long the error must persist. 0 turns stall detection off.

Default
50 ms
Range
0 – 10000 ms
Wire type
u16
Python
Param.STALL_TIMEOUT_MS

Shut down at

0x60Any time

Board temperature that cuts the motor current.

Default
95 °C
Range
40 – 125 °C
Wire type
f32
Python
Param.OVER_TEMPERATURE_C

Stop if host is silent for

0x03Any time

Stops a moving axis when commands stop arriving. 0 turns it off.

Default
0 ms
Range
0 – 60000 ms
Wire type
u16
Python
Param.COMMAND_TIMEOUT_MS

Node ID

0x01When stopped

Unique per motor on the bus. Takes effect immediately.

Default
1
Range
1 – 127
Wire type
u8
Python
Param.NODE_ID

Telemetry rate

0x02Any time

How often the motor reports its state. 100 Hz suits most setups.

Default
100 Hz
Range
0 – 1000 Hz
Wire type
u16
Python
Param.TELEMETRY_RATE_HZ