« DS18B20 » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Ligne 51 : Ligne 51 :


Le capteur se branche directement à l''''Arduino Nano R4''' comme ceci :
Le capteur se branche directement à l''''Arduino Nano R4''' comme ceci :
* Fil <span style="color:yellow">'''jaune'''</span> du '''DS18B20''' sur le port {{Arduino Digital|pin=D2}} de l''''Arduino Uno R3'''.
* Fil <span style="color:yellow">'''jaune'''</span> du '''DS18B20''' sur le port {{Arduino Digital|pin=D2}} de l''''Arduino Nano R4'''.
* Fil <span style="color:red">'''rouge'''</span> du '''DS18B20''' sur le port {{Arduino VCC|pin=+5V|type=OUT}} de l''''Arduino Uno R3'''.
* Fil <span style="color:red">'''rouge'''</span> du '''DS18B20''' sur le port {{Arduino VCC|pin=+5V|type=OUT}} de l''''Arduino Nano R4'''.
* Fil '''noir''' du '''DS18B20''' sur le port {{Arduino GND}} de l''''Arduino Uno R3'''.
* Fil '''noir''' du '''DS18B20''' sur le port {{Arduino GND}} de l''''Arduino Nano R4'''.
 
=== Arduino Nano ESP32 ===
 
{{ Box Attention | objet=Les E/S de cette carte fonctionnent sous 3.3V.}}
 
[[Image:ARDUINO_NANO_ESP32_PINS.jpg]]
 
Le capteur se branche directement à l''''Arduino Nano ESP32''' comme ceci :
* Fil <span style="color:yellow">'''jaune'''</span> du '''DS18B20''' sur le port {{Arduino Digital|pin=D2}} de l''''Arduino Nano ESP32'''.
* Fil <span style="color:red">'''rouge'''</span> du '''DS18B20''' sur le port {{Arduino VCC|pin=3V3|type=OUT}} de l''''Arduino Nano ESP32'''.
* Fil '''noir''' du '''DS18B20''' sur le port {{Arduino GND}} de l''''Arduino Nano ESP32'''.


= Programme =
= Programme =

Version du 23 avril 2026 à 12:27

Electronique

Capteur DS18B20 | Capteur SEN0562 | Mémoire ADA563X

Présentation

Le DS18B20 est un capteur de température étanche (IP68) numérique. Le capteur fonctionne sous une tension comprise entre 3.0 VCC et 5.5 VCC.

Type de mesure : Température
Plage de mesure : -10 à +85°C (0.5%)
Précision : 0.5°C
Température de fonctionnement : -55 à +125°C
Indice de protection : IP68
Protocole de communication : Digitale
Adresse I²C :
Tension d'alimentation : 3.0 à 5.0 V
Consommation courant :
Librairies : OneWire [1]
Connectiques
Connecteur JWT à 3 broches
Fil jaune DATA
Fil rouge 5+ OUT
Fil noir GND

Câblage

Arduino UNO

ARDUINO UNO R3 PINS.jpg

Le capteur se branche directement à l'Arduino Uno R3 comme ceci :

  • Fil jaune du DS18B20 sur le port D2 de l'Arduino Uno R3.
  • Fil rouge du DS18B20 sur le port +5V OUT de l'Arduino Uno R3.
  • Fil noir du DS18B20 sur le port GND de l'Arduino Uno R3.
Il est nécessaire de brancher une résistance de pull-up de 4.7K Ohm entre la broche D2 et la broche +5V OUT.

Arduino Nano R4

ARDUINO NANO R4 PINS.jpg

Le capteur se branche directement à l'Arduino Nano R4 comme ceci :

  • Fil jaune du DS18B20 sur le port D2 de l'Arduino Nano R4.
  • Fil rouge du DS18B20 sur le port +5V OUT de l'Arduino Nano R4.
  • Fil noir du DS18B20 sur le port GND de l'Arduino Nano R4.

Arduino Nano ESP32

Les E/S de cette carte fonctionnent sous 3.3V.

ARDUINO NANO ESP32 PINS.jpg

Le capteur se branche directement à l'Arduino Nano ESP32 comme ceci :

  • Fil jaune du DS18B20 sur le port D2 de l'Arduino Nano ESP32.
  • Fil rouge du DS18B20 sur le port 3V3 OUT de l'Arduino Nano ESP32.
  • Fil noir du DS18B20 sur le port GND de l'Arduino Nano ESP32.

Programme

Ce programme nécessite l'installation de la librairie OneWire pour pouvoir fonctionner.

Ce programme permet de lire la valeur mesurée par le capteur de température. Cette valeur est ensuite transmise via l'interface série. Elle peut être lue via le moniteur série du compilateur.

#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  float temperature = getTemp();
  Serial.println(temperature);

  delay(100); //just here to slow down the output so it is easier to read

}


float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
     //no more sensors on chain, reset search
     ds.reset_search();
     return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
     Serial.println("CRC is not valid!");
     return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
     Serial.print("Device is not recognized");
     return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);
  ds.write(0xBE); // Read Scratchpad


  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }

  ds.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}