Les chapitres Prélude IV Éléments techniques pour la mise en œuvre d'un "ventilateur intelligent"
|
3. Un second montage qui fonctionne avec la réserve d’air et permet : Yves Monfort
3.1 Second programme : fichier CommandeNo1.txt. Il apparaît déjà dans cette réalisation un début de régulation de la hauteur de la réserve d’air. Bien que cette régulation soit des plus élémentaires, dans l’environnement d’un orgue de « petite dimension », elle a déjà donné satisfaction.
|
||||||||
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. 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 : - 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 : /************************************************/
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 : /************************************************/
Avant d’entrer dans la phase de régulation, le programme passe par 2 phases de démarrage automatique du moteur.
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. 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). Cliquez ici pour lire la suite.
|
|||||||||
|