L'un d'entre nous a acheté il y a peu un de ces kits scientifiques destinés aux enfants. Oui, chez Yoctopuce, on est toujours de grands enfants :-) Il s'agissait de faire pousser des cristaux, mais franchement, le résultat n'a pas été très probant. On s'est retrouvé avec un amas de petits cristaux ridicules au fond d'un gobelet en plastique. Rien à voir avec que promettait le couvercle de la boîte. On s'est demandé si on ne pouvait pas améliorer le concept à l'aide de quelques modules Yoctopuce. Voyons donc si on peut arriver à faire aussi bien que Walter White...
Le principe
Le principe est assez simple: il s'agit dissoudre une substance chimique quelconque dans de l'eau et d'attendre qu'elle cristallise. En effet, les atomes de certaines substances ont une tendance naturelle à s'organiser de manière ordonnée, ce qui crée des structures cristallines. Pour arriver ce résultat, on dissout un maximum de la substance en question dans de l'eau chaude jusqu'à obtenir une solution saturée, c'est à dire qu'on ne puisse plus rien dissoudre. Cette limite de saturation dépend de la température: plus l'eau est chaude, plus grande est la quantité de substance que l'on peut dissoudre. Ensuite on laisse la solution refroidir, la température baissant, la limite de saturation diminue, et la substance dissoute réapparaît sous forme de cristaux. Mais il y a plusieurs phénomènes qui peuvent interférer:
- Si la température baisse trop vite, au lieu d'obtenir des gros cristaux bien réguliers, on obtient un amas de cristaux minuscules qui poussent de manière anarchique
- Si la température de la solution remonte, les cristaux se dissolvent à nouveau.
Il faut donc que la température baisse très lentement, sans jamais remonter, d'où l'idée d'utiliser l'agitateur magnétique chauffant de la semaine dernière et de contrôler précisément la baisse de température à l'aide d'un Yocto-RS232.
On va contrôler la température avec notre agitateur magnétique chauffant, modèle AG802
Contrôle de température et PID
On dispose donc d'un agitateur magnétique chauffant, modèle AG802. Ce modèle dispose d'une sonde PT1000 qui est censée lui permettre de contrôler précisément la température du liquide qu'il chauffe. En théorie il suffit de demander à l'agitateur de chauffer le liquide à une température bien précise pour obtenir un liquide à la température voulue au dixième de degré près. Sauf qu'il y a un hic: la régulation de l'AG802 est plutôt défaillante: on observe des oscillations entretenues de plusieurs degrés, ce qui ne fait pas du tout notre affaire.
La régulation de température de l'AG802 n'est pas terrible
On a donc entrepris de faire la régulation nous-même à l'aide d'un Yocto-PT100 et d'un algorithme de régulation.
On a utilisé un Yocto-RS232 et un Yocto-PT100 pour piloter l'AG802
On pourrait croire que pour obtenir une température stable, il suffit de chauffer tant que la température voulue n'est pas atteinte. Eh bien, figurez-vous que non. Chauffer un liquide étant un processus avec une énorme inertie, c'est le meilleur moyen pour induire des oscillations. Il faut utiliser une méthode plus subtile, par exemple un PID.
Qu'est-ce qu'un PID?
Un PID est un algorithme de régulation en boucle fermée, il y a toute une théorie mathématique cachée derrière, mais on va essayer de faire simple et pratique: On dispose d'une boîte noire qui prend une valeur en entrée et donne une valeur en sortie. Dans notre cas, la boîte noire est l'AG802, l'entrée est la consigne de température et la sortie est la température réellement obtenue dans le liquide. Le PID consiste à travailler sur l'erreur, c'est à dire la différence entre la température désirée et la température réellement obtenue. On calcule la consigne sous la forme d'une combinaison de trois facteurs, un premier Proportionnel à l'erreur, un second proportionnel à l'Intégrale de l'erreur et un troisième, proportionnel à la Dérivée de l'erreur, d'où le nom PID.
En pratique, on travaille par itérations, à chaque itération on mesure l'erreur E et on mémorise cette erreur sur les N dernières itérations dans un tableau E[0]...E[N-1]. On calcule alors la somme de
- A*E[N-1], soit la dernière erreur. C'est le P de PID
- B*(E[0]+E[1]+...E[N-1])/N, c'est-à-dire la moyenne de l'erreur sur les N dernière étapes, autrement dit l'intégrale divisée par N. C'est le I de PID
- C*(E[N-1]-E[0])/N, c'est-à-dire la dérivée de l'erreur sur les N dernières itérations. C'est le D de PID
Et on utilise cette somme directement comme consigne à donner à la boîte noire pour l'itération suivante. En effet, l'aspect remarquable des PID c'est que la valeur à atteindre n'intervient qu'indirectement dans le calcul de la consigne. A,B,C sont des coefficients arbitraires que vous pouvez modifier pour optimiser le comportement du PID, vous trouverez plein de tutoriels à ce sujet sur internet. Nous, on a eu de la chance, on a obtenu une température stable du premier coup avec N=100, A,B,C=1.0 et un échantillonnage de 4Hz.
La régulation de l'AG802 vs une régulation basée PID
Pour éviter de risquer de faire éclater le verre en chauffant trop fort, on a volontairement limité la montée en température de l'agitateur, ce qui explique la différence de pente en les deux courbes. Les aspects bassement matériels étant maintenant réglés, on peut enfin passer au vif du sujet, c'est-à-dire la création de cristaux.
Création des "graines"
Il faut savoir que la solution va de préférence cristalliser autour des singularités présentes dans la solution, ces singularités peuvent être :
- Des impuretés, c'est pour ça qu'il faut utiliser de l'eau distillée
- Des aspérités, c'est pourquoi il vaut mieux utiliser récipient en verre
- Des zones plus froides
- Un cristal déjà formé
L'idée est donc de préparer une petite quantité de solution plus ou moins saturée et de la verser dans un récipient à fond plat. En refroidissant, la solution va donner naissance à une multitude de petits cristaux pas très beaux. On pourra ensuite prélever un de ces cristaux et l'utiliser comme une graine.
Préparation des graines
Création des cristaux
Pour créer les cristaux proprement dit, il faut préparer un solution saturée. Pour ça, on peut calculer la quantité de matière à utiliser pour atteindre la saturation dans volume d'eau donné à température donnée. Ou alors, on peut utiliser une méthode empirique en ajoutant de la matière jusqu'à ce qu'il ne soit plus possible d'en dissoudre plus, et d'augmenter légèrement la température pour dissoudre le surplus.
Une fois la solution prête, il reste à prélever un petit cristal graine, à l'attacher au bout d'un fil de nylon très fin, le suspendre dans la solution et laisser le tout refroidir très lentement. Il est essentiel de mettre un couvercle sur le récipient contenant la solution pour éviter que l'eau ne s'évapore trop vite. Par contre il n'est pas nécessaire que le couvercle soit parfaitement étanche.
On suspend le cristal dans la solution
Il est important que la solution soit aussi proche du point de saturation que possible. Si la solution n'est pas assez saturée, la graine va se dissoudre avant que les cristaux n'aient commencé à se former. Et si on va au-delà du point de saturation, les cristaux vont se former autour des particules qui n'auront pas pu se dissoudre.
Pour nos cristaux, on a chauffé à 60°C et on a laissé refroidir au rythme d'environ 10°C par jour. On a utilisé la même substance que celle qui était utilisée dans notre kit scientifique, à savoir du monophosphate d'ammonium qui a la particularité de cristalliser sous forme d'aiguilles très spectaculaires. Mais il existe tout plein d'autres substances soluble dans l'eau et susceptibles de cristalliser: sulfate de cuivre, alun de potassium, simple sel de cuisine, voire même du sucre.
Au bout de quelques jours, on obtient un énorme cristal
Pour finir, voici quelques photos des cristaux monophosphate d'ammonium qu'on a obtenu, on a aussi fait un petit time-lapse de la formation des crystaux.
Conclusion
On aurait pu conclure en disant qu'une fois de plus on a réussi résoudre un problème grâce des modules Yoctopuce. En fait, la vraie morale de cette histoire, c'est que contrairement à notre habitude qui consiste à toujours choisir les meilleurs outils, quitte à y mettre le prix, on a acheté l'agitateur avec port RS232 le moins cher qu'on ai trouvé. Rétrospectivement, du point de vue salaire, le temps consacré à faire fonctionner correctement l'AG802 aurait largement couvert la différence de prix avec un appareil haut de gamme.