Sonde CTD autonome de haute précision
Nom du projet : Élaboration d'un dispositif de mesure autonome et étanche pour les environnements aquatiques.
Coordonnées : Blandine Duparc, blandine.duparc@etu.sorbonne-universite, D. M. physique-géosciences
Aurèle Roux, aurele.roux@etu.sorbonne-universite.fr, D. M. physique-géosciences
Ilona Dupas, ilona.dupas@etu.sorbonne-universite.fr, maj. biologie et min. géosciences
Responsable UE ST062 : Loïc Labrousse et Pierre Thery
Responsable du projet : Danièle Valdés
Durée : Début du projet le 31 janvier 2025 – Fin du projet prévu en mai 2025.
Objectif : Construire une sonde CTD autonome, de haute précision, étanche et à faible coût pour la recherche en hydrologie et océanographie.
Matériaux / Outils : capteur de température TSic716, capteur de pression MS5837-30BA, boîte de dérivation étanche avec presse-étoupes, carte d'acquisition Arduino, poste à souder. Utilisation du logiciel Arduino et Fusion 360.
Présentation du projet
-
Introduction
L'objectif de ce projet est de concevoir une sonde de haute précision étanche et autonome assurant le suivi en pression, température et conductivité d'environnements sous-marins. Plus précisément, ce dispositif sera utilisé dans une grotte située dans une ancienne carrière à Saint-Martin-le-Nœud, en France. L’environnement y est entièrement humide et les paramètres y évoluent lentement et de manière stable au cours de l’année.
Cette sonde, qui comprend un datalogger indépendant, doit avoir un coût de fabrication abordable. Les dispositifs équivalents du marché sont proposés à des tarifs compris entre 1 200 et plus de 2 000€. Notre objectif est de réduire son coût à moins de 300€, afin de pouvoir en placer un grand nombre dans des sites souterrains stratégiques (nappes phréatiques, lacs, etc.). Cela pourrait également faciliter l'accès aux données pour des populations défavorisées, en permettant notamment le suivi précis et fiables des paramètres aquatiques des puits d'eau potable en Afrique. Enfin, cette sonde pourrait être utilisée comme sonde d'appoint sur les bateaux de petites et moyennes tailles pour permettre un meilleur suivi des paramètres physiques des mers et des océans.
Pour cela, notre démarche consiste à acquérir les composants à un bas coûts et de monter ensuite le dispositif à la main. Les différents capteurs sont achetés sous forme de modules électroniques, tandis que la capsule étanche protectrice sera pensée pour être produite à l'aide des machines du Fablab.
Les enjeux principaux sont donc le coût, l'étanchéité complète du dispositif, son autonomie comportementale, sa durabilité mécanique et énergétique, ainsi que le fait d’être suffisamment précis pour mesurer les variations infimes des paramètres physico-chimiques de la grotte à Saint-Martin-le-Nœud.
Cette page présente l'avancement de notre projet tel quel ; une notice de présentation et de production sera publiée une fois le dispositif achevé et en production.
-
Cahier des charges
Fonction | Description |
1 – Mesure de pression | Pour mesurer la pression hydrostatique de l’eau dans laquelle elle est immergée afin d’estimer la profondeur ou la variation du niveau d’eau. |
2 – Mesure de température | Pour avoir les variations de température précises et stables dans la durée de l’eau |
3 – Mesure de conductivité | Pour mesurer la conductivité électrique de l’eau, afin de déduire des paramètres physico-chimiques tels que la salinité ou la concentration ionique. |
4 – Enregistrement des données | Un système de datalogger intégré enregistre sur une carte mémoire SD les données issues des différents capteurs. L’export des données se fait via un système Bluetooth. |
5 – Autonomie énergétique | La sonde fonctionne pendant plusieurs semaines, voire plusieurs mois, sans intervention extérieure, l’alimentation se fait grâce à deux piles alcalines. |
6 – Étanchéité | L’ensemble du dispositif, boîtier comme composants internes, doit être étanche afin de résister à une immersion prolongée. |
7 – Coût réduit | Le coût de fabrication unitaire ne doit pas dépasser 300€. |
8 – Facilité de déploiement | L’installation sur site doit être simple, rapide et ne nécessiter que peu d'outils. |
Montage et protocole
-
Montage et protocole
Dans un premier temps nous avons pensé à l'allure générale de notre sonde :
Figure 1 : Schéma de l’agencement du montage comprenant datalogger, sonde CTD et alimentation.
Le montage présenté en figure 1 s'organise de la manière suivante : la sonde CTD, située à droite, est le cœur du dispositif. Elle contient les capteurs de température, pression et conductivité, ainsi qu’un PCB (circuit imprimé) chargeé de combiner les signaux des différents capteurs en un seul signal numérique robuste interprétable par le datalogger.
Cette carte est placée dans la boîte de dérivation, située au centre du schéma, qui fait donc office de datalogger en charge de l'enregistrement des données. La sonde est relié à cette boîte par un câble étanche, ce qui permet de l'immerger entièrement dans l'eau tandis que le datalogger reste théoriquement au sec, ce qui assure une durée de vie plus longue au dispositif.
Deux câbles sortent ensuite de la boîte de dérivation, chacun équipé d'un presse-étoupe pour garantir l’étanchéité du système. Ils mènent à deux compartiments contenant chacun une pile de 3,6 V haute capacité. Ces compartiments sont situés à l'extérieur du corps du datalogger afin de faciliter le remplacement des piles sans perturber la prise de données.
Toutes les connexions entre câbles et boîtiers, même celles censées rester emmergées, sont protégés par des connecteurs étanches afin de garantir le bon fonctionnement du système dans un environnement humide (100 % d'humidité relative) ou subaquatique.
Nous avons décidé dans la suite de notre projet de nous focaliser davantage sur la mise en oeuvre de la sonde CTD que sur l'agencement des éléments du datalogger, ce dernier étant beaucoup plus simple à concevoir et fabriquer.
Dans la suite nous détaillerons les démarches, les manipulations et les codes que nous avons réalisés afin de tester nos capteurs et les différents protocoles de transmission de données.
Température
L'une de nos contraintes est que l'on mesure des petites variations de température. Il nous faut donc un capteur de précision ; nous avons choisi le capteur Tsic 716 TO92. Et nous voulons que sur le terrain nous puissions accéder au graphique des mesures afin de pouvoir s'assurer directement que les données ne soient pas incohérentes.
Nous avons donc réalisé ce montage, présenté ci-dessous en figure 2, pour prendre les mesures de notre capteur de température Tsic et les comparer à celles prises par le capteur de référence, celui de notre professeure Danièle Valdés :
Figure 2 : Photo du montage pour la mesure de la température.
Ci-dessous les étapes pour faire fonctionner le code Arduino pour le capteur de température TSic 716 :
-
- Télécharger l'application Arduino IDE et l'ouvrir
- Brancher la carte à l’ordinateur -> carte utilisée : Arduino Nano
- Vérifier dans Tools -> Ports que l’ordinateur et l’application Arduino reconnaissent le port auquel est branché la carte. Ici le nom du port en figure 3 à droite est : /dev/cu.usbserial-A9O6OQ4E
- Télécharger le board Arduino Nano dans l’onglet Board Manager (figure 5)
- Sélectionner le bon board spécifique. Les étapes sont présentées en figure 3 à droite, ou sinon :
Tools -> Board -> Boards Manager sélectionner Ardunio AVR Boards -> cliquer sur Ardunio Nano - Télécharger la bibliothèque TsicSensor dans l’onglet Library Manager (figure 5)
- Brancher le capteur de température TSic 716 TO92 directement à la carte Arduino comme présenté sur la figure 3, en référence à la figure 4
Fil noir = GND -> pin 1 ; Fil jaune = signal (ici D2) -> pin 2 ; Fil rouge = voltage (ici 5V) -> pin 3
-
Figure 3 : (Gauche) Photo du branchement de la carte Arduino Nano au capteur de température.
(Droite) Capture d'écran des étapes pour choisir le board. - y
Figure 4 : Schéma des signaux assignés aux différents pins du capteur TSIC via la fiche technique du capteur.
-
- Copier-coller le code suivant dans la zone de code (figure 5) de l’application Arduino :
Code du capteur de température
/*
Tip: Open the "SerialPlotter" tool of the Arduino IDE and see the temperature as graph...
*/
#include <TsicSensor.h>
TsicSensor* sensor1;
float temperature;
void setup()
{
Serial.begin(115200);
sensor1 = TsicSensor::create(02, TsicExternalVcc, TsicType::TSIC_716);
}
void loop()
{
// we are now waiting for new (changed) temperature values ...
if(sensor1->newValueAvailable())
{
// Get the temperature in °Celsius.
temperature = sensor1->getTempCelsius();
}
// output the temperature value to the serial port...
Serial.println(temperature);
delay(1000);
}
-
- Pour vérifier que le code est correct, cliquer sur le bouton Verify en haut à gauche (figure 5)
- Faire bien attention au chiffre écrit à la ligne 16. Il doit être le même que le chiffre en haut à droite de la zone Serial Monitor (en rose sur la figure 5)
- Téléverser le code sur la carte via le bouton Upload en haut à gauche à côté du bouton Verify (figure 5)
- Pour visualiser les mesures lancées automatiquement, cliquer sur Serial Monitor en haut à droite (fig. 5)
- Pour visualiser les données sous forme de graphe, cliquer sur Serial Plotter en haut à droite à côté de Serial Monitor (figure 5)
Figure 5 : Capture écran de l’interface de l’application Arduino. En légende, les logos associés à leur nom.
Pression
Tout comme le capteur de température nous avons besoin d'un capteur de pression qui peut mesurer des petites variations du niveau d'eau (= la pression). Notre choix c’est porté sur le capteur de pression MS583730BA01-50. Nous souhaitons toujours également accéder au graphique des mesures sur le terrain afin de pouvoir s'assurer directement que les données ne soient pas incohérentes.
Nous avons donc réalisé ce montage, présenté ci-dessous en figure 2, pour prendre les mesures de notre capteur de température Tsic et les comparer à celles prises par le capteur de référence, celui de notre professeur Danièle Valdés :
Figure 6 : Photo du montage pour comparer les mesures de pression entre notre capteur et celui de notre professeure.
Ci-dessous les étapes pour faire fonctionner le code Arduino pour le capteur de pression MS, similaire aux étapes pour le capteur de température TSic716 :
-
- Ouvrir l’application Arduino IDE
- Brancher la carte Arduino Nano ESP32
- Vérifier que l’ordinateur et l’application Arduino reconnaissent le port auquel est branché la carte (fig. 3)
- Télécharger le board Arduino Nano ESP32 dans l’onglet Board Manager (fig. 5)
- Sélectionner le bon board spécifique (fig. 3 à droite)
- Télécharger la bibliothèque Wire et MS5837 dans l’onglet Library Manager (fig. 5)
- Brancher le capteur de température MS583730BA01-50 via une plateforme de branchement qui sera liée à la carte Arduino comme présenté sur la figure 7, en référence à la figure 8
Figure 7 : Photo du branchement du capteur de pression MS à la plateforme de branchement avec deux résistances puis à la carte Arduino, ici Nano pour l’exemple car ce n’est pas celle là qu’il faut utiliser.- y
Figure 8 : Schéma des signaux assignés aux différentes pastilles du capteur MS via la fiche technique du capteur.-
- Copier-coller le code suivant dans la zone de code (fig. 5) de l’application Arduino :
Code du capteur de pression
#include <Wire.h>
#include <MS5837.h>
MS5837 sensor(TOGGLE_ADDR); // TOGGLE_ADDR = MS5837_30BA for 30 bar version
void setup() {
Serial.begin(115200);
Wire.begin(); // Initialise I2C (SDA=A4, SCL=A5)
delay(10);
if (!sensor.init()) {
Serial.println("Erreur : capteur MS5837 non détecté !");
while (1);
}
// Configuration : la conversion (OSR) peut être 256, 512, 1024, 2048, 4096
// Plus élevé = meilleure résolution mais conversion plus lente
sensor.setModel(30); // 30 bar
sensor.setFluidDensity(997); // eau douce ≃ 997 kg/m³
}
void loop() {
// Lance la mesure
sensor.read();
float pressure_mbar = sensor.pressure(); // en mbar
float temperature_c = sensor.temperature(); // en °C
float depth_m = (pressure_mbar - 1013.25) / (9.80665 * sensor.fluidDensity() / 100.0);
// approximation de la profondeur
Serial.print("T = ");
Serial.print(temperature_c, 2);
Serial.print(" °C, P = ");
Serial.print(pressure_mbar, 2);
Serial.print(" mbar, depth ≃ ");
Serial.print(depth_m, 3);
Serial.println(" m");
delay(1000); // 1 s ; pour un test tu peux réduire ou augmenter
}
-
- Bouton Verify (fig. 5) pour vérifier que le code est correct
- Faire bien attention au chiffre écrit à la ligne 7. Il doit être le même que le chiffre en haut à droite de la zone Serial Monitor (en rose sur la figure 5)
- Téléverser le code sur la carte avec le bouton Upload (fig. 5)
- Cliquer sur Serial Monitor (fig. 5) pour visualiser les mesures lancées automatiquement
- Cliquer sur Serial Plotter (fig. 5) pour visualiser les données sous forme de graphe
Résultat
-
Résultats
Voici ci-dessous les résultats obtenus pour la comparaison de nos capteurs de température.
Figure 9 : Graphique de comparaison de la température de refroidissement de l’eau entre notre capteur TSIC et celui de notre professeure par rapport au temps.
Nous pouvons remarquer que lors de la phase de refroidissement en figure 9, la tendance générale des courbes des deux capteurs présente bien une diminution régulière de la température attendue lors d’un refroidissement. Ce dernier est progressif, sans sauts anormaux, suggérant une bonne stabilité des capteurs.
Cependant on remarque que le capteur Tsic mesure une température légèrement supérieure à celle du capteur de notre professeure. L’écart moyen entre les deux est d’environ +0,36°C. Mais le parallèle visuel des courbes ainsi que l’absence de décalage temporel des mesures, indiquent que le capteur Tsic 716 suit tout de même correctement la tendance du capteur de référence. Cet écart en valeur absolue de la température est normal pour deux capteurs étalonnés différemment. En revanche ce qui nous intéresse plus c'est de s'assurer que les variations sont similaires entre les deux capteurs. Ici nous avons pu constater que les variations de température sont bien les mêmes et acceptables.
Conclusion et remerciement
-
Conclusion
Nous avons réussi à poser une base solide pour le développement d’une sonde CTD autonome, étanche et de haute précision à prix faible : nous avons réparti notre coût entre les différentes composantes choisies pour notre projet permettant de réduire le prix final par rapport à ceux proposés par les entreprises commerciales.
Certaines étapes n’ont pas abouti, comme la vérification du capteur de pression en raison d’une incompatibilité avec les cartes Arduino utilisées (tension inadéquate), ou encore la création et la réalisation du PCB ainsi que la capsule étanche protectrice de la sonde. Des étapes restent donc à améliorer et à réaliser : intégrer une carte Arduino Nano ESP32 pour finaliser les tests sur le capteur de pression, s’occuper de toute la partie datalogger, et faire les tests d’étanchéité en condition réelle sur de longues durées.
Ce qui a très bien fonctionné par contre a été la recherche et sélection des composants adaptés, notamment les capteurs compatibles avec notre besoin de précision, le respect du cahier des charges, en particulier sur la perfomance de l'électronique et de sa consomation d'énergie, l'intégration du datalogger, la structuration générale du système, et la validation expérimentale de certains capteurs comme celui de température à travers une série de mesures comparatives fiables.
-
Remerciements
Nous remercions Danièle Valdés pour son accompagnement, son soutien et sa confiance tout au long de ce projet enrichissant de développement d’une sonde étanche de haute précision à bas coût. Nous remercions également le laboratoire METIS pour le prêt du matériel de recherche qui nous a permis de comparer la fiabilité de nos capteurs avec un dispositif de référence.
Nous souhaitons également remercier Loïc Labrousse et Pierre Thery de nous avoir accompagnés dans notre découverte du Fablab, et de nous avoir mis à disposition le matériel requis pour satisfaite nos ambitions. Nous remercions tout particulièrement Pierre Thery pour son suivi attentif sur les moindres détails de notre projet, sa patience quant aux commandes et à la logistique, ainsi que son aide précieuse lors de la réflexion sur le code Arduino lié au capteur de température.
Enfin, nous remercions Kevin Mendes pour son accompagnement en début de projet, ses suggestions et conseils, ainsi que les nombreuses pistes qu'il nous a proposé et qui ont été très utiles pour structurer notre démarche et notre réflexion.
Journal de bord
-
Journal de bord
31/01/2025 —— Schématisation et réflexion
Nous avons schématisé ci-dessous la sonde que nous allons essayer de monter dans ce projet.
Figure 10 : Schéma du prototype imaginé
Puis nous avons fait nos recherches sur les capteurs de température en prenant en compte : le prix (le moins cher possible), la haute précision attendue et la gamme de température. Nous n’avons rien trouvé de concluant, seulement que les capteurs Pt100 de classe A pourraient correspondre à nos conditions, bien que la précision varie selon les modèles.
Nous avons également commencé à réfléchir sur la question du système Bluetooth ou RFID. Nous nous sommes ainsi imaginés que si nous partions sur le système Bluetooth, il faudrait prévoir un mécanisme activant et désactivant le Bluetooth lorsque celui-ci n’est pas utilisé pour éviter une perte trop importante de la batterie. L’idée nous est venue d’utiliser un bouton relié à une LED pour montrer l’activation du système. A cause du problème d’étanchéité de notre datalogger nous avons pensé à utiliser un bouton poussoir relié à un ressort plutôt qu’un interrupteur qui risquerait de laisser passer l’eau au sein du compartiment.
02/02/2025 —— Carte mentale de nos conditions
En réfléchissant à notre cahier des charges, nous obtenons ci-dessous le diagramme des différentes conditions qu’il nous faudra remplir.
Figure 12 : Diagramme des conditions du projet et de leurs problématiques, et les idées pour y répondre.
07/02/2025 —— Recherche des composantes du capteur
Après avoir fait nos recherches, nous sommes tombés d'accord pour utiliser une boîte de dérivation, présentée ci-dessous figure 13. Cette boîte est déjà étanche tout en ayant un prix raisonnable (entre 5 et 10€). En revanche les entrées des câbles auront besoin d’être étanchéifiées à l’aide d’un presse-étoupe adapté.
Une autre possibilité d’assurer l’étanchéité du système serait d’utiliser du gel d’étanchéité et de le mettre dans la boîte de dérivation. Cependant un problème apparaît. Comme nous aurons des petites pièces (pile et Arduino), lorsque nous retirerons le gel pour changer la pile nous risquerons de perdre les petites pièces.
Enfin, afin d'éviter la condensation lors de changements brusques de température nous mettrons un sachet de dessiccateur dans le datalogger.
Figure 13 : Référence potentielle de la boîte étanche pour le data logger.[1,2]
Nous avons également réfléchi aux types de capteurs que nous allons utiliser. Notre choix s’est porté sur les capteurs de température de type semi-conducteurs (ils coûtent environ entre 10-20€), et pour ceux de pression nous utiliserons les capteurs de type piézo-électrique (qui coûtent environ une soixantaine d’euros).
14/02/2025 —— Recherche des composantes du capteur
Nous avons trouvé un capteur de température qui respecte nos contraintes.
-
Référence du capteur de température : TSic 716 TO92 [3]
Nous allons envoyer un mail au fabriquant afin d’avoir une gamme de température qui correspond à celle dans la carrière (5-25°C). Pour l’instant le capteur est vendu avec une gamme de 25-45°C mais il est possible de la changer sur demande auprès du fabriquant.
De même, nous commençons à avoir une bonne idée du capteur de pression que nous allons utiliser, le problème principal restant le prix, supérieur à 100 € bien souvent, ainsi que le précision. Nous souhaiterions pouvoir évaluer des variations de hauteur de la colonne d'eau inférieures à 3 cm.
-
Référence du capteur de pression : MS583730BA01-50 [4]
Nous avons choisi le capteur de pression MS5837-30BA, car il est capable de mesurer des variations de la colonne d'eau d'environ 2 mm. Nous n'espérons pas atteindre une telle précision sur le terrain, mais pouvoir souligner des variations de l'ordre du demi-centimètre remplirait nos attentes. La difficulté avec ce capteur est sa très petite taille de 3.3 x 3.3 x 2.75 mm. Il faudra parvenir à correctement isoler sa jonction sans exercer de contraintes sur la cellule du capteur, sans quoi les mesures de pression absolue seront toutes faussées.
07/03/2025 —— Comptabilité des matériaux
Nous avons trouvé tous les matériaux principaux pour le capteur et le datalogger. Nous avons ainsi essayé de choisir nos références présentées ci-dessous :
Figure 14 : Tableau non exhaustif des coûts envisagés.
Figure 15 : Schéma du dispositif sonde, datalogger et alimentation indépendante.
21/03/2025 —— Commande reçus
Une partie de la commande que nous avions faite la semaine dernière a été reçue : capteur de température et capteur de pression qui est vraiment petit. Nous attendons encore les boîtes de dérivation qui devraient arriver d’ici la semaine prochaine.
Figure 16 : Photo des deux capteurs de pression à gauche et du capteur de température à droite.
Nous avons commencé à envoyer des mails à des laboratoires car nous cherchons à calibrer le capteur de température. Malheureusement les laboratoires que nous avons contacté n’en possèdent pas d’aussi précis que 0,07°K.
Nous voudrions la semaine prochaine avoir une esquisse de notre futur capteur de température afin de pouvoir prochainement le calibrer. Pour cela nous avons d'abord besoin de l'étanchéifier et de faire le code Arduino afin de récupérer les données.
28/03/2025 —— Soudure du câble au capteur
Les trois boîtes de dérivation ont été reçues et nous avons trouvé dans le Fablab géoscience un câble constitué de trois fils mis à nu. Nous sommes ensuite allés au prototypage pour souder l’ensemble capteur-fils (figure 17) pour pouvoir dans les semaines qui suivent calibrer notre capteur de température.
Figure 17 : Photo du câble électrique soudé aux pins de notre capteur de température.
04/04/2025 —— Code Arduino, calibration du capteur
Avant de commencer le code Arduino, il faut déterminer quel pin correspond à quel signal. Via la fiche technique nous obtenons ceci, figure 18 ci-dessous :
Figure 18 : Schéma des signaux assignés aux différents pins.
Association des pins aux fils du câble électrique à l'aide des figures 17 et 18.
Pin 1 = GND -> fil noir ; Pin 2 = signal -> fil jaune ; Pin 3 = voltage -> fil rouge
Voici ci-dessous, un code créé censé nous donner la température. Nous avons téléchargé la bibliothèque TSIC.h sur Arduino avant ensuite de lancer le code.
Faire attention si la bibliothèque fait bien appel au capteur utilisé !
Le capteur TSIC716-TO92 n'est pas référencé dans la bibliothèque => suppression de la ligne de code qui y faisait appel.
#include <TSIC.h>
// Capteur connecté sur la pin D3
TSIC myTSIC(3); // Pin DATA
void setup() {
Serial.begin(9600);
// Pas de setType() ici — ta version de la lib n’en a pas besoin
}
void loop() {
uint16_t rawTemp;
if (myTSIC.getTemperature(&rawTemp) == 0) { // 0 = pas d'erreur
Serial.print("Valeur brute : ");
Serial.println(rawTemp); // <- DEBUG ici
float temperature = rawTemp / 10.0; // Conversion : 0.1°C par unité
Serial.print("Température : ");
Serial.print(temperature);
Serial.println(" °C");
} else {
Serial.println("Erreur de lecture !");
}
delay(1000);
}
Le code a l'air de fonctionner mais nous obtenons dans le serial monitor 0.00°C de température. Problème donc. Nous avons revérifié les branchements ainsi que le voltage des pins de la carte Arduino. Tout était ok, le problème est donc autre part. Peut-être que le code n'est pas complètement correct malgré la vérification utilisé sur Arduino.
Le montage était le suivant, présenté en figure 19 :
Figure 19 : Photo du montage du capteur de température pour le code ci-dessus, en présence d'une résistance.
11/04/2025 —— Code Arduino, calibration du capteur
Nous avons repris le problème du début et réfléchit quel pouvait être le problème sur le code.
Nous avons d’abord axé nos recherches sur la résistance ; celle utilisée précédemment était une résistance de 10kΩ. Nous nous sommes rendus compte que la résistance n’était pas obligatoire, nous l’avons donc enlevé.
Nous avons ensuite décidé de nous pencher sur la bibliothèque utilisé et nous nous sommes rendus compte que celle utilisée précédemment, la TSIC.h, n’avait pas été mise à jour depuis quelques années.
Nous avons décidé de télécharger et d’incorporer dans le code une nouvelle bibliothèque : TsicSensor.h.
Puis nous avons revérifié si le capteur était un analogique, un numérique ou les deux. Nous pensions initialement qu’il faisait les deux et que donc nous pourrons l’étalonner sans problème. Cependant nous avons remarqué qu’il n’était finalement que numérique et que donc nous ne pouvons pas l’étalonner.
Nous obtenons tout de même le code suivant :
/*
This is a very basic example how to use the TsicSensor library
to read temperature values from a TSIC sensor.
Tip: Open the "SerialPlotter" tool of the Arduino IDE and see the temperature as graph...
*/
#include <TsicSensor.h>
TsicSensor* sensor1;
float temperature;
void setup()
{
Serial.begin(115200);
// This creates/initializes a TSIC_506 sensor connected to GPIO 16.
// -----------------------------------------------------------------------------------
// The sensor is configured with "TsicExternalVcc", so it has a permanent external
// power source. The sensor values are then read in the background.
// (we can check for new values with the "newValueAvailable()" function...)
sensor1 = TsicSensor::create(02, TsicExternalVcc, TsicType::TSIC_716);
}
void loop()
{
// we are now waiting for new (changed) temperature values ...
if(sensor1->newValueAvailable())
{
// Get the temperature in °Celsius.
temperature = sensor1->getTempCelsius();
}
// output the temperature value to the serial port...
Serial.println(temperature);
delay(1000);
}
Le code fonctionne désormais.
Cependant, le capteur que nous avons utilisé fait appel à un protocole particulier : le protocole numérique ZACWire. C’est le seul capteur que l'on utilise qui y fait appel, ce qui n'est pas très pratique, et nous aurions préférer un protocole analogique. Même si le programme est robuste grâce à ce protocole, il n’est pas simple à exploiter et est assez compliqué. Nous avons donc décidé de prendre un autre capteur.
De plus, même si nous avions réussi l’étalonnage du capteur TSIC nous aurions eu une précision de 0,1°C soit moins précis que sans étalonnage. Nous privilégierions l’autre capteur possédant -3°C de précision mais qui sera étalonné sur toute la gamme de température.
Changement de capteur !
02/05/2025 —— Mesure de la température
Nous pouvons désormais utiliser le code pour mesurer la température : pour ce faire nous avons réalisé le branchement suivant (figure 20) et branché la carte Arduino Nano au capteur de température. Le capteur étant numérique nous avons fait les branchements sur les pins numériques de l'Arduino, ici nous l'avons mis sur D2.
Il faut prêter attention à bien choisir le bon board, téléchargé en amont, à savoir le board AVR puis choisir Nano. Le chemin suivi est en figure 20.
Figure 20 : (Gauche) Photo du branchement de la carte Arduino Nano au capteur de température.
(Droite) Capture d'écran du board à choisir.
Pour vérifier le bon fonctionnement du code, nous avons fait varier la température en plaçant le capteur de température à l'air puis dans l'eau, visible en figure 21 ci-dessous.
Sur Arduino nous pouvons afficher le graphique de température en fonction du temps réalisé en temps réel. Grâce à ce graphique sur le terrain nous pourrons voir les variations instantanées et ainsi savoir s'il y a des incohérences dans les données.
Figure 21 : Photo du montage pour la mesure de la température.
16/05/2025 —— Mesure et comparaison des capteurs de température, et soudure de fils au capteur de pression
Nous avons cherché à comparer la différence de mesure de température de notre capteur et celui de référence utilisé par notre professeur Danièle Valdés. Pour cela, nous avons mis en place un protocole afin de mesurer le refroidissement d’une eau pour vérifier que nos mesures sont bien celles que nous voulions obtenir par rapport au capteur de référence.
L’eau utilisée ici est de l’eau distillée pour éviter une attaque des minéraux de l’eau du robinet sur le capteur Tsic, ce dernier n’étant pas protégé.
Ci-dessous figure 22, notre montage réalisé pour mettre en place notre protocole :
Figure 22 : Photo du montage pour comparer les mesures de température entre notre capteur et celui de notre professeure.
Lors de la phase de refroidissement, graphique figure 23, nous pouvons remarquer que la tendance générale des courbes des deux capteurs présente bien une diminution régulière de la température attendue lors d’un refroidissement. Ce dernier est progressif, sans sauts anormaux, suggérant une bonne stabilité des capteurs.
Cependant on remarque que le TSIC mesure une température légèrement supérieure à celle du capteur de notre professeure. L’écart moyen entre les deux semble être d’environ 0,5°C. Mais le parallèle visuel des courbes ainsi que l’absence de décalage temporel des mesures, indiquent que le TSIC suit tout de même correctement la tendance du capteur de référence.
Ainsi le capteur TSIC semble fiable car il reproduit assez fidèlement la tendance du capteur de référence lors d’un refroidissement.
Figure 23 : Graphique de comparaison de la température de refroidissement de l’eau entre notre capteur TSIC et celui de notre professeure en fonction du temps.
Lors d’un refroidissement les mesures du TSIC716-O92 correspondent à 0,5°C près à celles du capteur de référence.
Cependant il est à noter que lorsque l’on chauffe l’eau, le capteur Tsic est de 2°C plus chaud que le capteur de référence. Nous avons pu observer cette différence notable entre les deux capteurs lors de deux expériences portant sur la phase de chauffe de l’eau. Malheureusement nous ne disposons pas de données précises ni de graphique pour illustrer cette observation. En effet, la vitesse de variation de la températures allant très très vite et combinée à une prise de mesure manuelle ne nous a pas permis de collecter des données exploitables.
Cette différence observée est tout de même considérable et à ne pas négliger étant donné que l’environnement étudié est sensible et possède de très faible variation de température.
Lequel serait le plus précis ? Difficile de savoir mais on pourrait faire l’hypothèse que le Tsic est plus sensible et plus réactif lorsqu’il est dans un environnement qui se réchauffe contrairement au capteur de référence. Attention cependant car le Tsic ne dépasse pas les 60°C et atteint un plateau de mesure à 59,7°C !
Lors du chauffage de l’eau les mesures du TSIC716-O92 sont de 2°C plus élevées que celles du capteur de référence.
Nous nous sommes également occupé de souder des fils aux pastilles de notre capteur de pression (figure 24) pour pouvoir par la suite prendre des mesures avec.
Figure 24 : Photo des quatre fils électrique soudés aux pastilles de notre capteur de pression.
Ces différents câbles ont été soudés sur les pastilles à l’aide de la fiche technique nous présentant sous forme d'un schéma précis présenté en figure 25 ci-dessous les correspondances des pastilles à leur signal électrique.
Figure 25 : Schéma des signaux assignés aux différentes pastilles du capteur de pression.
Ainsi nous obtenons l'association des pastilles aux fils du câble électrique à l'aide des figures 24 et 26 présentée ci-après :
Pastille 1 = GND -> fil noir ; Pastille 2 = voltage -> fil jaune ; Pastille 3 = clock -> fil blanc ; Pastille 4 = signal -> fil orange
Figure 26 : Photo du branchement du capteur de pression à la plateforme de branchement avec deux résistances puis à la carte Arduino.
21/05/2025 —— Mesure et comparaison des capteurs de pression
Nous avons cherché à faire la même chose pour le capteur de pression. Pour cela, nous avons mis en place un protocole sensiblement similaire à celui du capteur de température : nous allons mesurer la pression à l’aide d’une burette remplie d'eau pour vérifier que nos mesures sont bien celles que nous voulions obtenir par rapport au capteur de référence, celui de notre professeure.
L’eau utilisée ici est de l’eau distillée pour éviter une attaque des minéraux de l’eau du robinet sur le capteur MS, ce dernier n’étant pas protégé.
Ci-dessous figure 27, notre montage réalisé pour mettre en place notre protocole :
Figure 27 : Photo du montage pour comparer les mesures de pression entre notre capteur et celui de notre professeure.
Nous avons donc placé le capteur de référence ainsi que le capteur de pression MS côte à côte dans la burette avec un peu d’eau versée au fond. Le but de cette expérience étant de remplir progressivement la burette d’eau afin de mesurer les variations de pression induites par l’élévation du niveau d’eau, et donc par l’augmentation de la pression hydrostatique.
Problème de carte Arduino rencontré : utiliser une carte Arduino Nano ESP32 spécifiquement
Nous avons rencontré un soucis lié à la carte Arduino utilisée. Les cartes Arduino Nano et Nano 33 IoT testées n'étaient pas compatibles car elles fournissent une tension de 5V trop élevée pour notre capteur de pression qui nécessite une tension de 3V maximum. Seule la carte Arduino Nano ESP32 convient car elle délivre la bonne tension. Malheureusement le prototypage ne disposait pas de ce modèle. Il n'y avait que des cartes Nano classiques ou d’ESP8266. Même si ces dernières sont des ESP, elle étaient tout de même incompatibles avec la configuration notre capteur de pression : les branchements sur la carte n’ont pu être réalisés.
Voici tout de même le code qui serait à téléverser dans la carte Arduino ESP32 pour pouvoir récupérer les données du capteur de pression.
#include <Wire.h>
#include <MS5837.h>
MS5837 sensor(TOGGLE_ADDR); // TOGGLE_ADDR = MS5837_30BA for 30 bar version
void setup() {
Serial.begin(115200);
Wire.begin(); // Initialise I2C (SDA=A4, SCL=A5)
delay(10);
if (!sensor.init()) {
Serial.println("Erreur : capteur MS5837 non détecté !");
while (1);
}
// Configuration : la conversion (OSR) peut être 256, 512, 1024, 2048, 4096
// Plus élevé = meilleure résolution mais conversion plus lente
sensor.setModel(30); // 30 bar
sensor.setFluidDensity(997); // eau douce ≃ 997 kg/m³
}
void loop() {
// Lance la mesure
sensor.read();
float pressure_mbar = sensor.pressure(); // en mbar
float temperature_c = sensor.temperature(); // en °C
float depth_m = (pressure_mbar - 1013.25) / (9.80665 * sensor.fluidDensity() / 100.0);
// approximation de la profondeur
Serial.print("T = ");
Serial.print(temperature_c, 2);
Serial.print(" °C, P = ");
Serial.print(pressure_mbar, 2);
Serial.print(" mbar, depth ≃ ");
Serial.print(depth_m, 3);
Serial.println(" m");
delay(1000); // 1 s ; pour un test tu peux réduire ou augmenter
}
Liste de commande et bibliographie
Liste de commande actualisée :
[NaN]
Déjà achetés :
- 1 x Coque en acier inoxydable pour capteurs de température PT100 - https://amzn.eu/d/fydYRA0
- 2 x TSic 716 TO92 - https://fr.farnell.com/ist-innovative-sensor-technology/tsic-716-to92/capteur-temperature-numerique/dp/3587032 -->
- 2 x MS583730BA01-50 - https://fr.farnell.com/te-connectivity/ms583730ba01-50/capteur-pression-rempli-de-gel/dp/3397833 --> Pression absolue, pression min. 0 bar, type de sortie de capteur numérique, type de mesure de pression jauge étanche, pression de fonctionnement max. 30 bar, tension 3V, tension max 3.6V, courant et alimentation 0,01 µA, interface de sortie I2C et série.
- 1 x Grande boîte de dérivation PEBA IP68 Ø4mm-14mm 5 voies - https://ipeba.com/fr/products/peba®-wasserdicht-abzweigdose-erdkabel-kabelverbinder-ip68-verteilerdose-steckdose-aussen-verteiler-o4mm-14mm-kabel-fur-garten-outdoor-verbinder-box-5-wege-schwarz
- 2 x Petite boîte de dérivation PEBA IP68 Ø4mm-12mm 2 voies - https://ipeba.com/fr/products/peba®-abzweigdose-erdkabel-klemmdose-verbindungsdose-2-wege-junction-box-ip68-wasserdichte-verteilerdose-kabelverbinder-aussen-elektrischer-aussenverteilerdose-kabeldurchmesser-o-4mm-12mm-schwarz
-
Bibliographie
- « LEGRAND Plexo Boite de dérivation étanche IP55 105x105x55 650°C gris - 092022 ». 123elec, 19 juillet 2024, https://www.123elec.com/legrand-plexo-boite-de-derivation-etanche-ip55-105x105x55-gris-092022.html.
- « Fiche technique FA340A, boîtes de dérivation PLEXO ». Legrand, 08 juin 2012, https://assets.legrand.com/general/mediagrp/np-ft-gt/f01039fr-01.pdf.
- « Temperature Sensor IC | Innovative Sensor Technology », Farnelle, https://www.ist-ag.com/en/tsic-semiconductor-temperatures-sensors.
- « Pressure Sensor | TE Connectivity (TE) », Mouser, https://mou.sr/4hugY4.
No Comments