[Tuto] Le capteur de température DS18B20

Posted On: août 10, 2016

Categories: Arduino

Tags: arduino , capteur , ds1820 , temperature , tutoriel

Dans ce tutoriel, je vais vous montrer la marche à suivre afin de faire fonctionner le capteur de température DS18B20.

Matériel nécessaire :
- 1 arduino UNO 
- 1 capteur de température DS18B20
- 3 jumpers mâle-mâle
- 1 résistance de 4,7kOhm
- 1 breadboard

Commençons par le montage :

DS18B20
Pins DS18B20

Branchements
Branchements

Il vous faudra câbler les différents composants de la même manière que l'image ci-dessus.

C'est à dire :

  • Vcc & GND du capteur --> Le GND de l'Arduino
  • Signal du capteur (pin du milieu) --> Pin 2 de l'arduino
  • La résistance de 4,7K entre la pin 2 du capteur et le 5V

Le code maintenant :

#include  //Librairie du bus OneWiren#include  //Librairie du capteurnnOneWire oneWire(2); //Bus One Wire sur la pin 2 de l'arduinonDallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteursnDeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairiennvoid setup(void){n Serial.begin(9600); //Permet la communication en serialn sensors.begin(); //Activation des capteursn sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du busn sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12n}nnvoid loop(void){n sensors.requestTemperatures(); //Demande la température aux capteursn Serial.print("La température est: ");n Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0n Serial.println(" C°");n}

La librairie "DallasTemperature.h" à été spécialement conçue pour ce capteur et nous propose donc des fonctions simplifiées. Ce qui permet de simplifier au maximum le code.

Envoyez ce code sur votre arduino et ouvrez l'écran serial de L'IDE, si tout est bon vous devriez avoir la température qui s'affiche comme ci-dessous.

témperature
Température en serial

A vous de jouer !

Comments

  • Zohra
    mars 27, 2019
    Bonjour walid est ce que tu as trouvé la solution pour - 127c
  • Benjamin
    mars 13, 2019
    Bonjour ça m'affiche -127 degré je ne sais pas comment régler le problème
  • Mr Samuel Faineteau
    mars 8, 2019
    bonjour j'ai le même souci quand la sonde n'est pas sur la bonne borne.
  • Walidd
    avril 22, 2018
    Bonjour, j’ai un petit problème :ndans le moniteur série, il me marque : La température est: -127.00 C°nMerci d’avance pour votre aide !
  • Walidd
    avril 22, 2018
    Bonjour, j’ai un petit problème :ndans le moniteur série, il me marque : La température est: -127.00 C°nMerci d’avance pour votre aide !nPS : Je débute en programmation !
  • Coulibaly
    déc. 12, 2017
    Bjr pouvez vous m’aider à commander un moteur avec un téléphone portable (smartphone)
  • Bernard
    nov. 18, 2017
    Bonjour,nnDans la vue de principe de ce tuto (la planche d'essai), il semble que la broche VDD du capteur soit mise à la masse au lieu d'être alimentée :n1 - Est ce l'un des modes de fonctionnement possibles ?n2 - Dans l'affirmative, comment le circuit peut il opérer sans alimentation ?nMerci,
  • Olivier
    mai 9, 2017
    Bonjour,nJ'ai un projet en tête qui consiste à alimenter, par un panneau solaire qui délivre une tension variable 0-20V 10W, une pompe 12V 0,7A lorsque la température d'un capteur thermique et supérieure à celle d'un autre capteur thermique.nJe compte associer n- deux régulateurs de tension Matek 5V 12V Adjustable Voltage Dual BEC Output Board (5V pour l'arduino et les capteurs, 12V pour la pompe), n- deux capteurs DS18B20, n- une pile rechargeable (si nécessaire pour garder live le code arduino). La pompe ne fonctionnera pas si les panneau solaire manque de luminosité et c'est normal, ce n'est pas le but.nCroyez vous ce projet accessible à un débutant ? nPuis-je solliciter votre aide pour le câblage et pour le code ?nQue prévoir d'autres comme composants ?nMerci d'avance pour toute l'aide que vous accepteriez de m'apporter. Sinon désolé d'encombrer votre forum.nOlivier
  • bibi
    avril 12, 2017
    mdrr il faut changer à la ligne : nSerial.print ("la température est:") net mettre Serial.print "la temperature est" nnil faut changer aussi la ligne :nnSerial.println ("°C") et mettre Serial.println (degC)nvoilà ;)
  • boussaid
    mars 16, 2017
    moi aussi sa me fais sa je comprend pas pourquoi
  • Julescrepi
    févr. 11, 2017
    Bonjour, j'ai un petit problème :ndans le moniteur série, il me marque : La température est: -127.00 C°nMerci d'avance pour votre aide !nPS : Je débute en programmation !
  • Simon
    janv. 26, 2017
    Bonjour,nj'ai un projet de récupération de la température via ce capteur et un Arduino. Dans votre code, vous utilisez la librairie "DallasTemperature.h", où l'avez vous récupéré? Merci
  • Clement
    janv. 24, 2017
    Bonjour Merci pour le programme.nLe programme est bon mais je voudrais que vous m'expliquez pourquoi le GND de la carte Arduino est branché au GND et VCC du capteur.nMercinCdlt
  • Tony
    janv. 16, 2017
    Bonjour. Merci pour le programme. Jr voudrais faire aussi un moteur. Avec une ventilateur. Pouvez vous m'aider svp dans se programme. Merci pour la deuxième. Fois.
  • Dimitri
    déc. 27, 2016
    Oui voilà j'ai ajouter les variables de la sonde ds18b20 à ce niveau :) n nPar la suite j'aimerai bien récupérer les données via un raspberry et les exploiter pour en faire un graphique. nnMerci beaucoup en tout cas pour ta réponse rapide.nn:)
  • Thomas
    déc. 27, 2016
    Hello Dimitri !nnContent que tu es pu résoudre ton problème. :)nnComme ca, j'aurais pensé aux variables qui doivent être déclaré globalement ( c'est à dire au même niveau que "int current_quality =-1;") si tu les utilisent dans les deux fonctions mais tu sembles l'avoir fait. Ton code semble correct, il n'y a pas forcément plus propre dans l’absolu. :)nnBonne fêtes à toi !
  • Dimitri
    déc. 27, 2016
    Bon j'ai réussi a compiler mon code. Je ne suis pas certain que ça soit du propre propre par contre. nMais si de ton coté tu as aussi une solution je veux bien la voir pour comparer avec la mienne et voir si j'ai pas fait un code tirer par les cheveux ^^nMerci :) nProchaine étape ajouter le dust sensor :)
  • Dimitri
    déc. 27, 2016
    Bonjour, merci pour ce tutto qui fonctionne très bien.nnJ'ai un petit projet de station température qualité de l'air.nnChaque code fonctionne très bien indépendamment ( température avec une ds18B20 , Grove Air Quality Sensor ). Mais quand je compile les deux codes ensembles j'ai un max d'erreur. Je débute dans la programmation avec un arduino. Je ne sais pas si il une sorte de code pour faire travailler l'arduino d'abord sur la sonde et ensuite sur le grove ou inversement ...nnJ'utilise donc ton code pour la DS18B20 et voici le code pour le grove Air Quality Sensor.nJe ne sais pas ce que tu en pense et si tu peux me donner un petit coup de pouce. nnMerci d'avance et bonnes fêtes de fin d'année.nnDimitrinnvoici le code du grove.nn/*n AirQuality Demo V1.0.n connect to A0 to start testing. it will needs about 20s to start n* By: http://www.seeedstudio.comn*/n#include"AirQuality.h"n#include"Arduino.h"nAirQuality airqualitysensor;nint current_quality =-1;nvoid setup()n{n Serial.begin(9600);n airqualitysensor.init(14);n}nvoid loop()n{n current_quality=airqualitysensor.slope();n if (current_quality >= 0)// if a valid data returned.n {n if (current_quality==0)n Serial.println("High pollution! Force signal active");n else if (current_quality==1)n Serial.println("High pollution!");n else if (current_quality==2)n Serial.println("Low pollution!");n else if (current_quality ==3)n Serial.println("Fresh air");n }n}nISR(TIMER1_OVF_vect)n{n if(airqualitysensor.counter==61)//set 2 seconds as a detected dutyn {nn airqualitysensor.last_vol=airqualitysensor.first_vol;n airqualitysensor.first_vol=analogRead(A0);n airqualitysensor.counter=0;n airqualitysensor.timer_index=1;n PORTB=PORTB^0x20;n }n elsen {n airqualitysensor.counter++;n }n}
  • Thomas
    oct. 3, 2016
    Bonjour,nnAssez rapidement: il vous faudra rajouter les lignes suivantes:nn– DeviceAddress sensorDeviceAddress1; // Pour déclarer un nouveau capteurnn– sensors.getAddress(sensorDeviceAddress, 1); //Demande l’adresse du capteur à l’index 1 du busnsensors.setResolution(sensorDeviceAddress1, 12); //Résolutions possibles: 9,10,11,12nn– Serial.print(sensors.getTempCByIndex(1)); // Affiche la température du capteur à l’index 1 du busnnBonne journée !
  • benou
    sept. 27, 2016
    Bonjour,nnJe n'ai pas de capteur DS1820, mais je pense qu'il faille rajouter une ligne:nSerial.print(sensors.getTempCByIndex(1));
  • SEBB
    août 31, 2016
    bonjour,nnMerci pour votre tuto. C'est tres clair, meme pour un debutant ... comme moi. Quelle modif du code dois t'on faire pour mettre 1 autre sonde de t° ?nnmerci

Leave a comment

Sign in