Controller Operation
The dev_braking_chopper offers user selectable control strategies for consuming excess DC bus regeneration energy.
Controller type
The braking chopper supports two controller strategies:
Control type | Description |
---|---|
dc_chopper |
DC chopper based controller, where the control effort is proportional to the difference in DC bus voltage to the reference voltage. |
hysteresis |
Hysteresis based controller, where the controller output is either on or off, depending on the DC bus voltage to reference voltage difference. |
Controller mode: dc_chopper
Once the DC bus voltage \(v_{dc}\) goes above \(v_l\), the DC chopper controller sets the duty cycle of the MOSFET (and in turn the load resistor) as a function of the difference between the DC bus voltage and the reference source.
The duty cycle is computed as:
where:
\(v_h = v_{ref} + v_{hysteresis-h} + v_{t-penalty}\)
\(v_l = v_{ref} + v_{hysteresis-l} + v_{t-penalty}\)
Here, the values \(v_{hysteresis-h}\) and \(v_{hysteresis-l}\) determine the voltage range on top of the reference voltage over which the actuation will take place and \(v_{t-penalty}\) is a temperature based penalty discussed further below.
To use the DC chopper controller, set controller_type
to dc_chopper
and configure the following parameters:
Command | Type | Required | Description |
---|---|---|---|
controller_v_dc_hysteresis_h |
float32 | Required | Hysteresis high voltage (V). Sets the voltage at which maximum actuation (duty cycle) occurs. The actuation will be clamped at any voltage beyond this point. |
controller_v_dc_hysteresis_l |
float32 | Required | Hysteresis low voltage (V). Sets the voltage at which actuation starts. |
controller_v_dc_delta_max |
float32 | Optional | The maximum voltage at which v_dc_ctrl_over_warning_f flag is asserted. |
WARNING:
If the controller and resistor are unable to absorb the energy from the DC bus, the DC bus voltage will continue to rise above the upper voltage limit set by 'controller_v_dc_hysteresis_h'. In this case the controller will clamp it's output command to the maximum value and continue to attempt to absorb energy from the DC bus. The controller will only shut down if any of it's monitored temperatures exceed their maximum limits.
Controller mode: hysteresis
Where the DC chopper controller continually varies the duty cycle as \(v_{dc}\) travels from \(v_l\) up to \(v_h\), the hysteresis controller simply turns on once \(v_{dc} >= v_h\), then turns back off once \(v_{dc} <= v_l\).
Again,
\(v_h = v_{ref} + v_{hysteresis-h} + v_{t-penalty}\)
\(v_l = v_{ref} + v_{hysteresis-l} + v_{t-penalty}\)
Here the hysteresis values allow setting the activation point at some voltage above the reference voltage. \(v_{t-penalty}\) is a temperature based penalty discussed further below.
To use the hysteresis controller, set controller_type
to hysteresis
and configure the following parameters:
Command | Type | Required | Description |
---|---|---|---|
controller_v_dc_hysteresis_h |
float32 | Required | Hysteresis high voltage (V). Once the DC bus voltage goes above this value, the MOSFET will turn on. |
controller_v_dc_hysteresis_l |
float32 | Required | Hysteresis low voltage (V). Once the DC bus voltage goes below this value, the MOSFET will turn off. |
controller_v_dc_delta_max |
float32 | Optional | The maximum voltage at which v_dc_ctrl_over_warning_f flag is asserted. |
WARNING:
If the controller and resistor are unable to absorb the energy from the DC bus, the DC bus voltage will continue to rise above the upper voltage limit set by 'controller_v_dc_hysteresis_h'. In this case the controller will clamp it's output command to the maximum value and continue to attempt to absorb energy from the DC bus. The controller will only shut down if any of it's monitored temperatures exceed their maximum limits.
Reference source
All braking chopper controllers work by comparing the DC bus voltage (filtered at cutoff v_dc_filter_fc_hz) against a reference source and actuating based on the difference between the two.
The reference source can be a constant value or a heavily filtered DC bus voltage.
Select a constant value source when the DC bus voltage is expected to remain somewhat stationary, for example when running from a regulated supply.
Select the slow filtered DC bus voltage when running from a source that may vary, for example a battery that might deplete over time. In this case, choose a slow filter cutoff that is faster than the expected battery depletion rate, but slow enough that the reference will not see perturbations in the DC bus voltage caused by regeneration.
Reference source | Description |
---|---|
v_dc_reference_slow_filter |
Reference source comes from the slow filtered DC bus voltage. |
v_dc_reference_constant |
Reference source comes from a pre-configured constant value. |
v_dc_reference_slow_filter
The DC bus slow filter reference source requires the filter cutoff to be configured:
Command | Type | Required | Description |
---|---|---|---|
v_dc_filter_slow_fc_hz |
float32 | Required | Slow DC bus voltage filter cutoff frequency (Hz) |
v_dc_reference_constant
The DC bus constant reference source requires a constant value to be configured:
Command | Type | Required | Description |
---|---|---|---|
controller_v_dc_reference_const |
float32 | Required | Reference voltage (V) |
An example:
For a DC bus voltage of \(72V\), set controller_v_dc_reference_const
to \(72V + 1V\).
In this case, the braking chopper will begin to actuate when the DC bus voltage raises above \(73V\).
Temperature penalty
When multiple braking chopper devices are used together it will become apparent that one device will be favoured over another. This is expected - there are no higher level controllers managing the devices.
As one device is favoured above others it is expected that this device will increase in temperature faster than the others.
We can penalise devices based on temperature by adding a small factor \(v_{t-penalty}\) (from above) to each of the h/l hysteresis points. This will cause the penalised device to switch on at a slightly higher voltage (and in turn later) than the other device. The effect will be that activation favour is shifted to another device.
This is a simple yet effective way of sharing among the devices without higher level signalling. Each device can still see it's maximum rated power dissipation, except they will simply alter their activation order based on device temperature.
The temperature penalty action requires a temperature source to be configured.
Temperature penalty source
Source | Description |
---|---|
v_dc_temp_penalty_disabled |
The temperature penalty action is disabled. (Default) |
v_dc_temp_penalty_temp_0 |
Temperature is sourced from the on board temperature sensor. This effectively measures the temperature of the device PCB. |
v_dc_temp_penalty_an_0 |
External analog temperature sensor, for example a sensor fixed to the actual resistor. The analog interface must have the gain and scale configured correctly. |
Select a temperature penalty source by writing an enum to controller_v_dc_temp_penalty_source
.
Penalty action
The temperature penalty is applied as a small linear increase in voltage as the penalty source traverses through the penalty range defined by controller_v_dc_temp_penalty_t_l
and controller_v_dc_temp_penalty_t_h
.
Configure the temperature penalty voltage and temperature range with:
Command | Type | Required | Description |
---|---|---|---|
controller_v_dc_temp_penalty_t_h |
float32 | Required | Upper temperature at which the penalty action ends (degC). |
controller_v_dc_temp_penalty_t_l |
float32 | Required | Lower temperature at which the penalty action starts (degC). |
controller_v_dc_temp_penalty_v_delta |
float32 | Required | Voltage penalty \(v_{t-penalty}\) range. Linearly applied over the temperature range. \(v_{t-penalty}\) should small, eg about \(1V\)-\(2V\). |