PymateIO-PID-controler

From pymate.io wiki
Jump to navigation Jump to search


About PID

A PID controller is a feedback-based control loop used to manage machines and processes that require continuous control and automatic adjustment!

PID regulator can be used to regulates temperature, pressure, speed, illumination, position, ...

In theoretical world:

  • you set the value (eg: 200°C) and
  • the device immediately at the target temperature (eg: the oven is at 200°C).

In real live:

  • you must starts heating the resistor followed by the air in the oven then the internal walls before getting the temperature stabilized at 200°C. This is named Thermal Inertia.
  • So you give a lot of power to the heating resistor to make the temperature raising fast toward 200°C
  • You stop early power delivery soon enough to not overshoot too much the final temperature (otherwise you may reach 300°C... where the meal will carbonize).
  • Finally, giving some transcient pulse of heating will somewhat keep the oven temperature around 200°C.
The aim of a PID is to continuously reduce the amount of error between the measured value and the setpoint.

Additional ressource about PID regulation:

Pymate software PID

The PymateIO includes the PID class (pid library).

The PID controler do use a Timer to perform its treatments (it is an autonomous process).

As for each PID Controller, the following parameter are required:

  • Kp : Proportional constant
  • Ki : Integral constant
  • Kd : Derivated constant

The software controller requires additional parameters:

  • dt: time (ms) between two consecutive measurement
  • measure_func : the function that returns the PID input value.
  • output_func : the function(value) called by the PID controler to set the output.
  • output_min : minimal value for the output.
  • output_max : maximal value for the output.

The PID controller starts when setting the setpoint (see setpoint(value) ) and stop when stop() is called.

This controller have been deployed with success into the Plancha-CMS project.
Do not hesitate to read the test_pid.py of Plancha-CMS for implementation example.
A typical application of PID would be speed regulation:
  • Kp, Ki, Kd : to determine
  • dt = 100ms
  • measurement_func : returns the measured RPM
  • output_func : set the PWM duty cycle (in percent) for the motor
  • output_min : 0
  • output_max : 100

PymateIO all right reserved © 2026 - Written by MCHobby for PymateIO