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.
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
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 ?
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 à:
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
Re: Une Lib de régulation PID en micropython ?
@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
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.
Re: Une Lib de régulation PID en micropython ?
@Dominique
OK, j'avais vu çà. Bon du coup, je copie la classe en question ici à des fins de mémo :
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()
Re: Une Lib de régulation PID en micropython ?
As tu eu l'occasion de tester la classe ?
Dominique, MC Hobby.
Re: Une Lib de régulation PID en micropython ?
Non, mais elle a l'air à peu près propre.
Re: Une Lib de régulation PID en micropython ?
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
Elle fonctionne bien.... le plus compliqué reste de trouver la valeur des paramètres Proportionnel, Derivé, Integrale
Dominique, MC Hobby.