Comme le potentiomètre, il reçoit une connection de 3 fils : la tension basse de 0 volt et la tension haute de 5 volts font son alimentation. Il fournit en sortie une tension analogique. Le capteur que l’on utilise est le modèle Sharp GP2Y0A41SK0F. Il fonctionne dans l’infrarouge. Lorsqu’un obstacle est placé devant lui, sa tension de sortie varie de quelques dixièmes de volts à grande distance jusqu’ à 3 volts environ pour de faible distance. La grande distance pour ce capteur est de l’ordre d’une trentaine de centimètres, et la tension de sortie maximale apparaît à 3 centimètres environ. Ces distances conviennent bien à l’application envisagée, bien que la variation de tension de sortie ne soit pas linéaire en fonction de la distance.
Dans cette application le capteur est donc connecté au module Arduino à la place du potentiomètre de l’application précédente. Sa tension de sortie est mesurée par la broche A0. Il faut envisager deux possibilités :
- Premier cas : le capteur optique est placé sur le côté de la réserve d’air. Par l’intermédiaire d’un levier, un obstacle (par exemple, une petite plaquette blanche mat) se lève en même temps que la réserve d’air se gonfle, et s’éloigne du capteur. C’est le cas de la photographie que présente Joseph Hamel quand il présente la soufflerie de son orgue. La tension de sortie du capteur est forte quand la réserve est basse, plus faible quand elle se gonfle. Le module Arduino doit alors commander une forte puissance au moteur quand la tension de sortie du capteur est forte pour que la réserve se gonfle. Il doit diminuer cette puissance au fur et à mesure que la tension du capteur diminue, et la hauteur de la réserve d’air devrait se stabiliser.
- Second cas : le capteur optique est placé au-dessus de la réserve d’air, comme le représente la photographie d’un dispositif qui permet d’expérimenter les réalisations décrites ici. Alors la tension de sortie du capteur augmente quand la réserve d’air se gonfle. Pour que le niveau de la réserve puisse se stabiliser, il faut cette fois que le module Arduino inverse le sens de sa commande du moteur : forte puissance moteur pour une faible tension de sortie du capteur, puissance qui diminue quand cette tension augmente.
Le programme implanté dans la mémoire de l’Arduino en tiendra compte.
Une question importante se pose : à quel niveau le haut de la réserve d’air va-t-il se stabiliser ? On peut répondre que c’est presque imprévisible tant que des essais en situation n’ont pas été effectués.

À nouveau deux choix sont envisagés :
- Premier choix, le programme reste le même que celui de la réalisation précédente et le capteur optique remplace directement le potentiomètre. Il faut évidemment une modification du sens de la commande vers le moteur si le capteur produit une tension de sortie qui augmente quand la réserve se gonfle. En réalisant l’expérience, la réserve d’air devrait se stabiliser à une certaine hauteur. Si la hauteur de convient pas, il faut monter ou descendre la position du capteur par rapport à l’obstacle dont il mesure la distance. La hauteur de la réserve d’air devrait suivre, si le ventilateur est assez puissant, jusqu’à ce que le réalisateur soit satisfait.
- Second choix, la position du capteur est fixée d’avance. Il est probable que la hauteur de stabilisation de la réserve d’air ne soit pas celle qu’on espérait. On peut alors prévoir dans le programme de commande de l’Arduino un décalage dans la commande de puissance du moteur pour amener la hauteur de la réserve d’air à la hauteur désirée, sans devoir modifier la position du capteur. (Il vaut mieux tout de même que la distance obtenue finalement reste dans le domaine de bonne sensibilité du capteur optique Sharp choisi, c’est-à-dire entre 8 et 12 centimètres environ).
C’est ce second choix qui est fait dans la description de cette réalisation. Le schéma électrique du montage est présenté ici.

Pour que le décalage sur la commande de puissance soit accessible facilement, c’est par l’intermédiaire d’un potentiomètre que l’on fait varier ce paramètre. Le point milieu du potentiomètre est relié à l’entrée analogique A1. Le programme de l’Arduino vient aussi mesurer cette tension et il décale en plus ou en moins la tension du capteur optique mesurée sur l’entrée analogique A0.
C’est ce simple ajout qui apparaît sur le schéma de montage et sur la platine d’essai de cette réalisation no1.

Il y a aussi un condensateur de quelques dizaines de nanofarads (ici 33 nF) qui est apparu sur la broche de tension de sortie du capteur optique. On l’a ajouté par précaution car le fil de liaison entre la platine d’essai et le capteur optique est de plusieurs dizaines de centimètres et véhicule quelques parasites électriques venant de l’environnement. Le condensateur est destiné à les atténuer.
3.1 Second programme : fichier CommandeNo1.txt.
On retrouve la fonction appelée mesures() qui se charge de mesurer la tension du capteur de distance et lui associe la variable distance. Elle mesure la tension provenant du potentiomètre de hauteur et lui associe la variable offset. La plage de valeur de la variable est celle du convertisseur analogique numérique : de 0 à 1023. On la recentre sur le milieu de la plage en faisant l’opération (offset – 512) et finalement on obtient la variable distance_utile = distance+offset qui prend en compte la mesure du capteur de distance et le décalage que l’on demande. C’est la valeur de distance_utile qui est transmise à la fonction faire_pulse() qui a le rôle de générer l’impulsion de 1 à 2 millisecondes transmise au contrôleur du moteur.
A la fin de la fonction mesures() il faut trouver les lignes qui se présentent de la façon suivante :
/************************************************/
/************************************************/
dist_utile = 1023 - dist_utile;
/************************************************/
/************************************************/
Ainsi présentée 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. C’est cette configuration qui présentée sur la photographie précédente.
Si le dispositif utilisé entraine un obstacle qui s’éloigne du capteur quand elle se gonfle il faut annuler cette ligne en la mettant en commentaire (ajout de //) sous la forme suivante :
/************************************************/
/************************************************/
// dist_utile = 1023 - dist_utile;
/************************************************/
/************************************************/
Avant d’entrer dans la phase de régulation, le programme passe par 2 phases de démarrage automatique du moteur.
La première phase permet de passer la sécurité présente sur la plupart des contrôleurs de moteurs brushless pour modèles réduits. Pendant cette phase caractérisée par la variable flag_demarre = 1, le programme envoi pendant 6 secondes des impulsions de durée minimale au contrôleur pour lui laisser le temps de faire sa phase d’initialisation. Le contrôleur émet normalement un signal sonore pendant la durée de cette phase.
En entrant dans la seconde phase, avec encore la variable flag_demarre = 1, le programme envoie progressivement des impulsions de plus en plus longue au contrôleur pour assurer un démarrage progressif du moteur. En même temps il mesure les tensions de sortie du capteur de distance et du potentiomètre de décalage. Quand la valeur de la durée des impulsions atteint celle qui est associée à la mesure, la valeur de flag_demarre = 0, et le programme passe dans la phase de fonctionnement normal. C’est une boucle de durée infinie où le module Arduino qui commande le contrôleur demande une puissance qui augmente si la réserve d’air se dégonfle et, à l’inverse une puissance qui diminue si la réserve d’air est trop haute. Ceci permet d’obtenir une certaine régulation du niveau de la réserve d’air.
3.2 Test de la réalisation.
En 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 : CommandeNo1.txt ou CommandeNo1_bref.txt. Le premier contient beaucoup de commentaires, le second très peu, mais le programme implanté dans le microcontrôleur est le même.
Si nécessaire, ne pas oublier de modifier la ligne qui détermine le sens de la régulation avant d’effectuer la programmation.
La platine de test peut être réalisée comme elle est présentée sur la photographie. Après avoir débranché la connection USB de programmation,le capteur de distance et la liaison « 3 fils » du contrôleur du moteur y sont connectés.
Pour le premier essai, par précaution, il vaut mieux tourner le potentiomètre de décalage de hauteur pour que son point milieu soit du côté 0V.
Ce qui correspond au niveau le plus bas de la régulation de hauteur de la réserve d’air. Maintenant on branche l’alimentation de puissance : la batterie de 12 volts dans le test présenté. On patiente 6 secondes pendant lesquelles le contrôleur doit émettre son signal sonore si tout est correct.
Ensuite on attend encore quelques secondes. Le moteur peut démarrer lentement, ou même pas du tout. Alors on tourne doucement le potentiomètre de décalage de niveau vers le côté +5V. Le moteur doit accélérer et le niveau de la réserve d’air augmenter progressivement. On laisse le potentiomètre à la position qui correspond à celle que l’on désire. Le réglage est terminé.
Si l’alimentation est coupée tout s’arrête. Au prochain branchement il n’y a plus rien à faire. L’initialisation du contrôleur, la phase de démarrage progressif du moteur sont automatiques, et le niveau de la réserve d’air augmente pour s’arrêter au niveau qui a été réglé.
C’est le comportement obtenu dans les tests réalisés. La photographie précédente montre en fonctionnement la réserve d’air utilisée pour la mise au point. Pour prendre cette photographie, la platine de test est posée sur la réserve d’air, mais ce n’est évidemment pas une position recommandée !
On peut s’arrêter à ce niveau si le résultat est satisfaisant. Cependant, dans bien des cas, il ne l’est pas. C’est dû au fait que ce programme n’introduit aucun gain dans la boucle de régulation (c’est-à-dire, aucun facteur multiplicatif sur l’écart entre la position réelle de la réserve d’air et la position désirée).
Ceci peut se caractériser par une mise en puissance trop faible du moteur quand l’appel d’air de l’orgue est important. La réserve d’air diminue beaucoup et la pression aussi : le gain de la boucle de régulation est trop petit. Inversement le gain de la boucle de régulation peut être trop fort. Il se manifeste alors une oscillation du niveau de la réserve d’air, accompagnée de la même variation périodique de la vitesse du moteur.
Ces comportements ne sont pas acceptables. Une troisième réalisation va être présentée qui permettra d’ajuster le gain de boucle afin d’obtenir une régulation dite « régulation proportionnelle ».
Cliquez ici pour lire la suite.
|