Robotique-Projet
Bonjour et bienvenu sur le forum ROBOTIQUE-PROJET

Merci de nous rejoindre, pour avoir accès aux forum en entier,

il suffis juste de s'inscrire sa prends 2 minutes, et bien sur de faire sa

présentation, au plaisir de se croisé sur le forum.

Hésité pas a passez me voir sur ma chaîne Twitch pour plus de contenue https://www.twitch.tv/azary_darkbest
Robotique-Projet
Bonjour et bienvenu sur le forum ROBOTIQUE-PROJET

Merci de nous rejoindre, pour avoir accès aux forum en entier,

il suffis juste de s'inscrire sa prends 2 minutes, et bien sur de faire sa

présentation, au plaisir de se croisé sur le forum.

Hésité pas a passez me voir sur ma chaîne Twitch pour plus de contenue https://www.twitch.tv/azary_darkbest
Robotique-Projet

Forum sur la Robotique & Informatique & Programmation

REJOIGNEZ MA CHAÎNE TWITCH NE MANQUEZ RIEN DE MES GAMME PLAYER
AFIN DE ME SOUTENIR POUR L'AFFILIATION.


Nos partenaires




Rejoignez Notre Discord Les amies.

Vous me retrouverez sur le pseudo ๖̶̶̶ۣۣۜζ͜͡Dark Best

-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

1Capteur de température DS18B20 Empty Capteur de température DS18B20 Lun 13 Mai - 20:31

Dark Best

Dark Best
Fondateur
Fondateur
Aujourd’hui je vous ai préparé un article qui va vous faire monter en température Capteur de température DS18B20 Icon_smile

On va parler du DS18B20 !

Capteur de température DS18B20 P1040652



J’avais complètement zappé de faire un tutoriel sur ce composant tout
ce qui a de plus classique, je me rattrape donc avec cet article Capteur de température DS18B20 Icon_wink

Le DS18B20 est un capteur de température du fabricant Dallas, il
communique via un bus 1-Wire (du même fabricant) et possède une
précision de 12 bits sur une plage de -55°C à +125°C.

Si vous voulez les détails voici le datasheet de la bête :
http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf



Le hardware requis pour ce tutoriel :

Capteur de température DS18B20 P1040649

Une carte arduino,
Une protoboard,
Une résistance de 4K7,
Un capteur Dallas DS18B20,
Des fils

Capteur de température DS18B20 Schema

Pourquoi la résistance de 4K7 me direz vous ?
Tout simplement parce que c’est précisé dans le datasheet du fabricant,
et qu’en bon électronicien le fabricant a toujours raison Capteur de température DS18B20 Icon_smile

Au passage vous aurez besoin du pinout du DS18B20 :

Capteur de température DS18B20 Pinout

Remarque : Dans ce tutoriel je vais alimenter le DS18B20 normalement et mode non parasite.

Le montage :

Capteur de température DS18B20 P1040655

Capteur de température DS18B20 P1040657

Arduino -> DS18B20
D7 -> Data
VCC -> VCC
GND -> GND

Data -> résistance de 4K7 -> VCC



Le fonctionnement interne du DS18B20 :

Comme tout module Dallas 1-Wire, le DS18B20 contient un "scratchpad"
qui est une sorte de mémoire tampon sécurisé ou l’on peut venir lire
et/ou écrire.

Voici comment se structure le scratchpad du DS18B20 :

Capteur de température DS18B20 Scratchpad

On peut voir que les deux premiers octets contiennent la température
mesurée, c’est sur ces deux octets que nous allons venir lire avec notre
programme.

Le détail de ces deux registres :

Capteur de température DS18B20 Memorymap

Capteur de température DS18B20 Memorymap2

Pas facile à comprendre hein Capteur de température DS18B20 Icon_wink
La température étant une valeur à virgule celle ci est stockée sous la
forme d’un flottant avec un exposant, une mantisse et un signe.

Pour avoir la température en degré Celsius il faut appliquer la formule suivante :
temp = ((MSB << 8) + LSB) * 0.0625;

Mais cela ne fera pas tout !

Pour pouvoir lire la température il faut tout d’abord lancer une mesure de température (logique).
Pour ce faire il faut envoyer la commande 0×44, puis faire une demande de lecture du scratchpad (0xBE).

Sauf que …

Capteur de température DS18B20 Time

La conversion analogique -> numérique n’est pas instantanée !
Elle prend même beaucoup de temps ! Presque une seconde !



Bien maintenant que nous avons tous les morceaux, il suffit de rassembler les pièces du puzzle !
Code:



#include <OneWire.h> // Inclusion de la librairie OneWire
 
#define DS18B20 0x28    // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
 
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds
 
// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){
  byte data[9], addr[8];
  // data : Données lues depuis le scratchpad
  // addr : adresse du module 1-Wire détecté
 
  if (!ds.search(addr)) { // Recherche un module 1-Wire
    ds.reset_search();    // Réinitialise la recherche de module
    return false;        // Retourne une erreur
  }
 
  if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
    return false;                        // Si le message est corrompu on retourne une erreur
 
  if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
    return false;        // Si ce n'est pas le cas on retourne une erreur
 
  ds.reset();            // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
 
  ds.write(0x44, 1);      // On lance une prise de mesure de température
  delay(800);            // Et on attend la fin de la mesure
 
  ds.reset();            // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
  ds.write(0xBE);        // On envoie une demande de lecture du scratchpad
 
  for (byte i = 0; i < 9; i++) // On lit le scratchpad
    data[i] = ds.read();      // Et on stock les octets reçus
 
  // Calcul de la température en degré Celsius
  *temp = ((data[1] << 8) | data[0]) * 0.0625;
 
  // Pas d'erreur
  return true;
}
 
// setup()
void setup() {
  Serial.begin(9600); // Initialisation du port série
}
 
// loop()
void loop() {
  float temp;
 
  // Lit la température ambiante à ~1Hz
  if(getTemperature(&temp)) {
   
    // Affiche la température
    Serial.print("Temperature : ");
    Serial.print(temp);
    Serial.write(176); // caractère °
    Serial.write('C');
    Serial.println();
  }
}
Et voici le résultat dans le Serial Monitor :
(J’ai collé le capteur devant mon ventilateur d’ordinateur)
Temperature : 34.63°C
Temperature : 34.63°C
Temperature : 34.63°C
Temperature : 34.63°C
Temperature : 34.63°C
Temperature : 34.63°C

https://www.youtube.com/c/DarkBest

Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum