GithubHelp home page GithubHelp logo

pid's Introduction

PID Controller

Build Status

This modules implements a PID controller in parallel form for use in various control loops. It has the following features :

  • Discrete PID in parallel form.
  • Maximum integrator value (ARW).

Usage

pid_ctrl_t pid;
pid_init(&pid);

/* PD controller. */
pid_set_gains(&pid, 10., 0, 4.);

while (1) {
    error = motor_position - setpoint;
    motor_pwm = pid_process(&pid, error);
}

Frequency compensation

The user of this module can specify a frequency for the PID loop and the gains will then be adjusted to allow the same gains to be used for various frequencies.

This is done using the function pid_set_frequency. By default there is no compensation for the frequency of the PID.

Dependencies

None

pid's People

Contributors

antoinealb avatar pierluca avatar stapelzeiger avatar syrianspock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pid's Issues

Synchronization

Setters and getters are not synchronized with the PID control function.
How should we handle synchronization of such functions?

One solution would be to restrict the code to processor architectures where float read & writes are atomic. This would reduce the problem to a few places where multiple floats must absolutely be written/read atomically.
But after the discussion about stdints the general attitude seems to be in favor of portability.

Minor arithmetic compiler warning

Hello,
I am playing around with this cool project, and firstly want to say thank you.
Also I would like to report a compiler warning which should be handled gracefully:

pid-master\pid.c(11): warning C4756: overflow in constant arithmetic

The compiler used is MSVC 2015 with the CTP November 2013 tool chain.

Best,
François

Add a frequency parameter

So @Stapelzeiger suggested that we should add a frequency or period parameter which would allow us to have frequency - independant behaviour.

I think it is a good idea, but I don't know if it is simply diving Ki and multiplying Kd by the frequency or if it is more complex.

derivative filter

It would be useful to be able to filter the derivative term of the PID. I suggest a simple moving average, since it can be implemented very efficiently.

Check malloc return value

In pid_create we should check if malloc returns NULL, but what should we do then ? panic() ? return NULL ?

Sign / (scaling) factor for filter output

Sometimes we need to flip the sign of the filter output because of how our hardware is constructed.
Should this be a property of our filter or some other abstraction layer?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.