Test du capteur de température DS18B20 avec le protocole OneWire

...

...

...


/*

PROGRAMME BASIQUE POUR LIRE UN CAPTEUR DE TEMPÉRATURE DS18B20
AVEC LE PROTOCOLE OneWire (= Dallas)

RÉFÉRENCE AliExpress DU CAPTEUR
http://fr.aliexpress.com/item/Stainless-steel-package-Waterproof-DS18b20-temperature-probe-temperature-sensor-18B20-For-Arduino/32236998050.html

VERSION ORIGINALE DU PROGRAMME
http://www.milesburton.com/?title=Dallas_Temperature_Control_Library

LIBRAIRIE OneWire
https://github.com/PaulStoffregen/OneWire.git

LIBRAIRIE DallasTemperature
https://github.com/milesburton/Arduino-Temperature-Control-Library

CONNEXIONS
fil rouge    +5V
fil noir     GND
fil jaune    données OneWire PORTD2 (pin 2)
Résistance pull-up de 4.7 kΩ entre le signal (fil jaune) et +5V (fil rouge)

MICROCONTRÔLEUR
Clone Arduino Nano

REMARQUES
- Le protocole OneWire est lent, il faut environ 780 ms pour une lecture.
- Le capteur DS18B20 n’est pas très réactif, il faut environ 5 min
  pour qu’il se stabilise.

mai 2016, ouilogique.com

*/

#include <OneWire.h>
#include <DallasTemperature.h>

// Le fil des données est connectés à la broche 2
#define ONE_WIRE_BUS 2

// Initialisation d’une instance pour communiquer avec le protocole OneWire
OneWire oneWire( ONE_WIRE_BUS );

// Initialise DallasTemperature avec la référence à OneWire.
DallasTemperature sensors( &oneWire );

void setup()
{
  Serial.begin( 115200 );
  Serial.print( "Demo capteur de temperature DS18B20\n" );

  // Démarre le processus de lecture.
  // IC Default 9 bit. If you have troubles consider upping it 12.
  // Ups the delay giving the IC more time to process the temperature
  // measurement
  sensors.begin();
}

void loop()
{
  long t1 = millis();

  // Requête de toutes les températures disponibles sur le bus
  sensors.requestTemperatures();
  // On ne garde que la première température (index = 0)
  float Temp = sensors.getTempCByIndex( 0 );

  long t2 = millis();
  long dt = t2 - t1;

  Serial.print( "t = " );
  Serial.print( t2 );
  Serial.print( " ms\t" );

  Serial.print( "dt = " );
  Serial.print( dt );
  Serial.print( " ms\t" );

  Serial.print( "T = " );
  Serial.print( Temp, 1 );
  Serial.print( " degC\n" );
}