Joseph Hamel
Joseph HAMEL
Joseph Hamel Joseph HAMEL Joseph Hamel Joseph HAMEL Joseph Hamel Joseph HAMEL Joseph Hamel Joseph HAMEL
Joseph Hamel

Les chapitres

Prélude
Introduction
Plan

I Lexique (PDF 6,1 Mo)


II Description de mes orgues
L'Univers des petits orgues

Orgue n° 1
Orgue n° 2
Orgue n° 3
Orgue n° 4
Orgue n° 5
Claviorganum ou Clavecin organisé

III Fabrication
Tuyaux
Sommiers
Claviers
Transmission
Soufflerie
Soufflet à membrane
Réflexions sur ces instruments
Tailles et dimensions

IV Éléments techniques pour la mise en œuvre d'un "ventilateur intelligent"
1. Moteurs et contrôleurs
2. 1er circuit de test
3. Utilisation d'un capteur de distance
4. Régulation proportionnelle
5. Régulation P.I.D.
6. Téléchargement des programmes

 

Audio
Contact
Quelques liens

 

 

5 - Un quatrième montage régulateur du niveau de la réserve d’air pour assurer :
- Le démarrage automatique du moteur du ventilateur
- La mesure de la hauteur de la réserve d’air
- La régulation proportionnelle, intégrale est dérivée (PID) de son niveau par rapport à une consigne.

Yves Monfort

 

Joseph HamelJoseph Hamel5.1 La méthode utilisée.

Joseph HamelJoseph Hamel5.2 Quatrième programme : fichier CommandeNo3.txt

Joseph HamelJoseph Hamel5.3 Test de la réalisation.

Joseph HamelJoseph Hamel5.4 Conclusion.

Joseph HamelJoseph Hamel5.5 Quelques mesures de temps.

Joseph HamelCette fois, pas de nouveau schéma électrique, juste une nouvelle photographie de la platine de test qui montre une nouvelle résistance de 10 kilo ohms pour mettre la broche D4 au niveau haut. À part cet ajout, c’est le même montage que dans la réalisation précédente. Pour que le calcul PID soit effectué, le programme va vérifier que cette broche D4 est à l’état haut. Si elle est à l’état bas, en mettant un shunt entre cette broche et la ligne 0V, la régulation devient à nouveau uniquement proportionnelle, exactement comme dans la réalisation correspondant au troisième montage. Cette possibilité a été introduite, afin de pouvoir refaire, si nécessaire tous les réglages du troisième montage, sans devoir reprogrammer le module Arduino.

 

Joseph Hamel

Cliquez sur l'image pour l'agrandir.

 

Joseph HamelA priori, si on a fait les réglages des potentiomètres de niveau et de gain avec le montage et le programme précédents, il n’y a plus les retoucher. S’ils étaient bien faits dans le dispositif précédent, ils seront aussi les meilleurs ici.
Joseph HamelLa différence essentielle de la nouvelle régulation réside dans le programme implanté dans le module Arduino.
Joseph HamelLes améliorations attendues par rapport à la réalisation précédente sont essentiellement au nombre de deux.
Joseph HamelLa première concerne les passages musicaux faisant parler de nombreux tuyaux pendant des durées plutôt longues. L’appel d’air est très fort, et en mode de régulation proportionnelle, le niveau de la réserve peut descendre beaucoup, jusqu’à accuser une baisse de pression. En effet, le gain de la boucle de régulation proportionnelle étant limité (pour n’avoir pas d’oscillations de pompage), il se peut que l’écart entre le niveau de référence et le niveau nécessaire à la mise en puissance du ventilateur deviennent trop important. L’introduction d’une correction de type intégrateur dans la boucle de régulation permettra de donner au ventilateur toute sa puissance avant que le niveau de la réserve soit trop bas : c’est une amélioration de la stabilité de pression.

Joseph HamelLa seconde concerne l’augmentation (assez faible) de la rapidité de la réponse de la régulation, mais surtout elle permet d’avoir un intégrateur dont la réponse ne soit pas trop lente. Parce que l’intégrateur introduit un retard de phase supplémentaire dans la boucle de régulation, pour n’être pas obligé de diminuer le gain proportionnel on compense ce retard de phase par l’avance de phase d’un correcteur de type dérivateur. On évite ainsi l’apparition des oscillations de pompage.
Joseph HamelLa modification concernant le programme de cette quatrième réalisation est proposée ici. Ce sera peut-être une petite amélioration, ce sera peut être une amélioration déterminante, c’est le facteur d’orgue qui en jugera.

 

Joseph Hamel5.1 La méthode utilisée.

Joseph HamelParce que l’on dispose d’un niveau de calcul suffisant dans le microcontrôleur de l’Arduino il n’y a pas d’implantation d’électronique supplémentaire. L’introduction de fonctions intégrales et dérivées utilise une méthode numérique et donc échantillonnée. Pour faire simple, la période d’échantillonnage, nommée Te dans le programme CommandeNo3 est de 20 millisecondes. C’est le contrôleur du moteur brushless qui impose cette cadence d’après le codage utilisé usuellement dans les télécommandes. C’est sans doute un peu rapide pour un dispositif dont la fréquence de pompage mesurée est de l’ordre de la seconde, mais avec cette cadence rapide on peut obtenir un résultat correct, en calculant le correcteur PID comme un procédé continu, puis en discrétisant le correcteur. Le but n’est pas de développer la théorie ni les calculs d’une correction PID, aussi avons-nous adopté pour déterminer ses paramètres une méthode ancienne, bien connue sous le nom de « méthode de Ziegler et Nichols ».

Cette méthode a l’avantage indéniable de ne demander aucune mesure supplémentaire, par rapport à ce que l’on connaît déjà. Deux paramètres sont à noter pour cette méthode. Il faut, dans la configuration de régulation proportionnelle, (celle de la troisième réalisation), augmenter le gain de la régulation jusqu’à apparition de l’oscillation de pompage, et mesurer la période de l’oscillation de pompage. C’est le premier paramètre à retenir. Un chronomètre ou la simple trotteuse d’une montre sont bien adaptés pour cette mesure.

Attention : La mesure de cette période doit se faire avec des oscillations du niveau de la réserve d’air les plus petites possibles. Si l’amplitude devient grande, il se créera dans les circuits et dans le fonctionnement du ventilateur des non-linéarités et des saturations qui allongerons exagérément la durée des périodes d’oscillations. Si la durée de période retenue est trop longue, la régulation aura un temps de réponse trop long par rapport aux possibilités de l’installation. Au contraire si la durée de période retenue est trop courte on risque d’avoir une installation qui présente des instabilités. La valeur retenue pour la période des oscillations n’a pas besoin d’une très grande précision, mais l’application d’une bonne valeur dans le calcul de la régulation optimise ses performances.

Joseph HamelLe second paramètre est la valeur du coefficient du gain proportionnel de la régulation à l’apparition de l’oscillation de pompage. Comme cette valeur numérique est calculée dans le microcontrôleur d’après le réglage du potentiomètre de gain, elle n’est pas commodément accessible. On ignorera délibérément sa valeur numérique mais on s’appliquera, comme on l’a déjà fait dans la troisième réalisation, après avoir obtenu des oscillations de pompage en mode proportionnel, à réduire un peu ce gain pour voir un ensemble ventilateur et réserve d’air raisonnablement stable. En laissant le potentiomètre de gain dans cette position on devrait obtenir de bons résultats.

Joseph HamelLa méthode de calcul des coefficients du correcteur PID n’est pas développée ici. Ces coefficients et leur application dans les formules est complètement faite dans le programme. Il suffit de préciser la valeur de la période d’oscillation de pompage, mesurée ainsi qu’il est expliqué plus haut. C’est la variable Tu que l’on trouve presqu’en début de programme, et qu’il faut exprimer en seconde. On peut aussi vérifier que la variable Te est bien mise à 0.020 seconde (= 20ms), qui est logiquement la période d’échantillonnage. L’explication de la méthode peut être trouvée dans les livres d’automatique. Nous avons retenu le livre intitulé : « Synthèse d’une commande robuste » de Jean-Marie RETIF, (ed. ellipses) pour l’explication et la formulation du correcteur PID discrétisé. Les formules utilisées dans le programme appelé CommandeNo3 se trouvent à la page 139 de ce livre.

 

Joseph Hamel5.2 Quatrième programme : fichier CommandeNo3.txt

Joseph HamelEn premier lieu, pour l’utiliser, il faut écrire dans le fichier du programme la valeur de la période mesurée pour les oscillations de pompage. Cette valeur est appelée Tu. La période d’échantillonnage est Te, en principe égale à 20 ms, ne devrait pas être modifiée.
Joseph HamelAprès déclarations des diverses variables utilisées par le programme, apparaît la définition d’une première fonction calcul_parametrePID() : elle se charge de calculer les coefficients de l’équation de récurrence du contrôleur PID d’après les valeurs de Tu et Te selon les formules déjà citées. Pour faire ces calculs, suivant les critères de Ziegler et Nichols, la constante de temps de l’intégrateur Ti est choisie égale à la moitié de Tu, et la constante de temps du dérivateur Td est égale au huitième de Tu.
Vient ensuite la définition de la fonction correcteurPID(). Elle reçoit à chaque période d’échantillonnage la valeur de la variable dist_utile. C’est la même variable que celle décrite dans les programmes précédents, et elle est aussi élaborée par la même fonction mesures().
Cette fonction calcule la nouvelle valeur de la correction, appelée yn[0]. C’est elle qui sera transmise à la fonction faire_pulse(), en lieu et place de dist_utile des programmes précédents. C’est cette fonction qui génère l’impulsion et sa durée, pour commander le contrôleur du moteur brushless.

Joseph HamelComme les programmes précédents, ce nouveau programme assure le démarrage automatique du système, en passant par le temps d’attente pour que le contrôleur s’initialise, puis le démarrage progressif, et la régulation de hauteur au niveau désiré s’il a déjà été enregistré dans la troisième réalisation.
Joseph HamelSi cet enregistrement n’a pas été fait on peut encore le faire. Il faut alors mettre en place un shunt (le fil rouge en forme de boucle de la photographie de la troisième réalisation) entre la broche D6 et la ligne de 0V, et en plus maintenant, un autre shunt entre la broche D4 et la ligne de 0V, pour que ce programme se comporte en correcteur proportionnel, exactement comme le programme de la troisième configuration. Ainsi, tant que le shunt est en place sur D6, le réglage pour enregistrer la hauteur désirée est fait exactement comme c’est décrit dans la réalisation précédente. Le réglage du potentiomètre de gain se fait aussi comme dans la réalisation précédente.

Joseph HamelCeci étant fait, on peut ôter le dernier shunt qui reste sur D4, et le module Arduino passe en mode de régulation PID. Le programme réagit de la manière suivante : si la lecture de la broche D4 donne un 0, c’est dist_utile qui est envoyée à la fonction faire_pulse(), si la lecture donne un 1, c’est yn[0] qui lui est envoyée.

ATTENTION :
Comme dans la réalisation précédente chercher les lignes :
/*********************************************************************/
/*********************************************************************/
dist_utile = - dist_utile;
/*********************************************************************/
/*********************************************************************/
Et donner à dist_utile le signe qui convient à la réalisation ainsi qu’il a déjà été décrit.

 

Joseph Hamel5.3 Test de la réalisation.

Joseph Hamel

Joseph HamelEn suivant la méthode déjà expliquée, le programme de cette réalisation est implanté dans le module Arduino à partir de l’un des deux fichiers : Commande N°3.txt ou Commande N°3_bref.txt.
Avant d’implanter le programme dans le microcontrôleur ne pas oublier de mettre dans le fichier la bonne valeur Tu, période des oscillations.
Si les réglages correspondants à la troisième réalisation sont en place, il n’y a rien d’autre à faire. Après la mise sous tension tout le démarrage du dispositif est automatique jusqu’à ce que la réserve d’air atteigne la hauteur qui a été enregistrée.
Il faut maintenant entendre les divers jeux de l’orgue pour voir si la stabilité de la pression d’air et la qualité du vent donne satisfaction.

Il est possible encore de faire une petite retouche du potentiomètre de gain. En l’augmentant on accroît un peu la vitesse de la régulation de hauteur, mais un gain trop élevé conduira à des dépassements importants des corrections et pourrait démarrer des oscillations de pompage. C’est le signe que la valeur du gain est devenue trop grande.
Si l’on n’est pas satisfait des réglages de la hauteur de référence, effectués dans la troisième réalisation, comme on l’a expliqué plus haut, on peut y revenir sans reprogrammer le module Arduino. Il suffit d’arrêter l’alimentation électrique, placer les 2 shunts vers 0V sur D6 et D4, et l’accès à un nouvel enregistrement de la hauteur de référence de la réserver d’air est réalisable à la prochaine mise sous tension.

 

Joseph Hamel5.4 Conclusion.

Joseph HamelLa description des divers montages s’arrête ici. Il n’y a qu’à souhaiter que tout se passe aussi bien que les tests qui ont conduits à la description de ces réalisations. On peut attirer l’attention sur les différentes possibilités offertes par le programme et la platine d’essai dans la configuration de la quatrième réalisation.

Joseph Hamel- Quand les 2 shunts sur D6 et D4 amènent ces broches au niveau bas, il n’y a aucune régulation. Le montage se comporte alors comme celui de la première réalisation, le potentiomètre voisin de l’étiquette « Hauteur », joue le rôle d’accélérateur.

Joseph Hamel- Dans cette configuration encore on se trouve au début de la phase de réglage de la troisième réalisation. Successivement, d’abord en ôtant le shunt sur D6, on enregistre la hauteur qui sert de référence à la régulation, puis en ôtant le shunt sur D4, on passe en mode de régulation PID.

Joseph Hamel- Si la mise sous tension s’effectue sans les shunts, la séquence de démarrage est automatique. Et au bout de la séquence la régulation PID est effective.

Joseph Hamel- À tout moment, en plaçant un shunt entre D4 et 0V il est possible de commuter en régulation proportionnelle, et en l’ôtant de commuter en régulation PID.

 

Joseph Hamel5.5 Quelques mesures de temps.

Joseph HamelIl a fallu vérifier la durée nécessaire aux diverses parties du programme pour s’assurer que toutes les mesures et calculs ont le temps de s’effectuer dans chaque période de 20 millisecondes. Pour ce faire, on a introduit provisoirement des mises à l’état haut ou à l’état bas de la broche D3. L’observation de la tension de cette broche à l’oscilloscope a donné les résultats suivants :
Joseph Hamel- Dans la fonction mesures() les 32 relevés de tension du convertisseur ADC utilisés pour faire une moyenne sont les plus longs, environ 3,57 millisecondes. Le calcul de dist_utile, coefficient de gain compris, ne prend que 21 microsecondes.

Joseph Hamel- Le calcul de la correction PID dure 127 microsecondes, très rapide malgré l’utilisation de nombres flottants dans les opérations mathématiques.

Joseph Hamel- La durée de l’impulsion est naturellement variable de 1 à 2 millisecondes. 22 Le temps d’attente en fin de période dure au moins 14 millisecondes.

C’est donc que le module Arduino est tout à fait adapté à cette application.

Et enfin une photographie d’un module Arduino Nano sur un prototype de circuit imprimé, pour donner une idée de ce que pourrait devenir un régulateur en utilisation.

Joseph Hamel

Yves Monfort

 

Joseph Hamel

Joseph Hamel

• www.lartdunfacteurdorguesamateur.fr • 

Joseph Hamel