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

 

 

4. Un troisiè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 de son niveau par rapport à une consigne.

Yves Monfort

 

Joseph HamelJoseph Hamel4.1 Comment faire l’enregistrement du niveau désiré de la réserve d’air.

Joseph HamelJoseph Hamel4.2 Troisième programme : fichier CommandeNo2.txt.

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

Joseph HamelAvec ce troisième montage la régulation de niveau est définie de façon plus précise. La variation de tension fournie par le capteur de niveau, lorsqu’elle va se modifier au moment d’une demande plus grande du débit d’air, est amplifiée pour obtenir une réaction aussi énergique que le permet l’installation.
Joseph HamelPour avoir un réglage commode de cette amplification on a encore choisi la méthode d’ajustage d’un potentiomètre extérieur, car il présente un accès facile. C’est pour cette raison, qu’en plus du potentiomètre de niveau de la réalisation précédente, on voit s’ajouter sur la figure du schéma électrique et sur la photographie de la platine d’essai un potentiomètre de gain. Le module Arduino mesure son état par la connection de la prise médiane du potentiomètre à l’entrée analogique A2. La photographie montre la nouvelle forme de la platine d’essai.

 

Joseph Hamel

Cliquez sur l'image pour l'agrandir.

 

 

Joseph Hamel

Joseph HamelLa correction proportionnelle d’écart de niveau implique que le niveau désiré de la réserve d’air soit défini au préalable.

Joseph Hamel

Joseph Hamel

Joseph HamelPour indiquer que l’on veut effectuer cette tâche on utilise une broche supplémentaire de l’Arduino : la broche D6. Cette opération est nécessaire seulement la première fois que ce programme est utilisé, mais rien n’empêche de recommencer si l’on n’est pas satisfait du premier réglage.

 

Joseph Hamel4.1 Comment faire l’enregistrement du niveau désiré de la réserve d’air.

Joseph HamelAprès la mise sous tension, l’Arduino effectue un test de la broche D6 : si elle est dans l’état bas, le programme entre en phase de réglage de hauteur. Le programme se comporte alors comme celui de la première réalisation : il envoie simplement au contrôleur du moteur brushless des impulsions dont la largeur est proportionnelle à la tension de la prise médiane du potentiomètre de niveau.
IMPORTANT : Dans cette phase de réglage le programme n’effectue pas l’initialisation automatique. Il est donc nécessaire de prendre la précaution de mettre le curseur du potentiomètre de niveau du côté 0V au démarrage de cette phase, et de l’y laisser pendant les quelques secondes nécessaires à l’initialisation du contrôleur. La plupart des contrôleurs signalent la fin de cette phase par un signal sonore.

Joseph HamelAprès la phase d’initialisation du contrôleur, en tournant le potentiomètre, on fait démarrer progressivement le moteur pour que la réserve d’air se gonfle. Quand le niveau augmente très lentement et qu’il arrive à la hauteur désirée, (qui sera la hauteur de référence pour le régulateur), on fait passer l’état de la broche D6 à l’état haut en arrachant le fil rouge en forme de boucle sur la photographie. Le microcontrôleur de l’Arduino détecte très rapidement ce changement d’état, enregistre dans sa mémoire EEPROM la tension donnée par le capteur optique et le niveau de puissance du moteur.
Le niveau de tension donné par le capteur de distance est utilisé par le programme de régulation, qui est maintenant en « mode normal », pour réduire une différence de hauteur de la réserve d’air. Il ajoute ou en retranche, proportionnellement à cette différence, une correction de puissance à la valeur de la puissance qui vient d’être enregistrée. Quand le programme démarre en fonctionnement « normal », il lit la tension de référence du capteur optique qui a été enregistrée dans la mémoire EEPROM. En fonctionnement « normal », le potentiomètre de niveau est complètement inactif.

 

Note sur le niveau de tension de la broche D6.

Joseph HamelLa photographie montre le détail des connexions de la broche D6. Une résistance de 10 kilo ohms est mise entre cette broche et la ligne +5V. Connectée ainsi cette broche configurée en entrée est portée au potentiel 5V. Au démarrage le programme reconnaît cet état, passe en fonctionnement normal : 6 secondes en mode d’initialisation du contrôleur, démarrage progressif et finalement, régulation de la hauteur de la hauteur de la réserve d’air. Quand on veut enregistrer le niveau de la hauteur d’air, pour obtenir à la mise sous tension du module, une tension de 0V sur la broche D6, on peut utiliser la méthode montrée sur la seconde photographie. On y voit une boucle de fil rouge branchée entre la sortie D6 et la ligne d’alimentation 0V. Au début du programme, le module reconnaît cet état et entre dans la phase de configuration de hauteur, comme il a été décrit un peu plus haut.
Quand la réserve d’air atteint la hauteur désirée, il est facile d’arracher ce fil rouge, et grâce à la résistance de 10 kilo ohms, toujours en place, la broche D6 passe à l’état haut. La fin de la phase d’enregistrement est terminée.

 

Joseph Hamel4.2 Troisième programme : fichier CommandeNo2.txt.

Joseph HamelSans recommencer la description des fonctions du programme déjà utilisées dans les réalisations précédentes, signalons les points nouveaux introduits dans ce programme. Comme d’habitude, dans le langage Arduino, la fonction setup() fait un certain nombre d’initialisations du microcontrôleur, et c’est après la fonction loop() qui est utilisée tout le temps restant.
Joseph HamelIl apparaît d’abord une boucle qui débute par : while( !digitalRead(pinReglage) ). Le nom de pinReglage est donné à la broche D6. La boucle est exécutée si D6 est à l’état bas car c’est le signe qu’une phase de réglage de hauteur est demandée. Elle accélère le moteur du ventilateur en fonction de la position du potentiomètre de niveau, et la tension fournie par le capteur de distance est lue. Elle n’effectue aucune régulation. Le passage de D6 à 1 fait sortir de la boucle et les valeurs de ce moment, de la tension du capteur de distance et de la valeur de la puissance du moteur, sont enregistrées par les fonctions EEPROM.write(). La première valeur est nommée hauteur_base, c’est la hauteur de référence pour la régulation. La seconde valeur est nommée offset_puiss, c’est la valeur à laquelle on ajoutera ou ôtera une correction de puissance pour réguler la réserve d’air.
Joseph HamelCes deux valeurs sont inscrites définitivement dans la mémoire EEPROM du microcontrôleur, du moins jusqu’à ce que l’opérateur décide de faire un nouveau réglage de la hauteur de référence. Si D6 est à l’état haut, le programme saute immédiatement cette boucle, et lit dans la mémoire EEPROM les valeurs préalablement enregistrées pour effectuer la régulation.

Joseph HamelEnsuite, c’est la même démarche que dans le programme CommandeNo1 pour l’attente des 6 secondes donnée au contrôleur pour moteur pour s’initialiser et le démarrage progressif du moteur. Après quoi, c’est le fonctionnement dans la boucle infinie qui utilise successivement les deux fonctions citées dans les programmes des autres réalisations : mesures() et faire_pulse().

Joseph HamelSi la seconde fonction n’a rien de nouveau, la fonction mesures() fait tout le nouveau travail de régulation demandé à ce programme.

Joseph HamelÀ chaque fois que la fonction est appelée, (toutes les 20 millisecondes), elle mesure la tension du capteur de distance et la tension du potentiomètre de gain. (On rappelle que le potentiomètre de niveau n’est plus utilisé). Le gain unité est attribué à la position médiane du potentiomètre. Une valeur de gain comprise entre 0,25 et 1 est calculée proportionnellement à la position du potentiomètre s’il est entre 0V et la position médiane, ou entre 1 et 4 s’il est entre la position médiane et +5V. Du moins ce sont les valeurs proposées par défaut. Les commentaires inclus dans le programme permettent de modifier les formules pour utiliser d’autres valeurs de gain.

Joseph HamelLa mesure de tension du capteur optique est comparée à la tension donnée par la référence de hauteur. L’écart entre les deux valeurs (positif ou négatif) est multiplié par le gain, pour être attribué à la variable nommée encore ici dist_utile, par analogie aux programmes des réalisations précédentes. Et c’est donc la somme (dist_utile + offset_puiss) qui est passée à la fonction faire_pulse() pour réguler la réserve d’air en accélérant ou ralentissant le moteur.

Joseph HamelATTENTION : À la fin de la fonction mesures() il faut trouver les lignes qui se présentent de la façon suivante :

 

/*********************************************************************/
//utiliser la ligne suivante si la tension augmente quand la réserve
//d'air augmente, sinon il faut la mettre en // commentaire.
/*********************************************************************/
/*********************************************************************/
dist_utile = - dist_utile;
/*********************************************************************/ /*********************************************************************/

 

Joseph HamelAvec ce changement de signe, la régulation fait diminuer la puissance du moteur quand l’obstacle entrainé par la hauteur de la réserve d’air s’approche du capteur optique.
Si le dispositif utilisé entraine un obstacle qui s’éloigne du capteur quand elle se gonfle il faut annuler cette ligne ou en la mettant en commentaire (ajout de //) sous la forme suivante :

 

/*********************************************************************/
//utiliser la ligne suivante si la tension augmente quand la réserve
//d'air augmente, sinon il faut la mettre en // commentaire.
/*********************************************************************/
/*********************************************************************/
// dist_utile = - dist_utile;
/*********************************************************************/
/*********************************************************************/

 

Joseph Hamel4.3 Test de la réalisation.

Joseph HamelEn suivant la méthode déjà expliquée, on implante dans le module Arduino le programme de cette réalisation à partir de l’un des deux fichiers: Commande N°2.txt ou Commande N°2_bref.txt. Le premier contient beaucoup de commentaires qui peuvent compléter le descriptif précédent du programme, le second très peu, mais le programme implanté dans le microcontrôleur est le même.

 

Joseph Hamel

Joseph HamelSi nécessaire, ne pas oublier de modifier la ligne qui détermine le sens de la régulation avant d’effectuer la programmation.
Quand le programme a été implanté dans le microcontrôleur, et après avoir débranché la connection USB de programmation, on peut connecter à la platine le capteur de distance et la liaison « 3 fils » du contrôleur du moteur, avant de brancher l’alimentation générale.

Réglage obligatoire lors du premier lancement du programme.

Joseph HamelIl est impératif de faire ce premier réglage afin que le programme sache à quel niveau il doit réguler la réserve d’air. Il vaut mieux que le potentiomètre de gain soit en position médiane. Ainsi, quand on passera en fonctionnement « normal », le gain de la boucle de réaction sera égal à 1, valeur raisonnable qui sera affinée ensuite. Il faut que la broche D6 soit mise à 0V. Il faut que ne potentiomètre de niveau ait son
curseur tourné du côté 0V à la mise sous tension du dispositif. Il faut attendre quelques secondes pour que le contrôleur du moteur brushless fasse son initialisation. Il signale la fin de cette initialisation par un signal sonore.
À ce moment on peut commencer à tourner lentement le curseur du potentiomètre de niveau. Ne pas être trop rapide, sinon le niveau de puissance de la turbine peut devenir rapidement très fort et le niveau de la réserve d’air aller trop vite à son maximum avant qu’on ait pu la positionner au niveau souhaité pour la régulation.
La démarche à suivre pour faire cette opération a été largement décrite dans les paragraphes précédents. Simplement, il ne faut pas être surpris de voir le moteur s’arrêter après que l’on ait fait passer la broche D6 du niveau bas au niveau haut. En effet, après l’enregistrement en EEPROM des valeurs de référence pour la régulation, le programme suit son déroulement normal, c’est-à-dire qu’il commence par la séquence de démarrage progressif, qui commence naturellement à l’arrêt du moteur avant d’accélérer.

Joseph HamelIl reste à faire le réglage du gain qui peut se refaire d’ailleurs à tout moment, en fonctionnement normal, par la rotation du potentiomètre de gain.

On se base sur les observations suivantes :

Joseph Hamel- Le plus souvent, avec un gain voisin de 1, qui est en principe celui dans lequel on a mis le potentiomètre avant le premier réglage, le niveau de la réserve d’air reste au niveau de référence. Si le jeu de l’orgue demande un flux d’air, le niveau de la réserve baisse un peu, et dès que cette demande cesse, la réserve d’air doit revenir assez rapidement à son niveau de référence. Si on estime la vitesse de retour au niveau de référence trop lente, on peut l’améliorer en augmentant le gain. Pour rendre la variation de niveau petite lors des demandes d’air de l’orgue, et le retour le plus rapide possible, le gain peut être augmenté jusqu’à une limite où apparaissent des oscillations du niveau de la réserve d’air. À ce moment on a dépassé les limites de régulation du dispositif. Il faut réduire un peu la valeur du potentiomètre de gain pour que l’ensemble moteur et niveau de la réserve d’air soient calmes quand l’orgue ne joue pas.
On obtient alors les meilleures conditions de régulation de la commande proportionnelle, dans des conditions de stabilité acceptables de la boucle de régulation. La présence d’oscillations permanentes dans le système régulé est absolument à proscrire, elle entraînera une usure mécanique trop rapide.
Joseph Hamel- Il se pourrait que les oscillations de la vitesse du ventilateur et du niveau de la réserve d’air soit déjà présentes avant que l’on agisse sur le potentiomètre de gain. La présence de ces oscillations, dites parfois « pompage » indique que le gain unité du réglage préalable est déjà trop élevé. Dans ce cas il faut de tourner le potentiomètre de gain dans le sens de la diminution jusqu’à ce que le dispositif retrouve son calme quand l’orgue ne joue pas. Comme dans le cas précédent on obtient alors les meilleures conditions de régulation permises par cette régulation proportionnelle.

Au second lancement du programme et les suivants...
Joseph HamelIl n’y a plus rien à faire... (Sauf si l’on n’est pas satisfait du niveau du premier réglage,
auquel cas, on peut recommencer.) Maintenant toute la mise en action après la mise sous tension du système est automatique et la réserve d’air atteint son niveau de référence. A la fin de cette mise en marche qui dure un peu plus ou un peu moins de 15 secondes, l’orgue est prêt à se faire entendre.

Note concernant l’étendue du réglage de gain.
Joseph Hamel Par défaut, le programme défini une plage de variation du coefficient de gain, ajustable
par le potentiomètre dans une plage de 0,25 à 4. Les commentaires inclus dans le programme indiquent un chargement de formule à faire pour que cette plage s’étende jusqu’à 8 ou 16. Pour information, dans les tests que nous avons effectués sur des orgues « en vrai grandeur », ou sur de simples dispositifs créés pour ces tests, nous avons obtenu des valeurs du gain s’échelonnant entre 0,8 et 10 à la limite de l’apparition des oscillations de pompage. Les périodes des oscillations de pompage se sont échelonnées de 0,8 à 1,2 seconde environ.

Joseph HamelLa boucle de régulation proportionnelle est pour l’automatique le niveau de régulation le plus élémentaire. Bien que cette régulation soit commode et plutôt satisfaisante sur les essais en « vrai grandeur » sur les orgues de Joseph Hamel, nous avons aussi testé un régulateur PID numérique, considéré comme un plus haut niveau de régulation. Effectivement, au prix d’une programmation un peu plus longue du module Arduino, mais sans aucune modification notable de la platine de test ni de modifications de liaisons vers le contrôleur du moteur ou vers le capteur optique de distance, on obtient encore un meilleur contrôle du niveau de la réserve d’air pendant le jeu de l’orgue, garantissant une meilleure régulation de la pression et la stabilité du vent.

Cliquez ici pour lire la suite.

 

Joseph Hamel

Joseph Hamel

• www.lartdunfacteurdorguesamateur.fr • 

Joseph Hamel