Skip to content

Brett Beauregard's Arduino PID library adapted to non-uniform time sampling

License

Notifications You must be signed in to change notification settings

kaiaai/arduino_pid_timed

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arduino PID library - with non-uniform time sampling support

This PID library is based on Brett Beauregard's Arduino PID library adapted to work when time between samples is not constant.

Example

/********************************************************
 * PID Basic Example
 * Reading analog input 0 to control analog PWM output 3
 ********************************************************/

#include <PID_Timed.h>

#define PIN_INPUT 0
#define PIN_OUTPUT 3

//Define Variables we'll be connecting to
double Setpoint, Input, Output;

//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, 0.03, PID::DIRECT); // 30 msec target average sampling rate

void setup()
{
  //initialize the variables we're linked to
  Input = analogRead(PIN_INPUT);
  Setpoint = 100;

  // Set PID output limits if necessary
  // myPID.SetOutputLimits(-1, 1);
  
  myPID.enable(true);
}

void loop()
{
  delay(10);
  Input = analogRead(PIN_INPUT);
  myPID.Compute(0.01);  // 10 msec elapsed since last sample
  analogWrite(PIN_OUTPUT, Output);

  delay(50);
  Input = analogRead(PIN_INPUT);
  myPID.Compute(0.05);  // 50 msec elapsed since last sample
  analogWrite(PIN_OUTPUT, Output);

  delay(35);
  Input = analogRead(PIN_INPUT);
  myPID.Compute(0.035);  // 35 msec elapsed since last sample
  analogWrite(PIN_OUTPUT, Output);
}

Relese notes

v1.1.3

  • moved *.h, *.cpp into src folder

v1.1.2

  • PID() empty no-arguments constructor with Init() to follow
    • convenient when instantiating PID like a static variable and configuring later

v1.1.1

  • float option

v1.1.0

  • breaking change: moved #define to class constants

v1.0.1

  • initial release

About

Brett Beauregard's Arduino PID library adapted to non-uniform time sampling

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 100.0%