public TemperatureControlService(IOutputHelper helper, ITemperatureSensor sensor, Settings systemSettings) { SystemSettings = systemSettings; _outputHelper = helper; _thermistor = sensor; _pid = new PIDController(PinManagement.currentTemperatureSensor, _output, PinManagement.setTemperature, SystemSettings.PIDKp, SystemSettings.PIDKi, SystemSettings.PIDKd, PIDController.PID_Direction.DIRECT); _pid.SetOutputLimits(0, 100); _pid.SampleTime = _windowSize; _pid.Mode = PIDController.PID_Mode.AUTOMATIC; _windowStartTime = DateTime.Now.Ticks; _pidAutoTune = new PIDAutoTune(); if (_tuning) { _tuning = false; ChangeAutoTune(); _tuning = true; } }
/// <summary> /// Default constructor /// </summary> /// <param name="input"></param> /// <param name="output"></param> /// <param name="setpoint"></param> /// <param name="kp"></param> /// <param name="ki"></param> /// <param name="kd"></param> /// <param name="controllerDirection"></param> public PIDController(double input, double output, double setpoint, double kp, double ki, double kd, PIDController.PID_Direction controllerDirection) { SetOutputLimits(0, 255); SampleTime = 1000; Direction = controllerDirection; SetTunings(kp, ki, kd); _lastTime = DateTime.Now.Ticks - SampleTime; _inAutoMode = false; Input = input; Output = output; SetPoint = setpoint; }