GY-63_MS5611/libraries/PID_RT/README.md

111 lines
3.6 KiB
Markdown
Raw Normal View History

2021-01-29 06:31:58 -05:00
[![Arduino CI](https://github.com/RobTillaart/PID_RT/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
2021-11-12 07:52:09 -05:00
[![Arduino-lint](https://github.com/RobTillaart/PID_RT/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/PID_RT/actions/workflows/arduino-lint.yml)
[![JSON check](https://github.com/RobTillaart/PID_RT/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/PID_RT/actions/workflows/jsoncheck.yml)
2021-01-29 06:31:58 -05:00
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/PID_RT/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/PID_RT.svg?maxAge=3600)](https://github.com/RobTillaart/PID_RT/releases)
2021-11-12 07:52:09 -05:00
2021-01-29 06:31:58 -05:00
# PID_RT
2021-11-12 07:52:09 -05:00
Arduino library for PID controller.
2021-01-29 06:31:58 -05:00
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
## Description
The PID_RT class allows the user to instantiate a PID controller.
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
## Interface
### Constructor
- **PID_RT()** minimal constructor.
- **PID_RT(float sp, float Kp, float Ki, float Kd)** constructor that sets minimal parameters to get started.
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
### Core
- **void reset()** resets internals to startup.
- **void setPoint(float sp)** sets setPoint, that needs to be reached.
2021-11-12 07:52:09 -05:00
- **float getSetPoint()** read back setPoint.
- **bool compute(float input)** does one iteration of the PID controller.
Returns **true** after calculation.
Returns **false** if not computed, either due to stop flag or not yet time to do the calculation.
2021-01-29 06:31:58 -05:00
- **float getOutput()** get the last calculated output value.
- **bool setK(float Kp, float Ki, float Kd)** Set the initial P I D parameters as a group.
2021-11-12 07:52:09 -05:00
Overwrites the values set in the constructor.
2021-01-29 06:31:58 -05:00
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
### Start Stop
2021-11-12 07:52:09 -05:00
- **void start()** enable the PID controller to **compute()** new output values.
- **void stop()** disable the PID controller, see **compute()**.
- **bool isRunning()** return the enable/disable flag.
2021-01-29 06:31:58 -05:00
2021-05-28 07:41:04 -04:00
2022-11-22 05:48:02 -05:00
### Behaviour parameters
2021-01-29 06:31:58 -05:00
2021-11-12 07:52:09 -05:00
- **bool setInterval(uint32_t interval)** set the interval between two **compute()** calls.
Returns **true** if changed, otherwise **false**.
- **uint32_t getInterval()** read back interval set.
- **void setOutputRange(float rangeMin, float rangeMax)** tune the output range, default 0..100
- **float getOutputMin()** read back setting rangeMin.
- **float getOutputMax()** read back setting rangeMax.
- **void setReverse(bool reverse)** reverse behaviour, seldom needed.
2021-01-29 06:31:58 -05:00
- **bool getReverse()** read back the setting.
2022-11-22 05:48:02 -05:00
### K-parameters
2021-01-29 06:31:58 -05:00
- **bool setKp(float Kp)** runtime updates are allowed - at your own risk.
- **bool setKi(float Ki)** runtime updates are allowed - at your own risk.
- **bool setKd(float Kd)** runtime updates are allowed - at your own risk.
- **float getKp()** read back setting.
- **float getKi()** read back setting.
- **float getKd()** read back setting.
2022-11-22 05:48:02 -05:00
### Proportional
2021-11-12 07:52:09 -05:00
- **void setPropOnInput()** this is default behaviour.
2021-01-29 06:31:58 -05:00
- **void setPropOnError()** alternative.
- **bool isPropOnInput()** read back setting.
- **bool isPropOnError()** read back setting.
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
### debugging calls
- **float getInput()** read last input.
- **float getLastError()** read the last error.
2021-11-12 07:52:09 -05:00
- **uint32_t getLastTime()** get the last time **compute()** was called.
Note this value is incremented with **Interval** every iteration so it
may have some offset of the actual time. This is chosen as this way it is
almost sure that no iterations are missed.
2021-01-29 06:31:58 -05:00
2021-05-28 07:41:04 -04:00
2021-01-29 06:31:58 -05:00
## Operations
See examples.
2021-11-12 07:52:09 -05:00
## Future
2022-11-22 05:48:02 -05:00
#### must
- update / improve documentation
- more testing
#### should
2021-11-12 07:52:09 -05:00
- add examples to test more
- improve unit test
2022-11-22 05:48:02 -05:00
- move all code to .cpp
#### could
- add reference to PID book / website?
- investigate if it works as PI or P controller too.
- PI as derived or base class?
2021-11-12 07:52:09 -05:00