© 2018 Anton Lebedevich
wikipedia.org/wiki/Self-oscillation
temperature_derivative = (
power
- heat_transfer_coefficient * surface
* (temperature - external_temperature)
) / heat_capacity
if temperature[i] < setpoint[i]:
next_power = max_power
else:
next_power = 0
error[i] = temperature[i] - setpoint[i]
next_power = - proportional * error[i]
error[i] = temperature[i] - setpoint[i]
next_power = - proportional * error[i]
if next_power > max_power:
next_power = max_power
elif next_power < 0:
next_power = 0
error[i] = temperature[i] - setpoint[i]
time_diff = time[i + 1] - time[i]
integral_error[i] = integral_error[i-1] + error[i] * time_diff
next_power = - proportional * error[i]
- integral * integral_error[i]
if next_power > max_power:
next_power = max_power
elif next_power < 0:
next_power = 0
error[i] = temperature[i] - setpoint[i]
time_diff = time[i + 1] - time[i]
integral_error[i] = integral_error[i-1] + error[i] * time_diff
next_power = - proportional * error[i]
- integral * integral_error[i]
if next_power > max_power:
next_power = max_power
integral_error[i] = integral_error[i-1]
elif next_power < 0:
next_power = 0
integral_error[i] = integral_error[i-1]
error[i] = temperature[i] - setpoint[i]
time_diff = time[i + 1] - time[i]
integral_error[i] = integral_error[i-1] + error[i] * time_diff
derivative_error[i] = (error[i] - error[i - 1]) / time_diff
next_power = - proportional * error[i] \
- integral * integral_error[i] \
- derivative * derivative_error[i]
error[i] = temperature[i] - setpoint[i]
time_diff = time[i + 1] - time[i]
integral_error[i] = integral_error[i-1] + error[i] * time_diff
derivative_error[i] = (
temperature[i] - temperature[i - 1]
) / time_diff
next_power = - proportional * error[i] \
- integral * integral_error[i] \
- derivative * derivative_error[i]
error[i] = temperature[i] - setpoint[i]
time_diff = time[i + 1] - time[i]
integral_error[i] = integral_error[i-1] + error[i] * time_diff
derivative_error[i] = (
temperature[i] - temperature[i - 1]
) / time_diff
next_power = - proportional * error[i] \
- integral * integral_error[i] \
- derivative * derivative_error[i]
if next_power > max_power:
next_power = max_power
integral_error[i] = integral_error[i-1]
elif next_power < 0:
next_power = 0
integral_error[i] = integral_error[i-1]
Anton Lebedevich
mabrek@gmail.com
mabrek.github.io/controllers-2018/
github.com/mabrek/controllers-2018/blob/master/controllers.ipynb