4.3.8. Power control

Current consumption reduction

Controller has an option to set current when idle to reduce power consumption. This mode is active by default. It is widely used to lower stepper motor heating in hold mode while keeping position maintenance accuracy. Hold current is set as a percentage of nominal winding current. A time delay after which current will be reduced is also defined. Current reduction mode can be disabled. To set current reduction see set_power_settings function in Programming guide or XILab Power consumption settings page. Nominal engine current is set by set_engine_settings function (see Programming guide) or on Settings of kinematics (Stepper motor) page in XILab.

A reasonable hold current level is 40-70%. This will lower power consumption 2-4 times, while keeping holding force sufficient. A reasonable time to reduce power lies in 50-500 ms range. This is a sufficent time for mechanical oscillations, which might knock the system out of the hold position, to subside.

The motor power shutdown

There is also a power shutdown mode to reduce power consumption of a stepper motor. It is mostly used to stop wasting power on position hold, when no movements are performed for a long time. This mode is on by default, but can be disabled by the user. Time from motor stop to power off is set in seconds. A reasonable time is 3600 seconds (one hour). To set power off options see set_power_settings function in Programming guide or XILab Power consumption settings settings page.

Time delay calculation specifics

All timeouts work in the follwing way: on each transition to stop state time is saved with millisecond accuracy. After certain set time is elapsed depending on PowerOff/CurrentReduce enabled state a motor will reduce winding current or turn its power off. All settings can be changed online. For example, if you increase PowerOff timeout value after the poweroff has already happened then windings will get powered on and a PowerOff function will activate after the new delay. Timeout countdowns cancel after each movement start.

Jerk free function

Sometimes smooth motor winding current changes are required to reduce vibrations of a mechanical system. That's why a Jerk free option is provided, which allows one to set current ramp-up time from zero to nominal value with millisecond precision. When this option is turned on all changes to stabilization current or winding powerdown will happen with smooth current increase or decrease. For example, if jerk free time is set to 100ms and the controller needs to reduce current to 50% it will be reduced over the time of 50ms (because 100ms are required to reduce current from full to zero). To setup Jerk free see set_power_settings function in Programming guide or XILab Settings of kinematics (Stepper motor) page.

Smooth current change function activates on any change in the amplitude of the winding current, for example on nominal hold current change. In this case current change speed is calculated based both on older and newer hold currents, whichever is higher. If controller needs to turn off the motor windings then current is gradually ramped down, then power output circuits are disconnected. If controller needs to power up the windings, then they are powered with zero current which increases up to nominal current.

There are exceptions to the rule, when the current is immediately reduced to zero even if Jerk free option is active. These are the critical errors/Alarm state (see Critical parameters) and controller reset events on firmware update. These events are rare and should not happen during normal stage operation.

A reasonable Jerk free time is 50-200ms, which merely leads to low-energy mechanical oscillations on 3-10 Hz frequencies which are significantly lower than noise from other common sources. Higher Jerk free times will lead to constant delays when current is switched on or off.