23 void config(
float output_min,
float output_max) {
45 if (
state == RELAY_FUNCTION_INIT)
47 if (
state == RELAY_FUNCTION_POSITIVE)
56 }
state = RELAY_FUNCTION_INIT;
57 float noiseband = 0.5;
58 float output_positive = 1;
59 float output_negative = -1;
60 uint32_t phase_count = 0;
63 void update(uint32_t now,
float error);
65 bool has_enough_data()
const;
67 float get_mean_oscillation_period()
const;
69 bool is_increase_decrease_symmetrical()
const;
76 float noiseband = 0.05;
77 uint32_t last_zerocross{0};
83 bool has_enough_data()
const;
85 float get_mean_oscillation_amplitude()
const;
87 bool is_amplitude_convergent()
const;
89 float phase_min = NAN;
90 float phase_max = NAN;
96 void print_rule_(
const char *
name,
float kp_factor,
float ki_factor,
float kd_factor);
void config(float output_min, float output_max)
struct esphome::pid::PIDAutotuner::OscillationAmplitudeDetector amplitude_detector_
struct esphome::pid::PIDAutotuner::OscillationFrequencyDetector frequency_detector_
std::vector< float > phase_mins
optional< PIDResult > result_params
struct esphome::pid::PIDAutotuner::RelayFunction relay_function_
PIDResult calculate_pid_(float kp_factor, float ki_factor, float kd_factor)
std::vector< float > phase_maxs
PIDAutotuneResult update(float setpoint, float process_variable)
void set_output_positive(float output_positive)
void set_output_negative(float output_negative)
uint32_t enough_data_phase_
std::vector< uint32_t > zerocrossing_intervals
float current_target_error() const
void print_rule_(const char *name, float kp_factor, float ki_factor, float kd_factor)
enum esphome::pid::PIDAutotuner::State state_
void set_noiseband(float noiseband)
PIDResult get_ziegler_nichols_pid_()