KY-001 Capteur de température
Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits et dispose d'une fonction d'alarme avec des points de déclenchement hauts et bas non volatils et programmables par l'utilisateur, ce qui signifie que le capteur a des limites hautes et basses programmables qui ne peuvent pas changer d'elles-mêmes. La DS18B20 communique sur un bus à 1 fil, qui par définition ne nécessite qu'une seule ligne de données (et une masse) pour communiquer avec un microprocesseur central. En outre, la DS18B20 peut tirer de l'énergie directement de la ligne de données ("alimentation parasite"). Cela élimine le besoin d'une source d'alimentation externe. Chaque DS18B20 possède un code série unique de 64 bits, permettant à plusieurs DS18B20 de fonctionner sur le même bus 1-Wire. Cela ouvre donc la possibilité d'utiliser un seul microprocesseur pour contrôler/évaluer plusieurs DS18B20 répartis sur une large zone. Les applications qui peuvent bénéficier de cette fonctionnalité comprennent les contrôles environnementaux HVAC, les systèmes de surveillance de la température dans les bâtiments, les usines ou les machines, et les systèmes de surveillance et de contrôle des processus
Données techniques
Chipset | DS18B20 |
Protocole de communication | 1-Wire |
Précision | 9 à 12 bits |
Plage de mesure | –55°C par +125°C |
Précision de mesure | ±0.5°C de -10°C par +85°C |
Affectation des broches
Exemple de code Arduino
Affectation des broches Arduino :
Arduino | Capteur |
---|---|
Pin 4 | Signal |
5V | +V |
GND | GND |
Pour l'exemple de code suivant, deux bibliothèques supplémentaires sont nécessaires :
OneWire Library de Paul Stoffregen | publié sous la licence MIT
Dallas Temperature Control Library de Miles Burton | publié sous LGPL
Les deux bibliothèques sont incluses dans le paquetage et doivent être copiées dans le dossier "library" avant de démarrer l'IDE Arduino.
Par défaut, vous trouverez ce dossier dans le chemin suivant de votre installation Windows :
C:\User[nom d'utilisateur]\Documents\Arduino\Librairies
// Importation des librairies requises
#include <OneWire.h>
#include <DallasTemperature.h>
// Déclaration de la broche d'entrée du capteur
#define KY001_Signal_PIN 4
// Configuration des libraries
OneWire oneWire(KY001_Signal_PIN);
DallasTemperature sensors(&oneWire);
void setup() {
// Initialisation de l'interface série
Serial.begin(9600);
Serial.println("KY-001 Capteur de temperature");
// Le capteur est initialisé
sensors.begin();
}
//Boucle de programme principale
void loop()
{
// Début de la mesure de la température
sensors.requestTemperatures();
// ... et affichage de la température mesurée
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" °C");
delay(1000); // 1s de pause avant la mesure suivante
}
Téléchargement d'un exemple de programme
Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits et dispose d'une fonction d'alarme avec des points de déclenchement hauts et bas non volatils et programmables par l'utilisateur, ce qui signifie que le capteur a des limites hautes et basses programmables qui ne peuvent pas changer d'elles-mêmes. La DS18B20 communique sur un bus à 1 fil, qui par définition ne nécessite qu'une seule ligne de données (et une masse) pour communiquer avec un microprocesseur central. En outre, la DS18B20 peut tirer de l'énergie directement de la ligne de données ("alimentation parasite"). Cela élimine le besoin d'une source d'alimentation externe. Chaque DS18B20 possède un code série unique de 64 bits, permettant à plusieurs DS18B20 de fonctionner sur le même bus 1-Wire. Cela ouvre donc la possibilité d'utiliser un seul microprocesseur pour contrôler/évaluer plusieurs DS18B20 répartis sur une large zone. Les applications qui peuvent bénéficier de cette fonctionnalité comprennent les contrôles environnementaux HVAC, les systèmes de surveillance de la température dans les bâtiments, les usines ou les machines, et les systèmes de surveillance et de contrôle des processus
Données techniques
Chipset | DS18B20 |
Protocole de communication | 1-Wire |
Précision | 9 à 12 bits |
Plage de mesure | –55°C par +125°C |
Précision de mesure | ±0.5°C de -10°C par +85°C |
Affectation des broches
Exemple de code Raspberry Pi
Affectation des broches du Raspberry Pi :
Raspberry Pi | Capteur |
---|---|
GPIO4 [Pin 7] | Signal |
3,3V [Pin 1] | +V |
GND [Pin 6] | GND |
Configuration à un fil Raspberry Pi
Pour permettre au Raspberry Pi de communiquer avec le capteur DS18B20 via le bus monofilaire, il faut d'abord l'activer. Pour ce faire, entrez la commande suivante :
sudo raspi-config
Allez maintenant dans Options d'interface et activez l'interface 1-Wire. Votre Raspberry Pi devrait alors redémarrer automatiquement. Vous pouvez également utiliser la commande suivante pour redémarrer manuellement :
sudo reboot
Vous pouvez maintenant utiliser l'exemple suivant. Une sortie console est générée dès qu'un signal est détecté.
Voici un exemple de programme qui fournit la température mesurée en série après l'initialisation du capteur.
# SPDX-FileCopyrightText: 2019 Mikey Sklar for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import glob
import time
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
Téléchargement d'un exemple de programme
Pour commencer avec la commande :
sudo python3 KY001-RPi.py
Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits et dispose d'une fonction d'alarme avec des points de déclenchement hauts et bas non volatils et programmables par l'utilisateur, ce qui signifie que le capteur a des limites hautes et basses programmables qui ne peuvent pas changer d'elles-mêmes. La DS18B20 communique sur un bus à 1 fil, qui par définition ne nécessite qu'une seule ligne de données (et une masse) pour communiquer avec un microprocesseur central. En outre, la DS18B20 peut tirer de l'énergie directement de la ligne de données ("alimentation parasite"). Cela élimine le besoin d'une source d'alimentation externe. Chaque DS18B20 possède un code série unique de 64 bits, permettant à plusieurs DS18B20 de fonctionner sur le même bus 1-Wire. Cela ouvre donc la possibilité d'utiliser un seul microprocesseur pour contrôler/évaluer plusieurs DS18B20 répartis sur une large zone. Les applications qui peuvent bénéficier de cette fonctionnalité comprennent les contrôles environnementaux HVAC, les systèmes de surveillance de la température dans les bâtiments, les usines ou les machines, et les systèmes de surveillance et de contrôle des processus
Données techniques
Chipset | DS18B20 |
Protocole de communication | 1-Wire |
Précision | 9 à 12 bits |
Plage de mesure | –55°C par +125°C |
Précision de mesure | ±0.5°C de -10°C par +85°C |
Affectation des broches
Exemple de code Micro:Bit
Affectation des broches Micro:Bit :
Micro:Bit | Capteur |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Ceci est un exemple MakeCode pour Micro:Bit qui fait essentiellement la même chose que les exemples des deux autres variantes. Cependant, cet exemple est plus proche de celui du Raspberry Pi que de celui de l'Arduino.
Pour l'exemple de code suivant, une bibliothèque supplémentaire est nécessaire :
pxt-ds18b20 de DFRobot | publié sous la licence GUI
Vous devez ajouter cette bibliothèque à votre IDE avant de pouvoir utiliser le code.
Pour ce faire, allez dans Extensions dans votre IDE et utilisez l'URL suivante https://github.com/DFRobot/pxt-ds18b20.git pour rechercher la bibliothèque à ajouter.
Téléchargement d'un exemple de programme
Le thermomètre numérique DS18B20 fournit des mesures de température Celsius de 9 à 12 bits et dispose d'une fonction d'alarme avec des points de déclenchement hauts et bas non volatils et programmables par l'utilisateur, ce qui signifie que le capteur a des limites hautes et basses programmables qui ne peuvent pas changer d'elles-mêmes. La DS18B20 communique sur un bus à 1 fil, qui par définition ne nécessite qu'une seule ligne de données (et une masse) pour communiquer avec un microprocesseur central. En outre, la DS18B20 peut tirer de l'énergie directement de la ligne de données ("alimentation parasite"). Cela élimine le besoin d'une source d'alimentation externe. Chaque DS18B20 possède un code série unique de 64 bits, permettant à plusieurs DS18B20 de fonctionner sur le même bus 1-Wire. Cela ouvre donc la possibilité d'utiliser un seul microprocesseur pour contrôler/évaluer plusieurs DS18B20 répartis sur une large zone. Les applications qui peuvent bénéficier de cette fonctionnalité comprennent les contrôles environnementaux HVAC, les systèmes de surveillance de la température dans les bâtiments, les usines ou les machines, et les systèmes de surveillance et de contrôle des processus
Données techniques
Chipset | DS18B20 |
Protocole de communication | 1-Wire |
Précision | 9 à 12 bits |
Plage de mesure | –55°C par +125°C |
Précision de mesure | ±0.5°C de -10°C par +85°C |
Affectation des broches
Exemple de code Raspberry Pi Pico
Affectation des broches Raspberry Pi Pico
Raspberry Pi Pico | Capteur |
---|---|
GPIO2 | Signal |
3,3V | +V |
GND | GND |
Deux bibliothèques supplémentaires sont nécessaires pour l'exemple de code suivant :
Bibliothèque OneWire de Damien P. George | publié sous la Licence du MIT.
Bibliothèque DS18X20 de Damien P. George | publiée sous la Licence du MIT.
Il s'agit d'un programme d'exemple qui sort la température mesurée en série après l'initialisation du capteur.
# Charger les bibliothèques
import machine, onewire, ds18x20
from time import sleep
# Initialisation de GPIO2
ds_pin = machine.Pin(10)
# Initialisation de l'objet capteur
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
# Recherche de tous les capteurs correspondants
roms = ds_sensor.scan()
# Sortie en série
print("Dispositifs DS trouvés")
print("Température (°C)")
# Boucle sans fin pour une lecture continue de la température
while True:
ds_sensor.convert_temp()
sleep(1)
# En fonction du nombre de capteurs compatibles trouvés, il comptera jusqu'à
for rom in roms:
# Sortie série de la température mesurée
print(ds_sensor.read_temp(rom))
sleep(3)