Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique

Une Lib de régulation PID en micropython ?

A la recherche d'un pilote pour supporter un périphérique matériel? Ou une bibliothèques spécialisée (ex: FFT).
Peut être développez-vous des pilotes MicroPython?
Cette section est le bon endroit pour en parler?
Forum rules
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).

Merci de suivre les recommandations suivantes.
Pensez à:
  • Titre claire: permettant d'identifier le produit et le problème
  • Contenu complet: schéma, message d'erreur, etc (tout ce qui permet d'aider à distance).
  • Fichier joint: Max 300 Ko
  • Courtoisie et précision
Post Reply
sensor56
Posts: 43
Joined: Thu 1 Apr 2021 07:14

Une Lib de régulation PID en micropython ?

Post by sensor56 »

Salut,

est-ce que vous connaissez une bonne lib' de régulation PID en micropython ?

Pour l'instant, j'ai çà :

Première chose, l'existant en Micropython :

* pour la Pyboard : <https://github.com/jibonaronno/uPy-PID_Class>

Mais à priori, on devrait pouvoir utiliser du pur Python ici finalement :

* <https://pypi.org/project/simple-pid/>
* ou même ici encore plus simple : <https://github.com/ivmech/ivPID/blob/master/PID.py>

Toute suggestion bienvenue.
User avatar
Dominique
Administrateur du site
Posts: 309
Joined: Sun 17 May 2020 22:43

Re: Une Lib de régulation PID en micropython ?

Post by Dominique »

@Sensor56

Il y a aussi Control dc motor speed - PID controller.

J'aime assez bien la simplicité... il est aussi basé sur un article de Wikipedia.
Je dirais que tout le fil de discussion est assez intéressant

Dominique
Dominique, MC Hobby.
sensor56
Posts: 43
Joined: Thu 1 Apr 2021 07:14

Re: Une Lib de régulation PID en micropython ?

Post by sensor56 »

@Dominique

OK, j'avais vu çà. Bon du coup, je copie la classe en question ici à des fins de mémo :

Code: Select all

class PID:
 
    def __init__(self, Kp, Ki, Kd, dt, setpoint, measure_func, output_func, output_min, output_max):
       
        self.Kp = Kp
        self.Ki = Ki
        self.Kd = Kd
        self.dt = int(round(dt / 1000)) # Convert from ms
        self.setpoint = setpoint
        self.measure_func = measure_func
        self.output_func = output_func
        self.output_min = output_min
        self.output_max = output_max
       
        self.error = setpoint - measure_func()
        self.integral = 0
       
        self.timer = Timer(-1) # Virtual timer
        self.timer.init(mode=Timer.PERIODIC, period=dt, callback=self.control)
   
    def control(self, timer):
        
        error = self.setpoint - self.measure_func()
        proportional = self.Kp * error
        self.integral = self.integral + error * self.dt
        
        # Prevent integral windup
        if (proportional > self.output_max) or (proportional < self.output_min):
            self.integral = 0
        
        self.derivative = (error - self.error) / self.dt
        output = proportional + self.Ki * self.integral + self.Kd * self.derivative
        self.error = error

        output = max(self.output_min, output)
        output = min(self.output_max, output)
        self.output_func(output)
        
    def setpoint(value):
        self.setpoint = value

    def stop(self):
        
        self.timer.deinit()
User avatar
Dominique
Administrateur du site
Posts: 309
Joined: Sun 17 May 2020 22:43

Re: Une Lib de régulation PID en micropython ?

Post by Dominique »

As tu eu l'occasion de tester la classe ?
Dominique, MC Hobby.
sensor56
Posts: 43
Joined: Thu 1 Apr 2021 07:14

Re: Une Lib de régulation PID en micropython ?

Post by sensor56 »

Non, mais elle a l'air à peu près propre.
User avatar
Dominique
Administrateur du site
Posts: 309
Joined: Sun 17 May 2020 22:43

Re: Une Lib de régulation PID en micropython ?

Post by Dominique »

J'ai eu l'occasion de tester la bibliothèque sur le projet Plancha-CMS.
Elle fonctionne bien.... le plus compliqué reste de trouver la valeur des paramètres Proportionnel, Derivé, Integrale
Dominique, MC Hobby.
Post Reply