« DS18B20 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| (2 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 31 : | Ligne 31 : | ||
|} | |} | ||
= Câblage = | |||
== Arduino UNO == | |||
[[Image:ARDUINO_UNO_R3_PINS.jpg]] | [[Image:ARDUINO_UNO_R3_PINS.jpg]] | ||
| Ligne 43 : | 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
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 : | — |
| Connecteur | JWT à 3 broches |
|---|---|
| Fil jaune | DATA |
| Fil rouge | 5+ OUT |
| Fil noir | GND |
Câblage
Arduino UNO
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
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;
}

