PID regulator v 1.0
 
Loading...
Searching...
No Matches
pid_controller.h File Reference

Nagłówek zawierający definicję struktury i funkcji regulatora PID. Regulator PID jest używany do sterowania prędkością silnika, uwzględniając błąd między zadanym a rzeczywistym stanem (np. prędkością), oraz oblicza odpowiednią wartość sterującą, która pozwala na utrzymanie zadanej prędkości. More...

#include "stm32l073xx.h"

Go to the source code of this file.

Data Structures

struct  pid_struct
 Struktura przechowująca dane regulatora PID. More...
 

Macros

#define MOTOR_Kp   1.2
 Wartość wzmocnienia członu proporcjonalnego.
 
#define MOTOR_Ki   0.1
 Wartość wzmocnienia członu całkującego.
 
#define MOTOR_Kd   0.2
 Wartość wzmocnienia członu różniczkującego.
 
#define MOTOR_ANTI_WINDUP   1000
 Limit dla członu całkującego (anti-windup)
 
#define MOTOR_TOTAL_ERROR_LIMIT   150
 Limit maksymalnego błędu całkowitego.
 

Functions

void pid_init (pid_struct *pid_data)
 Inicjalizuje dane struktury PID.
 
void pid_reset (pid_struct *pid_data)
 Resetuje dane regulatora PID.
 
int pid_calculate (pid_struct *pid_data, int setpoint, int process_variable)
 Oblicza wartość sterującą na podstawie algorytmu PID.
 

Detailed Description

Nagłówek zawierający definicję struktury i funkcji regulatora PID. Regulator PID jest używany do sterowania prędkością silnika, uwzględniając błąd między zadanym a rzeczywistym stanem (np. prędkością), oraz oblicza odpowiednią wartość sterującą, która pozwala na utrzymanie zadanej prędkości.

Created on: Jan 15, 2025 Author: Igor

Function Documentation

◆ pid_calculate()

int pid_calculate ( pid_struct * pid_data,
int setpoint,
int process_variable )

Oblicza wartość sterującą na podstawie algorytmu PID.

Funkcja oblicza odpowiedź regulatora PID na podstawie uchybu (różnicy między wartością zadaną a rzeczywistą) oraz współczynników PID. Uwzględnia również ograniczenia dla sumy błędów i członu całkującego (zapobiegając efektowi windup).

Parameters
pid_dataWskaźnik do struktury pid_struct, zawierającej dane regulatora PID.
setpointZadana wartość, do której dąży system (np. zadana prędkość).
process_variableRzeczywista wartość zmiennej procesowej (np. zmierzona prędkość).
Returns
Wartość sterująca, która powinna zostać zastosowana w systemie (np. wartość PWM).

Oblicza wartość sterującą na podstawie algorytmu PID.

Funkcja oblicza odpowiedź regulatora PID na podstawie uchybu, czyli różnicy między zadanym punktem (setpoint) a zmienną procesową (process_variable). Wykonywane są obliczenia dla członu proporcjonalnego, całkującego oraz różniczkującego, a następnie sumowanie wyników tych członów. Dodatkowo stosowane są ograniczenia na sumę błędów oraz człon całkujący, aby zapobiec efektowi "windup".

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.
setpointZadana wartość, do której dąży system.
process_variableRzeczywista wartość zmiennej procesowej (np. zmierzona prędkość).
Returns
Wartość sterująca, która ma być zastosowana w systemie (np. wartość PWM).

< Odpowiedź członu proporcjonalnego

< Odpowiedź członu całkującego

< Odpowiedź członu różniczkującego

Here is the caller graph for this function:

◆ pid_init()

void pid_init ( pid_struct * pid_data)

Inicjalizuje dane struktury PID.

Funkcja ustawia domyślne wartości współczynników PID oraz limity błędów, przygotowując strukturę do użycia w dalszych obliczeniach.

Parameters
pid_dataWskaźnik do struktury pid_struct, którą należy zainicjalizować.

Inicjalizuje dane struktury PID.

Funkcja ustawia początkowe wartości parametrów PID, w tym współczynniki Kp, Ki, Kd, ograniczenie dla sumy błędów (total_error) oraz ograniczenie dla członu całkującego (anti_windup_limit). Inicjalizuje również zmienne przechowujące błąd z poprzedniego cyklu oraz całkowity błąd.

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.

< Inicjalizacja błędu z poprzedniego cyklu

< Inicjalizacja całkowitego błędu

Here is the caller graph for this function:

◆ pid_reset()

void pid_reset ( pid_struct * pid_data)

Resetuje dane regulatora PID.

Funkcja zeruje błędy, zarówno bieżący, jak i całkowity, przygotowując regulator do nowego cyklu obliczeniowego.

Parameters
pid_dataWskaźnik do struktury pid_struct, której stan ma zostać zresetowany.

Resetuje dane regulatora PID.

Funkcja zeruje błędy, zarówno bieżący, jak i całkowity, przygotowując regulator do nowego cyklu obliczeń.

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.

< Zerowanie błędu z poprzedniego cyklu

< Zerowanie całkowitego błędu

Here is the caller graph for this function: