Capteur de température Arduino sous l'eau

Bonjour,

Existe-t-il un capteur de température Arduino capable de prendre ses mesures sous l'eau ?
Si oui, le fonctionnement au niveau du branchement et de la programmation est-il identique que pour un capteur "classique" ?

Merci

il existe des DS18B20 qui sont soi disant étanches.

ça ne change rien à la programmation

Pourquoi “soi disant” ?

J’ai trouvé ce code pour ce capteur :

/**
 * Exemple de code pour lire un unique capteur DS18B20 sur un bus 1-Wire.
 */
 
/* Dépendance pour le bus 1-Wire */
#include <OneWire.h>
 
 
/* Broche du bus 1-Wire */
const byte BROCHE_ONEWIRE = 7;

/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES {
  READ_OK,  // Lecture ok
  NO_SENSOR_FOUND,  // Pas de capteur
  INVALID_ADDRESS,  // Adresse reçue invalide
  INVALID_SENSOR  // Capteur invalide (pas un DS18B20)
};


/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
 
 
/**
 * Fonction de lecture de la température via un capteur DS18B20.
 */
byte getTemperature(float *temperature, byte reset_search) {
  byte data[9], addr[8];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
  
  /* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
  if (reset_search) {
    ds.reset_search();
  }
 
  /* Recherche le prochain capteur 1-Wire disponible */
  if (!ds.search(addr)) {
    // Pas de capteur
    return NO_SENSOR_FOUND;
  }
  
  /* Vérifie que l'adresse a été correctement reçue */
  if (OneWire::crc8(addr, 7) != addr[7]) {
    // Adresse invalide
    return INVALID_ADDRESS;
  }
 
  /* Vérifie qu'il s'agit bien d'un DS18B20 */
  if (addr[0] != 0x28) {
    // Mauvais type de capteur
    return INVALID_SENSOR;
  }
 
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
  
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
  delay(800);
  
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
 
 /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
   
  /* Calcul de la température en degré Celsius */
  *temperature = (int16_t) ((data[1] << 8) | data[0]) * 0.0625; 
  
  // Pas d'erreur
  return READ_OK;
}
 
 
/** Fonction setup() **/
void setup() {

  /* Initialisation du port série */
  Serial.begin(115200);
}
 
 
/** Fonction loop() **/
void loop() {
  float temperature;
   
  /* Lit la température ambiante à ~1Hz */
  if (getTemperature(&temperature, true) != READ_OK) {
    Serial.println(F("Erreur de lecture du capteur"));
    return;
  }

  /* Affiche la température */
  Serial.print(F("Temperature : "));
  Serial.print(temperature, 2);
  Serial.write(176); // Caractère degré
  Serial.write('C');
  Serial.println();
}

Si je branche tout correctement, avec le bon capteur… normalement, je peux enlever les parties de vérification d’adresse, de capteur… non ?

Pourquoi "soi disant" ?

parce que je ne fais pas trop confiance à la pub des produits chinois et j'ai jamais trop essayé la résistance dans le temps ...

pour le code, prenez un des nombreux exemples dispo en ligne. il y a même des bibliothèques
dispos

J'utilise des DS18b20 avec sonde encapsulée dans un étui en inox semble-t-il.

Ça tourne en routine 24h sur 24 depuis deux ans dans une réserve d'eau.

Par précaution, j'ai protégé le capteur avec une gaine thermorétractable du bon diamètre et j'ai recouvert le tout d'un vernis marine. L'eau que j'utilise est une eau de pluie donc plutôt acide.

La zone délicate reste l'entrée du cable dans l'étui inox. Il faut donc que la gaine fasse vraiment corps avec le cable.

Donc oui avec quelques précautions supplémentaires, ce type de capteur peut tenir (pour des gammes de températures allant de 7 degrés à 30 degrés environ).

Bonjour

même constat que Lacuzon avec des DS18B20 'encapsulés' dont l'étanchéité a été renforcée avec de la gaine thermorétractée

Mois j'utilise celui-ci : https://amzn.to/31AkN4w

Ce qui est vraiment bien en utilisant la bibliothèque OneWire tu peux en brancher plusieurs sur la même broche.

al1fch:
Bonjour

même constat que Lacuzon avec des DS18B20 'encapsulés' dont l'étanchéité a été renforcée avec de la gaine thermorétractée

+1 tant qu'on reste en eau douce.

Pour une immersion en eau chlorée d'une piscine, ou (pire) eau salée d'un aquarium, doubler complètement l'étanchéité est indispensable pour une tenue à long terme.

Super merci beaucoup pour toutes vos réponses.

J'ai trouvé une vidéo explicative sur YouTube pour ce capteur (DS18B20).
Je mets le lien si ça peut profiter à quelqu'un : https://youtu.be/8E-yVE--vZw

Merci, si j'ai d'autres questions, je reviendrai :slight_smile:

+1 il faut absolument renforcer l'étanchéîté.

Expérience avec sonde DS18b20 sous 10cm d'eau douce Ph7,2 à 25°C pendant quelques mois.

J'ai eu ce cas sur deux sondes vendues pour "étanches".

Je refais donc systématiquement l'étanchéïté des tubes qui contiennent les sondes. Je démonte tout et je refais avec de la résine époxy + gaine thermorétractable.

Bonjour
perso je n'ai jamais acheté de sondes "etanches" DS18B20
mais je m'en fais qq unes avec du materiel d'archerie ( tube et pointes creuses ) et araldite en remplissage

tout le monde n'a pas la chance d'habiter près d'un centre de tir à l'arc où les flèches cassées abondent on dirait !!

en tout cas vous réussissez à leur donner souvent une seconde vie :slight_smile:

J-M-L:
tout le monde n'a pas la chance d'habiter près d'un centre de tir à l'arc où les flèches cassées abondent on dirait !!

en tout cas vous réussissez à leur donner souvent une seconde vie :slight_smile:

J'ai des proches "bons archets" :grin:

les chutes de tubes carbones sont aussi bien pratique qq fois avec leur faible resistance ohm relative et leur tenue à la destruction electrolytique