« DS18B20 » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Electronique}}
= Présentation =
= Présentation =


Ligne 29 : Ligne 31 :
|}
|}


== Câblage ==
= Câblage =


=== Arduino UNO ===
== Arduino UNO ==


[[Image:ARDUINO_UNO_R3_PINS.jpg]]
[[Image:ARDUINO_UNO_R3_PINS.jpg]]
Ligne 41 : Ligne 43 :


{{ Box Remarque | objet=Il est nécessaire de brancher une résistance de pull-up de 4.7K Ohm entre la broche {{Arduino Digital|pin=D2}} et la broche {{Arduino VCC|pin=+5V|type=OUT}}.}}
{{ Box Remarque | objet=Il est nécessaire de brancher une résistance de pull-up de 4.7K Ohm entre la broche {{Arduino Digital|pin=D2}} et la broche {{Arduino VCC|pin=+5V|type=OUT}}.}}
== Arduino Nano R4 ==
[[Image:ARDUINO_NANO_R4_PINS.jpg]]
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:red">'''rouge'''</span> du '''DS18B20''' sur le port {{Arduino VCC|pin=+5V|type=OUT}} de l''''Arduino Uno R3'''.
* Fil '''noir''' du '''DS18B20''' sur le port {{Arduino GND}} de l''''Arduino Uno R3'''.
= Programme =
{{ Box Remarque | objet=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;
}

Dernière version du 2 février 2026 à 19:22

Electronique

Capteur DS18B20 | Capteur SEN0562

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%)
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 :
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 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.

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;

}