mirror of
https://github.com/m5stack/M5Module-4EncoderMotor-Internal-FW.git
synced 2026-05-20 11:30:40 -07:00
38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
#ifndef __PID_H_
|
|
#define __PID_H_
|
|
|
|
#include "main.h"
|
|
|
|
typedef struct
|
|
{
|
|
int8_t* kp; //比例系数Proportional
|
|
int8_t* ki; //积分系数Integral
|
|
int8_t* kd; //微分系数Derivative
|
|
|
|
int32_t ek; //当前误差
|
|
int32_t ek1; //前一次误差 e(k-1)
|
|
int32_t ek2; //再前一次误差 e(k-2)
|
|
} PID_IncType_t;
|
|
|
|
typedef struct
|
|
{
|
|
int8_t* kp; //比例系数Proportional
|
|
int8_t* ki; //积分系数Integral
|
|
int8_t* kd; //微分系数Derivative
|
|
|
|
int32_t ek1;
|
|
int32_t i_sum; //误差累加
|
|
int32_t i_max;
|
|
int32_t i_min;
|
|
} pid_pos_t;
|
|
|
|
extern int32_t PIDInc(PID_IncType_t* pid, int32_t aims, int32_t input);
|
|
extern int32_t PIDPos(pid_pos_t* pid, int32_t aims, int32_t input);
|
|
|
|
#define MAX(in, max) (((in) > (max)) ? (in) : (max))
|
|
#define MIN(in, min) (((in) < (min)) ? (in) : (min))
|
|
#define CONSTRAIN(in, min, max) MAX(min, MIN(in, max))
|
|
#define INTEGRAL_TIME 10
|
|
|
|
#endif
|